InSpecでCISベンチマークスキャンを実行する

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


InSpecは、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

 

##### ・ __ステップ2: テストコードの取得__


InSpecはプロファイルと呼ばれるテストコードに基づいてスキャンを行います。特定のOSのCISベンチマークに沿ったプロファイルは、InSpecを公式にメンテナンスしているProgress社から提供されます。テストコードを自前で用意する必要はありません。将来的にCISの基準が変更される場合、Progress社から更新されたテストコードが配布されます。
また、テストコードはカスタマイズ可能であるため自社ポリシーに合わせて過不足の修正をすることができます。
技術サポートとライセンス取得について詳しくは、Progress社販売代理店に[こちら](https://www.creationline.com/contact?utm_content=chef_hlink)よりお問い合わせください。
(Chef InSpecは、Chefと同様に2019年に無償の商用利用が出来なっています) 

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


ご参考までに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         | ◯          | ◯           |

※全ての対応OSの一覧は[こちら](https://www.chef.io/products/chef-premium-content)

| 対象サービス | スキャン | 自動修正 |
|:-----------|------------:|:------------:|
| Apache Tomcat        | ◯       | ◯       |
| Docker    | ◯     | ◯      |
| MongoDB       | ◯        | ◯         |
| NGINX     | ◯      | ◯       |
| Oracle Database       | ◯        | ◯         |
| PostgresSQL         | ◯          | ◯           |
| VMWare ESXI       | ◯       | ◯       |

※全ての対応サービスの一覧は[こちら](https://www.chef.io/products/chef-premium-content)

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

また、”自動修正”機能により、CISに沿わない設定が検知された場合にCISに沿うように自動で修正を行うこと可能です。詳しくは[こちら](https://www.creationline.com/contact?utm_content=chef_hlink)からお問い合わせください。

すべての対象OSとサービスの一覧は[こちら](https://www.chef.io/products/chef-premium-content)のProgress社サイトからご覧いただくことができます。CISに限らず、STIGにも対応しています。

##### ・ __ステップ3: テストの実行__
InSpecプロファイル(テストコード)を取得したら、InSpecを使用してテストを実行します。テスト対象のシステムに対してInSpecプロファイルを適用し、CISベンチマークに準拠しているかどうかを確認します。

様々なInSpecの実行方法がありますが、以下は一般的な実行コマンドです。

```
inspec exec [Progressから提供されるプロファイルor自社のテストコード] -t [ターゲットホスト]
```

テスト結果は、合格したテストケースと不合格なテストケースのリストとして表示されます。不合格のテストケースは、システムのセキュリティ上のリスクを指摘し、改善が必要な項目を示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352042/3f862ca8-f4e1-7439-82db-de4a3ceb694d.png)


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

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


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