從攜程事件給我們警示
從攜程事件給我們警示
你準(zhǔn)備好了嗎? 如果攜程事件發(fā)生在你身上,這個(gè)問題怎么處理?有無應(yīng)對方案?怎樣快速找出攻擊的方式,方法? 有句話說的好,常在河邊走,哪有不濕鞋。
程序是一波人一波人開發(fā)的
國內(nèi)軟件行業(yè)人員流動還是很頻繁的,程序是一波人一波人開發(fā)的,有如擊鼓傳球,誰最后接手爛在誰手里誰倒霉。 我們發(fā)現(xiàn)國內(nèi)的軟件業(yè)在重復(fù)做著同樣的工作,一次一次推倒重來,自己開發(fā)的,心里才有底,對于上一波人開發(fā)的系統(tǒng),誰也不能保證安全性。
我看到很多QQ群在轉(zhuǎn)發(fā)攜程事件,還有攜程內(nèi)部聊天紀(jì)錄以及電子郵件,都在幸災(zāi)樂禍,我想問如果發(fā)生在你身上呢?
運(yùn)維不能靠天吃飯
你不能期望運(yùn)維不出事情,不出事,必有因果關(guān)系,種下因得到果。 很多企業(yè)的運(yùn)維,不出事就不會出事,出事一定會出大事。 要你拿出預(yù)案,將事故消滅在萌芽狀態(tài)。你的準(zhǔn)備工作做得多少決定了你故障的大小以及范圍。 出這樣的事故一定是平時(shí)積累,爆發(fā)只是個(gè)時(shí)間問題。
應(yīng)對方案
從年從業(yè)我也被攻擊過,遇到各種各樣的攻擊,常常是被挖到新公司,首先面臨的挑戰(zhàn)就是安全問題。 我也總結(jié)一些經(jīng)驗(yàn),這里篇幅有限,不可能依依詳解,僅僅給你提供一個(gè)思路一個(gè)啟發(fā)。詳細(xì)請看我的網(wǎng)站相關(guān)文章http://netkiller.github.io/。
攜程代碼被刪除解決方案
WEB 服務(wù)器運(yùn)行用戶不能與代碼所有者用戶相同,因?yàn)橐坏¦EB服務(wù)器被攻陷將具有刪除權(quán)限。 所以代碼部署使用AAA用戶,WEB服務(wù)器運(yùn)行使用BBB用戶。一旦WEB服務(wù)器被攻陷,用戶擁有BBB權(quán)限,而無法刪除AAA權(quán)限的文件。 這樣的設(shè)置,除了防止刪除文件,還能避免代碼注入。攻擊著更多是注入代碼,下載數(shù)據(jù)庫,而非破壞性攻擊。 這樣設(shè)置給攻擊值制造了一定門檻,繼續(xù)攻擊,攻擊者需要提升權(quán)限才能得到修改與刪除權(quán)限。
攜程數(shù)據(jù)被刪除解決方案
-
在 APP應(yīng)用與數(shù)據(jù)庫間增加了API服務(wù)器,應(yīng)用程序通過API訪問數(shù)據(jù)庫,API主要采用ORM關(guān)系對象映射技術(shù)為用戶提供接口。而不是讓APP通過 SQL直接操作數(shù)據(jù)庫。APP需要提供用戶認(rèn)證,ACL控制(精確到方法),簡單的說AAA用戶只能從指定IP地址,訪問指定類與方法,甚至可能精確到方 法參數(shù)限制。
-
去掉Delete權(quán)限,只能通過更新狀態(tài)刪除,這樣的缺點(diǎn)是會產(chǎn)生大量的臟數(shù)據(jù)。及時(shí)清理也問題不大。
-
控制惡意修改,通過觸發(fā)器控制某些字段被惡意專改。參考 數(shù)據(jù)庫記錄安全解決方案》http://netkiller.github.io/journal/mysql.security.html
自動化運(yùn)維
-
自動化安裝,快速將標(biāo)準(zhǔn)的服務(wù)器,部署為指定功能的服務(wù)器,參考 https://github.com/oscm/shell
-
自動化發(fā)布,這個(gè)非常重要,目前國內(nèi)很多代碼發(fā)布仍然采用人工方式(處在時(shí)期時(shí)代)。自動化發(fā)布能瞬間部署,這點(diǎn)對快速搶修非常重要。參考 https://github.com/oscm/devops
Active-Active 災(zāi)備
異地災(zāi)備是非常奢侈的,不是每個(gè)企業(yè)都能承擔(dān)的起,但是雙活災(zāi)備系統(tǒng)是必須的。
怎樣快速找出攻擊的方式
以 PHP為例,如果代碼被刪除。我會第一時(shí)間在php.ini中禁用刪除函數(shù),然后 grep -r unlink /www/example.com/xxx.example.com 找出具備刪除功能程序。然后在web日志中找到該程序調(diào)用的url被什么時(shí)間什么IP地址調(diào)用過,最后禁用該IP地址。 如果Java被二進(jìn)制植入就比較麻煩,無法直接找出,首要做的是修改代碼所有者,不能與Tomcat啟動用戶相同。 另外我的自動發(fā)布程序能夠每次發(fā)布時(shí),看到那些文件被修改,那些文件是新增,發(fā)布程序與版本庫為基準(zhǔn),刪除新增的文件。通過觀看那些文件被刪除,瞬間找到 惡意腳本。
延伸閱讀 《PHP 安全與性能》http://netkiller.github.io/journal/security.php.html
文件與代碼監(jiān)控
代碼被植入,刪除修改,怎樣能第一時(shí)間知道。而不是亡羊補(bǔ)牢。延伸閱讀 《植入式攻擊入侵檢測解決方案》http://netkiller.github.io/journal/security.implants.html
就談到此吧!