容器環(huán)境的安全威脅
容器技術(shù)基于容器主機(jī)操作系統(tǒng)的內(nèi)核,通過對CPU、內(nèi)存和文件系統(tǒng)等資源的隔離、劃分和控制,實現(xiàn)進(jìn)程之間透明的資源使用。因此,容器主機(jī)的安全性對整個容器環(huán)境的安全有著重要的影響。那么對于容器環(huán)境來說,都有什么樣的安全威脅呢?


01 基礎(chǔ)設(shè)施/運行環(huán)境是否安全
基礎(chǔ)設(shè)施/運行環(huán)境是否安全的。容器技術(shù)是基于容器主機(jī)操作系統(tǒng)內(nèi)核實現(xiàn)的資源隔離,相比較vm來講,容器對主機(jī)的操作系統(tǒng)有了更多的權(quán)限,因此諸如OS的安全補(bǔ)丁、API、權(quán)限、認(rèn)證、隔離等問題對容器的安全性有著很大的影響。
02 容器的鏡像是否安全
關(guān)于容器鏡像的安全性,比如像鏡像的漏洞、惡意程序等問題。
03 容器運行時是否安全
比如容器中是否運行了非法的進(jìn)程、是否遭到了DDoS攻擊、是否發(fā)生了逃逸等。
]容器環(huán)境脆弱性分析
01 容器逃逸
容器逃逸攻擊與虛擬機(jī)逃逸攻擊相似,利用虛擬化軟件存在的漏洞,通過容器獲取主機(jī)權(quán)限入侵主機(jī),以達(dá)到攻擊主機(jī)的目的。這里通過容器入侵主機(jī)的逃逸,一方面包括在容器中獲取到更多的主機(jī)權(quán)限;另一方面包括不完善的隔離存儲。
02 容器網(wǎng)絡(luò)
Docker默認(rèn)采用預(yù)設(shè)的橋接網(wǎng)絡(luò)驅(qū)動,一個docker0的網(wǎng)橋?qū)⑺腥萜鬟B接該網(wǎng)橋,docker0網(wǎng)橋扮演著路由和NAT的角色,容器間通信都會經(jīng)過容器主機(jī)。
默認(rèn)情況下,這種橋接采用黑名單的方式,即同一主機(jī)上的容器之間是允許所有通信的,用戶根據(jù)業(yè)務(wù)需求添加訪問控制規(guī)則。如果各容器之間沒有防火墻保護(hù),攻擊者就可以利用主機(jī)內(nèi)部網(wǎng)絡(luò)進(jìn)行容器間的ARP欺騙、嗅探、廣播風(fēng)暴等攻擊。
03 拒絕服務(wù)
默認(rèn)情況下容器可以使用主機(jī)上的所有資源,如果某個容器以獨占方式訪問或消耗主機(jī)的大量資源,則該主機(jī)上的其它容器就會因為缺乏資源而無法正常運行。DoS攻擊可針對任何資源,例如計算資源、存儲資源、網(wǎng)絡(luò)資源等,下面分別以這三種資源進(jìn)行說明。
1.計算資源。ForkBomb是一個很典型的計算型DoS攻擊場景,主機(jī)內(nèi)核正常情況下只能支持一定數(shù)量的進(jìn)程,如果某個容器內(nèi)的進(jìn)程組新建過多進(jìn)程,消耗了主機(jī)上的所有進(jìn)程資源,那其它的容器就沒有資源來創(chuàng)建新的進(jìn)程,甚至?xí)<爸鳈C(jī)的正常工作。
ForkBomb也是自2015年到現(xiàn)在Docker社區(qū)一直討論的問題,目前最好的方法是限制內(nèi)存的使用(--kernel-memory=#M),但是,當(dāng)在與加密文件一起使用時可能會偶爾出現(xiàn)問題。
2.存儲資源。在容器技術(shù)的實現(xiàn)中,通過mount命名空間實現(xiàn)了文件系統(tǒng)的隔離。但是文件系統(tǒng)隔離僅僅是一個非常基本的要求。不建議使用AUFS做存儲驅(qū)動,雖然AUFS創(chuàng)建出的容器文件系統(tǒng)互相隔離,但是在存儲空間方面卻沒有任何限制。換言之,一個容器如果不斷寫文件,將會寫滿存儲介質(zhì),其它容器將無法執(zhí)行寫操作,導(dǎo)致拒絕服務(wù)攻擊。
3.網(wǎng)絡(luò)資源。DoS攻擊層出不窮,容器內(nèi)網(wǎng)絡(luò)帶寬耗盡也是其中一種,攻擊者使用大量的受控主機(jī)向被攻擊目標(biāo)(容器)發(fā)送大量的網(wǎng)絡(luò)數(shù)據(jù)包,以占滿容器的網(wǎng)絡(luò)寬帶,并消耗容器主機(jī)的網(wǎng)絡(luò)數(shù)據(jù)處理能力,達(dá)到拒絕服務(wù)的目的。


