ウェブ ACL トラフィック情報のログ記録 - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced

ウェブ ACL トラフィック情報のログ記録

警告

AWS WAF Classic へのサポートは 2025 年 9 月 30 日に終了します。

注記

これは AWS WAF Classic ドキュメントです。2019 年 11 月より前に AWS WAF でルールやウェブ ACL などの AWS WAF リソースを作成し、それらをまだ最新バージョンに移行していない場合にのみ、このバージョンを使用する必要があります。Web ACL を移行するには、AWS WAF Classic リソースを AWS WAF に移行する を参照してください。

最新バージョンの AWS WAF については、AWS WAF」を参照してください。

注記

Amazon Security Lake を使用して AWS WAF Classic データを収集することはできません。

ログ記録を有効にして、ウェブ ACL で分析されるトラフィックに関する詳細情報を取得できます。このログの情報には、AWS リソースから AWS WAF Classic がリクエストを受信した時間、このリクエストの詳細と各リクエストが一致させるルールのアクションが含まれます。

開始するには、Amazon Kinesis Data Firehose をセットアップします。このプロセスの一環として、ログの保存先を選択します。次に、ログ記録を有効にするウェブ ACL を選択します。ログ記録を有効にすると、AWS WAF は Firehose を介して保存先にログを送信します。

Amazon Kinesis Data Firehose を作成し、保存されているログを確認する方法については、「What Is Amazon Data Firehose?」を参照してください。Kinesis Data Firehose の設定に必要な許可を理解するには、「Controlling Access with Amazon Kinesis Data Firehose」(Amazon Kinesis Data Firehose によるアクセスの制御) を参照してください。

ログ記録を正常に有効化するには、次の許可がある必要があります。

  • iam:CreateServiceLinkedRole

  • firehose:ListDeliveryStreams

  • waf:PutLoggingConfiguration

サービスにリンクされたロールおよび iam:CreateServiceLinkedRole 許可の詳細については、「AWS WAF Classic のサービスにリンクされたロールの使用」を参照してください。

