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


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