1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【STIG・CISベンチマーク】Dockerデーモン、コンテナ、ホストOSに セキュリティ テスト自動化 #STIG #PCI-DSS #CISベンチマーク #serverspec

Last updated at Posted at 2023-11-30

やること

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

テストサポート対象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にも対応しています。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?