Linux版Defenderのmdatp healthにantivirus_enforcement_level追加|実効モードの確認方法

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 platform101.26052.0012
Release version30.126052.0012.0
Antivirus engine1.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つの値で判断できます。

確認項目分かること注意点
healthyDefender製品全体が正常かtrueでもパッシブモードの場合がある
real_time_protection_enabledリアルタイム保護の有効・無効falseになっている理由までは分からない
passive_mode_enabledパッシブモードが有効かオンデマンドや監査状態をまとめて判断できない
antivirus_enforcement_levelAntivirusの実効モード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になっている場合は、次の順番で確認します。

  1. JSONの構文が正しいか
  2. 設定ファイルの所有者とアクセス権が適切か
  3. Microsoft Defenderサービスの再読み込み後に設定が反映されたか
  4. Microsoft Defenderポータルから別のポリシーが配布されていないか
  5. ローカルCLIで設定した値が管理ポリシーに上書きされていないか
  6. 競合するセキュリティ製品が検出されていないか

組織管理された構成プロファイルは、端末でローカルに設定した値より優先されます。そのため、ローカルコマンドで設定を変更しても、管理ポリシーによって元の状態へ戻ることがあります。(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点です。

  1. mdatp health --field app_versionで対象バージョンか確認する
  2. mdatp health --field antivirus_enforcement_levelで実効モードを取得する
  3. 端末の役割ごとに定めた期待値と照合する

特に重要なのは、healthyやreal_time_protection_enabledだけで保護モードを判断しないことです。Defenderを主たるAntivirusとして使う端末、別製品と共存させる端末、オンデマンドスキャン専用端末では、期待する値が異なります。

まず代表的なLinux端末で新しいフィールドを確認し、問題がなければ監視スクリプトや構成管理へ組み込みましょう。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次