Linux版Microsoft Defender for Endpointで「実際にreal_timeで動いているのか、それともpassiveなのか」を確認する作業が簡単になりました。Linux platform 101.26052.0012、release version 30.126052.0012.0では、mdatp healthにantivirus_enforcement_levelが追加されています。
このフィールドにはreal_time、passive、on_demand、auditのいずれかが表示されます。更新後はmdatp health --field antivirus_enforcement_levelを実行するだけで、Antivirusの実効モードを直接確認できます。これまでのように複数の状態値や設定ファイルを見比べる必要がなくなるのが、今回の変更のポイントです。(Microsoft Learn)
Linux版Defenderがreal_timeかpassiveかをmdatp healthで確認する
対象バージョンへ更新したLinux端末では、次のコマンドを実行します。
mdatp health --field antivirus_enforcement_level
リアルタイム保護が有効な場合、表示例は次のとおりです。
real_time
パッシブモードで動作している場合は、次のように表示されます。
passive
mdatp healthの全項目を表示して確認することもできます。
mdatp health
出力には、次のような項目が追加されます。
antivirus_enforcement_level : "real_time"
運用監視や構成管理ツールから利用する場合は、全項目を解析するよりも--fieldで値だけを取得する方が扱いやすくなります。
対象バージョン
今回の変更が追加されたリリースは次のとおりです。
| 項目 | バージョン |
|---|---|
| Linux platform | 101.26052.0012 |
| Release version | 30.126052.0012.0 |
| Antivirus engine | 1.1.26040.3001 |
| 追加フィールド | antivirus_enforcement_level |
Microsoftの公式リリースノートでは、mdatp healthによって追加チェックなしでデバイスの保護状態を確認できる改善として説明されています。(Microsoft Learn)
端末に導入されているアプリケーションバージョンは、次のコマンドで確認できます。
mdatp health --field app_version
app_versionは、mdatp healthが返すMicrosoft Defenderのアプリケーションバージョンです。(Microsoft Learn)
表示された値が101.26052.0012より古い場合は、組織の更新手順に従ってMicrosoft Defender for Endpointを更新します。
公式ドキュメントに掲載されている手動更新コマンドは次のとおりです。
# RHEL、CentOS、Oracle Linuxなど
sudo yum update mdatp
# SUSE Linux Enterprise Serverなど
sudo zypper update mdatp
# Ubuntu、Debian
sudo apt-get install --only-upgrade mdatp
Defender for Cloudからエージェントをプロビジョニングしている環境では、自動的にクライアントが更新される構成もあります。手動更新する前に、更新リングやパッケージ管理方針を確認してください。(Microsoft Learn)
antivirus_enforcement_levelの4つの値
antivirus_enforcement_levelには、次のいずれかが表示されます。
| 値 | 状態の意味 | 実務上の確認ポイント |
|---|---|---|
real_time | リアルタイム保護が有効 | Defenderを主たるAntivirusとして使用する端末では、基本的にこの値を期待する |
passive | パッシブモードで動作 | リアルタイム保護と自動修復は無効。EDRやオンデマンドスキャンを利用する構成か確認する |
on_demand | オンデマンドスキャンのみ | 常時監視は行われない。スケジュールスキャンや手動スキャンの運用を確認する |
audit | リリースノートで返却候補として示された監査状態 | real_timeと同等の保護状態とは判断せず、適用ポリシーと製品ログを確認する |
MicrosoftのLinux向け設定ドキュメントでは、Antivirusの構成可能なenforcement levelとしてreal_time、on_demand、passiveの3種類が説明されています。real_timeではリアルタイム保護が有効になり、on_demandではスキャン実行時のみファイルを検査します。passiveではリアルタイム保護と自動修復が無効になる一方、オンデマンドスキャンやEDRは利用できます。(Microsoft Learn)
auditが表示されたときの注意点
2026年7月のリリースノートでは、antivirus_enforcement_levelの返却候補にauditが含まれています。一方、現行のLinux向けAntivirus設定ドキュメントでは、antivirusEngine.enforcementLevelへ設定できる値としてauditは説明されていません。(Microsoft Learn)
そのため、auditが表示されたからといって、管理JSONへ次のような設定を追加するのは避けてください。
{
"antivirusEngine": {
"enforcementLevel": "audit"
}
}
公式ドキュメントでAntivirusの設定値として明示されるまでは、auditを「端末が報告している実効状態」として扱い、次の項目を確認するのが安全です。
- Microsoft Defenderポータルから配布されているポリシー
/etc/opt/microsoft/mdatp/managed/mdatp_managed.json- 使用している更新チャネル
mdatp healthのほかの状態値- Microsoft Defenderのローカルログ
また、Network Protectionにもauditという値がありますが、こちらはnetworkProtection.enforcementLevelに関する別の設定です。antivirus_enforcement_levelとnetwork_protection_enforcement_levelを混同しないようにしてください。(Microsoft Learn)
これまでの確認方法と何が変わったのか
従来も、次のコマンドでリアルタイム保護の有効・無効は確認できました。
mdatp health --field real_time_protection_enabled
表示される値はtrueまたはfalseです。
false
しかし、falseだけでは次の状態を区別できません。
- パッシブモードで意図的にリアルタイム保護を停止している
- オンデマンドスキャン専用で運用している
- 設定不備や競合によってリアルタイム保護が動いていない
- 監査状態として動作している
- Defenderのエンジンに問題が発生している
real_time_protection_enabledは、リアルタイム保護が有効かどうかを示す真偽値です。また、healthyは製品全体が正常かどうかを示す値であり、Antivirusがどのモードで動いているかを直接示すものではありません。(Microsoft Learn)
今回追加されたantivirus_enforcement_levelでは、この違いを1つの値で判断できます。
| 確認項目 | 分かること | 注意点 |
|---|---|---|
healthy | Defender製品全体が正常か | trueでもパッシブモードの場合がある |
real_time_protection_enabled | リアルタイム保護の有効・無効 | falseになっている理由までは分からない |
passive_mode_enabled | パッシブモードが有効か | オンデマンドや監査状態をまとめて判断できない |
antivirus_enforcement_level | Antivirusの実効モード | platform 101.26052.0012以降が必要 |
設定ファイルに書かれている値は「管理者が意図した設定」です。それに対してantivirus_enforcement_levelは、端末上でAntivirusがどのモードとして動作しているかを確認するための値です。
この違いにより、ポリシーの配布漏れや意図しないモード変更を見つけやすくなります。
実務で使える確認手順
バージョンを確認する
最初に、対象のMicrosoft Defenderが新しいフィールドに対応しているか確認します。
mdatp health --field app_version
想定例は次のとおりです。
101.26052.0012
古いバージョンが表示された場合は、先にエージェントを更新します。
実効モードを確認する
次に、antivirus_enforcement_levelを取得します。
mdatp health --field antivirus_enforcement_level
値を確認し、その端末で設計しているモードと照合します。
| 端末の役割 | 一般的な期待値 |
|---|---|
| Defenderを主たるAntivirusとして利用 | real_time |
| 別のセキュリティ製品と役割を分けて利用 | passive |
| 定期スキャンや手動スキャンだけを利用 | on_demand |
| 検証・監査目的の構成 | 設計内容に応じてauditを調査 |
ここで重要なのは、すべての端末を一律にreal_timeと判定しないことです。たとえば、別のAntivirus製品を主たる保護製品として使っているサーバーでは、passiveが正しい場合があります。
ただし、Linux上で複数のFanotifyベースのセキュリティ製品をブロックモードで同時に動かす構成は、予期しない動作やシステムハングにつながる可能性があるとして、Microsoftはサポートしていません。競合製品がある環境ではpassiveの利用を検討し、製品ごとの互換性も確認してください。(Microsoft Learn)
全体のヘルス状態も確認する
Antivirusのモードだけでなく、製品全体の正常性も確認します。
mdatp health --field healthy
正常な場合は次のように表示されます。
true
さらに、次の項目も併せて確認すると、保護状態をより正確に判断できます。
mdatp health --field licensed
mdatp health --field definitions_status
mdatp health --field engine_load_status
mdatp health --field real_time_protection_available
mdatp health --field real_time_protection_enabled
antivirus_enforcement_levelがreal_timeでも、定義ファイルの更新やエンジンの読み込みに問題があれば、期待する保護を提供できない可能性があります。
設定値と実効モードが一致しない場合
管理対象の構成ファイルは、通常、次の場所に配置されます。
/etc/opt/microsoft/mdatp/managed/mdatp_managed.json
Antivirusのenforcement levelを確認する例は次のとおりです。
sudo grep -n '"enforcementLevel"' \
/etc/opt/microsoft/mdatp/managed/mdatp_managed.json
設定例は次のようになります。
{
"antivirusEngine": {
"enforcementLevel": "real_time"
}
}
設定ファイルがreal_timeなのに、antivirus_enforcement_levelがpassiveやon_demandになっている場合は、次の順番で確認します。
- JSONの構文が正しいか
- 設定ファイルの所有者とアクセス権が適切か
- Microsoft Defenderサービスの再読み込み後に設定が反映されたか
- Microsoft Defenderポータルから別のポリシーが配布されていないか
- ローカルCLIで設定した値が管理ポリシーに上書きされていないか
- 競合するセキュリティ製品が検出されていないか
組織管理された構成プロファイルは、端末でローカルに設定した値より優先されます。そのため、ローカルコマンドで設定を変更しても、管理ポリシーによって元の状態へ戻ることがあります。(Microsoft Learn)
複数のLinux端末を自動監視する方法
antivirus_enforcement_levelは値を直接取得できるため、監視スクリプトや構成管理ツールへ組み込みやすくなっています。
次のスクリプトは、期待するモードと実際のモードを比較します。
#!/usr/bin/env bash
set -u
expected="${1:-real_time}"
actual="$(
mdatp health --field antivirus_enforcement_level 2>/dev/null |
tr -d '"' |
xargs
)"
if [[ -z "${actual}" ]]; then
echo "UNKNOWN: antivirus_enforcement_level was not returned"
echo "Check the Microsoft Defender app version."
exit 2
fi
if [[ "${actual}" != "${expected}" ]]; then
echo "NG: expected=${expected} actual=${actual}"
exit 1
fi
echo "OK: antivirus_enforcement_level=${actual}"
exit 0
real_timeを期待するサーバーで実行する場合は、引数なしで利用できます。
./check-mdatp-mode.sh
パッシブモードを期待するサーバーでは、次のように実行します。
./check-mdatp-mode.sh passive
正常時の表示例は次のとおりです。
OK: antivirus_enforcement_level=passive
想定と異なる場合は、終了コード1を返します。
NG: expected=real_time actual=passive
この終了コードを監視システム、Ansible、SSHによる一括確認、構成管理製品などで利用すれば、意図しないモード変更を検出できます。
運用で失敗しやすいポイント
healthyがtrueならreal_timeとは限らない
healthyはMicrosoft Defender全体の正常性を示します。
healthy : true
この状態でも、設計どおりにpassiveやon_demandで動作している場合があります。リアルタイム保護の有無を確認したい場合は、必ずantivirus_enforcement_levelも確認してください。
real_time_protection_enabledがfalseでも障害とは限らない
次の表示だけを見て、直ちに障害と判断するのは早計です。
real_time_protection_enabled : false
passiveやon_demandでは、リアルタイム保護が無効になるのが正常です。新しいフィールドを使い、意図したモードかどうかで判定します。
passiveでは自動修復されない
passiveではリアルタイム保護と自動的な脅威修復が無効です。オンデマンドスキャンやEDRは利用できますが、検出後の対応を別の製品やセキュリティ運用で担う必要があります。(Microsoft Learn)
単に負荷を下げる目的でpassiveへ変更すると、保護設計そのものが変わります。性能問題がある場合は、先に除外設定やスキャン対象、ワークロードとの競合を見直してください。
新規環境でpassiveと表示される場合がある
Microsoftの設定ドキュメントでは、Defender for Endpoint version 101.23062.0001以降の既定値はpassiveとされています。ポリシーを明示的に設定していない新規環境でpassiveが表示されても、必ずしも不具合とは限りません。(Microsoft Learn)
Defenderを主たるAntivirusとして利用する場合は、管理ポリシーでreal_timeを明示し、反映後にantivirus_enforcement_levelを確認してください。
フィールドが表示されないだけで保護停止と判断しない
antivirus_enforcement_levelが表示されない場合、まずapp_versionを確認します。
mdatp health --field app_version
古いエージェントでは新しいフィールド自体が実装されていません。フィールドが存在しないことと、Antivirusが停止していることは別の問題です。
更新までの間は、次の項目を組み合わせて状態を確認します。
mdatp health --field healthy
mdatp health --field passive_mode_enabled
mdatp health --field real_time_protection_enabled
mdatp health --field engine_load_status
まとめ:更新後は実効モードを期待値と照合する
Linux platform 101.26052.0012では、mdatp healthにantivirus_enforcement_levelが追加されました。これにより、Antivirusがreal_time、passive、on_demand、auditのどのモードで動いているかを直接確認できます。
更新後に行うべき確認は、次の3点です。
mdatp health --field app_versionで対象バージョンか確認するmdatp health --field antivirus_enforcement_levelで実効モードを取得する- 端末の役割ごとに定めた期待値と照合する
特に重要なのは、healthyやreal_time_protection_enabledだけで保護モードを判断しないことです。Defenderを主たるAntivirusとして使う端末、別製品と共存させる端末、オンデマンドスキャン専用端末では、期待する値が異なります。
まず代表的なLinux端末で新しいフィールドを確認し、問題がなければ監視スクリプトや構成管理へ組み込みましょう。

コメント