【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服务器,进行以下测试。

    1. 对主机(操作系统)执行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:检查测试结果

在终端上查看结果(摘录)。

capture 2023-11-30 18.31.43.png

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

capture 2023-11-30 19.51.06.png

测试结果可以输出到终端、网页界面之外,还可以输出为JSON、HTML或CSV文件。

步骤5:调整测试项目

CIS基准和DISA STIGs是非常强大的安全标准,但并不需要在所有环境中完全满足这些标准。

通过使用 InSpec 的测试代码,可以添加、删除和修改不必要的测试项目。

总结 – [询问]

您可以使用一个工具来实现对Docker守护进程、主机操作系统和Docker容器(NGINX)的三个安全层进行测试。

通过将DevSecOps运营集成到DevOps CI/CD流程中,可以确保持续保持安全的状态。此外,通过定期进行InSpec测试,也能够确保始终保持安全。

您可以通过联系国内销售代理商来获取有关InSpec的技术支持和商业许可证。

 

考虑到需求测试的操作系统(部分提取)

以下是Progress公司提供的InSpec测试代码所涵盖的部分操作系统。下面列出的是部分支持CIS基准一级和二级的操作系统和服务。

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