🔎

【CISベンチマーク・STIG】インフラセキュリティ–テスト自動化 #serverspec

2023/11/27に公開

やること

CISベンチマークの実際的な使い方についてご紹介します。

Dockerデーモンホスト(OS)、そしてDockerコンテナ(NGINX)セキュリティテストを実行していきます。セキュリテイ基準は、CISベンチマークDISA STIGsを使用します。

推定所用時間は、1~2 分


環境情報

テスト対象:

  • DockerホストOS(Redhat8)
  • Dokcerデーモン
  • Dockerコンテナ(NGINX)

テストツール:

テストコード:

テストシナリオ:

InSpecはローカルからリモートターゲットホストにSSH経由でテストを仕掛けるのが一般的ですが、今回は、対象のホスト上でInSpecコマンドを実行していきます。

Docker nginx コンテナが起動しているRedhat8にSSH接続し、以下のテストを行っていく。

  1. ホスト(OS)に対して、STIGテストを実行。
  2. Dockerデーモンに対して、CISテストを実行。
  3. Dockerコンテナ(NGINX)に対して、STIGテストを実行。
  4. 実行結果の確認
  5. テストのチューニングとカスタマイズ

(※STIGとCIS、どちらを選択しても手順は同じです。今回は両方使ってます。)

TL;DR(1~2分)

1:InSpecのインストール

curl https://omnitruck.chef.io/install.sh | sudo bash -s -- -P inspec -v 4

2:テストコードの取得(3つ)

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:テスト結果の確認


実践チュートリアル

Step1: InSpecインストール

curl https://omnitruck.chef.io/install.sh | sudo bash -s -- -P inspec -v 4

InSpecバージョン4を使っています。バージョンを指定せずに最新の6を使うとライセンスキーの取得が必要になるためです。(v6のTrialキーを取得するにはメールアドレスの登録が必要です)

curlではなく、パッケージからインストールする場合は、こちらからダウンロードできます。

Step2: テストコード取得

※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ベンチマークやSTIGsに対応しています。

dev-secリポジトリ は、Progress 社が公式にメンテナンスしています。無料利用できるテストコードは数が限られていますが、サポート対象の有償版のリストはこちらで確認することができます。

mitreリポジトリ は、脆弱性で有名なCVEの管理をしている組織MITRE Corporationがメンテナンスしています。
今回使用するもの以外にも、CISやSTIGに準拠した無料のテストコードを多数公開しています。フルリストはこちらで確認できます。

Step3: テスト実行

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-license=yesの補足:InSpecは、Chefと同様に商用利用する場合ライセンスを取得する必要があります。商用で利用する場合、事前にライセンス販売代理店にお問い合わせください。

Step4: テスト結果確認

ターミナルで結果確認(抜粋)

  • STIG_Redhat8(Githubリンク)のテスト結果 244の大項目で問題検知
    capture 2023-11-30 18.24.12.png

  • CIS_Dockerデーモン(Githubリンク)のテスト結果 40の大項目で問題検知
    capture 2023-11-30 18.28.10.png

  • STIG_NGINXコンテナ(Githubリンク26の大項目で問題検知
    capture 2023-11-30 18.31.43.png

Web UI で結果確認

  • STIG_Redhat8(Githubリンク)のテスト結果 244の大項目で問題検知
    capture 2023-11-30 21.12.38.png

  • CIS_Dockerデーモン(Githubリンク)のテスト結果 40の大項目で問題検知
    capture 2023-11-30 19.43.30.png

  • STIG_NGINXコンテナ(Githubリンク26の大項目で問題検知
    capture 2023-11-30 19.51.06.png

テスト結果は、ターミナルへの出力やウェブUI以外にも、JSON、HTML、またはCSVへの出力も可能です。

Step5: テスト項目のチューニング

CISベンチマークDISA STIGsは、非常に強力なセキュリティ基準ですが、すべての環境でこれらの基準を完全に満たす必要はありません。

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

まとめ・【お問い合わせ】

1つのツールで、Dockerデーモンホスト(OS)、そしてDockerコンテナ(NGINX)の3つのレイヤーのセキュリティテストを実現できます。

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

InSpecに関する技術サポートや商用ライセンスの取得は、国内販売代理店に問い合わせることができます。

https://www.chef-sec.com/

テストサポート対象OS(一部抜粋)

ご参考までにProgress社が提供するInSpecテストコードの対象OSを一部ご紹介します。
以下は、CISベンチマークレベル1とレベル2に対応しているOSとサービスの一部です。

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

※全ての対応OSとアプリケーションの一覧はこちらCISに限らず、STIGにも対応しています。

Discussion