このドキュメントでは、macOS 上のMicrosoft Defender for Endpointのオフライン セキュリティ インテリジェンス更新機能について説明します。
この機能により、organizationはローカル ホスティング サーバー (このドキュメントではミラー サーバーと呼ばれます) を使用して、インターネットへの公開が制限されているか、まったく公開されていない macOS エンドポイントのセキュリティ インテリジェンス (このドキュメントでは定義または署名と呼ばれます) を更新できます。
ミラー サーバーは、Microsoft クラウドに接続して署名をダウンロードできる、お客様の環境内の任意のサーバーです。 他の 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 で確認できます。
ミラー サーバーにセキュリティ インテリジェンス更新プログラムをダウンロードするためのプロセス フローを次の図に示します。
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 がインストールされている必要はありません。
ミラー サーバーの管理と所有権はお客様専用ですが、このセクションでは、Python 3 と Caddy を使用して macOS 上に基本的な HTTP ファイル サーバーを設定する方法を示す 2 つのサンプル Bash スクリプトを示します。 これらのスクリプトは、図のみを目的として提供され、独自のニーズと環境に合わせて調整する必要があります。
-
python_http_server.sh: Python 3 の組み込みの HTTP サーバー モジュールを使用して、指定したディレクトリのファイルを提供します。 -
caddy_http_server.sh: 指定したディレクトリからファイルを提供するように Caddy Web サーバーをインストールして構成します。
サーバーのセットアップ後にサービスが正しく設定されていることをチェックするには、"https://localhost:8080"" に移動します。
運用または高度なユース ケースについては、各サーバーの公式ドキュメントを参照してください。
環境とセキュリティの要件に合わせてスクリプトを常に確認して適応させます。
サンプル スクリプト: Python 3 を使用して macOS で基本的な 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 ファイル サーバーを設定する
#!/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 をインストールします。
リポジトリを複製するディレクトリに移動します。
コマンドを実行します。 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 ジョブまたは起動されたジョブをスケジュールして、リポジトリ/ダウンロードした 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 |
string | スクリプトがファイルをダウンロードする場所にマップします。 |
downloadLinuxUpdates |
bool |
trueに設定すると、スクリプトは Linux 固有の更新プログラムをdownloadFolderにダウンロードします。 |
logFilePath |
string | 特定のフォルダーに診断ログを設定します。 このファイルは、問題がある場合にスクリプトをデバッグするために Microsoft と共有できます。 |
downloadMacUpdates |
bool | このスクリプトは、Mac 固有の更新プログラムを downloadFolderにダウンロードします。 |
downloadPreviewUpdates |
bool | 特定の OS で使用できる更新プログラムのプレビュー バージョンをダウンロードします。 |
backupPreviousUpdates |
bool | スクリプトで以前の更新プログラムを _back フォルダーにコピーすることができ、新しい更新プログラムが downloadFolderにダウンロードされます。 |
オフライン セキュリティ インテリジェンス ダウンローダー スクリプトを実行する
ダウンローダー スクリプトを手動で実行するには、前のセクションの説明に従ってsettings.json ファイル内のパラメーターを構成し、ミラー サーバーの OS に基づいて次のいずれかのコマンドを使用します。
Bash:
./xplat_offline_updates_download.sh
Powershell:
./xplat_offline_updates_download.ps1
注:
cron ジョブまたは起動されたジョブをスケジュールして、このスクリプトを実行して、定期的に最新のセキュリティ インテリジェンス更新プログラムをミラー サーバーにダウンロードします。
ミラー サーバーでオフライン セキュリティ インテリジェンス更新プログラムをホストする
スクリプトが実行されると、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 などのディレクトリ (ローカル/リモート マウント ポイント) の絶対パスを使用することもできます。
ミラー サーバーを設定したら、次のセクションで説明するように、この URL をマネージド構成のofflineDefinitionUpdateUrlとして Mac エンドポイントに伝達する必要があります。
エンドポイントを構成する
次のサンプル 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 |
string | ミラー サーバーセットアップの一部として生成される URL 値。 これは、リモート サーバー URL またはディレクトリ (ローカル/リモート マウント ポイント) の観点から指定できます。 |
offlineDefinitionUpdate |
enabled/disabled |
enabledに設定すると、"オフライン セキュリティ インテリジェンス更新プログラム" 機能が有効になり、その逆も有効になります。 |
offlineDefinitionUpdateFallbackToCloud |
true/false |
"オフライン ミラー サーバー" が更新要求の処理に失敗した場合に、Defender for Endpoint セキュリティ インテリジェンス更新プログラムのアプローチを決定します。
trueに設定すると、"オフライン セキュリティ インテリジェンス更新プログラム" が失敗したときに Microsoft クラウド経由で更新が再試行されます。それ以外の場合は、その逆です。 |
offlineDefinitionUpdateVerifySig |
enabled/disabled |
enabledに設定すると、ダウンロードした定義がエンドポイントで検証されます。それ以外の場合は検証されます。 |
構成を確認する
macOS エンドポイントで設定が正しく適用されているかどうかをテストするには、次のコマンドを実行します。
mdatp health --details definitions
出力例は、次のコード スニペットのようになります。
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]
オフライン セキュリティ インテリジェンス更新プログラムをトリガーする
自動更新
マネージド json 内のフィールド
automaticDefinitionUpdateEnabledとoffline_definition_updateがtrueに設定されている場合、"オフライン セキュリティ インテリジェンス更新プログラム" は定期的な間隔で自動的にトリガーされます。既定では、この定期的な間隔は 8 時間です。 これは、マネージド json で
definitionUpdatesIntervalパラメーターを設定することで構成できます。手動更新
"オフライン セキュリティ インテリジェンス更新" を手動でトリガーして、Mac エンドポイント上のミラー サーバーから署名をダウンロードするには、次のコマンドを実行します。
mdatp definitions update
更新の状態を確認する
自動または手動のいずれかの方法で "オフライン セキュリティ インテリジェンス更新プログラム" をトリガーした後、 mdatp health --details --definitions コマンドを実行して更新が成功したことを確認します。
次のフィールドを確認します。
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