Categories
程式開發

值得推薦的 Docker 安全開源工具


在容器安全方面,有很多使用開源工具阻止安全災難的故事,例如前不久發生的特斯拉 Kubernetes 集群入侵事件。容器的安全性一直是一件很棘手的事情,因此如何巧妙使用開源工具就成為一件重要的事情。

如果你已經花了大量精力找到了最佳的應用程序安全性測試工具,並確保你的應用程序盡可能安全,那麼你肯定不希望運行它的容器是不夠安全的。幸運的是,有一些商業版的容器安全產品可供選擇,但是有許多開源項目也很不錯。其中有許多項目側重於審計、跟踪公共漏洞和通用披露數據庫(CVE)以及由 CIS 網絡安全智能係統、國家漏洞數據庫和其他機構建立的安全基準。這些工具會對容器鏡像進行掃描,並將掃描後的結果與這些已知的漏洞清單進行交叉比對。

通過使用自動化容器審計或者容器安全流程,可以幫助團隊在項目早期捕獲問題,從而為企業帶來巨大的好處。

目前有很多開源容器安全工具,這裡列出了一些最好的、最成熟的、擁有廣大用戶群體的工具。

Docker Bench for Security(Docker 安全工作台)

Docker Bench 是一個根據安全基準對 Docker 容器進行審計的腳本。

該工具面向的是使用 Docker 社區版本進行容器管理的開發者,Docker Bench for Security 是一個根據通用的安全最佳實踐設計的開源腳本,用於對 Docker 容器進行安全審計。

Docker Bench 的測試基於行業的 CIS 基準,可以自動完成繁瑣的手工漏洞測試過程。

Docker 安全主管 Diogo Mónica 將其描述為“一個測試容器的容器”。你可以按照如下操作對容器進行初始化:

docker run -it --net host --pid host --userns host --cap-add audit_control  -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST  -v /var/lib:/var/lib  -v /var/run/docker.sock:/var/run/docker.sock  -v /usr/lib/systemd:/usr/lib/systemd  -v /etc:/etc --label docker_bench_security  docker/docker-bench-security

運行結果會將每個安全配置基準的日誌分為普通信息、警告信息以及通過信息。你可以直接在 Docker 容器中運行這個工具,也可以通過 Docker Compose 來克隆或者直接在你的 Docker 宿主機上運行這個腳本。

這個工具有一個缺點,它的輸出結果在機器可讀性上有所欠缺。社區有許多工具包實現了對 Docker Bench 的改進,比如,Docker Bench Test、drydock 以及 Actuary。

Clair

Clair 是一個 API 驅動的基於龐大的 CVE 數據庫的靜態容器安全分析工具。

Clair 是由 CoreOS 開發的靜態容器漏洞分析工具。在 Quay.io 上也可以使用這個工具,Quay.io 是一個公共容器註冊中心,是Docker Hub 的一個 替代品。

Clair 從許多漏洞數據源獲取信息,比如 Debian 安全漏洞跟踪庫、Ubuntu CVE 跟踪庫以及 Red Hat 安全數據庫。由於 Clair 涵蓋了大量的 CVE 數據庫,所以它的審計是非常全面的。

Clair 首先會為容器鏡像中的特性列表建立索引。然後通過 Clair API,開發人員可以查詢與特定鏡像相關的漏洞數據庫。

你可以通過 Clair 入門文檔來開始使用 Clair。在 Kubernetes 集群上部署也是很簡單的:

git clone https://github.com/coreos/clair cd clair/contrib/helm cp clair/values.yaml ~/my_custom_values.yaml vi ~/my_custom_values.yaml helm dependency update clair helm install clair -f ~/my_custom_values.yaml

Clair 的一大特性就是它的靈活性。它允許你為一些行為添加自己的驅動。此外,通過單獨的 API 調用來審計特定的容器鏡像是一種漂亮的、機器驅動的替代方法,可以代替對大量的日誌報告進行搜索的方法。

Cilium

Cilium 是一個內核層的 API 感知網絡和安全工具。

Cilium 專注於解決安全網絡連接,與 Docker、Kubernetes 等 Linux 容器平台有良好的兼容性,它增加了安全可視化以及控制邏輯。

它基於 Linux 內核技術 BPF(以前被稱為 Berkeley packet filter)。其功能在底層進行實現的有趣之處在於,你可以直接應用和更新 Cilium 安全策略,無需更改應用程序代碼或容器配置。 CoreOS 開發 Cilium 的目的是為了響應現代微服務開發和快速容器部署的易變生命週期。它可以與 Kubernetes 直接進行集成,你可以使用下面的命令進行部署:

