Jamf Protect のリリースノートを振り返る (2022)
Jamf のエンドポイントセキュリティ製品 (≒ EDR) である Jamf Protect, 2022 年は大きな機能追加がありました。リリースノートを振り返りながら、いくつかピックアップして紹介したいと思います。
番外編として紹介しているツール群は、Jamf Protect ユーザでなくても活用シーンがありそうです。「Jamf Pro は使っているけど EDR は別ベンダ」な Mac Admin の方々は一見の価値アリかと思います。
リムーバブルストレージコントロールの導入
USB メモリや SD カードといったリムーバブルストレージの利用をコントロールできようようになりました。
Read Only (読み取り専用)
Read and Write (読み取りと書き込みを許可)
Prevent (禁止)
の 3 つの権限ポリシーが用意されています。
オーバーライドルールを設定して「特定のリムーバブルストレージは Write も許可するが、他は一律で Read Only」といった運用も可能です。
ネットワーク脅威防御機能 (Jamf Protect Network Threat Prevention)
ネットワークレイヤの保護機能である Network Threat Prevention (NTP) が追加されました。
Mac 上での名前解決時に Jamf が提供する DNS サーバへ問い合わせるよう強制することで、Jamf (機械学習エンジン Mi:RIAM) による接続先ドメインのリスク評価・高リスクと判断した場合に接続をブロックする機能が利用できます。HTTP, HTTPS だけではなく、バックグラウンドで実行されるものを含めて全ての通信の名前解決に同処理が適用されます。
システム管理者による以下のコントロールも可能です。
Web コンテンツのフィルタリング (コンテンツのカテゴリを指定)
任意のドメインを明示的に指定して、接続をブロック
任意のドメインを明示的に指定して、接続を許可 or NTP の処理から除外
NTP は買収した旧 Wandera 社のサービスの一部で、現状では管理コンソールが Jamf Protect とは分かれており、また Jamf Protect 側では NTP によるブロックが識別できません。これからの統合に期待しています。
Telemetry with Jamf Protect
年末に転がり込んできた Telemetry. 2022/12/12 に GA されたばかりで、まだ日本語のドキュメントも用意されていないようです。
Telemetry は macOS の監査ログをフィルタして SIEM (Microsoft Sentinel) や クラウドストレージ (Amazon S3) に転送する機能です。
「ログの転送」という観点では、Data Fowarding や Unified Logging という類似の既存機能があります。Data Fowarding は「Jamf Protect が生成したアラート(≒ 脅威の情報)」の転送機能、Unified Logging は 任意の OS ログ・アプリケーションログの転送機能です。
これらと比較して、Telemetry は
ソースが macOS の監査ログ
ログの取得設定が簡単
が特徴です。
Unified Logging は取得したいログを個別に指定する (フィルタの構文を書く) 必要があり、設定作業が面倒でした。一方で Telemetry はログ取得対象のイベントが定義済みであり、ログレベルを選択するだけで転送設定が完了します。ログレベルは「Level 1 - Standard」, 「Level 2 - Increased risk」の 2 種類があり、後者にはネットワーク関連イベントのログ (Outgoing user network connections, System-level outgoing network connections) が含まれるようです。
ログデータのサンプルはコチラのドキュメントで確認できます。
2021 年に cmdReporter を買収 -> Jamf から Compliance Reporter としてリリース -> Compliance Reporter の一部機能を Telemetry として提供、という流れでリリースされたようで、cmtReporter や Compliance Reapoter の情報も参考になりそうです。
以下、実際に S3 や Sentinel に Telemetry のログを転送してみたメモです。
以下のブログを参考にさせていただき、まずは macOS 上で出力する監査ログの設定を変更するために /etc/security/audit_control ファイルを修正します。
-> 修正不要で動作しました 🙏
Telemetry は Data Fowarding (アラートの転送) の設定が流用されるようで、それぞれのログが同一の S3 バケットに転送されます。Telemetry のログは「telemetry」フォルダ配下に保存されていきます。
ログファイルは 5 分ごとに作成されています。また Hive 形式でパーティション化されており、Athena でクエリをかける際にもありがたいです。(余談ですが、ログ転送用の S3 Bucket, IAM Role 作成用の Cloud Formation テンプレートが用意されているのもありがたかったです。)
Microsoft Sentinel でもログを見てみます。
「AUE_auth_user」にはローカル認証の結果が記録されています。
「AUE_CONNECT」には、通信を行なった (と思われる) プロセスやアクセス先の IP アドレスなどの情報が記録されていました。
「AUE_MOUNT」には Chrome のインストーラ (dmg) のマウント操作が記録されていました。
2023.03.30 追記
Microsoft Sentinel との統合に関するブログが公開されていました。Sentinel の活用方法が動画で解説されています。
番外編 / Jamf Protect の GitHub リポジトリ
ここからは番外編として、Jamf Protect の活用をサポートするツール群のご紹介です。Jamf の GitHub リポジトリで、Jamf Pro やサードパーティサービスとの連携を可能とするツールが提供されています。
設定操作まで書く時間がなかったので概要レベルでの記載に留めています。雰囲気だけでも伝われば。。
SOAR Playbook - Endpoint Network Isolation
https://github.com/jamf/jamfprotect/tree/main/soar_playbooks/endpoint_network_isolation
脅威が検出された Mac を Isolate (ネットワークから隔離) 状態にするためのツール群です。APNs (Apple プッシュ通知サービス) 及び Jamf Pro インスタンスとの通信以外がブロックされます。詳細を後述しています。
endpoint_network_isolation_enforce.sh … Mac をネットワークから隔離するためのスクリプト
endpoint_network_isolation_revert.sh … 隔離状態を解除するためのスクリプト
jamf_pro_extension_attribute_endpoint_network_isolation_status.sh … Mac の状態 (隔離 or Not) を Jamf Pro の拡張属性に登録するためのスクリプト
Jamf Protect には Jamf Pro との連携機能が用意されており、脅威検出時に「対象デバイスの拡張属性 (Jamf Protect - Smart Groups) に任意の値を追追」することができます。拡張属性と Smart Computer Group, Policy を組み合わせることで、Jamf Protect での脅威検出をトリガとして「対象の Mac を自動的にネットワークから隔離する」ことができます。
通信の制御には macOS に組み込まれている Packet Filtering (pf) が利用されています。フィルタリングのポリシーを見ると (下記), APNs サービスや Jamf Pro インスタンスとの通信、DHCP 関連の通信のみ許可されていることがわかります。
# Create the Packet Filter rules file and set permissions
CreatePFRules () {
# Create the isolation PF fireWall policy
/usr/bin/tee /etc/pf.anchors/"$fileName".pf.rules <<EOF
# Block all incoming connections
block in all
# Pass in incoming connections from Apple addresses and Jamf Pro
pass in from { ${apnsIPRange}, ${JamfProInstance} } to any no state
# Pass in DHCP
pass in inet proto udp from port 67 to port 68
pass in inet6 proto udp from port 547 to port 546
# Block all outgoing connections
block out from any to any no state
# Pass out outgoing connections to Apple addresses and Jamf Pro
pass out from any to { ${apnsIPRange}, ${JamfProInstance} } no state
EOF
# Set permissions
/usr/sbin/chown root:wheel /etc/pf.anchors/"$fileName".pf.rules
/bin/chmod 644 /etc/pf.anchors/"$fileName".pf.rules
}
リモートでも Mac のロックダウン・ロックダウンの解除が可能になるのは便利です。
SOAR Playbook - Aftermath Collection
https://github.com/jamf/jamfprotect/tree/main/soar_playbooks/aftermath_collection
Jamf が提供している Incident Response ツール「Aftermath」との連携ツール集です。
Aftermath は IR 用のデータ収集・タイムラインの作成 (収集したデータを時系列に並べたレポートを生成)を自動化してくれるツールで、こちらも Jamf が OSS として提供しています。
https://github.com/jamf/jamfprotect/tree/main/soar_playbooks/aftermath_collection/aws_s3
この Playbook では「Jamf Protect での脅威検知 -> Jamf Pro と連動して Aftermath を実行 -> 収集したデータを S3 バケットへアップロード」を自動化できます。
Aftermath が事前にインストールされていることが前提なので、Jamf Pro を使ってインストールしておきます。インストーラはコチラで取得できます。
Aftermath のデータのアップロードは、AWS CLI (aws s3 コマンド) で行われます。そのため、あらかじめアクセスキーの情報 (Access key ID, Secret access key) を pkg ファイルとしてビルドし、Jamf Pro から Policy でデプロイする準備をしておきます。
aftermath_collection.sh の以下の部分で、アップロード先の S3 バケットやアクセスキーの情報 (プロファイル名やクレデンシャルの格納先) の定義も必要です。
# Jamf Protect Analytic smartgroup identifier
analyticEA="aftermath"
# Location of the AWS CLI binary.
awsBinary="/usr/local/bin/aws"
# The name of the target S3 bucket resource
s3Bucket=""
# The region of the S3 bucket to use. Example: us-east-1
s3BucketRegion=""
# Aftermath Archive Directory
aftermathArchiveDir=""
# AWS Profile Name
awsProfile=""
# AWS Folder
awsFolder=""
aftermath_collection.sh を実行すると、以下の処理が行われます。
環境の構築
AWS CLI のインストール、アクセスキー関連ファイルのデプロイ
Aftermath の実行 (IR 用データの収集、タイムラインの作成)
S3 バケットへ Aftermath データをアップロード
クリーンアップ
以下の点に注意して、自組織の環境に合わせて適宜カスタマイズして使いましょう。
アクセスキー関連のファイルを pkg としてビルドする際、current user の ~/.aws 配下のファイルがビルド対象になる
別のアクセスキーの情報を登録している場合、そのクレデンシャルも含めてビルドされてしまう
クリーンアップ処理として、Aftermath が収集したデータやアクセスキーの情報に加えて AWS CLI 関連の環境 (/usr/local/bin/aws, /usr/local/aws-cli など) も削除される
業務のために AWS CLI をインストールしているユーザへの影響あり
Alerts Management - AWS
https://github.com/jamf/jamfprotect/tree/main/third_party_integrations/alerts_management/AWS
Jamf Protect には EDR のアラートを任意のエンドポイントへ送信できる機能があります (Alert Collection Endpoints)。同機能と組み合わせて、AWS (API Gateway, Lambda) で受け取ったアラートを「Jira でチケットを自動起票」,「Slack, Teams へアラートを通知」するためのスクリプトが提供されています。
Slack へのアラート通知を試してみましたが、以下の点が便利でした。
アラートがあがった Mac の「ホスト名」と「当該 Mac のインベントリ画面 (Jamf Pro) の URL リンク」を含められる
対象のアラートが「マルウェアの実行検知」の場合は、VirusTotal で対象マルウェアを検索・ヒットしたページの URL リンクを含められる
スクリプトを少しカスタマイズして、VirusTotal に登録されている各社の AntiVirus エンジンで "malicious" と検出された数も合わせて通知してみました。
VirusTotal での検索にはこちらの API を利用しています。マルウェア (バイナリファイル) のハッシュ値で検索をかけています。
Jamf Pro Extension Attributes
https://github.com/jamf/jamfprotect/tree/main/jamf_pro_extension_attributes
Jamf Protect のエージェントの情報を、Jamf Pro の拡張属性に登録するためのスクリプト集です。エージェントのステータスやバージョン情報、Last Check-in の日時などが取得できます。Jamf Protect コンソールを開くことなく、MDM である Jamf Pro で状態が確認できるのは便利です。(Insight の情報も見れるようになるとさらに嬉しい…)
いくつかは Jamf Pro の Extension Attribute Template でも提供されていました。
最後に
「こんな機能が欲しいな〜」と思っていたものが、続々と Jamf Protect にアドオンされていった 2022 年でした。2023 年のリリースノートには何が追加されるのでしょうか。個人的には「Insight (CIS Benchmark への準拠チェック) のステータスに応じた Jamf Pro - Smart Computer Group への登録」機能がくると嬉しいです。というわけで、Feature Request に Vote して年末年始のお休みを締めたいと思います。