原文譯自:
這篇文章基於我今年在dockercon乙個講座,它將討論我們當前聽到的docker容器的安全問題.
我聽到也讀到很多假定docker容器是應用沙盒的觀點--這意味著他們能夠在他們的系統上使用有根許可權的docker來執行隨意的程式. 他們相信docker容器將會保護他們的主機系統.
"你要來我的客廳嗎", 蜘蛛對蝴蝶說道.
停止這樣的設為docker和linux會保護你免於惡意軟體的想法吧!
假設你不在乙個多租戶系統裡執行docker,而且你對執行在容器裡的服務使用良好的安全策略,那你基本上不須要操心.只假定執行在容器裡的特權程序就像在容器外的特權程序一樣.
一些人錯誤的覺得容器是一種比虛擬機器更好更快的方式,但從安全的角度來看,容器更脆弱,這點我將在文章的後面說明.
假設你相信我說的,docker容器應該被視作"容器服務"-這意味著你要把執行apache的容器看作在你的host系統上執行的apache服務,這就是說你要:
眼下我們正在通用規範中告訴人們把容器的特權程序當在容器外的特權程序.
不要在你的系統裡執行隨意的docker映象,我從很多方面看到docker容器革命類似於2023年的linux革命,那時當乙個管理員聽到乙個新的非常酷的linux服務時,他們會:
兩周後管理員聽到乙個zlib的脆弱性問題並不得不指出( 他們希望並祈禱不是), 軟體是不安全的!
這就是red hat發行版和其它一些值得信賴的第三方介入並解救他們的時刻, red hat的企業版linux給管理員提供了:
安全的公升級來修復問題
發現問題並修復的團隊
管理/維護/安全增強的project師團隊
通用的認證標準來檢查os的安全性問題
僅僅執行從可信賴組織獲得的容器,我相信你應該繼續從同樣的人那邊獲得**/包,就像你曾經做的一樣.假設**不從那邊來, 不要相信容器技術會保護你的主機.
最大的問題就是linux的一切都不是命名空間 (namespaced). 如今, docker使用5個命名空間來改變系統的程序: 程序, 網路, mount, 主機名,共享記憶體.
儘管有給使用者一定的安全級別, 但無法像kvm實施全面的安全保護. 在kvm環境下程序不直接和主機的核心互動.它們也不訪問核心的檔案系統如/sys和/sys/fs, /proc/*
裝置結點是用於和vms 核心互動的,而不是主機.因此, 想要越過vm來擴充套件特權級別, 程序要去攻擊vm核心,找到hypervisor的弱點,打破selinux的控制(svirt),終於攻擊主機的核心.
當你執行在乙個容器裡時,你就已經直接能夠和主機的核心打交道了.
沒有被當成命名空間的基本的核心子系統如:
沒有被當成命名空間的裝置:
假設通過乙個特權程序對以上的某個模組通訊或攻擊的話,你就擁有了整個系統.
selinux導致docker啟動失敗
1.問題描述 一向執行正常的一群容器,突然有一天掛掉了,再也起不來,報錯如下 2.問題解決過程 經過谷歌搜尋,定位到一篇文章跟selinux有關,但是檢視本機的selinux已經是disabled狀態了。經過尋找蛛絲馬跡發現,在我們裝完乙個系統時,當我們的selinux狀態是enforcing的時候...
selinux導致docker啟動失敗
1.問題描述 一向執行正常的一群容器,突然有一天掛掉了,再也起不來,報錯如下 2.問題解決過程 經過谷歌搜尋,定位到一篇文章跟selinux有關,但是檢視本機的selinux已經是disabled狀態了。經過尋找蛛絲馬跡發現,在我們裝完乙個系統時,當我們的selinux狀態是enforcing的時候...
docker安裝gamit gamit的安裝步驟
年月日,gamit 10.34 版發布了最新的修改補丁。修改後,新版本包含如下目錄及檔案 incremental updates com.10.34.tar.z etopo5.grd.10.0.tar example.10.34.tar.z gamit.10.34.tar.z help.10.34....