InSpecでCISベンチマーク準拠スキャンを簡単実行&自動修正

TL;DR

InSpecでできることの箇条書き

  • CIS or STIG準拠の定期自動監査(スキャン)
  • 定期更新されるセキュリティ基準の定期更新
  • セキュリティ基準のチューニング
  • 設定の自動修正

InSpecの技術サポートについて詳しくは、こちらよりお問い合わせください。

InSpecとは? CISとは?

CIS(Center for Internet Security)は、情報セキュリティのガイドラインを提供する非営利団体です。主要なオペレーティングシステムやアプリケーションに対して、セキュリティ設定の基準を定めたものであり、セキュリティコンプライアンスを確保する際の重要な参考資料となっています。1999年に設立され、アメリカ合衆国を拠点として世界中の組織に対してセキュリティのベストプラクティスとガイドラインを提供しています。

InSpecは、Progress社が開発を手掛けるCISベンチマークに準拠したセキュリティスキャンを実行する際の非常に強力なツールです。この記事では、InSpecを使用してCISベンチマークに基づいたセキュリティスキャンを実行する方法の概要を解説します。

※本記事内ではCISを主に扱いますが、STIGに関しても同様 のことをInSpecで行うことができます。

STIG(Security Technical Implementation Guide)は、アメリカ国防総省DoD:Department of Defense)が開発したセキュリティポリシーガイドラインのことです。


ステップ1: InSpecのインストール

下記サイトからInSpecを簡単にダウンロード/インストールすることができます。

https://www.chef.io/downloads/tools/inspec

コマンドでインストールする場合

mac:

brew install chef/chef/inspec

curl使えるOS:

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

Windows Powershell:

. { iwr -useb https://omnitruck.chef.io/install.ps1 } | iex; install -project inspec

ステップ2: テストの実行

・ テスト シナリオ

InSpecはプロファイルと呼ばれるテストコードに基づいてスキャンを行います。今回はGithub上で公開されているInSpecプロファイル(テストコード)を使用してテストを実行してみます。 テスト対象のシステムに対してInSpecプロファイルを適用し、CISベンチマークに準拠しているかどうかを確認します。

・ 実行コマンド

InSpecにはさまざまな実行方法がありますが、以下は一般的な実行コマンドです。 コマンド(InSpec CLI)については、こちらのドキュメントを参照ください。

基本構文: inspec exec [テストコード] -t ssh://[対象サーバー]

$ inspec -v
5.21.29
$ inspec exec https://github.com/dev-sec/ssh-baseline.git -t ssh://automate

実行結果の一部抜粋↓↓↓ capture 2023-07-31 14.53.44.png

InSpecを定期的に実行するようにスケジューリングすることで、継続的なセキュリティ監査とスキャンを行うことができます。

※上記の例ではテストコードはCISスキャンではなくSSHの設定をスキャンするコードが使われています。SSHに関連したセキュリティリスクが57個以上検知されています。 テストコードのソースは:https://github.com/dev-sec/ssh-baseline

↓のようにUIによるセキュリティリスクの可視化を行うこともできます。

image.png

ステップ3: CISベンチマーク準拠のテストコードの取得

ステップ2のテストコードはSSH設定に関するものでしたが、特定のOSのCISベンチマークに沿ったプロファイルは、InSpecを公式にメンテナンスしている Progress社から提供され ます。そのため、テストコードを 自前で用意する必要はありません。 将来的にCIS公式の基準が変更される場合、適宜Progress社から更新されたテストコードが配布されます。 また、テストコードは カスタマイズ可能 であるため自社ポリシーに合わせて 過不足の調整 をすることができます。

ご参考までに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にも対応しています。

上記のテーブルは、CISベンチマークのスキャンと”自動修正”が可能なOSとサービスの一部です。 完成したそれぞれのInSpecテストコードがProgress社から提供されます。

また、”自動修正”機能により、CISに沿わない設定が検知された場合にCISに沿うように自動で修正を行うこと可能です。技術サポートに関して詳しくはこちらからお問い合わせください。

--

下記は一例として、自宅サーバーとして稼働中のラズパイ(Debian)にProgress社から提供されたDebian9のCISベンチマークレベル1スキャンの実行結果になります。CISベンチマークの基準を全く満たせていないことが確認できます。 Test Summary: 1400 successful, 217 failures

capture 2023-07-31 16.28.25.png

使用したCISベンチマークはこちら:

https://www.cisecurity.org/benchmark/debian_linux

ステップ5: 不合格項目の対処

テスト結果から不合格項目を特定したら、それらの問題を修正する必要があります。セキュリティ上の脆弱性や不適切な設定を改善して、システムをCISベンチマークに準拠させましょう。

ステップ2の対応OSとサービスについては、Progress社から自動修正コードが適用されるため手動での修正は不要です。

おわりに

InSpecを使用してCISベンチマークに準拠したセキュリティスキャンを実行することで、システムのセキュリティ強化とコンプライアンス確保が可能となります。適切なテストコードを作成し、不合格項目を修正することで、信頼性の高いセキュアなシステムを構築することができます。 また、定期的にスキャンを行うことで社内のセキュリティ要件に常に準拠させることができます。

InSpecの技術サポートについて詳しくは、こちらよりお問い合わせください。 (Chef InSpecは、Chefと同様に2019年に無償の商用利用が出来なっています) 

https://www.creationline.com/tech-blog/30958