云原生集成開發(fā)環(huán)境——TitanIDE
通過網(wǎng)頁在任何地方更安全、更高效地編碼2022-07-21
634
容器是一個軟件包,其中包含在任何操作系統(tǒng)和基礎(chǔ)架構(gòu)上運(yùn)行所需的所有依賴項,包括代碼、配置文件、庫和系統(tǒng)工具。每個容器都包含一個運(yùn)行時環(huán)境,使應(yīng)用程序能夠在各種計算環(huán)境之間遷移——例如,從物理機(jī)遷移到云。
容器提供了許多好處,但也帶來了重大的安全挑戰(zhàn)。容器存在一個新的攻擊面,需要不同的安全措施、響應(yīng)策略和取證方法。容器事件響應(yīng)是響應(yīng)容器安全事件的標(biāo)準(zhǔn)化方法。
事件響應(yīng)是一項安全功能,涉及檢測影響網(wǎng)絡(luò)資源和信息資產(chǎn)的安全事件,并采取適當(dāng)?shù)牟襟E來評估和補(bǔ)救。安全事件可以是惡意軟件感染(malware infection)、憑據(jù)泄露和數(shù)據(jù)庫泄露。容器事件響應(yīng)有助于阻止、遏制、修復(fù)和防止針對容器化工作負(fù)載的安全威脅。
為什么容器安全如此重要
容器被廣泛用作DevOps流水線(DevOps pipelines)中的輕量級構(gòu)建塊(lightweight building blocks),使容器安全成為現(xiàn)代 IT 安全策略的重要組成部分。同虛擬機(jī) (VM) 一樣,容器包含運(yùn)行應(yīng)用程序所需的一切——代碼、程序運(yùn)行時環(huán)境(runtime)、工具、庫、配置信息——無論環(huán)境如何,按照操作系統(tǒng)中的設(shè)計運(yùn)行。與 VM 不同,它具有高度可移植性,啟動速度更快,并且消耗的資源少得多。
Docker 和 Kubernetes 等容器平臺包含一些基本的安全控制機(jī)制,但容器化應(yīng)用程序開發(fā)通常包含可能易受攻擊的第三方軟件組件。此外,Docker 和 Kubernetes 默認(rèn)情況下并不安全,因此確保安全配置至關(guān)重要,這在大規(guī)模情況下可能很復(fù)雜。
容器容易受到可以繞過主機(jī)隔離的惡意進(jìn)程的攻擊。此外,容器基于可能被攻擊者篡改或可能包含舊的或易受攻擊的軟件組件的鏡像。當(dāng)容器不安全時,它們可以在容器內(nèi)運(yùn)行其他未經(jīng)授權(quán)的容器和應(yīng)用程序,并且在極端情況下,可以允許攻擊者破壞主機(jī)和整個容器集群。
為什么取證在云原生環(huán)境中有所不同
一般來說,取證是信息安全的重要組成部分,尤其是事件響應(yīng)。這是一個新興領(lǐng)域,現(xiàn)在有以DFIR(數(shù)字取證和事件響應(yīng))為中心的專業(yè)工具和安全認(rèn)證。
當(dāng)可疑事件發(fā)生時,安全分析必須執(zhí)行快速取證并調(diào)查以了解發(fā)生了什么,確定事件是否代表真正的安全事件,并收集遏制和消除威脅所需的信息。
隨著開發(fā)人員高速部署代碼,執(zhí)行取證調(diào)查變得更加困難。與可以保持?jǐn)?shù)月不變的物理服務(wù)器或虛擬機(jī)不同,容器是輕量級的臨時計算任務(wù),orchestrator可以隨時啟動和關(guān)閉。容器的壽命可以短至幾分鐘或幾秒鐘,通常以小時為單位。無服務(wù)器函數(shù)的生命周期要短得多——例如,AWS Lambda 函數(shù)每次執(zhí)行最多只能運(yùn)行 15 分鐘。
這些非常短的生命周期對安全性、可見性和取證具有深遠(yuǎn)的影響。因為容器是臨時的,寫入容器文件系統(tǒng)的數(shù)據(jù)通常會在容器關(guān)閉時被刪除(除非它被顯式保存到另一個位置)。像 Kubernetes 這樣的工具會自動安排主機(jī)上的工作負(fù)載,并在主機(jī)之間動態(tài)移動工作負(fù)載,這意味著團(tuán)隊通常無法提前決定應(yīng)用程序?qū)⒃谀膫€主機(jī)上運(yùn)行。
為了在云原生環(huán)境中啟用取證,團(tuán)隊需要能夠在高度動態(tài)的環(huán)境中捕獲相關(guān)日志數(shù)據(jù)的策略和技術(shù),并能夠支持跨多個云和多達(dá)數(shù)千臺主機(jī)運(yùn)行的臨時工作負(fù)載。
構(gòu)建容器取證事件響應(yīng)計劃
在制定容器事件響應(yīng)計劃時,需要考慮三個主要重點(diǎn)領(lǐng)域。
預(yù)防措施
預(yù)防措施可以幫助減少容器上的攻擊面。例如,您永遠(yuǎn)不應(yīng)該在容器上提供 root 訪問權(quán)限,限制對 kubectl 和 Kubernetes API 的訪問,并確保 Kubernetes 運(yùn)行的是最新版本并且集群具有強(qiáng)化配置。
利用 Kubernetes 中可用的安全工具非常重要,包括 Docker Statistics API,它可以幫助收集系統(tǒng)指標(biāo)(system metrics)。系統(tǒng)指標(biāo)對于需要了解系統(tǒng)大規(guī)模運(yùn)行時容器負(fù)載如何影響系統(tǒng)的分析師很有用。
基于這些指標(biāo),DevOps 和安全團(tuán)隊可以了解容器和 Pods 內(nèi)部發(fā)生的情況。例如,他們可以確定敏感文件是否丟失或未知文件是否已添加到容器中,監(jiān)控實(shí)時網(wǎng)絡(luò)流量,并在容器或應(yīng)用程序級別識別異常行為。
數(shù)據(jù)保存和調(diào)查
如果發(fā)生事故,保留必要的證據(jù)以供進(jìn)一步調(diào)查非常重要:
*不要關(guān)閉似乎受到威脅的節(jié)點(diǎn)或容器。這使得無法確定根本原因。
*利用快照技術(shù)對運(yùn)行可疑受感染容器進(jìn)行備份。
*識別關(guān)鍵證據(jù)并獲得足夠的可見性以了解根本原因和影響。嘗試分析盡可能多的數(shù)據(jù)源。
事件響應(yīng)計劃
使用以下最佳方式來確保您在容器受到攻擊時做好準(zhǔn)備:
*分配事件響應(yīng)線索,在發(fā)生重大事件時充當(dāng)關(guān)鍵決策者。
*定義一個事件響應(yīng)計劃,其中包含針對不同類型的安全事件要遵循的明確步驟。
*定義發(fā)生違規(guī)時響應(yīng)者應(yīng)使用的溝通和升級渠道。
*了解法律和合規(guī)義務(wù),這可能需要在指定時間段內(nèi)報告違規(guī)行為。
*進(jìn)行紅隊練習(xí)(red team exercises)和評估,以不斷改進(jìn)您的安全防御并為應(yīng)對真實(shí)事件做好準(zhǔn)備。
總結(jié)
在本文中,展示了容器安全和事件響應(yīng)的基礎(chǔ)知識,解釋了容器取證的基礎(chǔ)知識,并為您的容器事件響應(yīng)計劃提供了三個構(gòu)建塊:
預(yù)防措施——您可以采取的措施,用以減少攻擊面并首先防止對容器的攻擊。
數(shù)據(jù)保存和調(diào)查——確保在發(fā)生攻擊時,您可以保存容器中的數(shù)據(jù)以進(jìn)行調(diào)查和響應(yīng)。
事件響應(yīng)計劃——創(chuàng)建一個計劃來定義誰負(fù)責(zé)容器事件響應(yīng),當(dāng)攻擊發(fā)生時他們應(yīng)該采取什么步驟,以及如何測試計劃以確保其有效。
譯文來源:What To Do When Containers are Attacked: An Incident Response Plan