標籤:

數人云|20種終極工具,為你的Docker搭建安全防火牆

數人云:隨著越來越多的企業將生產工作負載遷移到容器當中,關於Docker的安全性,成了普遍關注的問題。

這是一個簡單卻又沒有答案的問題,不要試圖用二進位的方式去考慮Docker安全性,最好深入地去了解Docker的工作細節,以了解Docker安全模式的運行方式。

先來看看Docker是如何工作的,以及這對容器安全意味著什麼。

Docker有兩個關鍵部分:Docker Engine、Docker Hub。後者是Docker的官方註冊中心,這兩個部分都非常重要,需要了解每個組件的組成,哪些需要被保護以及如何操作,先從Docker Engine引擎說起:

〓 Docker Engine

Docker Engine 從容器鏡像文件中運行容器,以及管理網路和存儲容量,保護Docker Engine需要從兩個方面——Namespaces 和 Control Groups。

Namespaces是Docker從Linux內核繼承的特性,將容器進行隔離,這樣容器中的每個進程都無法看到相鄰容器中運行的進程。

最初,Docker容器默認是根用戶運行,但自V1.10依賴,Docker支持Namespaces允許以非Root用戶的身份運行容器,但因其實關閉的,所以在使用之前需要激活。

Docker中支持Control Groups或Cgroups,允許設置CPU、內存、網路和Block IO的限制,容器默認可以使用無限數量的系統資源,所以設置限制非常重要,否則整個系統可能會受到Hungry 容器的影響。

除了Namespaces和Control Groups外,Docker Engine還可以通過使用SELinux和AppArmor等附加工具進一步加強。

  • SELinux為內核提供訪問控制,根據用戶為主機設置的策略,可以基於在容器中運行的流程類型或級別來管理訪問,基於此,它可以啟動或限對主機的訪問。
  • AppArmor在主機上運行的每個進程都有一個安全配置文件,定義了流程可以利用的資源,Docker將默認配置文件應用到流程中,同時用戶也可以應用自定義文件。
  • Similar與AppArmor類似,使用安全配置文件限制進程調用的數量,這是Docker Engine提供的基於Linux的內核安全特性列表。

〓 Docker Hub

雖然Docker Engine可以對容器進行管理,但它需要Docker棧的另外一半來拉取容器鏡像,即Docker Hub容器註冊表,存儲和共享著容器鏡像。

任何人都可以創建容器鏡像,並將其公開供人下載,這既是一件好事,但同時也是一件壞事,好是因為支持開發者之間的協作,只需點擊即可容易地將操作系統或應用實例化,但如果下載一個具有脆弱性的公共容器鏡像,就會很糟糕。

根據經驗法則,下載官方存儲庫,大多數常用工具都可以使用,並且不從未知的作者那裡下載存儲庫,最重要的是,每個下載的容器鏡像都應該掃描到漏洞。

對於私有存儲庫的用戶,Docker Hub將掃描下載的容器鏡像,它可以掃描一些免費的存儲庫,而後如果將掃描作為一個附加組件的話,需要付費。

Docker Hub並不是Docker容器的唯一註冊服務,其他受歡迎的註冊中心包括:Quay、AWS ECR、和GitLab Container Registry,這些工具也具備掃描的功能,另外Docker Trusted Registry(DTR)可以在付費後,安裝在防火牆之後。

Docker是一個錯綜複雜的有著各種移動和靜態部件的網路,顯然插入這些安全工具中的任何一個都不會立即使整個堆棧安全,在所以層面上,都需要結合這些方法來確保Docker的安全。

因此,下次有人問Docker是否安全時,應該反問他們,是指的Docker的哪一個部分?然後,向其解釋影響該層的各種安全注意事項。

儘管上面的安全功能為Docker Engine和Docker Hub提供了基本的保護,但它們缺乏專用容器安全工具的強大功能,像Twistlock這樣的工具可以完全保護你的Docker棧,它超越了任何一個部分,並且可以讓用戶對系統有一個整體的看法,下面介紹一些Docker 安全工具:

