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