收集 Akamai WAF 日志

支持的平台:

概览

此解析器会处理 Akamai Web 应用防火墙 (WAF) 日志,同时支持 syslog 和 CEF 格式。它会提取 IP 地址、网址、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. 点击创建访问密钥
  11. 点击下载 .csv 文件。(请保存访问密钥私有访问密钥,以备日后参考)。
  12. 点击完成
  13. 选择权限标签页。
  14. 权限政策部分中,点击添加权限
  15. 选择添加权限
  16. 选择直接附加政策
  17. 搜索 AmazonS3FullAccess 政策。
  18. 选择相应政策。
  19. 点击下一步
  20. 点击添加权限

配置 Akamai WAF 以将日志发送到 Amazon S3

  1. 登录 Akamai 控制中心。
  2. 前往安全部分。
  3. 选择日志
  4. 配置新的日志传送:

    • 日志来源:选择您的 WAF 配置。
    • 传送目标:选择 Amazon S3
    • S3 存储分区:指定您创建的 S3 存储分区的名称。
    • 区域:选择您的 S3 存储分区所在的 AWS 区域。
    • 访问密钥 ID 和 Secret 访问密钥:提供您生成的凭据。
    • 日志格式:选择相关的日志格式(例如 JSON)。
    • 提交频率:选择适当的日志提交频率(例如,每 5 分钟)。
  5. 验证日志传送:

    • 配置 LDS 后,监控 S3 存储分区中是否有传入的日志文件。

在 Google SecOps 中配置 Feed 以提取 Akamai WAF 日志

  1. 依次前往 SIEM 设置 > Feed
  2. 点击新增
  3. Feed 名称字段中,输入 Feed 的名称(例如 Akamai WAF 日志)。
  4. 选择 Amazon S3 作为来源类型
  5. 选择 Akamai WAF 作为日志类型
  6. 点击下一步
  7. 为以下输入参数指定值:

    • 区域:Amazon S3 存储分区所在的区域。
    • S3 URI:存储分区 URI。s3:/BUCKET_NAME 替换以下内容:
      • BUCKET_NAME:存储分区的名称。
    • URI 是:根据日志流配置选择 URI 类型:单个文件 | 目录 | 包含子目录的目录
    • 来源删除选项:根据您的偏好选择删除选项。
    • 访问密钥 ID:有权访问 S3 存储分区的用户访问密钥。
    • 私有访问密钥:有权访问 S3 存储分区的用户私钥。
    • 资源命名空间资源命名空间
    • 提取标签:要应用于此 Feed 中的事件的标签。
  8. 点击下一步

  9. 最终确定界面中查看新的 Feed 配置,然后点击提交

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 字段中提取。已添加到 security_result.detection_fields,键为“RuleData”。
attackData.ruleMessages security_result.threat_name 与触发的规则关联的消息。从 akamai_siem 日志中的 attackData.ruleMessages 字段中提取。
attackData.ruleSelectors security_result.detection_fields 与触发的规则关联的选择器。从 akamai_siem 日志中的 attackData.ruleSelectors 字段中提取。已添加到 security_result.detection_fields,键为“RuleSelector”。
attackData.ruleTags security_result.category_details 与触发的规则关联的代码。从 akamai_siem 日志中的 attackData.ruleTags 字段中提取。
attackData.ruleVersions security_result.detection_fields 触发的规则的版本。从 akamai_siem 日志中的 attackData.ruleVersions 字段中提取。已添加到 security_result.detection_fields,键为“Rule Version”。
clientReputation principal.labels 客户声誉信息。从 akamai_siem 日志中的 clientReputation 字段中提取。已作为标签添加到主账号,键为“reputation”。
cliIPcli_ipprincipal_ip principal.ipprincipal.asset.ip 客户端 IP 地址。从 cliIPcli_ipprincipal_ip 中提取,具体取决于日志格式。
cp additional.fields CP 代码。从 cp 字段中提取。已添加到 additional.fields,键为“cp”。
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 中提取。已添加到 additional.fields,键为“eventTypeId”。
eventType.eventTypeName additional.fields 事件类型名称。从 eventType.eventTypeName 中提取。已添加到 additional.fields,键为“eventTypeName”。
format 不适用 由解析器用于确定日志格式。
geo.asn principal.location.name 自治系统编号 (ASN)。从 geo.asnAkamaiSiemASN 中提取,具体取决于日志格式。值带有“ASN”前缀。
geo.city principal.location.city 城市。从 geo.cityAkamaiSiemCity 中提取,具体取决于日志格式。
geo.country principal.location.country_or_region 国家/地区。从 geo.countryAkamaiSiemContinent 中提取,具体取决于日志格式。
httpMessage.bytes network.sent_bytes HTTP 消息中发送的字节数。从 httpMessage.bytes 中提取。
httpMessage.host target.hostnametarget.asset.hostname 主机名。从 httpMessage.hostreqHost 中提取,具体取决于日志格式。
httpMessage.method network.http.method HTTP 方法。从 httpMessage.methodnetwork_http_methodreqMethod 中提取,具体取决于日志格式。已转换为大写。
httpMessage.path target.url 请求路径。从 httpMessage.pathtarget_urlreqPath 中提取,具体取决于日志格式。如果存在 httpMessage.query,则会附加到路径中,并使用“?”分隔符。
httpMessage.port target.port 端口。从 httpMessage.portreqPort 中提取,具体取决于日志格式。
httpMessage.protocol 不适用 供解析器确定协议。
httpMessage.query 不适用 在解析器逻辑中用于附加到 httpMessage.path(如果存在)。
httpMessage.requestId network.session_id 请求 ID。从 httpMessage.requestIdreqId 中提取,具体取决于日志格式。
httpMessage.requestHeadersAkamaiSiemRequestHeaders additional.fields 请求标头。从 httpMessage.requestHeadersAkamaiSiemRequestHeaders 中提取,具体取决于日志格式。已添加到 additional.fields,键为“AkamaiSiemRequestHeaders”。
httpMessage.responseHeadersAkamaiSiemResponseHeaders additional.fields 响应标头。从 httpMessage.responseHeadersAkamaiSiemResponseHeaders 中提取,具体取决于日志格式。已添加到 additional.fields,键为“AkamaiSiemResponseHeaders”。
httpMessage.statusAkamaiSiemResponseStatusnetwork_http_response_codestatusCode network.http.response_code HTTP 响应代码。从 httpMessage.statusAkamaiSiemResponseStatusnetwork_http_response_codestatusCode 中提取,具体取决于日志格式。
httpMessage.tlsAkamaiSiemTLSVersiontlsVersion network.tls.version TLS 版本。从 httpMessage.tlsAkamaiSiemTLSVersiontlsVersion 中提取,具体取决于日志格式。
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 引荐来源网址。从 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 将“alert”操作设置为“MEDIUM”“deny”操作设置为“CRITICAL”,将其他操作设置为“HIGH”。
不适用 event.idm.read_only_udm.metadata.event_type 对于大多数日志格式,请将其设置为“NETWORK_HTTP”;对于包含 eventIdeventData 字段的事件,请将其设置为“GENERIC_EVENT”;对于包含 cli_ipp_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”。
  • 将“字节数”映射到“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。
  • 将城市映射到 principal.location.city。
  • 将国家/地区映射到 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

  • 增强功能-
  • 将 proto 映射到 security_result.summary。
  • 将 securityRules 映射到 security_result.rule_name。
  • 将城市映射到 principal.location.city。
  • 将国家/地区映射到 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

  • bugfix-修复了使用所有匹配模式解析数据时失败的问题。
  • 添加了新字段的映射。
  • 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。

需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。