Japan
サイト内の現在位置
効率的な堅牢化に役立つツール「CIS Build Kit」のご紹介
NECセキュリティブログ2023年6月16日
こんにちは。NEC サイバーセキュリティ戦略統括部のU松(ハンドルネーム)です。今回はCIS Build Kitのご紹介になります。Ubuntu 22.04 LTSとWindows Server 2022で実際にBuild Kitを使用してみましたので、その使い方や注意点などを解説したいと思います。
- ※本記事は筆者が参考文献や実際のツールを調査・使用して独自に執筆したものであり、その内容についてCIS®による承認を受けたものではありません。
CIS Build Kitとは
CIS Build Kit [1]とはCISが提供する効率的なシステム堅牢化を支援するツールです。堅牢化の際に参考となるガイドラインの一つとして、同じCISのCIS Benchmarks
[2]がありますが、CIS Benchmarksは基本的にPDF形式のドキュメントであり、推奨設定自体は手動で行う必要があります。CIS Build Kitはこれら設定の自動化を支援するツールで、Linux系であればスクリプト、Windows系であればグループポリシーオブジェクト(以降、GPO)を用いて設定を自動化します。スクリプトやグループポリシーで管理が難しい一部の設定を除き、対応するCIS Benchmarksの大部分の設定をカバーするように作られているため、設定の効率化が期待できます。すべてのCIS Benchmarksに対してBuild Kitが提供されているわけではありませんが、LinuxやWindows以外にもmacOSなど30を超えるBuild Kitが提供されています。なお、基本的に有料のCIS SecureSuite® Membership
[3]向けのツールですが、無料のサンプル版
[4]も用意されているのでどんなツールか試してみたい方はこちらのサンプル版をダウンロードしてみてください(有料版と比較し、適用できる設定の数が制限されています。またダウンロードには氏名、メールアドレス等の情報の登録が必要です)。
CIS Build Kitのダウンロード
CIS SecureSuite Membershipに加入済みであれば、CIS WorkBench [5]にサインインし、「Downloads」から希望するBuild Kitを検索することで、ダウンロードできます。Ubuntu用のBuild Kitはtar.gzで、Windows用はzipの形式で提供されており、これらを解凍し利用します。
Ubuntu 22.04 LTS用Build Kit
今回はUbuntu 22.04 LTS CIS Benchmarks v1.0.0に対応するBuild Kitを使用します。ダウンロードしたBuild Kitを解凍すると下記が含まれていました。
- スクリプト群
- READMEテキスト
- 改版履歴
- exclusion_list(実行をスキップしたい項目がある場合に使用するファイル。このファイルで指定した項目はスキップされます。)
- リターンコードの説明テキスト
- ログ格納用ディレクトリ(/logs)
前述の通り、Ubuntuの場合はスクリプトの形で提供されているため、このスクリプトを実行することになります。
Ubuntu 22.04 LTS用Build Kitの実行手順
Ubuntu 22.04 LTS用Build Kitを実行してみます。実行は堅牢化対象のマシン上で行います。はじめに最上位のスクリプトと言える「cis-lbk_ubuntu_22.04_LTS-v1.0.0.sh」をroot権限で実行します。

実行すると、Build Kitのバージョンや対応するCIS Benchmarksの情報、あらかじめテスト環境で検証してから本番環境へ適用するよう促す警告などが表示され、このまま実行を続けるか確認を求められます。今回はテスト実行なのでこのまま「y」を入力します。

入力後、プロファイルを選択するよう求められます。Linux系の CIS Benchmarksでは基本的に図3の4つのプロファイルが定義されており、対象マシンの役割や重要度に応じて適切なものを選択します。Build Kitの実行においても同様で、どのプロファイルの設定を実行するか選択します。今回は「Level 1 Server」を選択してみます。

プロファイルを選択すると実行が始まります。実行中はCIS Benchmarksの各項目に対する実行結果などが表示されます(図4)。これらは後述のログファイル「CIS-LBK.log」と「CIS-LBK_verbose.log」にも出力されます。実行についてですが、図4から分かる通り、対象マシンに設定を行う前に、対象マシンの元々の設定が推奨値通りであるかチェックを行っています。チェックの結果、推奨値とは異なっていることが判明した場合、設定を実行しています。これを図4の①を例にご説明します。①は1.1.1.1の実行時の詳細なログです。「Start check」から「End check」が、対象マシンがCIS Benchmarks通りの設定になっているかの確認であり、①ではチェックの結果「FAIL」であることが判明しています。そのため、「Start remediation」から「End remediation」で設定(CIS Benchmarks通りの設定)を実行しています。設定後、再度チェックを実施し(「End remediation」後の「Start check」から「End check」)、「PASS」になることを確認しています。今回は設定に成功していますが、失敗や適用されない場合もあり、そういった場合はここに出力されている情報が原因究明の役に立ちます。図4の②以降もご説明すると、②は同じ1.1.1.1の結果で、こちらはサマリのような情報になります。今回は正常に設定が完了したため、その旨が記載されています。③、④も同様で、他の項目の結果が表示されています(1.1.1.2と1.1.1.3は選択したプロファイルの項目ではないため、今回はスキップされました。そのため詳細なログは表示されていません)。

