https://www.freebuf.com/articles/system/353092.html
概述
隨着雲原生技術被越來越多的企業使用,容器作爲雲原生技術架構最重要的基礎組件之一,容器自身是否存在安全風險、是否提供足夠的安全機制來保障業務安全問題運行,成爲了企業實踐雲原生架構最大的絆腳石之一。試想,如果容器存在一個嚴重漏洞,那麼基於容器的一切數據甚至是運行容器的宿主機,將被攻擊者控制。
據《Sysdig 2022 雲原生安全和使用報告》顯示,超過75%的運行容器存在高危或嚴重漏洞、62%的容器被檢測出包含shell命令、76%的容器使用root權限運行。
那麼如何發現這些危險的容器、如何發現容器中是否包含惡意文件了?這篇文章試着提供一個基於ClamAV的容器安全建設方法,供大家參考。
ClamAV介紹
ClamAV是一個開源病毒掃描工具,最近發佈了1.0正式版本,穩定性有了很大提升,同時,ClamAV也從0.96版本支持針對容器的規則編寫,具體規則編寫方法,可以參考官方文檔。
新版ClamAV的安裝過程有幾個需要注意的地方:
- Linux環境如果不存在ClamAV用戶名、用戶組,則直接手動創建即可。
- 運行是如果提示目錄不存在,手動創建後,設置爲ClamAV用戶可讀寫。
- 根據官方文檔生成配置文件後,需要打開配置文件,刪除無用的Example那一行,不然運行是會報錯。
ClamAV更新規則庫
由於ClamAV官方不在提供更新規則庫連接,因此,很多網上的方法都無法使用,這地方,直接介紹一個最簡單的辦法。
- 下載安裝cvdupdate工具:
pip install cvdupdate
- 運行cvdupdate命令更新規則庫:
cvdupdate update
- 啓動規則庫私服:
cvdupdate serve
- 打開freshclam配置文件: /usr/local/etc/freshclam.conf,找到PrivateMirror配置項,取消前面的註釋,如果第三步的私服和clamav在一臺機器,則可以配置爲:
PrivateMirror localhost:8000
- 運行freshclam命令導入clamav規則
ClamAV掃描容器
ClamAV掃描方式有兩種
- daemon方式:先運行clamd daemon進程,然後使用clamdscan把要掃描的對象傳給clamd daemon掃描。
- cli方式:使用clamscan命令,指定目標掃描。
爲簡單演示,本篇文章使用clamscan cli方式進行掃描。 - 導出容器鏡像文件
與Trivy不同的是,ClamAV需要對容器裏的文件內容進行掃描,所以,在掃描之前,我們需要先把容器鏡像導出來,比如我們導出名爲:vibersastra/ubuntu的鏡像:docker save -o ubuntu.tar vibersastra/ubuntu:latest
- 解壓掃描容器鏡像
解壓上一步導出的鏡像文件:tar xvf ubuntu.tar
,假設我們解壓到了temp目錄,則可以使用clamscan -r temp
進行掃描(-r表示遞歸掃描),掃描結果如下:
通過ClamAV,可以成功發現容器中包含的挖礦病毒文件。
tips:由於clamscan每次都需要load一次規則庫文件,導致每次開始掃描都很慢,在正式的環境中,建議使用daemon方式運行。
與Trivy結合實現安全左移
到這,我們已經學會了ClamAV的使用,接下來,如何使用ClamAV實現安全左移,把安全問題發現在業務上線前了?
Trivy這個工具,相信很多瞭解容器安全的小夥伴都在用,通過Trivy可以發現容器鏡像的安全漏洞,包括容器裏的靜態代碼。但是Trivy是一個發現漏洞的工具,至於容器鏡像裏是否存在惡意樣本,比如遠控病毒、挖礦木馬等,Trivy是無法發現的,一個典型的Trivy掃描容器的接入如下:
所以,我們可以通過綜合使用Trivy和ClamAV,來保障容器運行時的安全:
- trivy:確認容器無漏洞,從而無法被攻擊。
- clamav:保證容器運行時無惡意文件,從而杜絕供應鏈攻擊。
結語
隨着使用docker的企業越來越多,容器防病毒也將會得到更多的關注,這在一定程度上可以借鑑主機安全建設的思路,但容器的靈活性,註定無法像主機那樣部署Agent,更多的還是依賴宿主機層面的Agent,實現對容器的安全掃描,從而排除安全風險。