Akamai WAF ログを収集する
以下でサポートされています。
Google SecOpsSIEM
概要
このパーサーは、Akamai ウェブ アプリケーション ファイアウォール(WAF)ログを処理し、syslog 形式と CEF 形式の両方をサポートしています。IP アドレス、URL、HTTP メソッド、レスポンス コード、ユーザー エージェント、セキュリティ ルール情報などのフィールドを抽出し、UDM にマッピングして一貫した表現を実現します。また、パーサーは attackData
や clientReputation
などの特定の Akamai フィールドも処理し、必要なデータ変換を実行して UDM 出力を拡充します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- AWS IAM と S3 に対する特権アクセス権があることを確認します。
- Akamai への特権アクセス権があることを確認します。
Amazon S3 バケットを構成する
- バケットを作成するのユーザーガイドに沿って、Amazon S3 バケットを作成します。
- バケットの名前とリージョンを保存して、後で参照できるようにします。
- IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
- 作成したユーザーを選択します。
- [セキュリティ認証情報] タブを選択します。
- [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
- [ユースケース] として [サードパーティ サービス] を選択します。
- [次へ] をクリックします。
- 省略可: 説明タグを追加します。
- [Create access key] をクリックします。
- [Download .csv file] をクリックします。(アクセスキーとシークレット アクセスキーを保存して、後で参照できるようにします)。
- [完了] をクリックします。
- [権限] タブを選択します。
- [権限ポリシー] セクションで [権限を追加] をクリックします。
- [権限を追加] を選択します。
- [Attach policies directly] を選択します。
- AmazonS3FullAccess ポリシーを検索します。
- ポリシーを選択します。
- [次へ] をクリックします。
- [権限を追加] をクリックします。
Amazon S3 にログを送信するように Akamai WAF を構成する
- Akamai Control Center にログインします。
- [セキュリティ] セクションに移動します。
- [ログ] を選択します。
新しいログ配信を構成します。
- ログソース: WAF 構成を選択します。
- 配信先: [Amazon S3] を選択します。
- S3 バケット: 作成した S3 バケットの名前を指定します。
- リージョン: S3 バケットが配置されている AWS リージョンを選択します。
- アクセスキー ID とシークレット アクセスキー: 生成した認証情報を指定します。
- ログ形式: 関連するログ形式(JSON など)を選択します。
- 配信頻度: ログ配信に適切な頻度を選択します(例: 5 分ごと)。
ログ配信を確認する:
- LDS を構成したら、S3 バケットで受信したログファイルをモニタリングします。
Akamai WAF ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Akamai WAF ログ)。
- [ソースタイプ] として [Amazon S3] を選択します。
- [Log type] で [Akamai WAF] を選択します。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- リージョン: Amazon S3 バケットが配置されているリージョン。
- S3 URI: バケットの URI。
s3:/BUCKET_NAME
次のように置き換えます。BUCKET_NAME
: バケットの名前。
- URI is a: ログストリームの構成に応じて URI TYPE を選択します。[単一ファイル] | [ディレクトリ] | [サブディレクトリを含むディレクトリ]。
- ソース削除オプション: 必要に応じて削除オプションを選択します。
- Access Key ID: s3 バケットにアクセスできるユーザー アクセスキー。
- シークレット アクセスキー: s3 バケットにアクセスできるユーザーのシークレットの鍵。
- アセットの名前空間: アセットの名前空間。
- 取り込みラベル: このフィードのイベントに適用されるラベル。
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
ログフィールド(昇順) | UDM マッピング | ロジック |
---|---|---|
attackData.clientIP |
principal.ip 、principal.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.action 、security_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」です。 |
cliIP 、cli_ip 、principal_ip |
principal.ip 、principal.asset.ip |
クライアント IP アドレス。ログ形式に応じて cliIP 、cli_ip 、または principal_ip から抽出されます。 |
cp |
additional.fields |
CP コード。cp フィールドから抽出されます。キー「cp」で additional.fields に追加されました。 |
eventId |
metadata.product_log_id |
イベント ID。eventId フィールドから抽出されます。 |
eventTime 、log_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.hostname 、target.asset.hostname |
ホスト名。ログ形式に応じて httpMessage.host または reqHost から抽出されます。 |
httpMessage.method |
network.http.method |
HTTP メソッド。ログ形式に応じて httpMessage.method 、network_http_method 、または reqMethod から抽出されます。大文字に変換されます。 |
httpMessage.path |
target.url |
リクエストパス。ログ形式に応じて httpMessage.path 、target_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.requestHeaders 、AkamaiSiemRequestHeaders |
additional.fields |
リクエスト ヘッダー。ログ形式に応じて httpMessage.requestHeaders または AkamaiSiemRequestHeaders から抽出されます。additional.fields にキー「AkamaiSiemRequestHeaders」を追加しました。 |
httpMessage.responseHeaders 、AkamaiSiemResponseHeaders |
additional.fields |
レスポンス ヘッダー。ログ形式に応じて httpMessage.responseHeaders または AkamaiSiemResponseHeaders から抽出されます。キー「AkamaiSiemResponseHeaders」で additional.fields に追加されました。 |
httpMessage.status 、AkamaiSiemResponseStatus 、network_http_response_code 、statusCode |
network.http.response_code |
HTTP レスポンス コード。ログ形式に応じて httpMessage.status 、AkamaiSiemResponseStatus 、network_http_response_code 、statusCode から抽出されます。 |
httpMessage.tls 、AkamaiSiemTLSVersion 、tlsVersion |
network.tls.version |
TLS バージョン。ログ形式に応じて httpMessage.tls 、AkamaiSiemTLSVersion 、または tlsVersion から抽出されます。 |
httpMessage.useragent 、network_http_user_agent 、UA 、useragent |
network.http.user_agent |
ユーザー エージェント。ログ形式に応じて httpMessage.useragent 、network_http_user_agent 、UA 、useragent から抽出されます。 |
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.hostname 、target.asset.hostname |
ホストをリクエストします。reqHost から抽出されました。 |
reqId |
metadata.product_log_id 、network.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_name 、security_result.about.resource.attribute.labels |
セキュリティ ルール。securityRules から抽出しました。最初の部分は rule_name にマッピングされ、残りの部分は「non_deny_rules」と「deny_rule_format」のキーを持つラベルとして追加されます。 |
statusCode |
network.http.response_code |
ステータス コード。statusCode から抽出されました。 |
state |
principal.location.state 、target.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_version 、principal.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 にマッピングされました。