ウェブ ACL でログ記録を有効にするには
  1. Amazon Kinesis Data Firehose を「aws-waf-logs-」で始まるプレフィックスを使用して作成します (例: aws-waf-logs-us-east-2-analytics)。PUT ソースを使用して、動作しているリージョンでデータ Firehose を作成します。Amazon CloudFront のログをキャプチャしている場合は、米国東部 (バージニア北部) に Firehose を作成します。詳細については、「Creating an Amazon Data Firehose Delivery Stream」を参照してください。

    重要

    ソースとして Kinesis stream を選択しないでください。

    1 つの AWS WAF Classic ログは、1 つの Firehose レコードに相当します。通常、1 秒あたり 10,000 件のリクエストを受信していて、完全なログを有効にする場合、Firehose には 1 秒あたり 10,000 件のレコード設定を行う必要があります。Firehose を正しく設定しないと、AWS WAF Classic はすべてのログを記録しません。詳細については、「Amazon Kinesis Data Firehose Quotas」(Amazon Kinesis Data Firehose のクォータ) を参照してください。

  2. AWS Management Console にサインインして AWS WAF コンソール (https://console.aws.amazon.com/wafv2/) を開きます。

    ナビゲーションペインに、[Switch to AWS WAF Classic] ( Classic に切り替える) が表示されたら、それを選択します。

  3. ナビゲーションペインで [Web ACLs] (ウェブ ACL) を選択します。

  4. ログ記録を有効にするウェブ ACL の名前を選択します。これにより、右ペインで、ウェブ ACL の詳細を含むページが開きます。

  5. [Logging] (ログ記録) タブで [Enable logging] (ログの有効化) を選択します。

  6. 最初のステップで作成した Kinesis Data Firehose を選択します。「aws-waf-logs-」ではじまる Firehose を選択する必要があります。

  7. (オプション) 特定のフィールドとその値がログに含まれることを希望しない場合には、このフィールドをマスキングします。マスキングするフィールドを選び、[Add] (追加) を選択します。必要に応じて手順を繰り返し、追加のフィールドをマスキングします。マスキングされたフィールドは、ログに REDACTED と表示されます。例えば、[cookie] フィールドをマスキングした場合、ログ内の [cookie] フィールドは REDACTED となります。

  8. [Enable logging] (ログの有効化) を選択します。

    注記

    ログを正常に有効化すると、AWS WAF Classic は、必要な許可を使用してサービスにリンクされたロールを作成し、Amazon Kinesis Data Firehose にログを書き込みます。詳細については、「AWS WAF Classic のサービスにリンクされたロールの使用」を参照してください。

ウェブ ACL でログ記録を無効にするには
  1. ナビゲーションペインで [Web ACLs] (ウェブ ACL) を選択します。

  2. ログ記録を無効にするウェブ ACL の名前を選択します。これにより、右ペインで、ウェブ ACL の詳細を含むページが開きます。

  3. [Logging] (ログ記録) タブで [Disable logging] (ログの無効化) を選択します。

  4. 確認ダイアログボックスで、[Disable logging] (ログの無効化) を選択します。

例 ログの例
{ "timestamp":1533689070589, "formatVersion":1, "webaclId":"385cb038-3a6f-4f2f-ac64-09ab912af590", "terminatingRuleId":"Default_Action", "terminatingRuleType":"REGULAR", "action":"ALLOW", "httpSourceName":"CF", "httpSourceId":"i-123", "ruleGroupList":[ { "ruleGroupId":"41f4eb08-4e1b-2985-92b5-e8abf434fad3", "terminatingRule":null, "nonTerminatingMatchingRules":[ {"action" : "COUNT", "ruleId" : "4659b169-2083-4a91-bbd4-08851a9aaf74"} ], "excludedRules": [ {"exclusionType" : "EXCLUDED_AS_COUNT", "ruleId" : "5432a230-0113-5b83-bbb2-89375c5bfa98"} ] } ], "rateBasedRuleList":[ { "rateBasedRuleId":"7c968ef6-32ec-4fee-96cc-51198e412e7f", "limitKey":"IP", "maxRateAllowed":100 }, { "rateBasedRuleId":"462b169-2083-4a93-bbd4-08851a9aaf30", "limitKey":"IP", "maxRateAllowed":100 } ], "nonTerminatingMatchingRules":[ {"action" : "COUNT", "ruleId" : "4659b181-2011-4a91-bbd4-08851a9aaf52"} ], "httpRequest":{ "clientIp":"192.10.23.23", "country":"US", "headers":[ { "name":"Host", "value":"127.0.0.1:1989" }, { "name":"User-Agent", "value":"curl/7.51.2" }, { "name":"Accept", "value":"*/*" } ], "uri":"REDACTED", "args":"usernam=abc", "httpVersion":"HTTP/1.1", "httpMethod":"GET", "requestId":"cloud front Request id" } }

以下ではこれらのログに示されている各項目について説明しています。

timestamp

タイムスタンプ (ミリ秒単位)。

formatVersion

ログの形式バージョン。

webaclId

ウェブ ACL の GUID。

terminatingRuleId

リクエストを終了したルールの ID。リクエストを終了したものがない場合、この値は Default_Action となります。

terminatingRuleType

リクエストを終了したルールのタイプ。可能な値は、RATE_BASED、REGULAR、GROUP です。

action

アクション。終了ルールの可能な値は、ALLOW および BLOCK です。COUNT は、終了ルールの有効な値ではありません。

terminatingRuleMatchDetails

リクエストに一致した終了ルールに関する詳細情報。終了ルールには、ウェブリクエストに対する検査プロセスを終了するアクションがあります。終了ルールに対して実行できるアクションは、ALLOW および BLOCK です。これは、SQL インジェクションおよびクロスサイトスクリプティング (XSS) 一致ルールステートメントに対してのみ設定されます。複数の対象を検査するすべてのルールステートメントと同様、AWS WAF は最初の一致にアクションを適用し、ウェブリクエストの検査を停止します。終了アクションを伴うウェブリクエストには、ログで報告された脅威に加えて、他の脅威が含まれている可能性があります。

httpSourceName

リクエストの送信元。有効な値: CF (ソースが Amazon CloudFront である場合)、APIGW (ソースが Amazon API Gateway である場合)、および ALB (ソースが Application Load Balancer である場合)。

httpSourceId

ソース ID。このフィールドには、関連する Amazon CloudFront ディストリビューションの ID、API Gateway の REST API、または Application Load Balancer の名前が表示されます。

ruleGroupList

このリクエストで動作したルールグループのリスト。前述のコード例では、1 つのみです。

ruleGroupId

ルールグループの ID ルールがリクエストをブロックした場合、ruleGroupID の ID は、terminatingRuleId の ID と同じです。

terminatingRule

リクエストを終了したルールグループ内のルール。これが Null 以外の値の場合、[ruleid] および [action] (アクション) も含まれます。この場合、アクションは常に BLOCK です。

nonTerminatingMatchingRules

リクエストに一致するルールグループ内のルールのリスト。これは常に COUNT ルール (一致する非終了ルール) です。

action (nonTerminatingMatchingRules group)

これは常に COUNT (一致する非終了ルール) です。

ruleId (nonTerminatingMatchingRules group)

リクエストに一致する非終了ルールグループ内のルールの ID。これが COUNT ルールです。

excludedRules

除外されているルールグループ内のルールのリスト。これらのルールのアクションは [COUNT] に設定されます。

exclusionType (excludedRules group)

除外されたルールにアクション COUNT があることを示すタイプ。

ruleId (excludedRules group)

除外されたルールグループ内のルールの ID。

rateBasedRuleList

このリクエストで動作したレートベースのルールのリスト。

rateBasedRuleId

このリクエストで動作したレートベースのルールの ID。これがリクエストを終了した場合、rateBasedRuleId の ID は、terminatingRuleId の ID と同じです。

limitKey

このフィールドは、リクエストが単一ソースから送信された可能性が高いためにレートモニタリングの対象となるかを AWS WAF が判断するために使用されます。可能性のある値は IP です。

maxRateAllowed

5 分間に許可される limitKey で指定されたフィールドに同じ値を持つ、リクエストの最大数。リクエストの数が maxRateAllowed を超え、このルールで指定されるほかの述語が一致した場合、AWS WAF はこのルールで指定されるアクションをトリガーします。

httpRequest

リクエストに関するメタデータです。

clientIp

リクエストを送信するクライアントの IP アドレス。

country

リクエストの送信国。AWS WAF が発信元の国を特定できない場合は、このフィールドを [-] に設定します。

headers

ヘッダーの一覧。

uri

リクエストの URI。上記のコードの例では、このフィールドがマスキングされた場合の値を示しています。

args

クエリ文字列。

httpVersion

HTTP のバージョン。

httpMethod

リクエストの HTTP メソッド。

requestId

リクエストの ID。