天天看點

遵循CIS Docker Benchmarks規範的開源巡檢腳本

CIS是什麼?

CIS即Center for Internet Security (CIS) 為安全基準計劃提供了定義明确、公正、基于一緻性的行業最佳實踐來幫助組織評估和增強其安全性

Docker Bench Security

Docker Bench for Security是一個開源的腳本。它是基于CIS Docker Benchmark v1.3.1規範的,用于自動化巡檢在生産環境中運作Docker容器的數十種常見的最佳實踐的腳本。

公衆号《雲原生生态圈》内回複"cis-docker",擷取CIS出品的

CIS_Docker_Benchmark_v1.3.1_PDF

通過調用

tests

目錄的以下腳本進行巡檢, 具體的巡檢的内容可以參考的腳本的内容。

1_host_configuration.sh
2_docker_daemon_configuration.sh
3_docker_daemon_configuration_files.sh
4_container_images.sh
5_container_runtime.sh
6_docker_security_operations.sh
7_docker_swarm_configuration.sh
8_docker_enterprise_configuration.sh
99_community_checks.sh
           

在docker-bench-security中可以通過修改

functions

中的腳本選擇檢查的項,也可以通過指令行選項排除不需要檢查的項,下面看下支援的指令行選項.

指令選項

docker-bench-security

-b       可選   Do not print colors 不列印顔色
-h 			 可選   Print this help message 列印幫助資訊
-l FILE  可選   Log output in FILE, inside container if run using docker 日志輸出檔案,如果使用docker運作,在容器内部
-u USERS 可選   Comma delimited list of trusted docker user(s) 以逗号分隔的受信任docker使用者清單
-c CHECK 可選   Comma delimited list of specific check(s) id 以逗号分隔的指定檢查id清單
-e CHECK 可選   Comma delimited list of specific check(s) id to exclude 要排除的以逗号分隔的檢查id清單
-i INCLUDE 可選 Comma delimited list of patterns within a container or image name to check 以逗号分隔的容器或圖像名稱中的模式清單
-x EXCLUDE 可選 Comma delimited list of patterns within a container or image name to exclude from check 容器或圖像名稱中要排除的以逗号分隔的模式清單
-n LIMIT   可選 In JSON output, when reporting lists of items (containers, images, etc.), limit the number of reported items to LIMIT. Default 0 (no limit).
 在JSON輸出中,當報告項目清單(容器,圖像等)時,限制報告項目的數量為LIMIT。預設0(無限制)。
-p PRINT   可選 Disable the printing of remediation measures. Default: print remediation measures. 禁用列印補救措施。預設值:列印補救措施。
           

每個CIS巡檢項在腳本中是以

check_<section>_<number>

格式命名的. 如果要排除某項檢查可以使用

也可以隻檢查某項

sh docker-bench-security.sh -c check_2_2
           

使用很簡單。

在使用的時候可以通過

--help

檢視支援的指令行選項,我在使用的時候發現docker鏡像中支援的與git倉庫中寫的

不一緻

,當然你可以自己打一個鏡像。

建構鏡像

git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker build --no-cache -t docker-bench-security .
           

下面是在Mac上執行一次巡檢的Demo.

Docker Desktop for Mac

docker run --rm --net host --pid host --userns host --cap-add audit_control \
    -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
    -v /var/lib:/var/lib:ro \
    -v /var/run/docker.sock:/var/run/docker.sock:ro \
    -v `pwd`:/usr/local/bin/log/ \
    --label docker_bench_security \
    docker/docker-bench-security -t devops.v1
# ------------------------------------------------------------------------------
# Docker Bench for Security v1.3.4
#
# Docker, Inc. (c) 2015-
#
# Checks for dozens of common best-practices around deploying Docker containers in production.
# Inspired by the CIS Docker Community Edition Benchmark v1.1.0.
# ------------------------------------------------------------------------------

Initializing Thu Sep  2 04:55:59 UTC 2021

Looking for image devops.v1

[INFO] 1 - Host Configuration
[WARN] 1.1  - Ensure a separate partition for containers has been created
[NOTE] 1.2  - Ensure the container host has been Hardened
....[省略省略過多内容]
[PASS] 7.10  - Ensure management plane traffic has been separated from data plane traffic (Swarm mode not enabled)

[INFO] Checks: 105
[INFO] Score: 7