在生態系統中有非常多的Docker安全工具,這裡有一個全面的Docker安全工具列表供以參考。

Docker安全工具的索引

BlackDuck Docker security

Docker capabilities and resource quotas

Docker-bench security

1 Anchore Navigator

主頁:anchore.io/

授權:商用,一些服務是免費使用的。

場景:預生產分析、漏洞新聞提要。

Anchore Navigator提供了一項免費服務:可以對Docker鏡像進行深度檢查。還可以探索其豐富的剖析公共映像庫,充分了解其內容、構建過程和發現CVE威脅,以及已知修復相關的鏈接。

可以對自己的鏡像進行深度分析,並訂閱您經常使用的鏡像,以便在升級到商業版本時接收安全警告。

2 AppArmor

主頁:http://wiki.apparmor.net

授權:開源。

場景:運行時保護、強制訪問控制(MAC)。

AppArmor讓管理員為系統中的每個程序分配一個安全概要文件:文件系統訪問、網路功能、鏈接和執行規則等等。

它是一個強制性的訪問控制(或MAC)系統,防止任何被禁止的行為發生,同時還可報告違反概要文件的訪問嘗試等。

只需要了解概要文件的語法,並可以根據喜歡的編輯器去編寫AppArmor規則。

Docker context:Docker可以自動生成和載入一個默認的文件,用於名為docker-default AppArmor的容器,可以為容器或其中的應用創建特定的安全配置文件。

3 AquaSec

主頁:aquasec.com/

授權:商用。

場景:預生產分析、運行時保護、法規遵循和審核等。

AquaSec為容器設計的商業安全套件,功能包括:安全審計、容器鏡像驗證、運行時保護、自動策略學習或入侵預防。

4 BlackDuck Docker Security

主頁:https://www.blackducksoftware.com

授權:商用。

場景:預生產分析、漏洞報告、許可/法律風險。

Black Duck Hub專門負責容器庫存和報告鏡像庫存,將已知的安全漏洞映射到鏡像索引和跨項目風險報告。可以輕鬆地查明導致安全風險的特定庫、軟體包或二進位文件,自動提供已知修復的列表。

5 Cilium

主頁:cilium.io/

授權:開源。

場景:http層網路安全性、網路層安全性。

Cilium在容器應用之間提供透明的網路安全性。基於一種稱為eBPF的新Linux內核技術,允許根據容器/pod身份定義並執行網路層和http層安全策略。

Cilum利用BPF執行核心數據路徑過濾、管理、監視和重定向。這些BPF功能可以在任何Linux4.8.0內核版本或更新版本中使用。

6 CoreOS Clair

主頁:coreos.com/clair/docs/l

授權:開源。

場景:預生產分析、漏洞新聞提要。

Clair是一個開源項目,用於靜態分析容器中的漏洞(目前支持AppC和Docker)。定期從一組配置的CVE源中刷新其漏洞資料庫,對可用的容器映像進行仔細檢查,並對安裝的軟體包進行索引。如果檢測到任何不安全的應用,它可以警告或阻止部署到生產。

由於Clair的鏡像分析是靜態的,容器永遠不需要實際執行,所以可以在系統中運行之前檢測到安全威脅。Clair是CoreOS Quay容器註冊中心的安全引擎。

7 Docker Capabilities & Resource Quotas

主頁:https://www.docker.com

授權:開源。

場景:運行時保護、資源保護。

資源濫用和拒絕服務是一個經常被忽視的問題,但在擁有大量軟體實體競爭主機資源的環境中,這是一個切實存在的安全問題,所以不應該忘記已經與操作系統和Docker引擎捆綁在一起的基本安全措施。

Control Groupscgroups)是Linux內核的一個特性,允許您限制訪問進程和容器對CPU、RAM、IOPS和網路等系統資源的限制。