$ kubectl create -f ./cilium.yaml clusterrole "cilium" created serviceaccount "cilium" created clusterrolebinding "cilium" created configmap "cilium-config" created secret "cilium-etcd-secrets" created daemonset "cilium" created 
$ kubectl get ds --namespace kube-system NAME DESIRED CURRENT READY NODE-SELECTOR AGE cilium 1 1 1  2m

Cilium 的周邊支持和開發社區非常棒。你能找到大量的指南和文檔、一個 Slack 頻道,甚至還有每週與項目維護者的聚會。

Anchore

Anchhore 是一個使用 CVE 數據庫和用戶定義策略檢查容器安全性的工具。

Anchore Engine 是一個分析容器鏡像的工具。不僅僅加入了 CVE 的安全漏洞報告,Anchore 引擎還可以使用自定義策略來對 Docker 鏡像進行評估。

不同策略會導致通過或失敗的結果。策略可以基於白名單/黑名單、安全憑證、文件內容、配置類型或其他用戶提示。

Anchore 打包成 Docker 容器鏡像後,既可以獨立運行,也可以在 Kubernetes 這樣的容器編排平台上運行。它也可以集成 Jenkins 和 GitLab實現CI/CD。

使用 Anchore 命令行工具(CLI)是操作 Anchore 引擎的好方法。例如,你可以使用如下命令來查看鏡像內容的詳細信息:

anchore-cli image content INPUT_IMAGE CONTENT_TYPE

再例如,你可以使用如下命令來對一個鏡像進行漏洞掃描:

anchore-cli image vuln docker.io/library/debian:latest os

Anchore 能夠輸出漏洞細節、威脅級別、CVE 標識符和其他相關信息的列表。由於用戶定義的規則是通過 Anchore 雲服務圖形用戶界面(GUI)創建的,所以它的操作類似於SaaS。

OpenSCAP Workbench

OpenSCAP Workbench 是一個為各種平台創建和維護安全策略的環境。

OpenSCAP 是一個 IT 管理員和安全審計員的生態系統,其中包括許多開放的安全基準指南、安全配置基準和開源工具。

使用 Fedora、Red Hat Enterprise Linux、CentOS 或 Scientific Linux 的用戶可以將 OpenSCAP 工作台安裝為 GUI 的形式,以便在虛擬機、容器和容器鏡像上運行掃描。你可以使用如下命令安裝 OpenSCAP 工作台:

# yum install scap-workbench

如果要根據 SCAP 策略指南和 CVE 來評估容器,請使用 OpenSCAP 附帶的 oscap-docker 程序。

OpenSCAP 以 NIST 認證的安全內容自動化協議(SCAP)為核心,提供了許多機器可讀的安全策略。 OpenSCAP 安全指南指出,該項目的目標是允許多個組織通過避免冗餘來有效地開發安全內容。

由於 OpenSCAP 比列表中的其他工具應用範圍更廣泛,所以對於希望為整個平台創建安全策略的團隊來說,OpenSCAP 是一個很好的選擇。

Dagda

Dagda 是一個掃描 Docker 容器中漏洞、木馬、病毒和惡意軟件的工具。

Dagda 是又一個用於容器安全性靜態分析的工具。它的 CVE 來源包括 OWASP 依賴項檢查、Red Hat Oval 以及 Offensive Security 數據庫。

要使用 Dagda 掃描 Docker 容器,首先要建立一個包含漏洞數據的 Mongo 數據庫。之後,執行此命令來分析單個 Docker 鏡像:

python3 dagda.py check --docker_image jboss/wildfly

你可以在遠程運行它,或者不斷地調用它來監視活動的 Docker 容器。結果輸出能夠顯示出漏洞的數量、嚴重性級別以及其他細節,可以幫助開發者進行安全修復。

Dagda 的優勢之一是它廣泛覆蓋了各種漏洞數據。這意味著你可以直接訪問大量最新的、全面的漏洞數據。同時,它也很靈活,你可以通過 CLI 命令行工具以及 REST API 來控制它。

Notary

Notary 是一個增強容器安全性的框架。

Notary 實際上是一個 Docker 的鏡像簽名框架,現在開源用於其他實現。 Docker 開發了它,然後在 2017 年將其捐贈給了雲原生計算基金會。

