Azure VM でファイル変更検知（ファイル改ざん検知）を Azure サービスで実施する (Defender for Servers FIM / AMA Change-Tracking)

:::note alert
AMA Change Tracking によるファイル改ざん検知機能（FIM）は 2024/8 を持って終息になりました。

https://learn.microsoft.com/en-us/azure/defender-for-cloud/file-integrity-monitoring-enable-ama

以後は MDE ベースによる FIM 機能に移行されていますのでご注意下さい
https://learn.microsoft.com/en-us/azure/defender-for-cloud/file-integrity-monitoring-enable-defender-endpoint

:::

# 1. はじめに
Azure で仮想マシンを導入した際に、セキュリティ要件から OS の重要ファイルや機密データファイルに対してファイル変更検知（ファイル改ざん検知）を設計するケースがあるかと思います。
Microsoft Azure では、2023.4 現在以下の 2 つのソリューションをクラウドサービスとして提供しているのですが、違いや機能、価格などの情報が分かり難いので、本記事で整理しています。


1. [**FIM (File Integrity Monitoring)** - ファイル変更検知](https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/file-integrity-monitoring-enable-ama)
    1. **Microsoft Defender for Servers P2** による提供
    1. 2023.4 時点で Azure Monitor Agent を用いた機能はプレビュー機能
2. [**Azure Change Tracking & Inventory** - ファイル変更の検知とインベントリ](https://learn.microsoft.com/ja-jp/azure/automation/change-tracking/overview-monitoring-agent)
    1.  **Azure Monitor Agent** による提供
    1.  2023.4 時点で Azure Monitor Agent を用いた機能はプレビュー機能

2023.4 現在、Azure VM の監視エージェントは MMA(Log Analytics Agent) / AMA(Azure Monitor Agent) の 2 つが提供されていますが、[MMA は 2024.8.31 EoS 予定](https://learn.microsoft.com/ja-jp/azure/azure-monitor/agents/log-analytics-agent)のため、本記事は AMA を用いた機能での紹介としています。

# 2. ツールの比較
結論から、どちらも同じ拡張エージェントを用いており、見せ方が違うだけです。
標準の設定パラメータや、Azure ポータルから見える GUI の違いに差がありますが、出力されるログ情報は同じものとなります。ニーズに合ったツールを選定しましょう。

|  項目  | Change Tracking(AMA) | FIM(Defender for Servers) |
| ---- | ---- | ---- |
| ライセンス | サーバー単位 | サブスクリプション単位<BR>(導入はサーバー単位で設定が可能) |
| 価格 | [無料](https://azure.microsoft.com/ja-jp/pricing/details/automation/#pricing)<BR>- Azure 以外は 5 ノードまで無料<BR>- 別途、Log Analytics のログ取り込み費用 | $15 / Server /月<BR>- MDE(Microsoft Defender for Endpoint)、適応型コントロールや JIT(Just-In-Time)アクセスなどの機能と合わせて提供|
| 変更検知用に追加される拡張機能 | ``ChangeTracking-Windows``<BR>``ChangeTracking-Linux`` | ``ChangeTracking-Windows``<BR>``ChangeTracking-Linux`` |
|導入される DCR ルール | 手動<BR>(ユーザー側で作成) |自動<BR>``Microsoft-ChangeTracking-[subscriptionId]-default-dcr``<BR>導入後、ユーザー側で更新可能 |
|導入される ターゲット | 手動<BR>(ユーザー側で作成) |自動<BR>``defaultWorkspace-[subscriptionId]-fim``<BR>導入後、ユーザー側で更新可能 |
| Windows レジストリ監視 | 〇<BR>サンプルで 9 個のレジストリ例あり | 〇<BR>テンプレートで29個の推奨ルール |
| Windows ファイル監視 | △<BR>設定は可能だが、サンプル提供無し | 〇<BR>テンプレートで9個の推奨ファイル |
| Linux ファイル監視 | 〇<BR>- [サンプルファイル](https://learn.microsoft.com/ja-jp/azure/automation/change-tracking/change-tracking-data-collection-rule-creation)のみ(etc/*.conf) | 〇<BR>テンプレートで18個の対象が設定される |
| Windows ソフトウェア<BR>(インベントリ) | 〇 | - |
| Linux パッケージ<BR>(インベントリ) | 〇 | - |

# 3. Azure ポータル画面の違い
ファイル変更検知の確認を行う場合、Azure ポータルからの表示が異なります。
## 3.1 Azure Automation
Azure Automation では、「変更の追跡」より確認が出来るようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/26af6204-1d5f-fb7f-3d8c-2693f0178b01.png)
変更が行われたファイルをクリックすると、変更がおこなれた日付やファイルサイズの変更が行われたことを確認することが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/63126206-9a43-6406-89aa-bb7d105a0d99.png)
## 3.2 Microsoft Defender for Servers / FIM
Defender for Servers では、Microsoft Defender for Cloud の「ワークロードの保護」より、「ファイルの整合性の監視」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/ce186792-5c21-cce6-32fa-72a470ba8991.png)
2022.4 現在、Azure Monitor Agent を用いた FIM の画面では「過去 7 日間」に対する変更イベントの表示が出るようになっています。Azure Automation 側では過去の期間を変更出来るのですが、残念ながら FIM では過去 7 日間の固定表示になるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/4fc0aaf3-2264-8057-6b3d-759bbceadc9d.png)
「変更を表示」をクリックすると、拡張機能 ``Change-Tracking``より収集される ``ConfigrationChange`` テーブルを表示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/92708d59-a95c-8df6-0958-258ba312117b.png)

