フロントドアとWAFのログをLog Analyticsで確認

 

Azure Froot Door のアクセスログやWAFログを診断設定でLog Analyticsへ転送しクエリで確認してみました。

Azure Front Doorのログではアクセス先のURL等の情報だけではなくキャッシュのヒットなどの情報も分かります。

WAFのログではどのルールでブロックされたのか?なども分かります。例えばレート制限時にはアクセス制限状況も分かります。

その為、Azure Front Doorの使用状況を把握するのには、診断設定で取得出来るログは非常に重要なログになります。

今回実際に実施した作業内容は下記の通りになります。

      • Azure Front Dorrの診断設定
      • Log Analyticsでのログ検索

設定にあたっては、マイクロソフト様サイトを参考に進めました。

https://docs.microsoft.com/ja-jp/azure/frontdoor/front-door-diagnostics

WAFの作成についてはこちらを参考にして頂ければと。

Azure Web アプリケーションファイアウォールを作ってみた

Application Gatewayのログについてはこちらを参考にして頂ければと。

Azure Application GatewayのアクセスログをLog Analyticsで確認する

1.Azure Froot DoorやWAFのログ取得設定は診断設定で行います

Azure Froot DoorのアクセスログはApplication Gatewayと同様に診断設定を利用します。

Azure Front Doorのメニューで診断設定を選択します。

下記画面が表示されますので診断設定を追加するを選択します。

診断設定の画面が表示されます。

logに表示されている2項目にチェックを入れます。(必要に応じてMetricにもチェックを入れます。)

今回はLog Analyticsで確認するのでLog Analytics への送信にチェックを入れて、送信先のワークスペース名を選択します。

診断設定の名前を付けて保存します。

※FrontdoorWebApplicationFirewallLogはFroot DoorでWeb Application Firewallの設定を行っている場合のみ出力されます。

2.Log AnalyticsでAzure Front DoorやWAFログの検索を行う。

診断設定で選択したLog Analyticsのワークスペースでログを開きます。(Azure Front Doorのメニューでログを選択しても同じ動作になります。)

今回取得設定したのは以下の2つのログになります。

      • FrontdoorAccessLog:Azure Front Doorのアクセスログ
      • FrontdoorWebApplicationFirewallLog:WAFのログ

アクセスログを表示する為のサンプルは下記の通りになります。

#アクセスログを表示する

AzureDiagnostics
| where Category == “FrontdoorAccessLog”
 
#アクセスログをアクセス元のIPでカウントする。(アクセス数順で並び変える。)

AzureDiagnostics
| where Category == “FrontdoorAccessLog”
| summarize total_hits = count() by clientIp_s
| sort by total_hits desc
 

FrontdoorAccessLogの主な出力項目としてはこんな内容が表示されます。

      • 時刻
      • リクエストURL
      • User-Agent
      • アクセス元のIP
      • キャッシュヒット
      • ルールエンジン(利用時)

Web Application Firewallのログは下記のクエリで確認可能です。

#Web Application Firewallのログを表示する

AzureDiagnostics
| where Category == “FrontdoorWebApplicationFirewallLog”
 

アクセスログに表示される項目以外に、どのルールにマッチしたのか、ブロックされたのか等の情報が併せて表示されます。

なお許可された通信も表示されます。許可された通信以外(LogやBlock)を表示するには下記のようにします。

#Allow以外のアクセスログを表示する

AzureDiagnostics
| where Category == “FrontdoorWebApplicationFirewallLog”
| where action_s != “Allow”
 

Web Application FirewallでBlockされたログのみの場合は以下のようなクエリを利用します。

#Web Application FirewallでBlockされたアクセスログを表示する

AzureDiagnostics
| where Category == “FrontdoorWebApplicationFirewallLog”
| where action_s == “Block”
 

実行結果を確認するとどのルールでBlockされたのかもわかります。

3.Azure Froot Doorのバックエンドプール側のクライアントIPはFront DoorのIPになります。

Froot Doorを使う場合ですが、バックエンドプール側のアクセスログに表示されるclientIP_sがFroot DoorのBackend poolのIPアドレスになります。

その為、バックエンドプール側(Virtual Machine等)でアクセス元IPを確認する場合は、x-forwarded-forを確認する必要があります。

また、マイクロソフト様のサイトにも記載がありますが、Froot Doorからのヘルスチェックアクセスが結構な数のアクセスが来るので、アクセスログが大量になる事にも注意が必要です。

【参考】Web Application Firewallの作成は下記に記載しています。

 https://www.tama-negi.com/2020/05/10/azure-web-application-firewall/ ‎