【CIS 基准测试、STIG】基础设施-测试自动化 #InSpec
做的事情
我们将对Docker守护程序、主机操作系统和Docker容器(NGINX)进行安全测试。我们将使用CIS基准和DISA STIGs作为安全标准。
预计所需时间为1到2分钟。
环境信息
考试对象:
-
- DockerホストOS(Redhat8)
-
- Dokcerデーモン
- Dockerコンテナ(NGINX)
测试工具:
- InSpec
考试代码:
-
- STIG_Redhat8(Githubリンク)
-
- CIS_Dockerデーモン(Githubリンク)
- STIG_NGINXコンテナ(Githubリンク)
考虑以下测试情景:
通常,InSpec会通过SSH连接从本地向远程目标主机发起测试,但是这次我们将在目标主机上执行InSpec命令。
在运行Docker nginx容器的Redhat8上进行SSH连接,并进行以下测试。
-
- 在主机(操作系统)上执行STIG测试。
-
- 在Docker守护程序上执行CIS测试。
-
- 在Docker容器(NGINX)上执行STIG测试。
-
- 确认执行结果。
- 对测试进行调整和定制。
无论选择STIG还是CIS,步骤都是相同的。这次我们同时使用了两种方案。
太长不看(1~2分钟)
1:安装 InSpec。
curl https://omnitruck.chef.io/install.sh | sudo bash -s -- -P inspec -v 4
获取测试代码(三个)
git clone https://github.com/mitre/redhat-enterprise-linux-8-stig-baseline.git &&
git clone https://github.com/mitre/nginx-stigready-baseline.git &&
git clone https://github.com/dev-sec/cis-docker-benchmark.git
3:执行测试(3次)
inspec exec --chef-license=yes redhat-enterprise-linux-8-stig-baseline
inspec exec --chef-license=yes nginx-stigready-baseline -t docker://`docker ps -aqf "ancestor=nginx"`
inspec exec --chef-license=yes cis-docker-benchmark
4:检查测试结果
实践教程
步骤1:安装InSpec
curl https://omnitruck.chef.io/install.sh | sudo bash -s -- -P inspec -v 4
我正在使用InSpec 4版本。如果使用最新的版本6而不指定版本,就需要获取许可证密钥。(获取v6试用密钥需要注册邮件地址)
如果您不使用curl而是从软件包安装的话,可以从这里下载。
步骤2:获取测试代码
※在中国中进行测试,通常会通过SSH连接从本地到远程目标主机进行测试,但本次测试将在目标主机上执行InSpec命令。因此,测试代码需要在目标主机上获取。
git clone https://github.com/mitre/redhat-enterprise-linux-8-stig-baseline.git &&
git clone https://github.com/mitre/nginx-stigready-baseline.git &&
git clone https://github.com/dev-sec/cis-docker-benchmark.git
就像上面提到的,免费的测试代码已经在Github上公开了。这些代码都适用于CIS基准和STIGs。
dev-sec存储库由Progress公司进行官方维护。虽然可供免费使用的测试代码数量有限,但可以在此处查看支持的付费版本列表。
麦特尔代码库是由著名的漏洞管理组织MITRE Corporation进行维护的。除了本次使用的代码外,还发布了许多遵循CIS和STIG标准的免费测试代码。可以在此处查看完整列表。
步骤3:执行测试
1. 为了本地执行,需要通过SSH连接到测试对象。
2. 执行在Step2中获取的测试代码。
inspec exec --chef-license=yes redhat-enterprise-linux-8-stig-baseline
inspec exec --chef-license=yes \nginx-stigready-baseline -t docker://`docker ps -aqf "ancestor=nginx"`
inspec exec --chef-license=yes cis-docker-benchmark
–Chef许可证:InSpec与Chef一样,如果要商业使用,需要获取许可证。如果要商业使用,请提前与许可证销售代理商联系。
步骤4:确认测试结果
在终端上确认结果(摘要)

在Web用户界面上查看结果

测试结果可以被输出到终端、Web用户界面之外,还可以输出为JSON、HTML或CSV格式。
步骤4:调整测试项目
CIS基準やDISA STIGs是非常強大的安全標準,但不需要在所有環境中完全符合這些標準。
InSpecのテストコードは、不必要なテスト項目を追加、削除、修正することができます。
总结
在一个工具中,可以实现对Docker守护进程、主机(操作系统)以及Docker容器(NGINX)这三个层面的安全测试。
DevOps CI/CDパイプラインに組み込むことで、DevSecOps運用を。
また、継続的かつ定期的にInSpecテストを実行することで、常にセキュアな状態を保証することができます。
您可以与国内销售代理商联系以获取关于InSpec的技术支持和商业许可证的获取信息。
测试支持的操作系统(部分摘录)
请参考Progress提供的InSpec测试代码可以应用的操作系统的一些示例。
以下是支持CIS基准Level 1和Level 2的部分操作系统和服务例子。
所有支持的操作系统和应用程序列表详见此处,适用于CIS和STIG,其他的也适用。