Overview
このドキュメントでは、macOS 上のMicrosoft Defender for Endpointのオフライン セキュリティ インテリジェンス更新機能について説明します。
この機能により、organizationはローカル ホスティング サーバー (このドキュメントではミラー サーバーと呼ばれます) を使用して、インターネットへの公開が制限されているか、まったく公開されていない macOS エンドポイントのセキュリティ インテリジェンス (このドキュメントでは定義または署名と呼ばれます) を更新できます。
ミラー サーバーは、Microsoft クラウドに接続して署名をダウンロードできる、お客様の環境内の任意のサーバーです。 他の macOS エンドポイントは、定義済みの間隔でミラー サーバーから署名をプルします。
開始する前に、エンドポイント バージョン 101.25012.0003 以降のDefenderが macOS エンドポイントにインストールされていること、エンドポイントがミラー サーバーに到達できること、およびミラー サーバーがインターネットにアクセスして署名をダウンロードできることを確認します。 完全な一覧については、この記事の後半の 「オフライン セキュリティ インテリジェンス更新プログラムの前提条件 」セクションを参照してください。
主な利点
セキュリティ チームは、ローカル サーバーへの署名ダウンロードの頻度と、エンドポイントがローカル サーバーから署名をプルする頻度を制御および管理できます。
ダウンロードした署名は、管理対象デバイス全体に展開される前にテストデバイスで検証できるため、保護と制御をさらに強化できます。
1 つのローカル サーバーのみが Microsoft クラウドをポーリングして、フリート全体に代わって最新の署名を取得するため、必要なネットワーク帯域幅は少なくなります。
ミラー サーバーは Windows、Mac、またはLinuxを実行でき、そのサーバーに Defender for Endpoint をインストールする必要はありません。
署名は常に最新の互換性のあるウイルス対策エンジンと共にダウンロードされるため、最新のウイルス対策保護が得られます。
以前のバージョンの署名 (n-1) は、各イテレーションでミラー サーバー上のバックアップ フォルダーに移動されます。 最新の更新プログラムに問題がある場合は、バックアップ フォルダーからデバイスに n-1 署名バージョンをプルできます。
オフライン更新が失敗するまれな場合は、フォールバック オプションを構成して、Microsoft クラウドからオンライン更新プログラムを取得できます。
オフライン セキュリティ インテリジェンス更新プログラムのしくみ
組織は、Microsoft クラウドから到達可能なローカル Web/NFS サーバーであるミラー サーバーを設定する必要があります。
署名は、ローカル サーバーで cron ジョブ/タスク スケジューラを使用してスクリプトを実行することで、Microsoft クラウドからこのミラー サーバーにダウンロードされます。
Defender for Endpoint を実行している macOS エンドポイントは、このミラー サーバーからダウンロードした署名をユーザー定義の時間間隔でプルします。
ローカル サーバーから macOS エンドポイントにプルされた署名は、ウイルス対策エンジンに読み込まれる前に最初に検証されます。
更新プロセスをトリガーして構成するには、macOS エンドポイントでマネージド構成 json ファイルを更新します。
オフライン セキュリティ インテリジェンス更新プログラムの状態は、mdatp CLI で確認できます。
次の図は、セキュリティ インテリジェンス更新プログラムがMicrosoft クラウドからミラー サーバーにダウンロードされる方法を示しています。
次の図は、macOS エンドポイントがミラー サーバーからセキュリティ インテリジェンス更新プログラムをプルして検証する方法を示しています。
ミラー サーバーは、次のいずれかのオペレーティング システムを実行できます。
- Linux (任意のフレーバー)
- Windows (任意のバージョン)
- Mac (任意のバージョン)
前提条件
Defender for Endpoint バージョン 101.25012.0003 以降は、macOS エンドポイントにインストールする必要があります。
macOS エンドポイントには、ミラー サーバーへの接続が必要です。
macOS エンドポイントは、Defender for Endpoint でサポートされているディストリビューションのいずれかを実行している必要があります。
ミラー サーバーは、HTTP/HTTPS サーバーまたはネットワーク共有サーバー (NFS サーバーなど) のいずれかです。
ミラー サーバーは、次の URL にアクセスできる必要があります。
https://github.com/microsoft/mdatp-xplat.githttps://go.microsoft.com/fwlink/?linkid=2144709
ミラー サーバーは bash または PowerShell をサポートする必要があります。
ミラー サーバーには、次の最小システム仕様が必要です。
CPU コア RAM 空きディスク スワップ 2 コア (優先 4 コア) 最小 1 GB(推奨 4 GB) 2 GB システム依存 注:
この構成は、提供される要求の数と、各サーバーが処理する必要がある負荷によって異なる場合があります。
ミラー サーバーを構成する
注:
ミラーサーバーは顧客のプライベート環境に配置されているため、その管理および所有権は顧客のみに帰属します。
任意の HTTP サーバーをミラー サーバーとして使用できます。 ミラー サーバーに Defender for Endpoint がインストールされている必要はありません。
ミラー サーバーの管理と所有権はお客様のみにありますが、次の 2 つのサンプル Bash スクリプトは、Python 3 と Caddy を使用して macOS 上に基本的な HTTP ファイル サーバーを設定する方法を示しています。 これらのスクリプトは、図のみを目的として提供され、独自のニーズと環境に合わせて調整する必要があります。
-
HTTP サーバー スクリプトPythonサンプル (
python_http_server.sh): Python 3 の組み込みの HTTP サーバー モジュールを使用して、指定したディレクトリのファイルを提供します。 -
サンプル Caddy HTTP サーバー スクリプト (
caddy_http_server.sh): 指定したディレクトリからファイルを提供するように Caddy Web サーバーをインストールして構成します。
HTTP ファイル サーバーが正しく設定されていることを確認するには、"https://localhost:8080" に移動します。
運用環境または高度なユース ケースについては、HTTP サーバーと Caddy の公式Pythonドキュメントを参照してください。
環境とセキュリティの要件に合わせてスクリプトを常に確認して適応させます。
サンプル スクリプト: Python 3 を使用して macOS で基本的な HTTP ファイル サーバーを設定する
次のスクリプトは、指定したディレクトリからダウンロードしたオフライン更新ファイルをホストできる軽量Python 3 HTTP サーバーを起動します。
#!/bin/bash
# python_http_server.sh
# Starts a simple HTTP server using Python 3
# Check for Python 3
if ! command -v python3 &> /dev/null; then
echo "Python 3 is not installed. Please install it first."
exit 1
fi
PORT=8080
FOLDER="."
if [ ! -z "$1" ]; then
PORT=$1
fi
if [ ! -z "$2" ]; then
FOLDER=$2
fi
echo "Starting Python HTTP server on port $PORT (localhost only), serving folder: $FOLDER..."
python3 -m http.server "$PORT" --bind 127.0.0.1 --directory "$FOLDER"
サンプル スクリプト: Caddy を使用して macOS で基本的な HTTP ファイル サーバーを設定する
次のスクリプトは、ダウンロードしたオフライン更新ファイルをホストするように macOS 上の Caddy Web サーバーをインストールして構成します。
#!/bin/bash
# caddy_http_server.sh
# Installs and configures Caddy HTTP server on macOS
PORT=8080
FOLDER="."
if [ ! -z "$1" ]; then
PORT=$1
fi
if [ ! -z "$2" ]; then
FOLDER=$2
fi
check_homebrew() {
if ! command -v brew &> /dev/null; then
echo "Homebrew is required to install Caddy."
read -p "Would you like to install Homebrew? (y/n): " install_brew
if [[ "$install_brew" =~ ^[Yy]$ ]]; then
echo "Installing Homebrew..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
export PATH="/opt/homebrew/bin:$PATH"
else
echo "Please install Caddy manually and restart this script."
exit 1
fi
fi
}
install_caddy() {
if ! brew list caddy &> /dev/null; then
echo "Installing Caddy via Homebrew..."
brew install caddy
else
echo "Caddy is already installed."
fi
}
# Check for Caddy
if ! command -v caddy &> /dev/null; then
echo "Caddy is not installed."
check_homebrew
install_caddy
else
echo "Caddy is already installed."
fi
# Create a simple Caddyfile
cat <<EOL > Caddyfile
localhost:${PORT} {
root * ${FOLDER}
file_server browse
}
EOL
echo "Caddyfile created. Starting Caddy server on port $PORT..."
caddy run --config ./Caddyfile
オフライン セキュリティ インテリジェンス ダウンローダー スクリプトを取得する
Microsoft は、次の GitHub リポジトリでオフライン セキュリティ インテリジェンス ダウンローダー スクリプトをホストします: https://github.com/microsoft/mdatp-xplat。
ダウンローダー スクリプトを取得するには、次の手順を実行します。
オプション 1: リポジトリを複製する (推奨)
リポジトリを複製するディレクトリに移動します。
コマンドを実行します。 git clone https://github.com/microsoft/mdatp-xplat.git
オプション 2: zip ファイルをダウンロードする
リポジトリの zip ファイルをダウンロードします: https://github.com/microsoft/mdatp-xplat/archive/refs/heads/master.zip。
スクリプトを保持するフォルダーに zip ファイルをコピーします。
zip 形式のフォルダーを抽出します。
注:
cron ジョブまたはlaunchd ジョブを設定して、リポジトリまたはダウンロードした ZIP ファイルを定期的に最新バージョンに保てるようにします。
リポジトリを複製するか、zip ファイルをダウンロードした後、ローカル ディレクトリ構造は次の例と一致する必要があります。この例では、ダウンローダー スクリプトとその構成ファイルが表示されます。
user@vm:~/mdatp-xplat$ tree linux/definition_downloader/
linux/definition_downloader/
├── README.md
├── settings.json
├── settings.ps1
├── xplat_offline_updates_download.ps1
└── xplat_offline_updates_download.sh
0 directories, 5 files
注:
スクリプトの使用方法の詳細については、README.md ファイルを参照してください。
settings.json ファイルは、スクリプト実行の出力を決定するためにユーザーが構成できるいくつかの変数で構成されます。
| フィールドの名前 | 値 | 説明 |
|---|---|---|
downloadFolder |
文字列 | スクリプトがファイルをダウンロードする場所にマップします。 |
downloadLinuxUpdates |
bool |
trueに設定すると、スクリプトはdownloadFolderにLinux固有の更新プログラムをダウンロードします。 |
logFilePath |
文字列 | 特定のフォルダーに診断ログを設定します。 このファイルは、問題がある場合にスクリプトをデバッグするために Microsoft と共有できます。 |
downloadMacUpdates |
bool | このスクリプトは、Mac 固有の更新プログラムを downloadFolderにダウンロードします。 |
downloadPreviewUpdates |
bool | 特定の OS で使用できる更新プログラムのプレビュー バージョンをダウンロードします。 |
backupPreviousUpdates |
bool | スクリプトで以前の更新プログラムを _back フォルダーにコピーすることができ、新しい更新プログラムが downloadFolderにダウンロードされます。 |
オフライン セキュリティ インテリジェンス ダウンローダー スクリプトを実行する
ダウンローダー スクリプトを手動で実行するには、ダウンローダー スクリプトのフィールドの説明 settings.json フィールドの説明を使用して、settings.json ファイル (downloadFolder、downloadMacUpdates、backupPreviousUpdatesなど) のパラメーターを構成し、ミラー サーバーの OS に基づいて次のいずれかのコマンドを使用します。
Bash ベースのミラー サーバー (Linux または macOS) で、シェル スクリプトを実行して最新のオフライン定義パッケージをダウンロードします。
./xplat_offline_updates_download.sh
Windows ベースのミラー サーバーで、スクリプトの PowerShell バージョンを使用してオフライン定義パッケージをダウンロードします。
./xplat_offline_updates_download.ps1
注:
cron ジョブまたはlaunchd ジョブをスケジュールして、このスクリプトを定期的に実行し、最新のセキュリティ インテリジェンス更新プログラムをミラーサーバーにダウンロードします。
ミラー サーバーでオフライン セキュリティ インテリジェンス更新プログラムをホストする
スクリプトが実行されると、settings.json ファイル (updates.zip) で構成されたフォルダーに最新の署名がダウンロードされます。
署名 zip がダウンロードされると、ミラー サーバーを使用してホストできます。 ミラー サーバーは、HTTP/HTTPS/ネットワーク共有サーバーのいずれかを使用してホストできます。
ホストされたら、ホストされているサーバーの絶対パスをコピーします (arch_* ディレクトリは含まれません)。
たとえば、スクリプトが downloadFolder=/tmp/wdav-update で実行され、HTTP サーバー (www.example.server.com:8000) が /tmp/wdav-update パスをホストしている場合、対応する URI は www.example.server.com:8000/mac/production/ です。
/tmp/wdav-update/mac/production などのディレクトリ (ローカル/リモート マウント ポイント) の絶対パスを使用することもできます。
ミラー サーバーがセットアップされたら、「offlineDefinitionUpdateUrlを構成する」の説明に従って、この URL をマネージド構成ファイル (mdatp_managed.json) の値として設定して、Mac エンドポイントに伝達します。
エンドポイントを構成する
Important
Defender for Endpoint は macOS エンドポイントに既にインストールされている必要があり、/etc/opt/microsoft/mdatp/managed/に書き込むには root または sudo のアクセス許可が必要です。
次のサンプル mdatp_managed.json ファイルを使用し、構成に従ってパラメーターを更新してから、ファイルを場所 /etc/opt/microsoft/mdatp/managed/mdatp_managed.json にコピーします。
{
"cloudService": {
"automaticDefinitionUpdateEnabled": true,
"definitionUpdatesInterval": 1202
},
"antivirusEngine": {
"offlineDefinitionUpdateUrl": "http://172.22.199.67:8000/mac/production/",
"offlineDefintionUpdateFallbackToCloud":false,
"offlineDefinitionUpdate": "enabled"
},
"features": {
"offlineDefinitionUpdateVerifySig": "enabled"
}
}
| フィールドの名前 | 値 | コメント |
|---|---|---|
automaticDefinitionUpdateEnabled |
true/false |
更新を自動的に実行しようとする Defender for Endpoint の動作を決定します。それぞれオンまたはオフになっています。 |
definitionUpdatesInterval |
数値 | 署名の自動更新の間隔 (秒単位)。 |
offlineDefinitionUpdateUrl |
文字列 | ミラー サーバーセットアップの一部として生成される URL 値。 これは、リモート サーバー URL またはディレクトリ (ローカル/リモート マウント ポイント) の観点から指定できます。 |
offlineDefinitionUpdate |
enabled/disabled |
enabledに設定すると、"オフライン セキュリティ インテリジェンス更新プログラム" 機能が有効になり、その逆も有効になります。 |
offlineDefinitionUpdateFallbackToCloud |
true/false |
"オフライン ミラー サーバー" が更新要求の処理に失敗した場合に、Defender for Endpoint セキュリティ インテリジェンス更新プログラムのアプローチを決定します。
trueに設定すると、"オフライン セキュリティ インテリジェンス更新プログラム" が失敗したときに Microsoft クラウド経由で更新が再試行されます。それ以外の場合は、その逆です。 |
offlineDefinitionUpdateVerifySig |
enabled/disabled |
enabled に設定すると、ダウンロードした定義はエンドポイントで検証されます。そうでない場合はその逆です。 |
構成を確認する
macOS エンドポイントで設定が正しく適用されているかどうかをテストするには、次のコマンドを使用して、構成されているオフライン URL と更新ソースを含む定義の更新状態フィールドを表示します。
mdatp health --details definitions
サンプル出力は、次のコード スニペットのようになります。
definitions_status
up_to_dateが表示され、definitions_update_fail_reasonが空であることを確認します。これは、オフライン更新プログラムの構成が正しく動作していることを示します。
user@vm:~$ mdatp health --details definitions
automatic_definition_update_enabled : true [managed]
definitions_updated : Mar 14, 2024 at 12:13:17 PM
definitions_updated_minutes_ago : 2
definitions_version : "1.407.417.0"
definitions_status : "up_to_date"
definitions_update_source_uri : "https://go.microsoft.com/fwlink/?linkid=2144709"
definitions_update_fail_reason : ""
offline_definition_url_configured : "http://172.XX.XXX.XX:8000/mac/production/" [managed]
offline_definition_update : "enabled" [managed]
offline_definition_update_verify_sig : "enabled"
offline_definition_update_fallback_to_cloud : false[managed]
オフライン セキュリティ インテリジェンス更新プログラムをトリガーする
自動更新
automaticDefinitionUpdateEnabledフィールド (エンドポイントのDefenderがマネージド JSON ファイルで構成されているとおりに定義の自動更新を試行するかどうかを制御します) と、マネージド JSON のoffline_definition_update(offlineDefinitionUpdateマネージド構成フィールドの報告された状態名) がtrueに設定されている場合、"オフライン セキュリティ インテリジェンス更新プログラム" は定期的に自動的にトリガーされます。既定では、この定期的な間隔は 8 時間です。 これは、マネージド json で
definitionUpdatesIntervalパラメーターを設定することで構成できます。手動更新
"オフライン セキュリティ インテリジェンス更新" を手動でトリガーして、Mac エンドポイント上のミラー サーバーから署名をダウンロードするには、次のコマンドを実行します。
mdatp definitions update
更新の状態を確認する
自動または手動のいずれかの方法で "オフライン セキュリティ インテリジェンス更新プログラム" をトリガーした後、 mdatp health --details --definitions コマンドを実行して更新が成功したことを確認します。
次の出力例は、キー定義のヘルス フィールドを示しています。
definitions_statusがup_to_dateされ、definitions_update_fail_reasonが空であることを確認します。
user@vm:~$ mdatp health --details definitions
...
definitions_status : "up_to_date"
...
definitions_update_fail_reason : ""
...
一般的なトラブルシューティング手順
オフライン のセキュリティ インテリジェンス更新プログラムが期待どおりに動作しない場合は、次の手順を使用して問題を診断して解決します。
次のコマンドを使用して、"オフライン セキュリティ インテリジェンス更新プログラム" 機能の状態を確認します。
mdatp health --details definitionsこのコマンドは、 definitions_update_fail_reason セクションでわかりやすいメッセージを提供します。
offline_definition_updateとoffline_definition_update_verify_sigが有効になっているかどうかを確認します。definitions_update_source_uriがoffline_definition_url_configuredと等しいかどうかを確認します。-
definitions_update_source_uriは、署名がダウンロードされたソースです。 -
offline_definition_url_configuredは、署名をダウンロードするソースであり、マネージド構成ファイルに記載されているソースです。
-
接続テストを実行して、エンドポイントが構成済みのミラー サーバーやその他の必要なサービスに到達できることを確認します。
mdatp connectivity test接続が成功しても定義がまだ古い場合は、定義の更新を手動で再試行してください。
mdatp definitions update
関連項目
詳細については、次の記事を参照してください。