見出し画像

macOS向け CIS Benchmark レポーティングの自動化 をやってみた

端末の管理者にとってセキュリティガイドラインの策定やその定期的なチェックは頭の痛い課題だと思います。

macOS 向け CIS Benchmark は、組織が mac のセキュリティを担保するうえで確認すべき総合的なチェックリストとして広く利用されています。

CIS(Center for Internet Security)とは:
米国国家安全保障局(NSA)、国防情報システム局(DISA)、米国立標準技術研究所(NIST)などの政府機関と、企業、学術機関などが協力して、インターネット・セキュリティ標準化に取り組む目的で2000年に設立された米国の団体の略称です。

出典:NRI SECURE

CIS Benchmarks とは:
米国のCIS(Center For Internet Security)が開発した、情報システムを安全に構成するためのベストプラクティスが記載されたガイドラインです。CIS Benchmarksは、PCやサーバ、ネットワーク機器、モバイル機器、データベース、アプリケーション、クラウドサービス等の製品やサービスに対してバージョンごとに詳細なパラメータまで定めており、現在、180以上の文書が提供されています。

出典:NRI SECURE

今回は Jamf Proを使用して、macOS 向け CIS Benchmark の遵守状況を自動的にレポーティングする仕組みをご紹介いたします。

ご紹介する内容で、下記画像のような CIS Benchmark のレポートを作成することができます。さらにMDMと組み合わせることでMDM管理下の各端末においてレポートを自動作成することができます。

出力されるレポートイメージ

前提

設定概要

今回実施する設定は以下の内容です。

  1. レポートスクリプトの準備

  2. レポート設定用 構成プロファイルの準備

  3. レポート設定の実施

  4. レポーティングポリシーの準備

それでは、始めましょう!

設定詳細

1. レポートスクリプトの準備

1−1. スクリプトをダウンロード
こちらから最新のものをダウンロードして下さい。
 ※作成時の最新は Version 1.5でした
https://github.com/mvdbent/CIS-Script

1−2.レポートスクリプトを作成
ダウンロードしたスクリプトフォルダは下記画像のような構成になっています。
詳細は取得元のページをご確認下さい。

ダウンロードしたスクリプトフォルダ

ターミナルで、ダウンロードしたフォルダへ移動し、下記のコマンドでレポートスクリプトを作成します。

#ダウンロードフォルダへ移動
cd /{PATH_TO ダウンロード先}/CIS-Script-1.5

#スクリプトを構成する
./Assemble.sh

下記、画像のようにBuildフォルダと、レポートスクリプト「CISBenchmarkScript.sh」が出力されます。

Buildフォルダとレポートスクリプトが作られる

1-3. レポートスクリプトをJamf Proへアップロード
出力されたスクリプトを使用して、
[すべての設定]>[コンピュータ管理] > [スクリプト] >「新規」ボタン
からスクリプトを新規作成します。

1−(おまけ) スクリプトの内容
スクリプトの内容にまで触れるときりがないので止めようと思いましたが気になる方もいらっしゃると思うので少しだけ・・・
全項目が同じではありませんが、コントロール項目ごとに下記のような構成のスクリプトが集まって、チェックと修復(今回は触れませんが)、レポーティングまでを実施するという仕組みです。

CISBenchmarkScript.shの内容(抜粋)

2. レポート設定用 構成プロファイルの準備

2-1. 構成プロファイルのカスタムスキーマ用 jsonファイル を作成する
下記のコマンドでjsonファイルを作成します。

#レポート対象を指定するプロファイル用の作成
./Assemble.sh -j 

画像のようにBuildフォルダの下に「Jamf Pro Custom Schema.json」が出力されます。

レポート対象を指定するプロファイルが作成される

2-2. レポート設定用 構成プロファイルの作成
2-1 で作成した構成プロファイルのカスタムスキーマ用 jsonファイル を使用して、レポート設定用 構成プロファイルを作成します。

構成プロファイルの作成

[コンピュータ] > [構成プロファイル] 「新規」ボタン から構成プロファイルを新規作成し、アプリケーションとカスタム設定」のペイロードを構成します。
設定内容は下記のとおりです。

■一般 ペイロード
・表示名:CIS Benchmark Settings  等、任意の名前

■アプリケーションとカスタム設定 ペイロード
・ソース:カスタムスキーマ
・環境設定ドメイン:com.cis.benchmark
・カスタムスキーマ:Jamf Pro Custom Schema.json をアップロード

SCOPEにはレポート対象の端末を指定して下さい。

3.レポート設定の実施

2で作成した構成プロファイルにて、出力設定を行います。
全項目のチェックを行う場合は、下記2項目のみ設定すればOKです。
必要に応じた設定で実施して下さい。