Notary 主要是用於職責分離的。使用 Notary,開發人員可以委派角色並在容器之間定義職責。該工具提供了服務端工具和客戶端工具,提供了一種內容髮布和驗證的加密安全方法。

如果要在本地部署 Notary,你需要先把代碼倉庫克隆到本地。之後使用 Docker Compose 來部署一個本地配置項:

$ docker-compose build 
$ docker-compose up -d 
$ mkdir -p ~/.notary && cp cmd/notary/config.json cmd/notary/root-ca.crt ~/.notary

它依賴於 The Update Framework 以及 Go 語言,可以驗證容器應用程序鏡像的加密完整性。

Grafaes

Grafaes 是一個用於幫助管理內部安全策略的元數據API。

Grafaes 可以幫助你創建自己的容器安全掃描項目。該容器安全工具是由 IBM 和谷歌於 2017 年底發布的。

開發人員可以使用 Grafaes 組件元數據 API 來定義虛擬機和容器的元數據。 IBM 的 Vulnerability Advisor 也集成到了該項目中。

如果需要參考一個可靠的案例研究,請參見 Shopify 是如何使用 Grafaes 管理 500,000 個容器鏡像的元數據的。與 Kritis 合作,該團隊對使用 Grafeas 元數據的 Kubernetes 集群實施安全策略管理。

Grafaes 能夠快速獲取容器元數據,這有助於加快補救安全問題,減少漏洞被暴露以及被利用的窗口期。雖然 Grafaes 是開源的,但它是由大型軟件供應商維護的,這對工具的長期支持是有好處的。

Sysdig Falco

Sysdig Falco 是一個可以提供深度容器可見性的行為活動監視工具。

Falco 是一個 Kubernetes 感知安全審計工具,它是由 Sysdig 開發的,強調對容器、主機和網絡活動的行為監視。使用 Falco,開發人員可以對其基礎設施進行持續檢查、異常檢測,並為任何類型的 Linux 系統調用設置警報通知。

Falco 文檔建議用戶將 Falco 作為 Docker 容器運行。你可以使用這些命令安裝它。安裝完成後,Falco 警報標準輸出如下所示:

stdout_output: enabled: true 10:20:05.408091526: Warning Sensitive file opened for reading by non-trusted program

通過 Falco 可以監視 shell 何時在容器中運行、容器在哪裡掛載、對敏感文件的意外讀取、出站網絡嘗試以及其他可疑調用。 Sysdig 提供了更多的容器故障排查資料。

Banyanops Collector

Banyanops Collector 是一個 Docker 容器鏡像靜態分析框架。

Collector 是一個 Banyanops 提供支持的開源實用程序,它可以用來查看 Docker 容器中的鏡像文件。開發人員可以使用 Collector 收集容器數據,執行安全策略等等。

首先,Banyanops 既支持私有容器註冊中心,也可以作為 Docker Hub 上的容器運行。 Banyanops 還提供 SaaS 產品,可以提供更深入的數據分析,因此,如果遇到功能受限的情況,你可能需要購買其服務。

其他優秀開源工具

  • Dockerscan:一個 Git 提交次數不多的安全漏洞掃描器。

  • Batten:一個類似於 Docker Bench的審計工具包,但是他們提供的支持並不活躍。

  • BlackDuck Docker security:一個以 Web 服務形式構建的容器鏡像安全掃描工具。遺憾的是,目前不建議以 Web 的形式使用該產品。

  • Inspec:一個具有 Docker 容器測試功能的審核、測試框架。

具體情況,具體分析

由於容器化已經發展成為一種流行的部署方式,因此最重要的是需要使用適當的安全控制來增強這些容器。值得慶幸的是,你會發現一個強大的開源安全解決方案生態系統,這些解決方案是為許多不同的環境定制的。

這些工具的整體強度取決於檢查的深度。有效性還取決於 CVE 數據庫和基準本身是否及時進行漏洞更新並發布新的最佳實踐。值得慶幸的是,各種工具現在正在努力減少零日漏洞的利用以及容器漏洞被利用的窗口期。

開發人員也會被那些具有更好體驗的工具所吸引,這些體驗更好的工具能夠減少無效日誌以及重複數據。這類偏好只能通過反複試驗和試錯來確定,這取決於你的構建活動和個人偏好。

原文鏈接:

https://techbeacon.com/security/10-top-open-source-tools-docker-security