1. 程式人生 > >Docker安全自動化掃描工具對比測試

Docker安全自動化掃描工具對比測試

題外話:

這點兒東西測試了快兩天,各種坑是真的多,望後來者可以引以為鑑

正文

本次對主流的Docker安全自動化掃描工具進行了測試比較,測試比較結果如下表所示:

工具 Clair Anchore DockerScan
工具 Clair Anchore DockerScan
環境搭建 複雜 簡單(慢) 簡單
安裝相容性
掃描 需要先上傳映象 直接掃描 直接掃描
掃描速度
漏洞資料庫 CVE CVE
掃描結果 漏洞 漏洞+其他 其他
Ubuntu OK OK OK
CentOS OK OK 未成功
報告輸出 html報告 控制檯報告(有格式排版) 控制檯報告(無格式排版)
其他說明 通過對容器的layer進行掃描,對映象進行特徵提取,依據特徵匹配CVE漏洞。 側重對映象的審計,通過對容器的layer進行掃描發現漏洞,基於CVE資料庫。功能強大,其中就包含了DockerScan的功能。 提取映象中的多種資訊,依據這些資訊人工判斷該映象是否存在安全隱患。

先上結論:建議使用Anchore 理由:功能最強大,使用最簡單

部分對比項說明:

1、環境搭建: Clair環境搭建依賴複雜眾多,需要修改一些配置檔案,同時需要go語言環境,環境搭建出錯概率極高,同時會因為系統環境不同而出現錯誤。 Anchore環境搭建簡單,需要同步漏洞資料庫,該過程比較耗時(約30-60分鐘)。環境相容性好,基本不出錯。 DockerScan

環境搭建簡單且很快,因為不需要漏洞資料庫。在CentOS下沒有測試成功。

2、掃描資料 Anchore可以掃描的功能最多,包含了Clair和DockerScan的主要功能。

既然推薦了Anchore,那自然是要詳細說明的!

Anchore安裝使用說明

1、安裝依賴

注:如果有就不用再安裝了 注:docker版本驗證:docker version

依賴 安裝說明
Docker >1.10
Epel-release yum install epel-release
Rpm-python yum install rpm-python
dpkg yum install dpkg
Python-pip yum install python-pip
2、安裝Anchore
安裝 安裝說明
安裝: pip install anchore
環境變數: export PATH=~/.local/bin:$PATH
安裝完確認: anchore --version
更新列表: anchore feeds list
更新資料庫: anchore feeds sync 實際中可能會執行失敗,相信博主是網路的問題,多執行幾次說不定哪次就執行成功了

更新過程是這樣的效果: (這張圖是網上扒來的,實際測試中取決於網路,網路好的話就是下圖這樣。博主在實際測試中,每次都是差不多有一半是掉線的!) 在這裡插入圖片描述

3、映象使用

拉取映象:docker pull nginx(以nginx為例) 檢視已安裝映象:docker images

效果是這樣的: 在這裡插入圖片描述

4、Anchore使用

幫助文件:anchore --help

常用功能: 對映象進行分析:anchore analyze --image nginx:latest --imagetype base 生成結果報告:anchore gate --image nginx:latest CVE漏洞掃描:anchore query --image nginx:latest cve-scan all 與純淨映象的區別:anchore query --image nginx:latest show-file-diffs base 列表檔案詳細:anchore query --image nginx:latest list-files-detail all 映象特徵提取:anchore toolbox --image nginx:latest show

5、詳細命令說明

(示例命令標紅色的引數為對應的說明。博主英語很差,翻譯是一條一條複製到百度翻譯裡面輸出的) (另外,在這裡翻譯了絕大多數,還有個別引數博主覺得沒什麼卵用,就不翻譯了)

analyze: anchore analyze --image nginx:latest --imagetype base

命令 說明
–force 即使資料庫中已存在分析也要進行分析
–image 處理指定的映象
–imagefile 在指定檔案中列出映象ID
–include-allanchore 包括所有映象
–dockerfile <file> 分析docker檔案映象
–imagetype <typetext> 指定正在分析的映象型別
–skipgates 不要將門作為分析的一部分
–layerstrategy 分析映象歷史中的策略的名稱

query: anchore query --image nginx:latest list-files-detail all

命令 說明
list-gem-detail 列出增長細節
show-dockerfile 顯示docker檔案
list-python-package-detail 列出python包的細節
show-pkg-diffs 顯示包的差異
has-final-gateaction 最後關門
get-retrieved-files 獲取檢索到的檔案
show-non-packaged-files 顯示非打包檔案
show-familytree 顯示家庭樹
list-java-package-detail 列出Java包的詳細資訊
list-files 列出檔案
list-npms 列出NPM
list-package-detail 列出包細節
list-packages 列出包
list-npm-detail 列出NPM細節
list-python-packages 列出python軟體包
list-image-attrs 列出影象吸引力
has-gateaction 關門
show-layer-info 顯示塗層資訊
show-layers 顯示圖層
list-gems 列表的增長
list-package-licenses 列出軟體包許可證
has-package 有包裝
list-java-packages 列出Java包
list-retrieved-files 列出檢索檔案
show-distro 展示發行版
list-content-search-matches 列表內容搜尋匹配
show-non-packaged-files-diff 顯示非打包檔案差異
show-file-diffs 顯示檔案差異
list-files-detail 詳細列出檔案
cve-scan-simple 簡單的漏洞掃描
size-bins 尺寸
cve-scan 漏洞掃描
base-status 基本狀態
distro-bins 分開儲物
common-packages 常用包裝

anchore query --image nginx:latest list-files-detail all

命令 說明
–image 處理指定映象ID
–imagefile 在指定檔案中列出映象ID
–include-allanchore 包括所有已知的映象

gate: anchore gate --image nginx:latest

命令 說明
–force 即使資料庫中已存在分析也要進行分析
–image 處理指定的映象
–imagefile 在指定檔案中列出映象ID
–include-allanchore 包括所有映象
–editpolicy 編輯指定映象的門策略
–rmpolicy 刪除指定映象的策略,恢復預設策略
–listpolicy 列出指定映象的當前門策略
–updatepolicy <file> 將輸入門策略檔案儲存為指定映象的策略
–policy <file> 使用指定的策略檔案而不是預設檔案
–run-bundle 使用anchore策略包進行評估
–bundlefile <file> 從指定檔案中使用指定的捆綁JSON
–usetag <imagetag> 使用指定標籤來使用Run評估輸入物件
–resultsonly 只顯示評估結果
–show-gatehelp 顯示可用於構建anchore策略的所有門名、觸發器和引數
–show-policytemplate 基於所有安裝的門/觸發器生成策略模板
–whitelist 編輯評估的門觸發器和可選白名單
–global-whitelist <file> 使用指定的全域性白名單檔案
–show-triggerids 在輸出中顯示觸發的門ID
–show-whitelisted 展示白名單