值得推薦的十大安全加固容器方法
譯文眾所周知,網(wǎng)絡(luò)安全事件會對一個組織的聲譽、以及市場競爭力造成嚴重的影響,甚至可能導(dǎo)致由最終用戶發(fā)起的訴訟、以及各種不必要的法律糾紛。根據(jù)IBM的一份??調(diào)查報告??,全球范圍內(nèi)的各個組織平均每次由數(shù)據(jù)泄露所帶來的總體成本約為392萬美元。通常,一個組織會因為如下方面的疏漏,而拉低整體的安全態(tài)勢:
- 缺乏安全管理工具和實踐的技能和培訓(xùn)
- 缺乏風險的可見性和漏洞的發(fā)現(xiàn)機制
- 未能持續(xù)監(jiān)控當前系統(tǒng)與服務(wù)的安全狀態(tài)
而根據(jù)PaloAlto Networks最近的一份《??云安全狀況調(diào)查報告??》表明,有94%的組織正在使用著一個或多個云平臺,并且其中有大約45%的計算會發(fā)生在他們?nèi)萜骰駽aaS(容器即服務(wù))上。隨著應(yīng)用容器的主導(dǎo)地位的逐步攀升,由此引發(fā)的安全威脅也在不斷增加。同時,該報告也羅列出了如下八大主要安全威脅:
- 由惡意軟件引發(fā)的數(shù)據(jù)泄露
- 應(yīng)用程序的代碼級漏洞
- 系統(tǒng)身份驗證組件的薄弱或被破壞
- 應(yīng)用的配置錯誤
- 不正確的訪問或權(quán)限過高
- 源自內(nèi)部的威脅
- 身份認證憑據(jù)的泄漏
- 不安全的端點
針對上述威脅,我們將在下面和您討論一些有關(guān)容器安全性的優(yōu)秀實踐。您可以通過遵循并實施,來降低容器化工作負載中的各種安全風險,進而實現(xiàn)對于應(yīng)用程序的保護。
1. 來自受信存儲庫的基于源代碼的鏡像
當我們創(chuàng)建容器鏡像時,通常會依賴那些來自流行的、私有的或公共注冊表的種子鏡像。不過請注意,在鏡像制作的供應(yīng)鏈中,有人可能會滲透進去,并植入能夠為攻擊者打開“大門”的惡意代碼。例如,在2018年,一些黑客曾攻擊了英國航空公司的軟件供應(yīng)鏈。他們將惡意的JavaScript代碼插入英國航空公司的Web應(yīng)用程序之中。具體請參見鏈接--https://www.wired.com/story/british-airways-hack-details/。同樣,就在幾年前,Docker在其Docker Hub上也發(fā)現(xiàn)了一些被安裝了Cryptominers(加密貨幣挖礦軟件)的??鏡像??。
因此,您需要在如下方面引起足夠的重視:
- 在創(chuàng)建容器鏡像時,請使用來自知名可信發(fā)布者的、經(jīng)過安全加固的基礎(chǔ)性鏡像源。
- 請選擇那些經(jīng)常被更新的、帶有最新安全修復(fù)和補丁的鏡像。
- 請使用那些經(jīng)過簽名和標記的鏡像,并在拉取的過程中驗證鏡像的真實性,以阻斷中間人攻擊。
2. 安裝經(jīng)過驗證的包
出于同樣的原因,我們也需要保障被安裝在基礎(chǔ)鏡像上的軟件包,也源自經(jīng)過驗證和受信任的來源。
3. 最小化鏡像中的攻擊面
我們常說應(yīng)用的受攻擊面與鏡像中已安裝的軟件包和庫的數(shù)量有關(guān)。通常,如果此類對象的數(shù)量較少,那么出現(xiàn)漏洞的機率也就越低??梢?,我們應(yīng)當在滿足應(yīng)用程序運行時的基本要求的前提下,盡可能地保持鏡像的體積最小。理想狀況下,我們最好在一個應(yīng)用程序容器中,僅保留一個應(yīng)用程序。同時,您可以從如下方面入手:
- 刪除不必要的工具和軟件,包括:包管理器(如,yum和apt)、網(wǎng)絡(luò)工具、客戶端、以及鏡像中的shell和netcat(可用于創(chuàng)建反向的shell)等。
- 使用多階段(multi-stage)的Dockerfile,并從生產(chǎn)環(huán)境的鏡像中刪除各個用于軟件構(gòu)建的組件。
- 為了減少威脅,請不要在容器中暴露不必要的網(wǎng)絡(luò)端口、套接字、以及運行不需要的服務(wù)(如SSH的守護程序等)。
- 與其選用帶有完整操作系統(tǒng)的鏡像,不如選擇alpine鏡像、臨時鏡像或?qū)槿萜鲀?yōu)化了的操作系統(tǒng)。
4.不要在鏡像中留存信任憑據(jù)
所有的信任憑據(jù)都應(yīng)該“遠離”鏡像和Dockerfile。包括SSL證書、密碼、令牌、以及API密鑰在內(nèi)的各種機密信息,都應(yīng)當被保存在外部,并通過容器編排引擎、或外部密鑰管理器,進行安全地掛載。目前,Hashicorp Vault工具,由AWS Secrets Manager、Kubernetes Secrets、Docker Secrets Management、以及CyberArk等提供的云端密鑰管理服務(wù),都可以改善您在此方面的安全態(tài)勢。
5. 使用安全的私有或公共注冊表
企業(yè)通常擁有自己的基礎(chǔ)鏡像,其中包含了各種他們不想公開分發(fā)的專有軟件庫。為了確保鏡像能夠被托管在安全且受信的注冊表處,以防止未經(jīng)授權(quán)的訪問,請使用具有可信根CA的TLS證書,并實施強身份驗證,以防范MITM(中間人)攻擊。
6.不要使用特權(quán)或root用戶,在容器中運行應(yīng)用程序
這是容器化工作負載中最常見的配置錯誤。請牢記最低權(quán)限原則,創(chuàng)建一個應(yīng)用程序的專用用戶,并使用它在容器內(nèi)運行應(yīng)用程序的對應(yīng)進程。您也許會問為何不能用root用戶呢?其原因是:除了通過其帶有的額外元數(shù)據(jù),來識別是否為容器的一部分,在容器中運行的進程,與在主機操作系統(tǒng)上運行的進程十分相似。而一旦容器中的root用戶有了UID和GID,那么它可以訪問、甚至修改其在宿主機上的文件。
注意,如果您沒有在Dockerfile中定義任何USER的話,那么容器就會以root用戶運行。
7. 在CI/CD中實施鏡像漏洞掃描
在為容器的構(gòu)建和交付設(shè)計CI/CD時,請包含一個鏡像掃描方法,以識別那些由CVE公布到的知名漏洞。同時,請不要在沒有修復(fù)的情況下,部署任何可用的鏡像。常見的漏洞掃描工具包括:Clair、Synk、Anchore、AquaSec、Twistlock等。同時,AWS ECR和Quay.io等容器注冊表也需要配備各種相應(yīng)的掃描方案。
8. 啟用AppArmor等內(nèi)核安全配置文件
AppArmor是一個Linux安全模塊,可被用于保護操作系統(tǒng)、及其應(yīng)用程序免受各種安全威脅。Docker通過提供默認配置文件的方式,允許程序訪問諸如:網(wǎng)絡(luò)訪問、內(nèi)核功能、文件權(quán)限等有限的資源。該方法不但減少了潛在的攻擊面,而且提供了很好的深度防御。
9. 安全集中式的遠程日志記錄
通常,容器將所有內(nèi)容記錄到標準輸出--STDOUT上。顯然,這些日志會因為中斷而丟失。因此,我們需要將日志安全地、以傳輸流的方式集中到一處,以供未來的審計和按需取證。當然,我們需要確保此類日志系統(tǒng)的安全性,以免敏感數(shù)據(jù)信息從日志中泄漏出去。
10. 部署運行時(Runtime)的安全監(jiān)控
前面給出的九項安全建議,只是最大限度地減少了安全威脅,并不能完全阻止攻擊的發(fā)生。對此,我們?nèi)匀恍枰ㄟ^持續(xù)監(jiān)控和記錄應(yīng)用程序的行為,來及時檢測并發(fā)現(xiàn)任何可疑或惡意的活動。同時,我們還可以實施分層防御,對不同的監(jiān)控范圍,部署不同的審計與容器保護工具。
可用于安全控制的開源工具
常言道:“工欲善其事,必先利其器”。為了簡化上述針對容器的安全加固,我在此為您羅列了如下六大開源和商業(yè)工具,以方便您按需采用:
- ??Docker-bench-security??– 屬于Docker的官方工具。作為由??CIS Benchmark??針對Docker提出的行業(yè)標準,它可以被用于審計容器的各種工作負載。
- ??Hadolint Linter for Dockerfile?? – 可以使用linter對Dockerfile進行靜態(tài)代碼分析。作為一種優(yōu)秀實踐,linter可與各種流行的代碼編輯器和集成管道相整合。
- ??Clair?? – 是一種流行的應(yīng)用容器靜態(tài)漏洞掃描工具。它會定期從各種漏洞數(shù)據(jù)庫中獲取元數(shù)據(jù)。其同類工具包括:??Anchore??、??Synk??、以及??Trivy??。
- ??OWASP Cheatsheet??– 該漏洞備忘錄來自備受安全專家歡迎的開放社區(qū)--OWASP。
- ??OpenSCAP for Container??– SCAP(Security Content Automation Protocol,安全內(nèi)容自動化協(xié)議)是一個多用途的規(guī)范框架,可以支持自動化配置、漏洞和補丁檢查、技術(shù)控制的合規(guī)活動與安全測量等。它執(zhí)行的是NIST各項標準。
- ??Sysdig Falco???– 隨著黑客的持續(xù)進步和新漏洞的不斷涌現(xiàn),靜態(tài)掃描工具已顯得力不從心。我們需要能夠持續(xù)進行行為監(jiān)控、以及基于AI/ML的高級引擎。而作為一種可用于實現(xiàn)運行時安全性的工具,F(xiàn)alco使用高效的eBPF去攔截各種調(diào)用與流量,并能實時進行監(jiān)控和取證。
此外,您還可以選用AquaSec、Twistlock、Sysdig、Synk、以及Qualys等企業(yè)級安全工具和商業(yè)產(chǎn)品。
希望上述各種解決方案能夠真正為您抵御黑客攻擊,協(xié)助您及時發(fā)現(xiàn)當前系統(tǒng)中的異常狀態(tài),以及為您的容器負載提供合理化的改進建議。
譯者介紹
陳峻 (Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項目實施經(jīng)驗,善于對內(nèi)外部資源與風險實施管控,專注傳播網(wǎng)絡(luò)與信息安全知識與經(jīng)驗;持續(xù)以博文、專題和譯文等形式,分享前沿技術(shù)與新知;經(jīng)常以線上、線下等方式,開展信息安全類培訓(xùn)與授課。
原文標題:Top 10 Ways To Secure Containers,作者:Anjul Sahu