九項(xiàng)工作做好K8s的事件響應(yīng)
谷歌開發(fā)的Kubernetes(K8s)已經(jīng)成為主流容器編排平臺(tái),K8s的主要目標(biāo)是應(yīng)對(duì)監(jiān)管大規(guī)模容器的復(fù)雜性,其通過分布式節(jié)點(diǎn)集群管理微服務(wù)應(yīng)用程序,支持?jǐn)U展、回滾、零停機(jī)和自我修復(fù)。它可以在內(nèi)部數(shù)據(jù)中心的裸機(jī)上運(yùn)行,也可以在Azure、AWS等公有云或私有云平臺(tái)上運(yùn)行。
K8s安全是一項(xiàng)復(fù)雜的任務(wù),其中一個(gè)非常具體和關(guān)鍵的方面是事件響應(yīng)。如K8s集群遭受攻擊時(shí)該如何做?組織內(nèi)各團(tuán)隊(duì)如何協(xié)調(diào)以應(yīng)對(duì)攻擊?應(yīng)急恢復(fù)的有效流程是怎樣的,以及需要哪些必要的調(diào)查工具和數(shù)據(jù)?
事件響應(yīng)是檢測(cè)、管理并恢復(fù)網(wǎng)絡(luò)安全事件的結(jié)構(gòu)化過程,其最終目標(biāo)是降低成本、最小化宕機(jī)時(shí)間,把附帶損害(包括業(yè)務(wù)損失和品牌影響)降至最低。
為了實(shí)現(xiàn)高效的事件響應(yīng),必須讓組織內(nèi)各個(gè)部門的人員參與進(jìn)來。除了IT和安全團(tuán)隊(duì),包括客戶支持、人力資源、法律、合規(guī)和高級(jí)管理人員。以下是事件響應(yīng)工作的九項(xiàng)主要構(gòu)成:
1. DevOps
響應(yīng)K8s安全事件幾乎總是需要部署、回滾、更改集群配置,或者部署策略中指定的這些組合。所有這些操作都是DevOps人員的權(quán)限。DevOps團(tuán)隊(duì)必須有一個(gè)明確的流程,用于識(shí)別哪個(gè)構(gòu)建或配置更改導(dǎo)致了安全事件,以及如何恢復(fù)到已知的正常配置或使用修復(fù)程序前滾。
2. 軟件開發(fā)
當(dāng)發(fā)生安全事件時(shí),通常意味著容器或應(yīng)用程序中的漏洞正在K8s集群中運(yùn)行,修復(fù)漏洞需要軟件開發(fā)人員。事件響應(yīng)者和開發(fā)者之間必須有明確的溝通渠道。開發(fā)人員需要確切知道安全問題在哪個(gè)組件中,以及在哪些代碼行中。開發(fā)團(tuán)隊(duì)還必須將修復(fù)漏洞工作賦予優(yōu)先處理流程,然后將其推向生產(chǎn)環(huán)境。這是強(qiáng)變化性管理項(xiàng)目的標(biāo)準(zhǔn)實(shí)踐,最終目標(biāo)是讓事件的移交變得常規(guī)而直接。另外,在發(fā)生嚴(yán)重事件或確認(rèn)入侵的情況下,制定非工作時(shí)間的支持制度也很重要。
3. 核心基礎(chǔ)設(shè)施
根據(jù)組織的不同,核心基礎(chǔ)設(shè)施可能由DevOps團(tuán)隊(duì)、軟件可靠性和網(wǎng)站可靠性工程(SRE)人員或外部云提供商管理。事件響應(yīng)者應(yīng)該知道誰負(fù)責(zé)加固每個(gè)K8s部署的服務(wù)器和配置。如果在基礎(chǔ)設(shè)施級(jí)別發(fā)現(xiàn)漏洞,應(yīng)該有明確的流程來獲得基礎(chǔ)設(shè)施或云提供商安全團(tuán)隊(duì)的支持。
4. 建立事件響應(yīng)策略
可以通過兩個(gè)步驟為K8s環(huán)境制定事件響應(yīng)策略:制定事件響應(yīng)計(jì)劃和準(zhǔn)備容器取證。
5. 準(zhǔn)備事件響應(yīng)計(jì)劃
為K8s環(huán)境準(zhǔn)備一份事件響應(yīng)計(jì)劃至關(guān)重要。該計(jì)劃至少應(yīng)包含以下四個(gè)階段,還可以根據(jù)需要進(jìn)行擴(kuò)展。
(1)識(shí)別
該步驟旨在跟蹤安全事件,以識(shí)別和報(bào)告可疑的安全事件。K8s監(jiān)控工具用于報(bào)告K8s節(jié)點(diǎn)和Pod中的活動(dòng)。想要識(shí)別安全問題,如容器權(quán)限提升或惡意網(wǎng)絡(luò)通信,要使用專用的K8s安全工具。
(2)協(xié)作
一旦安全分析師發(fā)現(xiàn)事件,他們應(yīng)該將其上報(bào)給高級(jí)分析師,并讓組織中的其他人參與進(jìn)來。在上文中談到的DevOps、開發(fā)和基礎(chǔ)設(shè)施團(tuán)隊(duì)建立的流程將非常有用。應(yīng)該有一個(gè)事先與高管達(dá)成一致的明確流程,用于分享漏洞的詳細(xì)信息并得到優(yōu)先修復(fù)。
(3)解決
即使DevOps和開發(fā)人員盡到了自己的責(zé)任,事件響應(yīng)團(tuán)隊(duì)仍需擔(dān)負(fù)解決事件的最終責(zé)任。他們必須驗(yàn)證修復(fù)效果,確保漏洞不再被利用,并清除系統(tǒng)中的入侵者和惡意軟件。然后,由相應(yīng)人員著手恢復(fù)生產(chǎn)系統(tǒng),同時(shí)與安全團(tuán)隊(duì)合作,以確保漏洞的修復(fù)。
(4)持續(xù)改進(jìn)
每一次安全事件都是學(xué)習(xí)和改進(jìn)的機(jī)會(huì)。除了危機(jī)期間執(zhí)行的緊急修復(fù)之外,事件響應(yīng)者還應(yīng)與技術(shù)團(tuán)隊(duì)會(huì)面,更為廣泛的分享安全問題的經(jīng)驗(yàn)教訓(xùn)。每一次事件都會(huì)改善K8s的集群配置,并識(shí)別出薄弱或缺失的安全控制。
6. 容器取證
一旦啟動(dòng)K8s環(huán)境所需的安全保護(hù)措施,事件響應(yīng)計(jì)劃應(yīng)確保安全團(tuán)隊(duì)能夠訪問所有必要的信息,以便進(jìn)行取證分析。
7. 日志
K8s的日志組成中,有一些全面安全調(diào)查至關(guān)重要的一些日志,如API服務(wù)器日志、單個(gè)節(jié)點(diǎn)上的kubelet日志、云基礎(chǔ)設(shè)施日志、應(yīng)用程序日志和操作系統(tǒng)日志等,特別要關(guān)注網(wǎng)絡(luò)連接、用戶登錄、安全Shell會(huì)話和進(jìn)程執(zhí)行。
8. 節(jié)點(diǎn)的快照
對(duì)于任何部署,都必須執(zhí)行一個(gè)簡(jiǎn)單、自動(dòng)化的過程,對(duì)運(yùn)行可疑惡意容器的節(jié)點(diǎn)進(jìn)行快照。這樣做可以隔離節(jié)點(diǎn),或者移除受感染的容器以恢復(fù)環(huán)境的其余部分。
使用節(jié)點(diǎn)快照可以進(jìn)行以下分析:
- 調(diào)查并掃描磁盤鏡像是否存在惡意活動(dòng);
- 使用Docker Inspect和其他容器引擎工具調(diào)查容器級(jí)別的惡意活動(dòng);
- 詳細(xì)查看操作系統(tǒng)活動(dòng),以確定攻擊者是否設(shè)法突破容器以實(shí)現(xiàn)Root訪問。
9. 容器可見性工具
建議DevOps安全分析師首先利用K8s和Docker中可用的工具,包括Docker statistics API,幫助他們收集系統(tǒng)指標(biāo)。對(duì)于只需要知道系統(tǒng)在大規(guī)模運(yùn)行時(shí)如何受容器負(fù)載影響的分析人員來說,系統(tǒng)指標(biāo)非常有用。
容器可見性工具幫助DevOps了解容器和Pod內(nèi)發(fā)生的事情。例如,它們可以幫助安全團(tuán)隊(duì)了解重要文件是否丟失或容器中是否添加了未知文件,監(jiān)控實(shí)時(shí)網(wǎng)絡(luò)通信,并識(shí)別容器或應(yīng)用程序級(jí)別的異常行為。所有信息都要在無需容器登錄憑證的情況下可用。