https://learn.microsoft.com/ja-jp/azure/azure-monitor/reference/tables/configurationchange

# 4. 監査設定の違い
どちらの機能も Azure Monitor の Change-Tracking Extension を使っているだけなのですが、Defender for Servers の FIM の方がテンプレートに用意されている監視ルールが多いといった違いがあります。
単に Azure Automation のドキュメントに掲載されているサンプルが弱いだけのような気がするので、カスタマイズで自社要件に合ったものにカスタマイズするのが良いと思います。

## 4.1 Azure Automation のサンプルファイル
[サンプルとして Docs に紹介されている](https://learn.microsoft.com/ja-jp/azure/automation/change-tracking/change-tracking-data-collection-rule-creation)ものです。

|  項目  | 設定内容、数など |
| ---- | ---- |
| Windows レジストリ | 17 個 |
| Windows ファイル | なし |
| Linux ファイル | ``/etc/*.conf`` のみ |

## 4.2 Microsoft Defender for Servers で展開されるルール
Defender for Servers による FIM を適用すると、Azure Monitor の DCR ルール ``Microsoft-ChangeTracking-xxxx-default-dcr`` には以下内容が設定されています。

|  項目  | 設定内容、数など |
| ---- | ---- |
| Windows レジストリ | 29 個 |
| Windows ファイル | 9 個<BR> - 各種 ini ファイル (boot.ini/system.ini/win.ini)<BR>- システムファイル (autoexec.bat/config.sys)<BR>など |
| Linux ファイル | 18 個<BR> - ``crond`` や ``/bin/login``, ``/bin/passwd``<BR>- ``/bin``, ``/sbin``, ``/opt/bin`` など |

# 5. ログ通知はどちらも同じ基盤が提供される
Azure Monitor の Change-Tracking も、Defender for Servers P2 の FIM も、設定が行われると対象の Log Analytics ワークスペースに ``ConfigurationChange`` テーブルとしてログが出力されます。機密ファイルやフォルダの監視や、重要なファイルを保管する Azure VM については、Azure Monitor アラートや、Microsoft Sentinel を用いたインシデント通知を設計されることをお勧めします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653790/92708d59-a95c-8df6-0958-258ba312117b.png)

# 6. まとめ
まとめると、現在どちらも同等の機能が提供されているものの、Defender for Servers の FIM ではセキュリティ向けにテンプレートルールがビルトインされており、直ぐに利用が出来る構成になっていることに気付きました。Azure Monitor Agent を導入しているユーザーでも、拡張機能として Change-Tracking を導入することで Automation から管理することが出来るようになりますが、ファイル変更検知のシステム設計などを検討する必要があるところが違いになるのではと思います。
本記事がどなたかの参考になれば幸いです。

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