Akamai WAF ログを収集する

以下でサポートされています。

概要

このパーサーは、Akamai ウェブ アプリケーション ファイアウォール(WAF)ログを処理し、syslog 形式と CEF 形式の両方をサポートしています。IP アドレス、URL、HTTP メソッド、レスポンス コード、ユーザー エージェント、セキュリティ ルール情報などのフィールドを抽出し、UDM にマッピングして一貫した表現を実現します。また、パーサーは attackDataclientReputation などの特定の Akamai フィールドも処理し、必要なデータ変換を実行して UDM 出力を拡充します。

始める前に

  • Google SecOps インスタンスがあることを確認します。
  • AWS IAM と S3 に対する特権アクセス権があることを確認します。
  • Akamai への特権アクセス権があることを確認します。

Amazon S3 バケットを構成する

  1. バケットを作成するのユーザーガイドに沿って、Amazon S3 バケットを作成します。
  2. バケットの名前リージョンを保存して、後で参照できるようにします。
  3. IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
  4. 作成したユーザーを選択します。
  5. [セキュリティ認証情報] タブを選択します。
  6. [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
  7. [ユースケース] として [サードパーティ サービス] を選択します。
  8. [次へ] をクリックします。
  9. 省略可: 説明タグを追加します。
  10. [Create access key] をクリックします。
  11. [Download .csv file] をクリックします。(アクセスキーシークレット アクセスキーを保存して、後で参照できるようにします)。
  12. [完了] をクリックします。
  13. [権限] タブを選択します。
  14. [権限ポリシー] セクションで [権限を追加] をクリックします。
  15. [権限を追加] を選択します。
  16. [Attach policies directly] を選択します。
  17. AmazonS3FullAccess ポリシーを検索します。
  18. ポリシーを選択します。
  19. [次へ] をクリックします。
  20. [権限を追加] をクリックします。

Amazon S3 にログを送信するように Akamai WAF を構成する

  1. Akamai Control Center にログインします。
  2. [セキュリティ] セクションに移動します。
  3. [ログ] を選択します。
  4. 新しいログ配信を構成します。

    • ログソース: WAF 構成を選択します。
    • 配信先: [Amazon S3] を選択します。
    • S3 バケット: 作成した S3 バケットの名前を指定します。
    • リージョン: S3 バケットが配置されている AWS リージョンを選択します。
    • アクセスキー ID とシークレット アクセスキー: 生成した認証情報を指定します。
    • ログ形式: 関連するログ形式(JSON など)を選択します。
    • 配信頻度: ログ配信に適切な頻度を選択します(例: 5 分ごと)。
  5. ログ配信を確認する:

    • LDS を構成したら、S3 バケットで受信したログファイルをモニタリングします。

Akamai WAF ログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: Akamai WAF ログ)。
  4. [ソースタイプ] として [Amazon S3] を選択します。
  5. [Log type] で [Akamai WAF] を選択します。
  6. [次へ] をクリックします。
  7. 次の入力パラメータの値を指定します。

    • リージョン: Amazon S3 バケットが配置されているリージョン。
    • S3 URI: バケットの URI。s3:/BUCKET_NAME 次のように置き換えます。
      • BUCKET_NAME: バケットの名前。
    • URI is a: ログストリームの構成に応じて URI TYPE を選択します。[単一ファイル] | [ディレクトリ] | [サブディレクトリを含むディレクトリ]。
    • ソース削除オプション: 必要に応じて削除オプションを選択します。
    • Access Key ID: s3 バケットにアクセスできるユーザー アクセスキー。
    • シークレット アクセスキー: s3 バケットにアクセスできるユーザーのシークレットの鍵。
    • アセットの名前空間: アセットの名前空間
    • 取り込みラベル: このフィードのイベントに適用されるラベル。
  8. [次へ] をクリックします。

  9. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

UDM マッピング テーブル

