本文基於我今年在dockercon上的演講。 它將討論docker容器安全性,我們當前的位置以及發展的方向。
這是有關docker安全性的系列文章的一部分 ,請閱讀第二部分 。
我聽到並讀到很多人都認為docker容器實際上是沙箱應用程式-意味著他們可以使用docker作為根在自己的系統上執行隨機應用程式。 他們認為docker容器實際上將保護其主機系統。
「你會走進我的客廳嗎?」 蜘蛛對蒼蠅說 。
不要再假設docker和linux核心可以保護您免受惡意軟體的侵害。
如果您未在多租戶系統上執行docker,並且對容器內執行的服務使用了良好的安全性實踐,則可能不必擔心。 僅假設容器內執行的特權程序與容器外執行的特權程序相同。
有些人誤以為將容器視為執行虛擬機器的一種更好,更快的方法。 從安全的角度來看,容器要弱得多,我將在本文後面介紹。
如果您像我一樣相信,則應將docker容器視為「容器服務」-意味著將其視為執行apache的容器,就像對待在系統上執行的apache服務一樣。這意味著您將執行以下操作:
當前,我們告訴「 通用標準」中的人員以與容器外部執行的特權程序相同的標準來對待容器中的特權程序。
不要在系統上執行隨機的docker映像。 從許多方面來看,我認為docker容器的革命與2023年左右的linux革命相似。當時,當管理員聽到新的酷炫linux服務時,他們會:
兩周後,管理員聽到了zlib漏洞的訊息,必須弄清楚他們是否希望自己的軟體容易受到攻擊,同時祈禱並祈禱它不是易受攻擊的軟體!
這是red hat發行版和其他一些受信任的各方介入的地方,以度過難關。 紅帽企業linux為管理員提供:
安全更新以修復漏洞
乙個安全響應團隊來查詢和管理漏洞
一組工程師來管理/維護軟體包並致力於安全性增強
通用標準認證,用於檢查作業系統的安全性
僅執行來自受信任方的容器。 我相信您應該繼續從過去獲得過**的人那裡獲得**/軟體包。 如果**不是來自內部或受信任的第三方,請不要依靠容器技術來保護您的主機。
最大的問題是linux中的所有內容都沒有命名空間。 當前,docker使用五個命名空間來更改系統的程序檢視:程序,網路,安裝,主機名,共享記憶體。
儘管這些為使用者提供了一定程度的安全性,但它絕不是像kvm那樣全面的。 在kvm環境中,虛擬機器中的程序不會直接與主機核心對話。 他們無權訪問/ sys和/ sys / fs , / proc / *之類的核心檔案系統。
裝置節點用於與vm核心而非主機進行通訊。 因此,為了使虛擬機器具有特權公升級,該過程必須對虛擬機器的核心進行子虛擬化,在hypervisor中找到漏洞,突破虛擬機器上非常緊密的selinux控制項(svirt),最後攻擊主機核心。
當您在容器中執行時,您已經到了與主機核心對話的地步。
主要核心子系統的命名空間不像以下那樣:
裝置未命名空間:
如果您可以通過特權程序來通訊或攻擊其中之一,則可以擁有該系統。
翻譯自:
Weak Strong Dance 真的安全嗎?
絕大多數ios開發者用過block,並且知道用 weak的方式去解決迴圈引用的問題。而高階一些的開發者則了解weak strong dance,那麼什麼是weak strong dance?它能保證block執行是的 安全 嗎?看看下面兩段 的區別,你就明白什麼是weak strong dance了...
Docker 容器安全
由下圖可見,虛擬機器是通過管理系統 hypervisor 模擬出 cpu 記憶體 網路等硬體,然後在這些模擬的硬體上建立客戶核心和作業系統。這樣做的好處就是虛擬機器有自己的核心和作業系統,並且硬體都是通過虛擬機器管理系統模擬出來的,使用者程式無法直接使用到主機的作業系統和硬體資源,因此虛擬機器也對隔...
docker容器的安全加固
社群中常用的做法是利用lxcfs來提供容器中的資源可見性。lxcfs是乙個開源的fuse 使用者態檔案系統 實現來支援lxc容器。lxcfs通過使用者態檔案系統,在容器中提供下列 procfs 的檔案 proc cpuinfo proc diskstats proc meminfo proc sta...