Defender for Servers で MDE (Linux) をオンボーディングした時にアンチウイルスを有効化するには？

:::note info
2024年1月に MDE セキュリティ構成管理について追記しました。
:::

# 本記事について

[**Microsoft Defender for Servers (P1/P2)**](https://docs.microsoft.com/ja-jp/azure/defender-for-cloud/defender-for-servers-introduction) には [**Microsoft Defender for Endpoint (以下 MDE) というアンチウイルス・EDR の機能の利用権が付与**](https://docs.microsoft.com/ja-jp/azure/defender-for-cloud/integration-defender-for-endpoint?tabs=windows)されています。


ただ、Defender for Servers から MDE をオンボーディングすると、**既定ではアンチウイルスが無効化**されています。これは、既存でアンチウイルスが入っているときに競合を防ぐためですが、他のアンチウイルスが使われていない場合は MDE の強力なアンチウイルスを使わない手はありません。

本記事では**その有効化**について見ていきます。

下記の設定が Defender for Servers から MDE を Linux マシンにオンボードした時のデフォルトの設定です。``real_time_protection_enabled`` という項目が ``false`` になっていることが分かります。

```bash
mdatp health
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/c7ea4d64-733d-81c4-3956-c4b0bbd4d9e3.png)


# ３つの手法 (2024年1月に③を追記)

MDE のアンチウイルスの有効化には、**① MDE の Linux コマンドを使う**、**② MDE の構成プロファイルで設定する**、**③ MDE セキュリティ構成の管理でポリシーを割り当てる**、の３つの方式があります。この記事ではそれぞれの方式について見ていきます。

# 方法1: MDE の Linux コマンドでの有効化

Linux コマンドは、

```bash
mdatp config real-time-protection --value enabled
```
になります。

実行後に ``mdatp health`` コマンドを叩くと、下記のように ``real_time_protection_enabled`` が ``true`` になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/bb40331a-0fa4-88ed-0a44-2afe7414576f.png)

また、このコマンドを含め、[**mdatp コマンドのリファレンス**](https://docs.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/linux-resources?view=o365-worldwidehttps://www.eicar.org/download/eicar.com.txt#supported-commands
)も出ています。

有効化後、ためしに EICAR のファイルをダウンロードしてみます。

```bash
wget https://www.eicar.org/download/eicar.com.txt
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/b72baae7-9ae9-86af-e46e-dc7eba4606fe.png)

下記コマンドでファイルの有無と脅威のリストを検索すると、ファイルは無く、ちゃんと検疫されていることが分かります。

```bash
ls
mdatp threat list
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/8b93932f-c7e5-a2ef-e1b1-ba1dae1c21ec.png)

## (補足) Azure のサービスから有効化を実行するには？

上記では Linux に SSH で入ってコマンドを実行していましたが、まとめて作業したい場合は Azure の機能上手くを使いたい際もあるかと思います。その際は、[**仮想マシンの拡張機能**](https://docs.microsoft.com/ja-jp/azure/virtual-machines/extensions/features-linux?tabs=azure-cli)を利用できます。

下記のようなファイルを用意し、Blob Storage などにアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/0d13b244-3060-45cc-a26a-6d24c9c99382.png)

そして、Azure CLI で下記コマンドを実行することで Azure の仮想マシンにインストールされているエージェントからスクリプトを実行させられます。

```bash
az vm extension set \
  --resource-group "<リソースグループ名>" \
  --vm-name "<仮想マシン名>" \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"fileUris": ["<ファイルのURL>"],"commandToExecute": "./<スクリプト名>"}'
```

一度 ``real_time_protection_enabled`` を ``false`` にし、Azure の Cloud Shell から実行してみた結果が下記になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/91f45a84-d6b1-f127-7e44-41058f675ac8.png)

同じく、``real_time_protection_enabled`` が ``true`` になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/5937aba2-8367-a2b7-8848-e896080e3a7c.png)

拡張機能にも customScript が追加されていたり、Activity Log から拡張機能の実行履歴が見れたりもします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/43188b60-0d86-cef9-3e4e-08594ee41909.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/4c3c5b80-8a31-330f-1ec8-018d193f2d27.png)

# 方法2: 構成プロファイルでの有効化

[**構成プロファイル**](https://docs.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/linux-preferences?view=o365-worldwide)を使ってアンチウイルスを有効化することもできます。こちらはそれ以外の設定も一括して行えるのも魅力です。

使い方はシンプルで、``/etc/opt/microsoft/mdatp/managed/`` というディレクトリに ``mdatp_managed.json`` という名前のファイルを置くだけです。[**サンプルやフルプロファイルは公式ドキュメントに載っています**](https://docs.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/linux-preferences?view=o365-worldwide#sample-profile)。

```json
{
   "antivirusEngine":{
      "enforcementLevel":"real_time",
      "threatTypeSettings":[
         {
            "key":"potentially_unwanted_application",
            "value":"block"
         },
         {
            "key":"archive_bomb",
            "value":"audit"
         }
      ]
   },
   "cloudService":{
      "automaticDefinitionUpdateEnabled":true,
      "automaticSampleSubmissionConsent":"safe",
      "enabled":true
   }
}
````

試しに上記の設定で設置してみます。すると ``real_time_protection_enabled`` やほかの設定項目がファイルの指示に従った設定となり、かつ ``[managed]`` というタグが付いています。これは構成プロファイルから設定されたことを意味します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/12cfcaf8-186b-a4c0-8832-969a1ceb34b4.png)

## (補足) Azure のサービスから有効化を実行するには？

ファイルのプッシュは、Linux を管理できる様々な構成管理ツールから容易に行えるかと思います。また、mdatp コマンドで見てきた **Azure の拡張機能も同じく利用できます**。構成プロファイルを用意し Blob ストレージなどにアップロードすれば、あとは mdatp コマンドの時と同じ要領で行えます。

```bash
#!/bin/bash
curl -o /etc/opt/microsoft/mdatp/managed/mdatp_managed.json <ファイルのURL>
```

# 方法3: MDE セキュリティ構成管理でポリシーを割り当てる

新たに、2023年11月に GA (一般提供開始) となった、[**MDE セキュリティ構成管理**](https://learn.microsoft.com/ja-jp/mem/intune/protect/mde-security-integration?pivots=mdssc-preview#configure-your-tenant-to-support-defender-for-endpoint-security-settings-management)機能を使うことができるようになりました。

この方法の構成の詳細については公式ドキュメントの他、下記の Zenn 上の記事にて詳細にまとめられていました。

https://learn.microsoft.com/ja-jp/mem/intune/protect/mde-security-integration?pivots=mdssc-preview#configure-your-tenant-to-support-defender-for-endpoint-security-settings-management

https://zenn.dev/microsoft/articles/1f7f743a5a2f31

Intune との連携を有効化したのち、[**Microsoft Defender Portal**](https://security.microsoft.com/) にて **Linux マシン向けのウイルス対策のポリシーを追加する**ことで、各マシンのアンチマルウェアを有効化することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/8822edaf-3991-be35-2993-8b8832dec4a0.png)


# まとめ

本記事では、Defender for Endpoint の Linux 版でアンチウイルスを有効化する方法を見てきました。Defender for Servers から MDE を利用するときにアンチウイルスを使いたい時は必須のアクションになってきます。本記事がその手順を理解する一助となれば幸いです。

＊本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。