【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连接,并进行以下测试。

    1. 在主机(操作系统)上执行STIG测试。

 

    1. 在Docker守护程序上执行CIS测试。

 

    1. 在Docker容器(NGINX)上执行STIG测试。

 

    1. 确认执行结果。

 

    对测试进行调整和定制。

无论选择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:确认测试结果

在终端上确认结果(摘要)

capture 2023-11-30 18.31.43.png

在Web用户界面上查看结果

capture 2023-11-30 19.51.06.png

测试结果可以被输出到终端、Web用户界面之外,还可以输出为JSON、HTML或CSV格式。

步骤4:调整测试项目

CIS基準やDISA STIGs是非常強大的安全標準,但不需要在所有環境中完全符合這些標準。

InSpecのテストコードは、不必要なテスト項目を追加、削除、修正することができます。

总结

在一个工具中,可以实现对Docker守护进程、主机(操作系统)以及Docker容器(NGINX)这三个层面的安全测试。

DevOps CI/CDパイプラインに組み込むことで、DevSecOps運用を。
また、継続的かつ定期的にInSpecテストを実行することで、常にセキュアな状態を保証することができます。

您可以与国内销售代理商联系以获取关于InSpec的技术支持和商业许可证的获取信息。

 

Something went wrong

测试支持的操作系统(部分摘录)

请参考Progress提供的InSpec测试代码可以应用的操作系统的一些示例。

以下是支持CIS基准Level 1和Level 2的部分操作系统和服务例子。

OSスキャン自動修正Amazon Linux 2◯◯Alma Linux 8◯◯CentOS Linux 7/8◯◯Debian Linux 9◯◯Oracle Linux 8◯◯Red Hat Enterprise Linux 6/7/8/9◯◯Rocky Linux 8◯◯Ubuntu Linux 18.04 / 20.04◯◯Windows Server 2012 / R2◯◯Windows Server 2012– Domain Controller◯◯Windows Server 2016 – Domain Controller◯◯Windows Server 2016 – Member Server◯◯Windows Server 2019 – Domain Controller◯◯Windows Server 2019 – Member Server◯◯Windows Server 2022 – Domain Controller◯◯Windows Server 2022 – Member Server◯◯
対象サービススキャン自動修正Apache Tomcat◯◯Docker◯◯MongoDB◯◯NGINX◯◯Oracle Database◯◯PostgresSQL◯◯VMWare ESXI◯◯

所有支持的操作系统和应用程序列表详见此处,适用于CIS和STIG,其他的也适用。

bannerAds