途中、パッケージのインストールに伴い確認を求められることがあります。問題がなければ「Y」を入力し、実行を進めます(図5)。

実行が完了すると図6のように実行結果のサマリが表示され、設定が成功した/失敗した項目の数や手動設定が必要な項目の数などを確認することができます(この情報は後述のログファイル「CIS-LBK.log」でも確認可能です)。今回の実行では、設定が失敗した項目が2個、手動設定が必要な項目が46個存在することが分かります。

また下記5種類のログがlogsディレクトリの中に「/logs/[date]/」の形で出力されます。
- CIS-LBK_error.log:実行中にエラーが発生した場合のログ
- CIS-LBK_failed.log:何らかの理由により設定が失敗した項目のログ
- CIS-LBK.log:対応するCIS Benchmarksの全項目のログ
- CIS-LBK_manual.log:手動で設定する必要がある項目のログ
- CIS-LBK_verbose.log:実行時の詳細なログ
なお今回は仮想環境上の下記スペックのマシンで実行しましたが、全体を通して2~3分程度で完了しました。
CPU:2 vCPUs
メモリ:8 GB
実行後の確認
前述した通り、Build Kitはすべての設定をカバーしているわけではなく、手動での設定が必要な項目(図7)もあります。また、何らかの理由で設定に失敗した項目(図8)が存在する場合もあります。そのため、実行後はこうした項目を出力されたログから確認し、対応するCIS Benchmarks等を参考に設定する必要があります。他にも対象マシンでは適用されなかった項目(図6でNAと分類されている項目。例えば、nftablesが対象マシンで使われていない場合、関連する項目は適用されません)も必要に応じてチェックすると良いでしょう。なお、こちらについては専用のログファイルは出力されないため、「CIS-LBK.log」や「CIS-LBK_verbose.log」で確認することになります。
またログの確認以外に、CIS-CAT Pro(後述)などのツールによるスキャンを実施し、設定に抜け漏れがないか確認することも重要です。


CIS-CAT® Proでのスキャン
Build Kitの効果を確かめるためにCIS-CAT® Pro [6]でのスキャンを実施してみました。CIS-CAT Proとは、同じCISが提供している評価ツールで、CIS Benchmarksに沿った評価(CIS Benchmarks通りの設定になっているかの評価)が可能です。CIS SecureSuite Membership向けのツールですが、無料版のCIS-CAT® Lite
[7]もあります(有料版と比較し、サポートしているCIS Benchmarksの数などが制限されています。またダウンロードには氏名、メールアドレス等の情報の登録が必要です)。
今回は効果測定目的でのスキャンですが、前述の通り、設定後はCIS-CAT ProやTenable社のNessus等のツールを用いたスキャンを実施し、設定を確認することが重要です。
Build Kit実行前と実行後でCIS-CAT Proによる評価を実施した結果が、図9と図10です。図9が実行前の結果、図10が実行後の結果ですが、実行後ではPassが129から171に増えており、Build Kitの効果を確認できます。


