攜程數(shù)據(jù)庫事件網(wǎng)上有各種說法。有說是數(shù)據(jù)庫數(shù)據(jù)和備份數(shù)據(jù)被物理刪除的。也有說是各個節(jié)點的業(yè)務(wù)代碼被刪除 現(xiàn)在重新在部署。也有說是誤操作,導(dǎo)致業(yè)務(wù)不可用。盡管眾說紛蕓,做為一個技術(shù)人員,我們還是需要透過現(xiàn)象看本質(zhì)。
網(wǎng)站崩潰的表象
我們先觀察一下ctrip這次問題的表現(xiàn)。從我觀察視角來看,在下午2點左右,攜程PC版的首頁上的酒店、機票這兩個最核心的應(yīng)用還是無法使用的,而且個人用戶也是無法登錄的,同時攜程手機端的酒店、機票無法使用,以及個人訂單是無法查詢的。
而網(wǎng)上的新聞報道上午11點服務(wù)就不可用了:攜程方面稱,今天上午11時09分,攜程的部分服務(wù)器遭到不明攻擊,導(dǎo)致官方網(wǎng)站及APP暫時無法正常使用,目前正在緊急恢復(fù)。從攜程內(nèi)部人士處獲悉,此次不明攻擊是攜程未攔截成功的第一次數(shù)據(jù)庫攻擊,目前技術(shù)部正在搶救。
數(shù)據(jù)庫整體被攻擊的可能性極大
從這些信息來判斷,應(yīng)該不是業(yè)務(wù)流程上線中出BUG,或者上線流程過程有些誤操作。為什么這么講,我們要進行粗略分析。對于用戶的角度來講,好像攜程的首頁是只有一個,好像攜程只有首頁這么一個,各個業(yè)務(wù)的入口是統(tǒng)一的,但是從程序以及項目管理的角度來看,單單只是從攜程的首頁來看,至少有14以上個業(yè)務(wù)部門以及項目,而且這些項目之間關(guān)聯(lián)耦合度不大,平時上線肯定也是獨立上線的,如果一個項目掛了,短暫不可用又很快恢復(fù)了,那還可以理解,畢竟誰上線沒有回滾過。但是大面積絕大部分業(yè)務(wù)都不可用,必然不是正常的上線流程中出問題?;旧衔覀兛梢耘袛?,攜程內(nèi)部系統(tǒng)肯定是受到大規(guī)模的攻擊,大部分的業(yè)務(wù)節(jié)點受到嚴重的攻擊或者數(shù)據(jù)庫受到嚴重的攻擊,至于是內(nèi)部員工或者是黑客那就不好說了。
我們再來分析下是不是業(yè)務(wù)節(jié)點受攻擊,從表象來看,業(yè)務(wù)節(jié)點或者負載均衡應(yīng)該是被攻擊了,不然不會點擊酒店和機票搜索都會跳出Http/1.1 Service Unavailable,而應(yīng)該會出現(xiàn)搜索遲遲不出結(jié)果,但是網(wǎng)頁大部分的界面還是可以展現(xiàn)的。如果僅僅是業(yè)務(wù)節(jié)點受攻擊,比如:所有的業(yè)務(wù)節(jié)點上的部署的代碼、程序被刪除了,或者是關(guān)機了,受到這種攻擊恢復(fù)的手法還是可以非常迅猛的,畢竟機器還在,攜程做為一個十幾年的老牌公司,上線部署流程應(yīng)該是建設(shè)的比較完善的,可以在比較短的時間內(nèi)進行恢復(fù)。
我們再看是不是某個數(shù)據(jù)庫掛了,從前面我們也講到,攜程的業(yè)務(wù)多,項目多,這些項目與業(yè)務(wù)線是不太可能使用同一臺數(shù)據(jù)庫的物理機的,攜程的數(shù)據(jù)庫機器數(shù)量肯定是比較龐大的,而且我相信攜程的數(shù)據(jù)庫肯定是做好高可用的,同時日常備份是定期進行的。如果只是個別數(shù)據(jù)庫掛了,恢復(fù)起來的時間是非??斓?。但是從這次攻擊的事件來看,數(shù)據(jù)庫整體被攻擊的可能性非常大。
可能攤上大事了
如果這是一次黑客攻擊,那黑客對攜程內(nèi)部的系統(tǒng)了解程度那是相當(dāng)?shù)纳?,而且滲透、潛伏的時間非常長。如果這是一次非常惡意的攻擊,而且黑客對攜程苦大仇深,想一擊致命的話,數(shù)據(jù)庫就會是核心攻擊目標(biāo)。業(yè)務(wù)節(jié)點丟點程序代碼不會緊,最多就像人走在大街上衣服被搶光了而已,雖然丟人,但是還是可以很快再搞幾件衣服回來穿上就是了,要是數(shù)據(jù)庫被刪除,而且不僅僅是邏輯刪除,而且是物理刪除,同時把所有備份也進行非常徹底的物理刪除的話,那基本上心臟中槍,沒得救了,不過好在這種情況出現(xiàn)的可能性不大。如果黑客把數(shù)據(jù)庫所在的主、從機器上的數(shù)據(jù)全部進行邏輯刪除,同時運行類似于dd的命令進行數(shù)據(jù)覆蓋,那么主、從機器上的數(shù)據(jù)是沒法救的。
從網(wǎng)上的新聞來看,上午11點09服務(wù)就不可用了,我們做一個最壞情況的猜測:黑客應(yīng)該是攻擊了大部分的數(shù)據(jù),同時估計也備份到存儲上的數(shù)據(jù)也給刪除了。所以到現(xiàn)在,攜程的服務(wù)還沒有恢復(fù)。
那么現(xiàn)在的問題關(guān)鍵點來了:攜程是用什么方式進行數(shù)據(jù)庫的備份的(如果沒有日常備份,那整個攜程就可悲劇了)。如果采用內(nèi)部私有云存儲的方式進行備份,那么此事還有的救。雖然黑客有可能把這些數(shù)據(jù)從云存儲的應(yīng)用端刪除,但是服務(wù)端這些數(shù)據(jù)可能還存在。數(shù)據(jù)是否可以恢復(fù)要取決于私有云存儲的架構(gòu)。攜程從公開的報道來看,內(nèi)部私有云用的是openstack,那么很有可能是使用swift的存儲,除非黑客也是非常熟悉swift的架構(gòu),把swift上的三個備份的機器找到,進行物理刪除。否則,數(shù)據(jù)還是有可能恢復(fù)的。如果到備份到存儲一體機,我相信數(shù)據(jù)還是有可能找的回來的。簡而言之:如果有正常的備份,我相信數(shù)據(jù)還是可以恢復(fù),如果沒有做數(shù)據(jù)庫日志的實時備份的話,最多丟個一備份周期的數(shù)據(jù)(一般是一天)。
上面講的都是針對性的攻擊,但是最壞的情況是:黑客掌握了攜程大部分機器的root權(quán)限,同時進行無差別的毀滅性的攻擊的話(業(yè)務(wù)節(jié)點、數(shù)據(jù)庫節(jié)點、存儲節(jié)點),那后果反正我是不敢想了。
晉城龍鼎 - 晉城網(wǎng)站建設(shè)為您解答!