披荆斩棘:论百万级服务器反入侵场景的混沌工程实践
在繁雜的業(yè)務(wù)和網(wǎng)絡(luò)環(huán)境下,在公司百萬級服務(wù)器面前,要做到入侵發(fā)生時的及時檢測,那么反入侵系統(tǒng)的有效性,即系統(tǒng)質(zhì)量,是至關(guān)重要的。
洋蔥系統(tǒng)是騰訊公司級的主機反入侵安全檢測系統(tǒng),它是實現(xiàn)了前端主機agent及后端分布式數(shù)據(jù)接入分析系統(tǒng)的一整套服務(wù),覆蓋的系統(tǒng)模塊眾多,部署的服務(wù)節(jié)點超百萬,面臨的業(yè)務(wù)網(wǎng)絡(luò)環(huán)境區(qū)域復(fù)雜——洋蔥就是在這樣的環(huán)境下進(jìn)行實時監(jiān)測數(shù)據(jù)的采集、上報和分析。
然而我們發(fā)現(xiàn),在實際的運營過程中總會出現(xiàn)組件異常、未部署、入侵漏水等一系列質(zhì)量上的挑戰(zhàn)。
基于此,我們在對洋蔥系統(tǒng)進(jìn)行實時質(zhì)量建設(shè)和優(yōu)化的同時,提出了引入混沌工程的解決思路,并介紹混沌工程在其中的初步實踐應(yīng)用。即,建設(shè)整個系統(tǒng)實時質(zhì)量的一個模型標(biāo)準(zhǔn)和穩(wěn)態(tài)描述,結(jié)合實際入侵場景和服務(wù)異常的模擬進(jìn)行混沌實驗,對系統(tǒng)的穩(wěn)定性、可用性進(jìn)行驗證,同時發(fā)現(xiàn)未知的質(zhì)量問題,以此形成負(fù)反饋閉環(huán),進(jìn)一步推進(jìn)反入侵質(zhì)量建設(shè)和優(yōu)化。
本文圍繞洋蔥系統(tǒng)的實時質(zhì)量建設(shè)和優(yōu)化,介紹混沌工程在其中的初步實踐應(yīng)用。
要說明反入侵具體的工作內(nèi)容,則要先對“入侵”進(jìn)行定義。
這里的入侵主要指“未經(jīng)授權(quán)”的行為。一般來說入侵者實施入侵行為,主要目的有以下幾點:
獲取敏感數(shù)據(jù),如關(guān)系鏈,用戶信息等;
篡改數(shù)據(jù),如惡意刪除,給自己賬戶充錢,篡改主頁(just for fun)等;
控制個人資產(chǎn),如將個人機器當(dāng)肉雞,對外發(fā)起DDoS攻擊,或者當(dāng)做滲透其他目標(biāo)的跳板;
挖礦行為。
從路徑上看,黑客可以通過網(wǎng)站漏洞、對外高危第三方應(yīng)用漏洞、供應(yīng)鏈攻擊、網(wǎng)絡(luò)劫持、郵件釣魚、物理攻擊、零日漏洞攻擊等進(jìn)入到公司服務(wù)器,從而到達(dá)內(nèi)網(wǎng),然后通過內(nèi)外掃描爆破等形式進(jìn)一步滲透,設(shè)置種馬反連,最終達(dá)到完全控制服務(wù)器的目的。
一般來說,從入侵動作基本能追溯到一條完整的行為鏈路。那么說到反入侵,能夠在鏈路中的關(guān)鍵路勁層層設(shè)防,就是反入侵的基本。
反入侵系統(tǒng),目標(biāo)是及時發(fā)現(xiàn)入侵行為,對入侵行為進(jìn)行回溯,然后加固系統(tǒng)的薄弱點。這里我們提到騰訊公司級的反入侵系統(tǒng)——洋蔥。目前反入侵團(tuán)隊在所有騰訊的服務(wù)器上均有部署,客戶端agent會實時采集機器上的痕跡信息(如命令執(zhí)行,進(jìn)程,網(wǎng)絡(luò)連接,掃描,系統(tǒng)日志,web文件,高危app漏洞等),然后后端是分布式的集群,對數(shù)據(jù)進(jìn)行清洗和多維度數(shù)據(jù)聚合分析,最終輸出風(fēng)險事件。
然而,目前騰訊反入侵工作也面臨著極大的困難。
首先,公司盤子越來越大,服務(wù)器已經(jīng)突破百萬級別了;其次,公司業(yè)務(wù)眾多,現(xiàn)網(wǎng)各種應(yīng)用/第三方軟件的使用,及員工安全意識薄弱等,都給反入侵工作帶來挑戰(zhàn)。另外,網(wǎng)絡(luò)環(huán)境復(fù)雜,基本上對外的每一個端口、每一個服務(wù)、每一個cgi、GitHub上托管的每一個密碼,都可以是黑客“入侵”的入口。
面對如此繁雜的業(yè)務(wù)和網(wǎng)絡(luò)環(huán)境、如此大量的服務(wù)器,要求系統(tǒng)及時感知、檢測到入侵,則反入侵系統(tǒng)的有效性,即系統(tǒng)質(zhì)量則變得至關(guān)重要。
反入侵系統(tǒng)質(zhì)量的好壞,已成反入侵體系是否有效的關(guān)鍵因素。然而,如何進(jìn)行系統(tǒng)質(zhì)量的有效建設(shè),又是一個極大的工程。
指標(biāo)化描述,是對質(zhì)量建設(shè)和優(yōu)化的基礎(chǔ)需求。對此我們提到了實時質(zhì)量大盤的概念,用來實時表述整個系統(tǒng)有效覆蓋的健康度情況,以及異常分類的統(tǒng)計占比和詳情輸出,這樣更有助于進(jìn)行系統(tǒng)迭代優(yōu)化,進(jìn)而了一個完整正向質(zhì)量建設(shè)的閉環(huán)。
針對所有場景的開發(fā),梳理出各個可能發(fā)生異常的點,形成指標(biāo),然后迭代開發(fā),將指標(biāo)埋點上報,后端建立一個指標(biāo)綜合分析的模型,最后輸出一個完整實時質(zhì)量大盤,開發(fā)、運維和策略同學(xué)根據(jù)實時質(zhì)量大盤中反饋出來的異常場景再進(jìn)行分析優(yōu)化開發(fā),形成一個正向閉環(huán)。
但是現(xiàn)網(wǎng)的各個模塊體系下,實際運營過程中還是出現(xiàn)了埋點指標(biāo)外的相關(guān)異常情況,導(dǎo)致入侵漏水。那么,是否有辦法能夠?qū)⑦@些可能存在的異常,盡可能快地暴露出來,以便更好把控系統(tǒng)的質(zhì)量,發(fā)現(xiàn)入侵?我們的回答是肯定的。
混沌工程就是一種應(yīng)用于此類場景的技術(shù)方案。
首先說明的是,目前洋蔥反入侵系統(tǒng)已經(jīng)在架構(gòu)上實現(xiàn)了分布式,自動容災(zāi),路由負(fù)載均衡,客戶端也是agent加插件的形式存在,且實現(xiàn)了組件管理和心跳檢活邏輯——具備進(jìn)行有意義的混沌實驗基礎(chǔ)。
關(guān)于混沌工程在反入侵場景下的結(jié)合和使用,我們的關(guān)注點集中在兩個層面,即系統(tǒng)有效覆蓋和入侵有效發(fā)現(xiàn)。
針對第一個層面,混沌實驗主要是對系統(tǒng)故障類的演習(xí)、驗證系統(tǒng)容錯能力;第二個層面,混沌實驗主要聚焦在入侵實驗上,從深度上我們分為模擬入侵撥測,和實際入侵對抗兩類。整個混沌實驗的結(jié)果,反饋回到正向系統(tǒng)質(zhì)量建設(shè)中進(jìn)行優(yōu)化和監(jiān)控,形成一個“負(fù)反饋”機制。從正反兩個面向,在流程上形成質(zhì)量建設(shè)的閉環(huán)。
正向的質(zhì)量建設(shè),可以解決和閉環(huán)可預(yù)知的異常場景,針對未知場景,我們引入了混沌實驗來進(jìn)行驗證,并形成一個負(fù)反饋機制,反哺到實時質(zhì)量大盤的建設(shè)。這就是復(fù)雜規(guī)模下反入侵系統(tǒng)質(zhì)量建設(shè)的整體思路。
那么,反入侵場景下的混沌實驗,具體是如何進(jìn)行的?
上面提到過,騰訊反入侵團(tuán)隊主要關(guān)注兩個層面的系統(tǒng)能力,包括系統(tǒng)有效覆蓋,和入侵有效發(fā)現(xiàn)。在思路上,主要是通過“故障測試”驗證系統(tǒng)的有效覆蓋,通過“模擬入侵撥測”和“入侵對抗”驗證系統(tǒng)的有效發(fā)現(xiàn)能力。
1)故障測試
故障注入實驗,是混沌工程實踐中常用的一種工程手段,通過引入可控的異常和故障,觀察系統(tǒng)的反應(yīng)和容錯,是針對系統(tǒng)各個功能模塊有效覆蓋的驗證。
通過設(shè)定的隨機方法,在分布式系統(tǒng)的客戶端和后臺,引入可能影響入侵發(fā)現(xiàn)能力的異常情況,如在客戶端agent中主動降版本、刪除組件,或者刻意限制iptables強制agent斷開連接,在后臺側(cè)通過工具讓后端隨機機器產(chǎn)生cpu高負(fù)載,或者流量暴漲,甚者通過主動kill進(jìn)程,讓服務(wù)故障下線。
即,將所有引入故障的動作工具化,通過任務(wù)通道,根據(jù)預(yù)先設(shè)定的隨機選擇方法下發(fā)到主機上執(zhí)行,從而達(dá)到故障注入的效果。針對后端的故障引入,設(shè)計上會隨機分散到不同的集群。然后,我們可以在前面建設(shè)好的實時質(zhì)量大盤上,看對應(yīng)指標(biāo)是否產(chǎn)生質(zhì)量波動。
2)模擬入侵撥測
為了發(fā)現(xiàn)在入侵場景和系統(tǒng)完整鏈路上的未知異常場景,騰訊反入侵團(tuán)隊還引入了“模擬入侵撥測”和“入侵對抗”。在具體操作上,反入侵團(tuán)隊根據(jù)入侵的路徑、手段方法,將入侵分為不同的場景。針對每個場景,通過采集特定的信息,依據(jù)該場景行為特征進(jìn)行建模和檢測。
具體的實施閉環(huán)流程如下圖所示。從中間“撥測系統(tǒng)”發(fā)起模擬入侵攻擊。在這個過程中,洋蔥系統(tǒng)會按照正常的運行邏輯進(jìn)行數(shù)據(jù)采集和傳輸(這個過程中,數(shù)據(jù)會全鏈路旁路落地記錄),然后進(jìn)行入侵行為檢測。
撥測系統(tǒng)會自動進(jìn)行行為結(jié)果的驗證,輸出撥測結(jié)果。如果出現(xiàn)異常而系統(tǒng)未發(fā)現(xiàn),策略和研發(fā)同學(xué)會根據(jù)撥測結(jié)果進(jìn)行復(fù)盤跟進(jìn),然后反饋回到實時質(zhì)量大盤,或者進(jìn)行策略優(yōu)化。同時,如果有新的入侵策略場景發(fā)布,會在發(fā)布后,將對應(yīng)模擬入侵行為加入到撥測系統(tǒng)中。如此形成一個閉環(huán)。
該模擬撥測方案已經(jīng)在洋蔥中穩(wěn)定應(yīng)用了2年。歷史上通過撥測,發(fā)現(xiàn)了現(xiàn)網(wǎng)環(huán)境中多起測試和監(jiān)控未覆蓋到的策略和研發(fā)質(zhì)量問題,從而挖出了不少引起“搏斗”的隱患因素。
3)入侵對抗
模擬入侵是針對已知的入侵場景的。但同時黑客技術(shù)也在發(fā)展,甚至戰(zhàn)場也在發(fā)生轉(zhuǎn)移。從服務(wù)漏洞,到供應(yīng)鏈攻擊,到服務(wù)器底層種馬(bios等)。所以引入入侵對抗實驗,也是為了反入侵系統(tǒng)能夠跟隨發(fā)展,走在前頭。
在實際的執(zhí)行過程中,騰訊反入侵團(tuán)隊通過兩個維度來進(jìn)行入侵對抗的混沌實驗。
其一,內(nèi)部建立藍(lán)軍機制。通過研究內(nèi)外部情報,新的入侵工具技術(shù)和方法,隨時進(jìn)行踩點滲透,以及控制服務(wù)器等入侵行為,進(jìn)行內(nèi)部攻防演習(xí);
其二,將白帽子在TSRC平臺提交的漏洞,和實際黑客入侵的案例都當(dāng)作實驗的變量。通過上述兩方面建立起完整的入侵對抗閉環(huán)機制。
具體來看,模擬入侵的整個過程是如何閉環(huán)的呢?
藍(lán)軍一方面進(jìn)行入侵,一方面自行記錄所有入侵過程中的行為;同時洋蔥系統(tǒng)在正常地執(zhí)行檢測工作。如果產(chǎn)生了入侵告警,應(yīng)急同事會緊急開展排查、定性、止損、定損、溯源等工作,并跟藍(lán)軍確認(rèn)是否是藍(lán)軍演習(xí);有時會當(dāng)作真實入侵把藍(lán)軍清理出戰(zhàn)場。通過這樣的方式來持續(xù)對抗。
通過藍(lán)軍提供的完整入侵記錄,與實際入侵告警進(jìn)行對賬,我們可以推演出哪些行為成功預(yù)警,哪些行為被繞過漏水了;或者確定部分行為的原始數(shù)據(jù)是否在當(dāng)前有支持采集,等等,然后形成新的開發(fā)場景需求、策略優(yōu)化需求,和質(zhì)量優(yōu)化點,反饋回到系統(tǒng)質(zhì)量建設(shè)中。
本文介紹了反入侵工作的相關(guān)背景,以及反入侵洋蔥系統(tǒng)在質(zhì)量建設(shè)方面的思路和推進(jìn)方法。從反入侵場景下的質(zhì)量建設(shè)出發(fā),看待分布式系統(tǒng)的質(zhì)量建設(shè),需要從正反兩個方向入手,動態(tài)互補,才能不停推進(jìn)系統(tǒng)的穩(wěn)定和有效。
未來,騰訊反入侵團(tuán)隊將持續(xù)細(xì)化、自動化故障注入驗證引入現(xiàn)網(wǎng)運營環(huán)境,演習(xí)常規(guī)化,同時將聚焦于IOT智能硬件,服務(wù)器底層(BIOS等)更高層次對抗能力和質(zhì)量的建設(shè)。
總結(jié)
以上是生活随笔為你收集整理的披荆斩棘:论百万级服务器反入侵场景的混沌工程实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯成功入选LoRa联盟新一届董事会
- 下一篇: 腾讯郑兴:原生安全+协同防御是政企云安全