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