■アプリケーションとカスタム設定 ペイロード
・Reporting:Full Report
・Remediate:Disabled

レポート設定の実施

今回準備しているスクリプトには、レポートのみではなく修復の機能も備わっており、Remediateの設定を Enabled に設定をすれば修復まで実施することが可能です。(スクリプトで対応可能な設定に限ります)

4.レポーティングポリシーの準備

4-1.レポートアップロードスクリプトの準備
1で作成したスクリプトは各端末上で動作し、それぞれの端末にレポートを出力するため、出力したレポートをJamf Pro のインベントリ情報の添付ファイルとしてアップロードする方法をご案内します。

ダウンロードしたフォルダの下記の場所にある
「Upload_CISBenchmarkReport.sh」を使用します。

アップロード用スクリプト

[すべての設定]>[コンピュータ管理] > [スクリプト] >「新規」ボタン
からスクリプトを新規作成します。
その際、下記の箇所は変更しておくことをおすすめします。

■パラメータ名の定義

パラメータ名の定義

・パラメータ4:basic_auth

4-2.拡張属性のアップロード(オプション)
必須ではありませんが、レポートの取得を行わなくてもおおよその結果を把握するための拡張属性を作成します。
ダウンロードしたフォルダの下記の場所にあるxmlファイルをアップロードします。

拡張属性設定用xmlファイル

アップロードは、Jamf Proの [すべての設定]>[コンピュータ管理] > [拡張属性]にある「アップロード」ボタンから実施します。

拡張属性のアップロード

4-3.レポーティングポリシーの作成
レポーティングの自動化を行うポリシーを作成します。
ポリシー設定は以下の通りです。

■General
ポリシーの起動設定をします。
今回は1週に1回、レポート出力する想定で設定しました。

General

表示名:CIS Benchmark Report  など日本語でも可
トリガー:Reccuring Check-in
実行頻度:Once every week

※出力のトリガーや頻度は運用に合わせて設定して下さい

■スクリプト
2つのスクリプトを設定します。
実行順が重要なので優先順位を忘れずに設定しましょう。

スクリプト設定

CISBenchmarkScript.sh:
・優先順位「Before」
Upload_CISBenchmarkReport.sh:
・優先順位「After」
・basic_auth   下記のコマンドで取得してください

# Basic認証の取得 username:password は適宜置き換えてください
$ printf "username:password" | iconv -t ISO-8859-1 | base64 -i -

動作確認

設定完了したら、動作確認をしてみます。

■確認ポイント
以下のようなポイントをご確認ください
① ポリシーは正常終了しているか?
② ポリシーログは正常に出力されているか?
→インベントリ情報のポリシーログで確認

ポリシーログの確認

③ 端末側にレポートが出力されているか?
→端末の下記のパスにレポートファイルが出力されていることを確認
/Library/Security/Reports/CISBenchmarkReport.csv

レポート出力先

④ インベントリ情報にレポートは添付されているか?
→インベントリ情報にレポートファイルが添付されていることを確認。
(ファイル名のリンクをクリックするとダウンロードされる。)

レポートの添付

レポートアップロードのスクリプトを、ファイル名を変更してアップロードするように変更すれば、履歴を保持することも可能です。

⑤ レポート内容は想定通りか?
→インベントリ情報の添付ファイルからダウンロードしたファイルを確認

レポートイメージ

⑥ 拡張属性の件数表示はレポートとあっているか?
(拡張属性を作成した場合のみ)
→インベントリ情報の拡張属性とレポート内容を比較チェック

おわりに

MDMがあれば(工夫次第でMDMがなくても)、追加のセキュリティ製品などを購入することなく、自動的・継続的にレポート(部分的ですが修復も)を行うことができるのはかなりポイントが高いと思います。

定期レポートとしてでなくても、セキュリテイ製品の導入の前に現状を調査したいというようなシーンでも使えると思います。

スクリプトであるため、導入する会社に合わせてチェック内容をカスタムすることができます。
また、レポートアップロードの仕組みを作り込めばJamf Proへの添付ではなくクラウドストレージ等へレポートを出力させてデータとして活用したり。。。等
使い勝手の良い仕組みだと思います。

※ご紹介した内容は、macOS Catalina・Big Sur・Montereyが対象で、
下記の環境で動作確認しました。
 ・macOS Big Sur 11.7
 ・macOS Monterey 12.6
テスト端末等でお試しいただいた上で実施してください。

以上、 エンジニアの中峯が担当いたしました。
最後まで読んでいただき、ありがとうございました。


新しい記事の情報をツイッターで報告しておりますので是非@magichat2011もフォローして下さい!