玩轉容器安全二 容器安全概述

2021-10-10 23:32:39 字數 3133 閱讀 9067

根據我自己的理解,將容器安全劃分成了6個方向,各個方面還存在二級分支方向,本文就這6個方向及其二級分支展開我對容器安全的理解。話不多說,開篇一幅圖,後面全靠編。

技術乾貨 | docker 容器逃逸案例匯集

shocker攻擊

cve-2014-5277:docker和docker-py**注入漏洞

cve-2014-6408:docker許可權許可和訪問控制漏洞

cve-2014-9357:docker許可權許可和訪問控制漏洞

cve-2014-9358:docker目錄遍歷漏洞

cve-2015-3627:docker libcontainer和engine許可權許可和訪問控制漏洞

cve-2015-3630:docker libcontainer與engine安全繞過漏洞

cve-2019-14271:docker cp命令導致容器逃逸

cve-2019-5736:docker runc容器逃逸

更多docker漏洞資訊:

對於容器軟體自身的安全性來說,定期更新docker版本或在docker出現高危漏洞時及時更新版本就能解決此型別問題。但由於docker本身是作為底層資源,版本公升級可能會要求重啟服務這就會影響業務的正常執行。所以我們在解決版本公升級這型別的問題時,按以下步驟來解決:

整體來說,docker版本公升級是高危操作,但依舊需要根據漏洞風險和企業實際情況來制定更新計畫,如2023年的docker runc容器逃逸漏洞修復方案:

主流的容器安全基線有兩個大的板塊:docker與kubernetes,cis分別對其作出了要求,這裡我們簡單對比一下cis_docker_1.13.0_benchmark_v1.0.0cis_kubernetes_benchmark_v1.5.1

cis_docker_1.13.0_benchmark_v1.0.0

cis_kubernetes_benchmark_v1.5.1

host configuration

control plane components

docker daemon configuration

etcd

docker daemon configuration files

control plane configuration

container images and build file

worker nodes

container runtime

policies

docker security operations

對比兩者我們可以發現,docker基線章節也就是本文的第一章的內容,而kubernetes基線更多關心的是集群管理的問題,同時kubernetes安全是基於在docker安全的拔高要求,在本章的第6節我會簡單列舉docker集群的安全性,後期我會通過一篇專門的文章來梳理一下kubernetes集群的安全性。

ps:在上述提到的附錄docker容器最佳安全實踐***v1.0其實就是翻譯了docker benchmark內容,推薦大家去看cis的官方文件,中文翻譯有一些描述上的偏差。我將兩個文件共享在:

接下來就是容器安全中尤為重要的乙個版塊,我將其分為:

映象是一層一層構建而來,很多作業系統、應用程式的基礎映象構建都是對應的官方與docker hub構建的。我們在使用這部分映象需要注意的是基礎映象包含安全漏洞,如centos 5.11與centos 6.6的基礎映象中就包含cve-2014-6277漏洞;其次就是我們使用存在**鏈攻擊的基礎映象或非官方基礎映象(bad image, 惡意映象),這些映象中可能包含惡意程式、後門等。

對於基礎映象的安全性,首先是盡可能不要使用非官方的基礎映象,其次就是需要對使用的基礎映象執行漏洞掃瞄並修復掃瞄發現的漏洞。

映象構建的方式有兩種,第一種是拉取基礎映象,然後通過基礎映象建立容器,在容器中執行相應的操作,最後將容器打包成映象並上傳到映象倉庫以備後期;第二種是通過dockerfile來構建映象。那麼這兩種構建過程中可能的安全風險如下:

在企業內部,隨著容器化的不斷發展,團隊會構建私有映象倉庫來儲存基礎映象、業務映象等。其安全性尤為重要,在私有映象倉庫這塊,通過我的實踐主要是以下幾個方面的問題:

對於容器資源監控與使用方面,目前已有一些開源或成熟的商業系統可以支援,如grafana、prometheus。但是對於容器的安全監控商業產品我了解相對較少,所以我在本文中我只會列出一些容器執行狀態下的安全問題:

不使用--privileged引數啟動容器;

埠開放必須遵循最小許可權原則,不暴露未使用的埠;

不在容器中啟用ssh服務;

不共享主機的網路命名空間(namespace),也就是不要使用--net=host引數啟動容器;

設定故障容器自動重啟策略,也就是使用--restart引數;

容器根檔案系統設定為唯讀;

對容器的出口流量進行安全分析,接入nids進行分析; 等等

對於容器集群kubernete安全較重要的如下:

保護集群元件:

如同上面所說,集群安全已經算是容器安全的另乙個主題,所以本文對集群的安全不過多描述(主要是我還沒有吃透)。

容器在前幾年發展迅速,安全問題也得到了相應的重視,業內出現了很多針對容器安全的工具。當然工具不是本篇文章的重點,後續我會更新關於容器安全工具的安裝、使用與對比。這部分主要**於:

未完待更新。

探索容器安全性 概述

編者的話 本文是 google雲平台 gcp 上的容器安全性系列部落格文章中的第一篇,介紹了容器安全的以下幾個方面 基礎設施安全 軟體 鏈和執行時安全,並澄清了容器不是強大的安全邊界,可能要依靠 google雲平台專案 提供的隔離。最後提供了幾場即將到來的在kubecon eu關於容器安全的講座資訊...

容器映象安全

本篇是第六部分 安全篇 的第一篇,在這個部分,我將用四篇內容為你介紹包括映象,容器和 linux 核心的 lsm 等內容。本篇,我們將重點放在容器映象安全上。在我們啟動容器時,對映象內容本身是無法進行修改的,如果我們使用了被攻擊的惡意映象,那很可能會帶來各種安全問題。通常情況下,我們提到容器映象安全...

Docker 容器安全

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