Build Kit実行後もFailとなっている項目が存在しますが、今回の場合これらの原因は、手動での設定が必要な項目、何らかの理由で設定に失敗した項目、対象マシンでは適用されなかった項目などでした(一部CIS-CAT ProやBuild Kit、CIS Benchmarksが誤っている場合もありました。このような場合は適宜CISのサポートデスクに問い合わせを行い、解決すると良いでしょう)。前述の通り、こうした項目はBuild Kit実行後に対応する必要があります。
Windows Server 2022用Build Kit
続いてWindows Server 2022にBuild Kitを適用してみます。今回はWindows Server 2022 CIS Benchmarks v2.0.0に対応するBuild Kitを使用します。
Windowsの場合はGPOの形で提供されています。zipファイルを解凍すると、説明書(PDF)とプロファイルなどによってフォルダ分けされたGPOが入っています。Ubuntuがスクリプトを実行するのに対し、こちらはこのGPOを使って設定をインポートします。利用者は基本的にプロファイルに応じたGPOをBuild Kit内から選択し、インポートすることになります(WindowsのCIS BenchmarksでもLinux系と同様にプロファイルが定義されています)。プロファイルと対応するGPOの関係は説明書に記載されています。例えば、「Level 1 Domain Controller」であれば、Build Kit内の「User-L1」、「DC-L1 Services」、「DC-L1」という3つのGPOが対応するため、これらを選択し、設定をインポートします。
Windows Server 2022用Build Kitの実行手順
実際にBuild Kitを適用してみます。基本的にWindows Server用Build Kitはドメインに参加しているシステム向けに作られているため、ドメインコントローラのグループポリシーにインポートします(そのため、スタンドアロンシステムやクラウドシステムに適用する場合は下記とは異なる手順となります)。また最新のWindows管理用テンプレートが適用されていることが前提となります。
はじめに対象マシンにBuild Kitをダウンロードし、解凍します。次に対象マシンでグループポリシー管理コンソール(gpmc.msc)を開き、ドメインの「グループ ポリシー オブジェクト」を右クリックし、「新規(N)」を選択して(図11)GPOを作成します(図12)。


次に作成したGPOを右クリックし、「設定のインポート(I)...」を選択して(図13)設定のインポート ウィザードを開きます。設定のインポート ウィザードでインポートしたいBuild KitのGPOフォルダを選択して(図14)、インポートします(設定のインポート ウィザードの他の画面では基本的に「次へ(N) >」で問題ありません)。この時、2つのGPOを同じオブジェクトへインポートできないため、インポートするGPOの数だけGPOを作成する必要がある点にはご注意ください。(例えば前述の「Level 1 Domain Controller」であれば、「User-L1」、「DC-L1 Services」、「DC-L1」の3つ分のGPOを新規作成し、設定をインポートする必要があります)。


インポート後、作成したGPOを適切なOUやドメインに適用(リンク)させれば完了です。
実行後の確認
Windowsにおいても実行後の確認や設定は必要です。しかしながら、Windows用Build Kitは上述の通りグループポリシーによる設定であり、ログやサマリといった形でBuild Kitで設定された/されなかった項目の情報が提供されません。またBuild Kit内にもそういった資料はありません。そのため、設定を確認するためにBuild Kit適用後のスキャンが特に重要になります。
今回CIS-CAT Proでスキャンしたところ、Passが75から310に増えていました。一方で実行後もFailが10個存在するなど、確認が必要な項目も存在しました。こうした項目をスキャン結果やCIS Benchmarksを参考に確認・設定する必要があります。
まとめ
今回はCIS Build Kitについてご紹介しました。Linux系であればスクリプト、Windowsであればグループポリシーによる設定であり、操作は比較的簡単でした。一方で、Build Kitに限りませんが、実行後の確認・設定が必須のため、実行後のスキャンとセットで使用するのが基本となるでしょう。また今回は検証のためそのままBuild Kitを使用していましたが、本来はテスト環境での検証やシステムにあわせた設定の調整、対応するCIS Benchmarksの確認などが必要です。実際に使用される際は、これらの点にご注意ください。
CIS Benchmarksの推奨事項を全て手動で設定するには非常に多くの時間がかかります。そのため、セキュリティは重要と分かっていても、その作業時間から躊躇される方もいらっしゃるのではないでしょうか。Build Kitは有料のツールですが、そうした課題を解決する一つの手段として検討する価値はあると考えます。本記事がその一助となれば幸いです。
参考文献:
- [1]CIS Securesuite Build Kit Content
https://www.cisecurity.org/cis-securesuite/cis-securesuite-build-kit-content
- [2]CIS Benchmarks List
https://www.cisecurity.org/cis-benchmarks
- [3]CIS SecureSuite® Membership
https://www.cisecurity.org/cis-securesuite
- [4]Download Sample CIS Build Kits
https://learn.cisecurity.org/build-kits
- [5]CIS WorkBench Sign In
https://workbench.cisecurity.org/
- [6]
- [7]Test Your Security Configuration(CIS-CAT Liteダウンロードページ)
https://learn.cisecurity.org/cis-cat-lite
執筆者プロフィール
U松(ゆーまつ)※ハンドルネーム
セキュリティ技術センター 実装技術レギュレーショングループ
NECグループのセキュア開発・運用を推進。主にOS・ミドルウェアの要塞化ツールの開発、脆弱性診断ツールの評価、セキュリティ関連ドキュメントの作成を担当。
「Hardening 2022 DECADE」グランプリ。
情報処理安全確保支援士(RISS)、CISSP Associate 保持。

執筆者の他の記事を読む
アクセスランキング
2025年4月13日~4月19日に読まれた記事のランキング