docker容器安全風險初探

2022-08-24 09:12:16 字數 2800 閱讀 9129

容器是系統虛擬化的實現技術,容器技術在作業系統層面實現了對計算機系統資源的虛擬化,通過對cpu、記憶體和檔案系統等資源的隔離、劃分和控制,實現程序間的資源使用,實現系統資源的共享。docker容器是使用最廣、也是最具代表性的容器,這篇文章就來簡單**docker容器的安全性,學習docker容器的風險與攻擊面。

虛擬化(virtualization)和容器(container)都是系統虛擬化的實現技術,可實現系統資源的「一虛多」共享。 容器技術是一種「輕量」的虛擬化方式,此處的「輕量」主要是相比於虛擬化技術而言的。例如,虛擬化通常在 hypervisor 層實現對硬體資源的虛擬化,hypervisor 為虛擬機器提供了虛擬的執行平台,管理虛擬機器的作業系統執行, 每個虛擬機器都有自己的作業系統、系統庫以及應用。而容器並沒有 hypervisor 層,每個容器是和主機 共享硬體 資源及作業系統 。容器技術在作業系統層面實現了對計算機系統資源的虛擬化,在作業系統中,通過對 cpu、記憶體和檔案系統 等資源的隔離、劃分和控制,實現程序之間透明的資源使用。

如下主要從承載容器執行的負載平台、容器自身、容器中執行的應用、容器編排工具 這幾個維度來說明,當然也有別的維度。

我們都知道,容器與宿主機共享作業系統核心,因此宿主機的配置對容器的執行安全有著至關重要的影響。

然而,隨著雲原生時代的到來,此處的『宿主機』不限於物理主機,可能是公有雲、私有雲、甚至混合雲的環境,可以統稱為『工作負載』;這種橫跨物理機、公有雲、私有雲、混合雲等環境時,可以參考雲工作負載保護平台(cwpp),當然cwpp不在本次的討論範圍內。

常見的加固建議有:

docker的幾種網路模式

逃逸風險

容器逃逸攻擊與虛擬機器逃逸攻擊相似,利用虛擬化軟體存在的漏洞,通過容器獲取主機許可權入侵主機,以達到攻擊主機的目的。

具體地,一些 poc 工具,如 shocker[48],可展示如何從 docker 容器逃逸並讀取到主機某個目錄的檔案內容。 shocker 攻擊的關鍵是執行了系統呼叫 open_by_handle_at 函式,linux 手冊中特別提到呼叫 open_by_handle_at 函式需要具備 cap_dac_read_search 能力,而 docker1.0 版本對 capability 使用黑名單管理策略,並且沒有 限制cap_dac_read_search 能力,因而引發了容器逃逸的風險。

映象風險

2). 私有倉庫的安全

例如 docker registry和harbor

- 對於docker registry,一方面是考慮docker registry本身的安全性,例如在使用時配置相應的安全證書;另一方面是考慮docker客戶端與docker registry互動過程中的安全性,也就是實現使用者訪問許可權限制(密碼鑑權、雙向ssl機制等)

映象檢測的核心目前仍然是已知系統 cve 檢測。掃瞄器獲取到映象後,將它分離成相應的層和軟體包 (package)。然後這些 package 將與多個 cve 資料庫 package 的名稱和版本進行對比,從而判定是否存在漏洞。還有一些通過掃瞄映象中的環境變數、操作命令以及埠開放資訊來識別惡意映象的方案,但仍然需要使用 者自己基於結果來判斷,還不能直接給出乙個明確的結果。

微服務服務軟體從單一的應用程式遷移為基於容器的大量微服務,在帶來許多好處的同時也改變了軟體內部的通訊 模式。從網路和安全角度來看,最顯著的變化是內部網路的東西向通訊流量劇增,邊界變得更加模糊。儘管每個 執行中的容器都可以被加固,也可限定有限的對外網路通訊介面,但因為通訊介面總量的激增,也給網路攻擊者 探測和發現漏洞帶來更多機會在這種動態變化的容器環境中,傳統網路防火牆不僅難以看到容器之間的網路流量,而且隨著容器的快速啟 動和消失,它也無法適應這種持續的變化。正如一位網路安全架構師所說:「在乙個容器化的世界裡,你無法手 動配置 iptables 或手動更新防火牆規則。」

雲原生的環境中,需要對應的雲原生容器防火牆,它能夠隔離和保護應用程式容器和服務。即使在容器動態擴充套件或縮小的情況下也會自動實現發現、跟隨和保護。

微分段是比傳統以網路位址為粒度的分段更細的隔離機制,例如可以是單個容器、同網段的容器集合或容器 應用等。微分段也是容器防火牆的基本功能之一,容器防火牆可感知第七層或者應用層,根據上層應用對連線進 行動態的控制,因而容器防火牆可實現面向業務的動態微分段,成為了保護東西向流量場景中容器免受惡意攻擊 第一道防線。

容器防火牆主要是針對保護容器之間的網路會話,面向東西向場景,所以並不會取代部署在資料中心入口處 的防火牆等系統,比如 ngfw、ids/ips或waf。相反,容器防火牆和傳統防火牆協同合作,可以有效防止內部應用程式級別的攻擊。

容器技術的成熟推動者微服務的發展和落地,企業逐漸採用微服務架構來元件自己的應用,其中容器編排工具管理者承載各類服務的容器集群。以社群熱度最高的kubernetes編排工具來舉例說明編排工具的需要的安全防護措施。

計算資源安全:podsecuritypolicy是集群級別的資源控,用於控制 pod 規範以及管理 pod 安全,podsecuritypolicy 物件定義了一組必須執行的條件以及相關欄位的預設值, 集群管理員通過 podsecuritypolicy 可以控制以下內容。

集群安全

Docker 容器安全

由下圖可見,虛擬機器是通過管理系統 hypervisor 模擬出 cpu 記憶體 網路等硬體,然後在這些模擬的硬體上建立客戶核心和作業系統。這樣做的好處就是虛擬機器有自己的核心和作業系統,並且硬體都是通過虛擬機器管理系統模擬出來的,使用者程式無法直接使用到主機的作業系統和硬體資源,因此虛擬機器也對隔...

docker容器的安全加固

社群中常用的做法是利用lxcfs來提供容器中的資源可見性。lxcfs是乙個開源的fuse 使用者態檔案系統 實現來支援lxc容器。lxcfs通過使用者態檔案系統,在容器中提供下列 procfs 的檔案 proc cpuinfo proc diskstats proc meminfo proc sta...

docker容器的安全加固

社群中常用的做法是利用lxcfs來提供容器中的資源可見性。lxcfs是乙個開源的fuse 使用者態檔案系統 實現來支援lxc容器。lxcfs通過使用者態檔案系統,在容器中提供下列 procfs 的檔案 proc cpuinfo proc diskstats proc meminfo proc sta...