青藤云安全“蜂巢之声”:如何避免重演特斯拉Kubernetes容器集群被黑事件
2018年黑客入侵了特斯拉在亞馬遜上的Kubernetes容器集群。由于該集群控制臺(tái)未設(shè)置密碼保護(hù),黑客便得以在一個(gè)Kubernetes pod中獲取到訪問憑證,然后據(jù)此訪問其網(wǎng)絡(luò)存儲(chǔ)桶S3,通過S3獲取到了一些敏感數(shù)據(jù),比如遙測技術(shù),并且還在特斯拉的Kubernetes pod中進(jìn)行挖礦。該事件只是Kubernetes漏洞利用的一個(gè)典型案例。
近年來,以Kubernetes為代表的安全編排工具讓企業(yè)實(shí)現(xiàn)了應(yīng)用的自動(dòng)化部署,給企業(yè)帶來了巨大的業(yè)務(wù)收益。但是,和傳統(tǒng)環(huán)境下一樣,這些部署也很容易受到黑客和內(nèi)鬼的攻擊和利用,Kubernetes的安全也因此成為容器使用中重點(diǎn)保護(hù)對(duì)象。
在討論Kubernetes安全之前,首先讓我們來了解一下Kubernetes的工作流程。
一、Kubernetes工作流程
Kubernetes是一個(gè)容器編排工具,可自動(dòng)執(zhí)行容器的部署、更新和監(jiān)控。所有主要的容器管理和云平臺(tái)(例如Red Hat OpenShift、Docker EE、Rancher、IBM Cloud、AWS EKS、Azure、SUSE CaaS和Google Cloud)都支持Kubernetes。以下是有關(guān)Kubernetes的一些關(guān)鍵知識(shí):
主節(jié)點(diǎn)。主節(jié)點(diǎn)服務(wù)器管理著Kubernetes工作節(jié)點(diǎn)集群,并在工作節(jié)點(diǎn)上部署Pod。
從節(jié)點(diǎn)。也稱為工作節(jié)點(diǎn),通常運(yùn)行應(yīng)用容器和其他Kubernetes組件,例如agent。
Pod。Kubernetes中的部署和可尋址單位。每個(gè)pod都具有自己的IP地址,并且可以包含一個(gè)或多個(gè)容器(通常是一個(gè))。
服務(wù)。服務(wù)充當(dāng)?shù)讓覲od的代理,并且可以對(duì)不同的Pod進(jìn)行負(fù)載均衡。
系統(tǒng)組件。用于管理Kubernetes集群的關(guān)鍵組件包括API服務(wù)器、Kubelet和etcd。這些組件都是潛在的攻擊目標(biāo)。上文所述的特斯拉事件就是攻擊了沒有密碼保護(hù)的Kubernetes控制臺(tái)來安裝加密挖礦軟件。
在Kubernetes網(wǎng)絡(luò)連接中,每個(gè)Pod都有自己的可路由IP地址。Kubernetes的網(wǎng)絡(luò)插件負(fù)責(zé)將主機(jī)之間的所有請(qǐng)求從內(nèi)部路由到相應(yīng)的Pod。可以通過服務(wù)、負(fù)載均衡或入口控制器來提供對(duì)Kubernetes pod的外部訪問請(qǐng)求,Kubernetes會(huì)將其路由到適當(dāng)?shù)膒od。
Pod通過這些疊加網(wǎng)絡(luò),也就是“包內(nèi)之包”相互通信,并進(jìn)行負(fù)載均衡和DNAT來與相應(yīng)的Pod進(jìn)行連接。可以使用適當(dāng)?shù)膱?bào)頭對(duì)數(shù)據(jù)包進(jìn)行封裝,將它們發(fā)送到相應(yīng)的目的地,然后在目的地解除封裝。
Kubernetes會(huì)動(dòng)態(tài)處理所有這些疊加網(wǎng)絡(luò),因此,監(jiān)控網(wǎng)絡(luò)流量非常困難,確保網(wǎng)絡(luò)安全更是難上加難。
對(duì)Pod中運(yùn)行的容器進(jìn)行攻擊,既可以通過網(wǎng)絡(luò)從外部進(jìn)行,也可以由內(nèi)鬼在內(nèi)部進(jìn)行,例如,黑客通過網(wǎng)絡(luò)釣魚攻擊,讓受害者的系統(tǒng)成為內(nèi)部攻擊的跳板。針對(duì)Kubernetes的漏洞和攻擊向量包括:
1. 容器失陷。若存在應(yīng)用配置錯(cuò)誤或漏洞,攻擊者就能夠進(jìn)入容器中,探測網(wǎng)絡(luò)、進(jìn)程控件或文件系統(tǒng)中的弱點(diǎn)。
2. Pod之間未經(jīng)授權(quán)的連接。失陷容器可能會(huì)與同一主機(jī)或其他主機(jī)上的其他正在運(yùn)行的Pod進(jìn)行連接,以進(jìn)行探測或發(fā)動(dòng)攻擊。盡管第3層網(wǎng)絡(luò)控件可以將Pod IP地址列入白名單,提供了一些保護(hù),但是只有通過第7層網(wǎng)絡(luò)過濾才能檢測到對(duì)受信任IP地址的攻擊。
3. Pod的數(shù)據(jù)滲透。數(shù)據(jù)竊取通常是使用多種技術(shù)組合來完成的,包括在pod中進(jìn)行反彈shell連接,連接到CC服務(wù)器和網(wǎng)絡(luò)隧道,從而隱藏機(jī)密數(shù)據(jù)。
二、實(shí)時(shí)增強(qiáng)Kubernetes的運(yùn)行時(shí)安全
在容器投入生產(chǎn)運(yùn)行后,保護(hù)Kubernetes安全最重要的三個(gè)安全向量分別是:主機(jī)安全、容器檢查和網(wǎng)絡(luò)過濾。
主機(jī)安全
如果容器運(yùn)行所在的主機(jī)(例如Kubernetes工作節(jié)點(diǎn))遭到入侵,則可能會(huì)導(dǎo)致:
通過提權(quán),實(shí)現(xiàn)root用戶權(quán)限
竊取用于訪問安全應(yīng)用或基礎(chǔ)結(jié)構(gòu)的秘鑰
更改集群管理員權(quán)限
主機(jī)資源損壞或劫持(例如挖礦軟件)
影響關(guān)鍵編排工具基礎(chǔ)架構(gòu),例如API Server或Docker守護(hù)程序
像容器一樣,需要對(duì)主機(jī)系統(tǒng)的可疑活動(dòng)進(jìn)行監(jiān)控。因?yàn)槿萜骺梢韵裰鳈C(jī)一樣運(yùn)行操作系統(tǒng)和應(yīng)用,所以,需要像監(jiān)視容器進(jìn)程和文件系統(tǒng)活動(dòng)一樣監(jiān)控主機(jī)。總之,綜合進(jìn)行網(wǎng)絡(luò)檢查、容器檢查和主機(jī)安全,形成了從多個(gè)向量來檢測Kubernetes攻擊的最佳方法。
容器檢查
攻擊經(jīng)常利用提權(quán)和惡意進(jìn)程來實(shí)施或傳播攻擊。Linux內(nèi)核(如Dirty Cow)、軟件包、庫或應(yīng)用程序本身的漏洞利用,都可能導(dǎo)致容器被攻擊。
檢查容器進(jìn)程和文件系統(tǒng)活動(dòng)并檢測可疑行為是確保容器安全的一個(gè)關(guān)鍵要素。應(yīng)該檢測所有可疑進(jìn)程,例如端口掃描和反向連接或提權(quán)。內(nèi)置檢測和基線行為學(xué)習(xí)過程應(yīng)結(jié)合在一起,可以根據(jù)以前的活動(dòng)識(shí)別異常進(jìn)程。
如果容器化應(yīng)用是根據(jù)微服務(wù)原則設(shè)計(jì)的,容器中的每個(gè)應(yīng)用功能有限,并且是使用所需的軟件包和庫來構(gòu)建的,那么,檢測可疑進(jìn)程和文件系統(tǒng)活動(dòng)將更加容易和準(zhǔn)確。
網(wǎng)絡(luò)過濾
容器防火墻是一種新類型的網(wǎng)絡(luò)安全產(chǎn)品,可以將傳統(tǒng)的網(wǎng)絡(luò)安全技術(shù)應(yīng)用到新的云原生Kubernetes環(huán)境中。有不同的方式可以確保容器網(wǎng)絡(luò)的安全:
基于IP地址和端口的3/4層過濾。該方法需要制定Kubernetes網(wǎng)絡(luò)策略,以動(dòng)態(tài)方式更新規(guī)則,在容器部署發(fā)生變更和擴(kuò)容時(shí)提供保護(hù)。簡單的網(wǎng)絡(luò)隔離規(guī)則并不能提供關(guān)鍵業(yè)務(wù)容器部署所需的強(qiáng)大監(jiān)控、日志記錄和威脅檢測功能,僅提供針對(duì)未授權(quán)連接的某種保護(hù)。
Web應(yīng)用程序防火墻(WAF)攻擊檢測可以使用檢測常見攻擊的方法來保護(hù)面向Web的容器(通常是基于HTTP的應(yīng)用)。但是,這種保護(hù)僅限于通過HTTP進(jìn)行的外部攻擊,而且還缺少內(nèi)部流量通常所需的多協(xié)議過濾。
第7層容器防火墻。具有第7層過濾功能和pod間流量深度數(shù)據(jù)包檢查功能的容器防火墻可使用網(wǎng)絡(luò)應(yīng)用協(xié)議保護(hù)容器。這是基于應(yīng)用程序協(xié)議白名單以及對(duì)基于網(wǎng)絡(luò)的常見應(yīng)用程序攻擊(例如DDoS、DNS和SQL注入)的內(nèi)置檢測。容器防火墻還有一個(gè)獨(dú)特功能,可以將容器進(jìn)程監(jiān)控和主機(jī)安全納入監(jiān)控的威脅向量中。
深度數(shù)據(jù)包檢測(DPI)技術(shù)對(duì)于容器防火墻中的深度網(wǎng)絡(luò)安全至關(guān)重要。漏洞利用通常使用可預(yù)測的攻擊向量:惡意HTTP請(qǐng)求,或在XML對(duì)象中包含可執(zhí)行shell命令。基于第7層DPI的檢測可以識(shí)別這些方法。使用這些技術(shù)的容器防火墻可以確定是否應(yīng)允許每個(gè)Pod連接通過,或者確定是否是應(yīng)該攔截的潛在攻擊。
考慮到容器和Kubernetes聯(lián)網(wǎng)模型的動(dòng)態(tài)性,傳統(tǒng)的用于網(wǎng)絡(luò)可見性、取證分析的工具可能就不再適用了。簡單的任務(wù)(例如進(jìn)行數(shù)據(jù)包捕獲,用于調(diào)試應(yīng)用或調(diào)查安全事件)也不再那么簡單。需要新的Kubernetes和容器感知工具來執(zhí)行網(wǎng)絡(luò)安全、檢查和取證任務(wù)。
確保Kubernetes系統(tǒng)與資源的安全
如果不對(duì)Kubernetes進(jìn)行安全保護(hù),Kubernetes以及基于Kubernetes的管理平臺(tái)可能很容易受到攻擊。這些漏洞暴露了容器部署的新攻擊面,很可能被黑客利用。為了保護(hù)Kubernetes和管理平臺(tái)自身不受攻擊,需要做的一個(gè)基本步驟就是正確配置RBAC,確保用戶獲得適當(dāng)?shù)南到y(tǒng)資源。同時(shí),還需要審查和配置以下方面的訪問控制權(quán)限。
保護(hù)API服務(wù)器。為API服務(wù)器配置RBAC或手動(dòng)創(chuàng)建防火墻規(guī)則,防止未經(jīng)授權(quán)的訪問。
限制Kubelet權(quán)限。為Kubelet配置RBAC,并管理證書輪換以保護(hù)Kubelet。
要求對(duì)所有外部端口進(jìn)行身份驗(yàn)證。查看所有可從外部訪問的端口,并刪除不必要的端口。需要對(duì)所需的外部端口進(jìn)行身份驗(yàn)證。對(duì)于未經(jīng)身份驗(yàn)證的服務(wù),則僅限白名單訪問。
限制或刪除控制臺(tái)訪問。除非通過正確配置,可以讓用戶通過強(qiáng)密碼或雙因素身份認(rèn)證進(jìn)行登錄,否則不允許訪問控制臺(tái)/代理。
如前所述,結(jié)合功能強(qiáng)大的主機(jī)安全,鎖定工作節(jié)點(diǎn),可以保護(hù)Kubernetes部署基本架構(gòu)免受攻擊。但是,還建議使用監(jiān)控工具來跟蹤對(duì)基礎(chǔ)結(jié)構(gòu)服務(wù)的訪問,檢測未經(jīng)授權(quán)的連接和潛在攻擊。
我們?nèi)匀灰蕴厮估璌ubernetes控制臺(tái)漏洞利用為例。在黑客攻陷了工作節(jié)點(diǎn)后,就會(huì)建立一個(gè)外部連接,控制加密貨幣挖礦軟件。對(duì)容器、主機(jī)、網(wǎng)絡(luò)和系統(tǒng)資源進(jìn)行基于策略的實(shí)時(shí)監(jiān)控,可以檢測到可疑進(jìn)程以及未經(jīng)授權(quán)的外部連接。
三、寫在最后
近年來,越來越多的企業(yè)開始加速業(yè)務(wù)上云的步伐,采用容器化方法將應(yīng)用遷移到云端。由于 Kubernetes 能夠在一組機(jī)器上運(yùn)行和協(xié)調(diào)容器化服務(wù),因此,在企業(yè)的容器化過程中發(fā)揮了重要作用。雖然Kubernetes自身提供了RBAC(基于角色的訪問控制)策略和基礎(chǔ)架構(gòu)安全功能,但其本身并不是安全工具。在通過Kubernetes進(jìn)行關(guān)鍵業(yè)務(wù)部署時(shí),需要考慮的一項(xiàng)優(yōu)先功能就是安全。本文從網(wǎng)絡(luò)、容器和主機(jī)三個(gè)方面介紹了Kubernetes的一些重要安全措施,以免發(fā)生特斯拉類似的安全事件。
()
二維碼
分享
分享到
打賞
總結(jié)
以上是生活随笔為你收集整理的青藤云安全“蜂巢之声”:如何避免重演特斯拉Kubernetes容器集群被黑事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股东权益比率 股东的权益比是怎么算的
- 下一篇: 7月10日任务 添加自定义监控项目、配置