Azure Web アプリケーション ファイアウォールの監視とログ記録
Azure Front Door の Azure Web Application Firewall には、Web アプリケーション ファイアウォール (WAF) のパフォーマンスと実行するアクションを把握するのに役立つ豊富なログとテレメトリが用意されています。
Azure Front Door の WAF ログは、Azure Monitor と統合されています。 Azure Monitor により、WAF のアラートやログなどの診断情報を追跡できます。 Azure Front Door リソース内での WAF の監視は、Azure portal の [診断] タブから、コードとしてのインフラストラクチャ手法によって、または Azure Monitor を直接使用して構成できます。
メトリック
Azure Front Door では、WAF の動作を把握するのに役立つメトリックが自動的に記録されます。
WAF のメトリックにアクセスするには:
- Azure portal にサインインし、Azure Front Door プロファイルに移動します。
- 左端のペインの [監視] で、[メトリック] タブを選択します。
- [Web Application Firewall 要求数] メトリックを追加して、WAF ルールに一致する要求の数を追跡します。
アクションの種類とルール名に基づいて、カスタム フィルターを作成できます。 メトリックには、Log
を除くすべてのアクションとともに要求が含まれます。
JavaScript チャレンジ (プレビュー) メトリック
JavaScript チャレンジ WAF メトリックにアクセスするには、次のようにします。
- Web Application Firewall の
JS Challenge Request Count
メトリックを追加して、JavaScript チャレンジ WAF ルールに一致する要求の数を追跡します。
このメトリックの一部として、次のフィルターが提供されます。
- PolicyName: これは WAF ポリシー名です
- ルール: これには、任意のカスタム ルールまたはボット ルールを指定できます
- アクション: JS チャレンジ アクションには指定できる以下の 4 つの値があります
- Issued (発行): JS チャレンジが初めて呼び出されます
- Passed (合格): JS チャレンジの計算に成功し、応答を受け取りました
- Valid (有効): JS チャレンジの有効性 Cookie が存在しました
- Blocked (ブロック): JS チャレンジの計算に失敗しました
ログと診断
Azure Front Door WAF は、要求ごと、および検出された脅威ごとに詳細なレポートを提供します。 ログ記録は、Azure Monitor のログを使用して Azure の診断ログおよびアラートと統合されます。
既定では、ログは有効になっていません。 ログを明示的に有効にする必要があります。 Azure portal で、[診断設定] タブを使用してログを構成できます。
ログ記録が有効で WAF ルールがトリガーされた場合は、WAF ポリシーの動作を分析およびデバッグするために、一致するパターンがプレーン テキストでログに記録されます。 除外を使用すると、ルールを微調整し、ログから除外するデータを除外できます。 詳細については、「Front Door の除外リストを使用する Web Application Firewall (WAF)」を参照してください。
次の 3 種類の Azure Front Door ログを有効にすることができます。
- WAF ログ
- アクセス ログ
- 正常性プローブ ログ
アクティビティ ログは既定で有効になっており、Azure Front Door プロファイルへの構成変更など、Azure リソースに対して実行される操作を可視化します。
WAF ログ
ログ FrontDoorWebApplicationFirewallLog
には、WAF ルールに一致する要求が含まれます。
ログ FrontdoorWebApplicationFirewallLog
には、WAF ルールに一致する要求が含まれます。
次の表に、要求ごとにログに記録される値を示します。
プロパティ | 説明 |
---|---|
アクション | 要求に対して実行されるアクション。 ログには、すべてのアクションとともに要求が含まれます。 アクションは次のとおりです。
|
ClientIP | 要求を行ったクライアントの IP アドレス。 要求に X-Forwarded-For ヘッダーがあった場合、代わりにヘッダー フィールドからクライアント IP が取得されます。 |
ClientPort | 要求を行ったクライアントの IP アドレス。 |
詳細 | 検出された脅威など、要求に関する追加の詳細。 matchVariableName : ヘッダー名など、一致する要求の HTTP パラメーター名 (最大 100 文字)。matchVariableValue : 一致をトリガーした値 (最大 100 文字)。 |
Host | 要求の Host ヘッダー。 |
ポリシー | 要求を処理した WAF ポリシーの名前。 |
PolicyMode | WAF ポリシーの操作モード。 設定可能な値は Prevention および Detection です。 |
RequestUri | 要求の完全 URI。 |
RuleName | 要求が一致した WAF 規則の名前。 |
SocketIP | WAF によって検出されたソース IP アドレス。 この IP アドレスは TCP セッションに基づいており、いずれの要求ヘッダーも考慮されません。 |
TrackingReference | Azure Front Door によって提供される要求を示す一意の参照文字列。 この値は、X-Azure-Ref 応答ヘッダーでクライアントに送信されます。 このフィールドは、ログ内の特定の要求を検索するときに使用します。 |
次のクエリの例は、Azure Front Door WAF によってブロックされた要求を示しています。
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorWebApplicationFirewallLog"
| where action_s == "Block"
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"
要求がブロックされた理由など、ログ エントリの例を次のスニペットに示します。
{
"time": "2020-06-09T22:32:17.8376810Z",
"category": "FrontdoorWebApplicationFirewallLog",
"operationName": "Microsoft.Cdn/Profiles/Write",
"properties": {
"clientIP": "xxx.xxx.xxx.xxx",
"clientPort": "52097",
"socketIP": "xxx.xxx.xxx.xxx",
"requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
"ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
"policy": "WafDemoCustomPolicy",
"action": "Block",
"host": "wafdemofrontdoorwebapp.azurefd.net",
"trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
"policyMode": "prevention",
"details": {
"matches": [
{
"matchVariableName": "QueryParamValue:q",
"matchVariableValue": "' or 1=1"
}
]
}
}
}
{
"time": "2020-06-09T22:32:17.8376810Z",
"category": "FrontdoorWebApplicationFirewallLog",
"operationName": "Microsoft.Network/FrontDoorWebApplicationFirewallLog/Write",
"properties": {
"clientIP": "xxx.xxx.xxx.xxx",
"clientPort": "52097",
"socketIP": "xxx.xxx.xxx.xxx",
"requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
"ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
"policy": "WafDemoCustomPolicy",
"action": "Block",
"host": "wafdemofrontdoorwebapp.azurefd.net",
"trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
"policyMode": "prevention",
"details": {
"matches": [
{
"matchVariableName": "QueryParamValue:q",
"matchVariableValue": "' or 1=1"
}
]
}
}
}
他の Azure Front Door ログの詳細については、「Azure Front Door でのメトリックとログの監視」を参照してください。
次のステップ
Azure Front Door の詳細を確認します。