ログフィールド(昇順) UDM マッピング ロジック
attackData.clientIP principal.ipprincipal.asset.ip リクエストを開始したクライアントの IP アドレス。akamai_siem ログの attackData.clientIP フィールドから抽出されます。
attackData.configId metadata.product_log_id セキュリティ構成 ID。akamai_siem ログの attackData.configId フィールドから抽出されます。また、security_result オブジェクトの detection_field として追加されました。
attackData.policyId なし パーサー ロジックで使用され、security_result.summary に値「PolicyId:[value]」を入力します。
attackData.ruleActions security_result.actionsecurity_result.action_details トリガーされたルールに基づいて実行されるアクション。akamai_siem ログの attackData.ruleActions フィールドから抽出されます。「deny」は BLOCK にマッピングされ、他の値(「alert」、「monitor」、「allow」、「tarpit」)は ALLOW にマッピングされます。元の値も action_details に保存されます。
attackData.ruleData security_result.detection_fields トリガーされたルールに関連付けられたデータ。akamai_siem ログの attackData.ruleData フィールドから抽出されます。キー「RuleData」で security_result.detection_fields に追加されました。
attackData.ruleMessages security_result.threat_name トリガーされたルールに関連付けられているメッセージ。akamai_siem ログの attackData.ruleMessages フィールドから抽出されます。
attackData.ruleSelectors security_result.detection_fields トリガーされたルールに関連付けられているセレクタ。akamai_siem ログの attackData.ruleSelectors フィールドから抽出されます。キー「RuleSelector」で security_result.detection_fields に追加しました。
attackData.ruleTags security_result.category_details トリガーされたルールに関連付けられたタグ。akamai_siem ログの attackData.ruleTags フィールドから抽出されます。
attackData.ruleVersions security_result.detection_fields トリガーされたルールのバージョン。akamai_siem ログの attackData.ruleVersions フィールドから抽出されます。キー「Rule Version」で security_result.detection_fields に追加されました。
clientReputation principal.labels クライアントの評判情報。akamai_siem ログの clientReputation フィールドから抽出されます。プリンシパルにラベルとして追加され、キーは「reputation」です。
cliIPcli_ipprincipal_ip principal.ipprincipal.asset.ip クライアント IP アドレス。ログ形式に応じて cliIPcli_ip、または principal_ip から抽出されます。
cp additional.fields CP コード。cp フィールドから抽出されます。キー「cp」で additional.fields に追加されました。
eventId metadata.product_log_id イベント ID。eventId フィールドから抽出されます。
eventTimelog_date metadata.event_timestamp イベントのタイムスタンプ。ログ形式に応じて、eventTime から抽出または log_date から解析されます。
eventType.eventDefinition.eventDefinitionId target.resource.product_object_id イベント定義 ID。eventType.eventDefinition.eventDefinitionId から抽出されました。
eventType.eventDefinition.eventDescription metadata.description イベントの説明。eventType.eventDefinition.eventDescription から抽出されました。
eventType.eventDefinition.eventName metadata.product_event_type イベント名。eventType.eventDefinition.eventName から抽出されました。
eventType.eventTypeId additional.fields イベントタイプ ID。eventType.eventTypeId から抽出しました。キー「eventTypeId」で additional.fields に追加されました。
eventType.eventTypeName additional.fields イベントタイプの名前。eventType.eventTypeName から抽出しました。キー「eventTypeName」で additional.fields に追加されました。
format なし パーサーがログ形式を決定するために使用します。
geo.asn principal.location.name 自律システム番号(ASN)。ログ形式に応じて geo.asn または AkamaiSiemASN から抽出されます。値の先頭には「ASN」が付いています。
geo.city principal.location.city 市区町村。ログ形式に応じて geo.city または AkamaiSiemCity から抽出されます。
geo.country principal.location.country_or_region 国。ログ形式に応じて geo.country または AkamaiSiemContinent から抽出されます。
httpMessage.bytes network.sent_bytes HTTP メッセージで送信されたバイト数。httpMessage.bytes から抽出されました。
httpMessage.host target.hostnametarget.asset.hostname ホスト名。ログ形式に応じて httpMessage.host または reqHost から抽出されます。
httpMessage.method network.http.method HTTP メソッド。ログ形式に応じて httpMessage.methodnetwork_http_method、または reqMethod から抽出されます。大文字に変換されます。
httpMessage.path target.url リクエストパス。ログ形式に応じて httpMessage.pathtarget_url、または reqPath から抽出されます。httpMessage.query が存在する場合は、パスに「?」区切り文字で追加されます。
httpMessage.port target.port ポート。ログ形式に応じて httpMessage.port または reqPort から抽出されます。
httpMessage.protocol なし パーサーがプロトコルを決定するために使用します。
httpMessage.query なし パーサー ロジックで使用され、httpMessage.path に追加されます(存在する場合)。
httpMessage.requestId network.session_id リクエスト ID。ログ形式に応じて httpMessage.requestId または reqId から抽出されます。
httpMessage.requestHeadersAkamaiSiemRequestHeaders additional.fields リクエスト ヘッダー。ログ形式に応じて httpMessage.requestHeaders または AkamaiSiemRequestHeaders から抽出されます。additional.fields にキー「AkamaiSiemRequestHeaders」を追加しました。
httpMessage.responseHeadersAkamaiSiemResponseHeaders additional.fields レスポンス ヘッダー。ログ形式に応じて httpMessage.responseHeaders または AkamaiSiemResponseHeaders から抽出されます。キー「AkamaiSiemResponseHeaders」で additional.fields に追加されました。
httpMessage.statusAkamaiSiemResponseStatusnetwork_http_response_codestatusCode network.http.response_code HTTP レスポンス コード。ログ形式に応じて httpMessage.statusAkamaiSiemResponseStatusnetwork_http_response_codestatusCode から抽出されます。
httpMessage.tlsAkamaiSiemTLSVersiontlsVersion network.tls.version TLS バージョン。ログ形式に応じて httpMessage.tlsAkamaiSiemTLSVersion、または tlsVersion から抽出されます。
httpMessage.useragentnetwork_http_user_agentUAuseragent network.http.user_agent ユーザー エージェント。ログ形式に応じて httpMessage.useragentnetwork_http_user_agentUAuseragent から抽出されます。
log_description metadata.description ログの説明。log_description から抽出されました。
log_rule security_result.rule_name ログルール。log_rule から抽出されました。
message なし 未加工のログ メッセージ。パーサーがさまざまな抽出に使用します。
network_http_referral_url network.http.referral_url HTTP リファラー URL。network_http_referral_url から抽出されました。
proto なし パーサー ロジックで使用され、attackData.policyId が存在しない場合の security_result.summary の入力に使用されます。
reqHost target.hostnametarget.asset.hostname ホストをリクエストします。reqHost から抽出されました。
reqId metadata.product_log_idnetwork.session_id リクエスト ID。reqId から抽出されました。
reqMethod network.http.method リクエスト メソッド。reqMethod から抽出されました。
reqPath target.url リクエストパス。reqPath から抽出されました。
reqPort target.port リクエスト ポート。reqPort から抽出されました。
rspContentType target.file.mime_type レスポンスのコンテンツ タイプ。rspContentType から抽出されました。
securityRules security_result.rule_namesecurity_result.about.resource.attribute.labels セキュリティ ルール。securityRules から抽出しました。最初の部分は rule_name にマッピングされ、残りの部分は「non_deny_rules」と「deny_rule_format」のキーを持つラベルとして追加されます。
statusCode network.http.response_code ステータス コード。statusCode から抽出されました。
state principal.location.statetarget.user.personal_address.state 都道府県。state から抽出されました。
tlsVersion network.tls.version TLS バージョン。tlsVersion から抽出されました。
type metadata.product_event_type イベントの種類。type から抽出されました。
UA network.http.user_agent ユーザー エージェント。UA から抽出されました。
version metadata.product_versionprincipal.asset.software.version バージョン。version から抽出されました。
なし metadata.event_timestamp イベント タイムスタンプは、akamai_lds ログの _ts フィールド、akamai_siem ログの httpMessage.start フィールド、または他の形式の log_date フィールドから取得されます。
なし metadata.vendor_name 「Akamai」にハードコードされています。
なし metadata.product_name 「Kona」にハードコードされました。
なし metadata.log_type 「AKAMAI_WAF」にハードコードされています。
なし network.application_protocol akamai_siem ログと akamai_lds ログの場合は「HTTP」、その他の形式の場合は「DNS」に設定します。
なし security_result.severity 「アラート」アクションの場合は MEDIUM、拒否アクションの場合は CRITICAL、その他のアクションの場合は HIGH に設定します。
なし event.idm.read_only_udm.metadata.event_type ほとんどのログ形式の場合は「NETWORK_HTTP」、eventId フィールドまたは eventData フィールドを含むイベントの場合は「GENERIC_EVENT」、cli_ip フィールドまたは p_ip フィールドを含むが reqHost フィールドを含まないイベントの場合は「STATUS_UPDATE」に設定します。