允許將完整的根許可權分解為多個分割許可權,因此可以從根帳戶中刪除特定的功能,或者在更細粒度的級別上增加用戶帳戶的功能。

8 Docker-bench security

主頁:github.com/docker/docke

授權:開源。

場景:合規審計。

Docker用於安全的工作台是一個元腳本,用於檢查生產中部署Docker容器的數十種常見的最佳實踐。

此腳本很方便地打包為Docker容器,只需在其主頁上複製和粘貼一行代碼,就可以立即看到Docker容器和運行Docker引擎的主機(Docker CE或Docker Swarm)的250個檢查結果。Docker Bench測試的靈感來自於CIS Docker Community Edition v1.1.0。

9 Dockscan

主頁:github.com/kost/docksca

授權:開源。

場景:合規審計。

簡單的Ruby腳本,用於分析Docker安裝和運行容器,既針對本地主機,也針對遠程主機。

安裝和運行只需一個命令即可,並且會生成HTML報告文件。Dockscan reports配置了資源限制,若容器生成了太多的進程,或者有大量修改過的文件,或者Docker主機允許容器直接將流量轉發到主機網關,即可命名幾個檢查。

10 Sysdig Falco

主頁:sysdig.org/falco/

授權:開源。

場景:運行時報警、取證。

Sysdig Falco是一種開源的行為監測應用,旨在檢測基於其技術的異常活動。Sysdig Falco在任何Linux主機上都是一種入侵檢測系統。

Falco是一種與眾不同的審計工具,它在用戶空間中運行,使用內核模塊來攔截系統調用,而其他類似的工具在內核級執行系統調用過濾/監視。用戶空間實現的優點是能夠與Docker、Docker Swarm、Kubernetes、Mesos等外部系統集成,並導入其資源知識和標籤。

Docker上下文:Falco支持特定於容器的上下文。可以監視容器的行為,不必修改它們。定製規則的創建很容易掌握,默認的規則文件以正常的默認值填充。

11 HashiCorp Vault

主頁:vaultproject.io/

授權:免費企業版。

場景:安全容器的憑證存儲,信任管理。

Hashicorp的密碼庫是用於管理密碼的高級套件:密碼、Ssl/Tls證書、API密鑰、訪問令牌、SSH證書等等。支持基於時間的 Secrets租賃、細粒度的 Secrets訪問、新Secrets的生成、關鍵的滾動(更新密鑰,而不使用舊的密鑰生成的秘密)等等。

Vaults Keeps保存了詳細的審計日誌,記錄每個用戶/實體執行的所有 Secrets和訪問及操作,因此操作人員可以很容易地跟蹤任何可疑的交互。

Docker上下文:在新的微服務和容器環境中,安全的分發和可跟蹤性是一個核心問題,在此環境中,軟體實體不斷地被派生和刪除。Vaults本身可以作為Docker容器進行部署。

12 NeuVector

主頁:neuvector.com/

授權:商用。

場景:運行時保護、遵從性和審計。

NeuVector專註於運行時的實時安全保護。自動發現應用程序、容器和服務的行為,以及與其他Linux Id類似方式檢測安全升級和其他威脅。NeuVector「強制」容器部署在每個物理主機上,並完全訪問本地的Docker守護進程,所使用的內部技術在公開可訪問的文檔中並沒有詳細地詳細說明。

NeuVector的目標是非侵入式、插裝式安全套件、自動發現運行的容器以及它們的默認行為,幫助和建議操作人員設計他們的基礎設施安全配置文件。

13 Notary

主頁:github.com/docker/notar

授權:開源。

用例:可信的映像庫、信任管理和可驗證性。

鏡像偽造和篡改是基於文檔的部署的一個主要安全問題,Notary是一種發布和管理受信任的內容集合的工具,可以通過與Linux系統中提供的軟體存儲庫管理工具類似的方式批准可信發布和創建簽名的集合。

