【STIG・CIS基准测试】Docker守护进程、容器、主机操作系统的安全性测试自动化 #inspec
要做的事情 zuò de
使用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服务器,进行以下测试。
-
- 对主机(操作系统)执行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
2:获取测试代码(三个)。
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次)( – cì)
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:获取测试代码
通常,InSpec会通过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基准和STIG规范。
dev-sec仓库由Progress公司进行官方维护。虽然可供免费使用的测试代码数量有限,但有支持的付费版本列表可以在这里确认。
MITRE Corporation是一个管理著名的CVE漏洞的组织,他们维护着MITRE Repository。
除了本次使用的版本外,他们还公开了符合CIS和STIG标准的多个免费测试代码。您可以在这里查看完整列表。
步骤3:执行测试
为了本地执行,需要通过SSH连接到测试对象。
执行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
–厨师许可证补充说明:InSpec与Chef一样,如果要进行商业使用,需要获取许可证。如果您希望商业使用,请事先联系许可证销售代理商。
步骤4:检查测试结果
在终端上查看结果(摘录)。

可以使用网页用户界面进行结果确认

测试结果可以输出到终端、网页界面之外,还可以输出为JSON、HTML或CSV文件。
步骤5:调整测试项目
CIS基准和DISA STIGs是非常强大的安全标准,但并不需要在所有环境中完全满足这些标准。
通过使用 InSpec 的测试代码,可以添加、删除和修改不必要的测试项目。
总结 – [询问]
您可以使用一个工具来实现对Docker守护进程、主机操作系统和Docker容器(NGINX)的三个安全层进行测试。
通过将DevSecOps运营集成到DevOps CI/CD流程中,可以确保持续保持安全的状态。此外,通过定期进行InSpec测试,也能够确保始终保持安全。
您可以通过联系国内销售代理商来获取有关InSpec的技术支持和商业许可证。
考虑到需求测试的操作系统(部分提取)
以下是Progress公司提供的InSpec测试代码所涵盖的部分操作系统。下面列出的是部分支持CIS基准一级和二级的操作系统和服务。
※包含所有兼容的操作系统和应用程序的清单,请查看此处。不仅适用于CIS,还适用于STIG。