変更点

2024-05-21

  • 強化
  • 「rules.data」を「security_result.detection_fields」にマッピングしました。
  • 「rules.action」、「rules.selector」、「rules.version」を「security_result.action_details」にマッピングしました。
  • 「rules.id」を「security_result.rule_id」にマッピングしました。
  • 「rules.tag」を「security_result.category_details」にマッピングしました。
  • 「rules.message」を「security_result.threat_name」にマッピングしました。

2024-03-01

  • 強化
  • 「attackData.configId」を「metadata.product_log_id」と「security_result.detection_fields」にマッピングしました。

2023-10-27

  • 強化
  • 「rule.id」を「security_result.rule_id」にマッピングしました。
  • 「httpMessage.host」が存在しない場合、「metadata.event_type」で設定された値を「NETWORK_HTTP」から「GENERIC_EVENT」に変更しました。
  • 「attackData.rules」が配列の場合に「attackData」を解析するサポートを追加しました。

2023-04-24

  • 強化
  • CEF 形式で取り込まれた解析済みログ。

2023-04-04

  • 強化
  • 「reqHost」を「target.hostname」にマッピングしました。
  • 「reqPort」を「target.port」にマッピングしました。
  • 「reqPath」を「target.url」にマッピングしました。
  • 「reqId」を「network.session_id」にマッピングしました。
  • 「statusCode」を「network.http.response_code」にマッピングしました。
  • 「reqMethod」を「network.http.method」にマッピングしました。
  • 「UA」を「network.http.user_agent」にマッピングしました。
  • 「bytes」を「network.sent_bytes」にマッピングしました。
  • 「reqMethod」を「network.http.method」にマッピングしました。
  • 失敗したログを syslog 形式で解析しました。
  • 適切な解析のために「attackData.rules」の条件チェックを追加しました。
  • 可能な限り「metadata.event_type」を「STATUS_UPDATE」から「NETWORK_HTTP」に変更しました。