一些Notary目標包括保證圖像的新鮮度(大部分是最新的內容,避免已知的漏洞),用戶之間的信任委託,或可信的分布在不可信的鏡像或傳輸通道上。

14 OpenSCAP

主頁:open-scap.org/

授權:開源。

場景:法規遵循和審核,認證

OpenSCAP提供了一套自動化的審計工具,以檢查應用中的配置和已知的漏洞,遵循了Nist認證的安全內容自動化協議(SCAP)。

可以創建自己的自定義規則,並定期檢查部署在公司中的任何軟體是否嚴格遵守規則。

這些工具集不僅關注於安全性本身,還提供了測試和報告。

Docker上下文:OpenSCAP套件提供了一個特定於docdocker的工具——Oscap-Docker,來審計鏡像,同時評估運行的容器和雲端鏡像。

15 Remnux

主頁:remnux.org/

許可:開源。

場景:取證。

基於Ubuntu的安全發行版。REMnux是一個免費的Linux工具包,幫助惡意應用分析人員使用逆向工程的應用,通常稱為取證。系統綁定了大量預先安裝的分析和安全工具:Wireshark, ClamAV, Tcpextract, Rhino Debugger, Sysdig, Vivisect。

16 SELinux

主頁:https://selinuxproject.org

授權:開源。

場景:運行時保護、強制訪問控制(MAC)。

SELinux是Linux內核安全模塊。也是一個強制性的訪問控制系統。從強制訪問控制到強制性的完整性控制、基於角色的訪問控制(RBAC)和類型強制架構。

Docker上下文:類似於AppArmor,SELinux提供了一層額外的訪問策略,並在主機和容器應用之間進行隔離。

17 Seccomp

主頁:https://www.kernel.org

授權:開源。

場景:運行時保護、強制訪問控制(MAC)。

Seccomp是Linux內核中的一個沙箱化工具,可以將其看做基於規則的防火牆,但對於系統調用,使用Berkeley包過濾(BPF)規則來過濾Syscall API,並控制它們的處理方式。

有了Seccomp,可以選擇哪些系統是禁止的,哪些是允許的,如,您可以禁止在容器內進行文件許可權操作。

18 Sysdig

主頁:sysdig.org/

許可證:開放源碼,商業產品建立在免費技術之上。

場景:異常行為調試,取證。

Sysding是針對Linux系統的全系統的探索、故障排除和調試工具。它記錄任何進程所做的所有系統調用,允許系統管理員在操作系統或運行在它上的任何進程中查找BUG。

19 Tenable Flawcheck

主頁:tenable.com/flawcheck

授權:商用。

場景:預生產分析、漏洞新聞提要。

與此列表中的其他商業工具一樣,缺陷檢查可以存儲容器映像,並在它們構建之前進行掃描,然後才能推到生產環境。缺陷檢查利用了漏洞/Nessus的技術和資料庫漏洞,惡意軟體和入侵載體,並將其調整為容器化和敏捷/CD的環境。

20 Twistlock

主頁:twistlock.com/

授權:商用。

場景:預生產分析、運行時保護、法規遵循和審核等。

用於支持容器化環境的商業安全套件:漏洞管理、訪問控制、分析和對安全標準遵從性的取證。

Twistlock與CI/CD集成,為像Jenkins或TeamCity和可調用的Webhooks這樣的工具提供原生插件,這樣即可為每一個構建和測試環境觸發索引和掃描過程。

Docker是一個錯綜複雜的有著各種移動和靜態部件的網路,顯然插入這些安全工具中的任何一個都不會立即使整個堆棧安全,在所有層面上,都需要將這些工具結合起來確保Docker的安全。


推薦閱讀:

DaoCloud、時速雲、靈雀雲這些Docker平台區別在哪裡?
如何基於Docker進行開發?
docker
DaoCloud是一家什麼樣的公司?
docker在web開發中得使用流程是怎樣的?

TAG:Docker |