Defender for CloudのFIM(ファイル整合性監視)を試す
はじめに
AzureのセキュリティサービスであるDefender for Cloudの機能の一つに
FIM(File Integrity Mmonitoring:ファイル整合性監視)がある。
ファイルが変更されたことを検知、監視する仕組みである。
実際にセットアップして、どのように検知されるかを試してみる。
なお、この機能の利用にはDefender for Servers Plan 2が必要となる。
セットアップ
Azure Monitor AgentとLogAnalytics Agentのどちらを使うかでセットアップ方法が異なる。
ここでは、LogAnalytics Agentを使用する。
まず、Defender for Cloudのワークロード保護のページを開き、「ファイルの整合性の監視」をクリックする。
※Defender for CloudのページはUIが頻繁に変更されている気がするのであくまで参考(画面は2023/5時点)
次に使用するLogAnalyticsワークスペースを選択する。
右端のアイコンで、「UPGRADE PLAN」と表示されているワークスペースはDefender for Serversが有効になっていないもの、
「ENABLE」と表示されているものはDefender for Serversが有効になっていて、FIMの機能が有効になっていないものである。
なお、すでに有効化済の場合は何も表示されなくなる。
FIMで監視したいサーバに導入済のLogAnalytics Agentが接続されているワークスペースをクリックする。
FIMの機能を有効化する画面が表示されるので、有効にする。
「ファイルの整合性の監視」ページに遷移する。
右上にある「設定」を押すことで、ファイルの監視対象の設定を実施できる。
デフォルトで設定されている監視対象は以下に記載されている。
監視対象のデフォルト設定
また、独自に監視対象のファイルやフォルダを設定することもできる。
検知結果の確認
検知のタイミングは即時ではなく、インベントリデータの収集頻度に依存する。
インベントリデータの収集頻度
Windowsレジストリの場合は50分、Windowsファイルの場合は30分、Linuxファイルの場合は約15分おきにインベントリデータが収集され、
そのタイミングで前回と差分があれば変更されたものとみなされ、検知される。
なお、ファイルが変更されたことは確認できるが、ファイルの中身がどのように変更されたかは確認できない。
検知頻度の変更
Linuxの場合、「/etc/opt/microsoft/omsagent/<LogAnalytics WorkspaceID>/conf/omsagent.d/LinuxFileChangeTracking.conf」にコンフィグファイルが存在する。
run_intervalを変更することで、更新頻度を変更できる。
Windowsはどこで設定されているか不明。
「C:\Program Files\Microsoft Monitoring Agent\Agent\Health Service State\」あたりと思われる。
$ cat /etc/opt/microsoft/omsagent/<LogAnalytics WorkspaceID>/conf/omsagent.d/LinuxFileChangeTracking.conf
#This is auto-generated file
<source>
type exec
tag oms.changetracking.file
command ((which python2 > /dev/null 2>&1 && python2 /opt/microsoft/omsconfig/Scripts/PerformInventory.py --InMOF /etc/opt/microsoft/omsagent/conf/omsagent.d/LinuxFileChangeTracking.mof --OutXML /var/opt/microsoft/omsagent/tmp/LinuxFileChangeTracking.xml > /dev/null) || (which python3 > /dev/null 2>&1 && python3 /opt/microsoft/omsconfig/Scripts/python3/PerformInventory.py --InMOF /etc/opt/microsoft/omsagent/conf/omsagent.d/LinuxFileChangeTracking.mof --OutXML /var/opt/microsoft/omsagent/tmp/LinuxFileChangeTracking.xml > /dev/null)) && /opt/microsoft/omsagent/ruby/bin/ruby /opt/microsoft/omsagent/plugin/change_tracking_runner.rb /var/opt/microsoft/omsagent/tmp/LinuxFileChangeTracking.xml
format json
run_interval 900s
</source>
<filter oms.changetracking.file>
type filter_changetracking
# Force upload even if the data has not changed
force_send_run_interval 24h
log_level warn
</filter>
<match oms.changetracking.file>
type out.oms.changetracking.file
log_level info
num_threads 5
buffer_chunk_limit 5m
buffer_type file
buffer_path /var/opt/microsoft/omsagent/state/out.oms.changetracking.file*.buffer
buffer_queue_limit 10
buffer_queue_full_action drop_oldest_chunk
flush_interval 20s
retry_limit 6
retry_wait 30s
max_retry_wait 30m
</match>
また、「/etc/opt/microsoft/omsagent/<LogAnalytics WorkspaceID>/conf/omsagent.d/LinuxFileChangeTracking.mof」に監視する対象が記録されている。
追加したhostsファイルに関する設定が以下のように確認できる。
Azureポータル上で設定した内容が正しくサーバに反映されているかどうかはこのファイルを確認すればよい。
~~(省略)~~
instance of MSFT_nxFileInventoryResource as $MSFT_FileInventoryResourceInstance19
{
DestinationPath = "/etc/hosts";
Recurse = False;
UseSudo = True;
Links = "Follow";
Checksum = "Sha256";
Type = "File";
MaxContentsReturnable = 0;
MaxOutputSize = 5000000;
ResourceId = "[MSFT_nxFileInventoryResource]Inventory19";
ModuleName = "nxFileInventory";
ModuleVersion = "1.4";
};
~~(省略)~~
Discussion