2022-08-12

  • 強化
  • 「security_policy_id」を security_result.rule_name にマッピングしました。
  • 「non_deny_rules」を security_result.about.resource.attribute.labels にマッピングしました。
  • 「deny_rule_format」を security_result.about.resource.attribute.labels にマッピングしました。

2022-11-07

  • 強化
  • データでも ["-"] を確認するように SecurityRules を更新しました。

2022-06-14

  • 強化
  • security_rules を security_result.rule_name にマッピングしました。
  • city を principal.location.city にマッピングしました。
  • country を principal.location.country_or_region にマッピングしました。
  • cli_ip を principal.ip にマッピングしました。
  • 都道府県を target.user.personal_address.state にマッピングしました。
  • バージョンを metadata.product_version にマッピング。
  • useragent を network.http.user_agent にマッピングしました。

2022-06-14

  • Enhancement-
  • proto を security_result.summary にマッピングしました。
  • securityRules を security_result.rule_name にマッピングしました。
  • city を principal.location.city にマッピングしました。
  • country を principal.location.country_or_region にマッピングしました。
  • cliIP を principal.ip にマッピングしました。
  • cp を event.idm.read_only_udm.additional.fields にマッピングしました。
  • reqId を metadata.product_log_id にマッピングしました。
  • rspContentType を target.file.mime_type にマッピングしました。
  • 都道府県を target.user.personal_address.state にマッピングしました。
  • バージョンを principal.asset.software.version にマッピングしました。

2022-03-23

  • バグ修正 - すべての一致パターンでデータの解析に失敗する問題を修正。
  • 新しいフィールドのマッピングを追加しました。
  • eventId は metadata.product_log_id にマッピングされます。
  • eventDefinitionId が target.resource.product_object_id にマッピングされました。
  • eventDescription は metadata.description にマッピングされます。
  • eventName は metadata.product_event_type にマッピングされます。
  • eventTypeName が additional.fields にマッピングされました。
  • eventTypeId が additional.fields にマッピングされました。
  • eventData が additional.fields にマッピングされました。