收集 Akamai WAF 日志

解析器版本:32.0

支持的平台:

本文档介绍了如何使用 Akamai CEF 连接器和 Bindplane 将 Akamai WAF 日志注入到 Google Security Operations。Akamai WAF 是一款基于云的 Web 应用防火墙,可保护 Web 应用和 API 免受 SQL 注入、跨站脚本攻击 (XSS) 和 DDoS 攻击等威胁。Akamai CEF 连接器近乎实时地从 Akamai SIEM API 拉取安全事件,并将其从 JSON 转换为通用事件格式 (CEF),然后通过 syslog 将其转发到 Bindplane。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例。
  • 安装 Bindplane 代理的 Windows 2016 或更高版本或 Linux 主机(带 systemd)。
  • 一台 Linux 服务器(建议使用 CentOS、RHEL 或 Ubuntu),至少具有 2 个 CPU 核心、6 GB RAM 和 2 GB 可用磁盘空间(用于 Akamai CEF 连接器)。
  • 在 CEF 连接器主机上安装 Java 8 (JRE 1.8) 或更高版本。
  • 如果 Bindplane 代理在代理后面运行,请确保防火墙端口已根据 Bindplane 代理要求打开,并且代理已将 *.cloudsecurity.akamaiapis.net*.luna.akamaiapis.net 列入许可名单。
  • 对 Akamai 控制中心的特权访问权限。
  • 启用了 App & API Protector、Kona Site Defender、Web Application Protector、Bot Manager 或 Account Protector 的 Akamai 安全配置。

获取 Google SecOps 注入身份验证文件

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载数据注入身份验证文件
    • 将文件安全地保存在将要安装 Bindplane 的系统上。

获取 Google SecOps 客户 ID

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 配置文件
  3. 复制并保存组织详细信息部分中的客户 ID

在 Akamai Control Center 中启用 SIEM 集成

  1. 登录 Akamai 控制中心
  2. 依次前往 WEB & DATA CENTER SECURITY(网站和数据中心安全性)> Security Configuration(安全配置)。
  3. 打开安全配置以及要收集 SIEM 数据的相应版本。
  4. 点击高级设置,然后展开 SIEM 集成的数据收集
  5. 点击开启以启用 SIEM。
  6. 选择要导出哪些安全政策的数据:
    • 所有安全政策:针对违反安全配置中任何安全政策的事件发送 SIEM 数据。
    • 特定安全政策:发送一项或多项特定安全政策的数据。从下拉列表中选择相应的政策。
  7. 复制网络安全配置 ID 字段中的值。保存此 ID 以供日后使用。
  8. 点击激活,将安全配置更改推送到生产网络。在网络下,点击正式版,然后点击激活

在 Akamai Control Center 中设置用户以管理 SIEM

  1. Akamai 控制中心中,依次前往账号管理 > 身份和访问权限
  2. 用户和 API 客户端标签页中,找到您要向其分配角色的用户,或点击创建用户
  3. 如需将 SIEM 角色分配给现有用户,请执行以下操作:
    1. 打开用户的账号,然后点击修改角色标签页。
    2. 找到相应群组,点击角色下拉菜单,然后选择 Manage SIEM 角色。
    3. 点击提交
  4. 如需为新用户分配 SIEM 角色,请执行以下操作:

    1. 点击创建用户
    2. 输入用户的基本信息,然后向下滚动到分配角色部分。
    3. 找到相应群组,点击角色下拉菜单,然后选择 Manage SIEM 角色。
    4. 点击保存

在 Akamai 控制中心内预配 SIEM API 凭据

  1. 请访问 Akamai 文档中的创建身份验证凭据页面。
  2. 按照相应步骤为分配了 SIEM 管理权限的用户配置 SIEM API。
  3. 复制并妥善保存以下凭据:

    • Access Token
    • 客户端令牌
    • 客户端密钥 (Client Secret)
    • 基础网址(主机)

安装 Akamai CEF 连接器

  1. 在 Linux 服务器上,从 Akamai SIEM 集成连接器软件包 GitHub 代码库下载最新的 CEF 连接器分发软件包。
  2. 根据需要将软件包转移到您的服务器。
  3. 验证下载文件的 SHA256 哈希值,以确保完整性。
  4. 解压缩分发软件包:

    unzip CEFConnector-<version>.zip
    
  5. 前往提取的目录:

    cd CEFConnector-<version>
    
  6. 创建指向启动脚本的符号链接以安装服务:

    sudo ln -s /path/to/CEFConnector-<version>/bin/AkamaiCEFConnector.sh /etc/init.d/AkamaiCEFConnector
    

配置 Akamai CEF 连接器

  1. 前往 CEF 连接器安装中的 config 目录:

    cd /path/to/CEFConnector-<version>/config
    
  2. 使用文本编辑器打开 CEFConnector.properties 文件:

    sudo nano CEFConnector.properties
    
  3. 配置以下必需参数:

    # Pull rate from Akamai source (in seconds, positive integer)
    connector.pull.interval=60
    
    # Security Configuration IDs (semicolon-separated for multiple)
    akamai.data.configs=<YOUR_SECURITY_CONFIG_ID>
    
    # API Credentials
    akamai.data.accesstoken=<YOUR_ACCESS_TOKEN>
    akamai.data.clienttoken=<YOUR_CLIENT_TOKEN>
    akamai.data.clientsecret=<YOUR_CLIENT_SECRET>
    akamai.data.baseurl=<YOUR_BASE_URL>
    
    # Offset-based mode (recommended for continuous collection)
    akamai.data.timebased=false
    
    # Maximum number of events per API call
    akamai.data.limit=200000
    
    # Proxy Configuration (leave blank if no proxy)
    # connector.proxy.host=
    # connector.proxy.port=
    
  4. 将以下占位符替换为您的实际值:

    • <YOUR_SECURITY_CONFIG_ID>:您在“启用 SIEM”部分中复制的网络安全配置 ID。对于多个配置,请用英文分号分隔 ID(例如 12345;67890)。
    • <YOUR_ACCESS_TOKEN>:来自 Akamai API 凭据的访问令牌。
    • <YOUR_CLIENT_TOKEN>:来自 Akamai API 凭据的客户端令牌。
    • <YOUR_CLIENT_SECRET>:Akamai API 凭据中的客户端密钥。
    • <YOUR_BASE_URL>:Akamai API 凭据中的基础网址(主机)(例如 akab-xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx.luna.akamaiapis.net)。
  5. 保存并关闭文件。

配置 CEF 连接器日志记录以将 syslog 转发到 Bindplane

  1. 导航到 CEF 连接器安装中的 config 目录。
  2. 使用文本编辑器打开 log4j2.xml 文件:

    sudo nano /path/to/CEFConnector-<version>/config/log4j2.xml
    
  3. 在文件顶部附近的“属性”部分中,将远程 syslog 服务器参数设置为指向 Bindplane 代理:

    <!-- Syslog Appender Configuration -->
    <Syslog name="SyslogAppender" 
            host="<BINDPLANE_IP_ADDRESS>" 
            port="<BINDPLANE_PORT>" 
            protocol="<PROTOCOL>" 
            facility="LOCAL0"
            format="RFC 5424">
        <PatternLayout pattern="%m%n"/>
    </Syslog>
    
  4. 替换以下占位符:

    • <BINDPLANE_IP_ADDRESS>:安装 Bindplane 代理的服务器的 IP 地址(例如 192.168.1.100)。
    • <BINDPLANE_PORT>:Bindplane 代理监听的端口号(例如,UDP 为 514,TCP 为 601)。
    • CEFProtocol 设置为 UDPTCP,以与您的 Bindplane 接收器配置相匹配。
  5. 保存并关闭文件。

启动 Akamai CEF 连接器

  1. 启动 CEF 连接器服务:

    sudo /etc/init.d/AkamaiCEFConnector start
    
  2. 验证服务是否正在运行:

    sudo /etc/init.d/AkamaiCEFConnector status
    
  3. 监控日志,确保连接器正在从 Akamai 拉取事件并转发这些事件:

    tail -f /path/to/CEFConnector-<version>/bin/logs/cefconnector.log
    

安装 Bindplane 代理

按照以下说明在 Windows 或 Linux 操作系统上安装 Bindplane 代理。

Windows 安装

  1. 以管理员身份打开命令提示符PowerShell
  2. 运行以下命令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 安装

  1. 打开具有 root 或 sudo 权限的终端。
  2. 运行以下命令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

其他安装资源

如需了解其他安装选项,请参阅此安装指南

配置 Bindplane 代理以注入 Syslog 并将其发送到 Google SecOps

  1. 访问配置文件:

    • 找到 config.yaml 文件。通常,它位于 Linux 上的 /status observiq-otel-collector/ 目录中或 Windows 上的安装目录中。
    • 使用文本编辑器(例如 nanovi 或记事本)打开该文件。
  2. 按如下方式修改 config.yaml 文件:

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in the Get ingestion authentication file section
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from the Get customer ID section
        customer_id: <PLACEHOLDER_CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'AKAMAI_WAF'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
  • 根据基础架构的需要替换端口和 IP 地址。
  • <PLACEHOLDER_CUSTOMER_ID> 替换为实际的客户 ID。
  • /path/to/ingestion-authentication-file.json 更新为“获取 Google SecOps 注入身份验证文件”部分中保存身份验证文件的文件路径。

重启 Bindplane 代理以应用更改

如需在 Linux 中重启 Bindplane 代理,请执行以下操作:

  1. 运行以下命令:

    sudo systemctl restart observiq-otel-collector
    
  2. 验证服务是否正在运行:

    sudo systemctl status observiq-otel-collector
    
  3. 检查日志是否存在错误:

    sudo journalctl -u observiq-otel-collector -f
    

如需在 Windows 中重启 Bindplane 代理,请执行以下操作:

  1. 请从下列选项中选择一项:

    • 以管理员身份运行命令提示符或 PowerShell:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • 服务控制台:
      1. Win+R,输入 services.msc,然后按 Enter 键。
      2. 找到 observIQ OpenTelemetry 收集器
      3. 右键点击并选择重新启动
  2. 验证服务是否正在运行:

    sc query observiq-otel-collector
    
  3. 检查日志是否存在错误:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

UDM 映射表

日志字段 UDM 映射 逻辑
src (attackData.clientIP) principal.ip 发出请求的客户端的来源 IP 地址
c6a2 (ipv6src) principal.ip 如果 attackData.clientIP 采用 IPv6 格式,则为来源 IPv6 地址
dhost (httpMessage.host) target.hostname 来自 HTTP HOST 标头的主机名
dpt (httpMessage.port) target.port 入站请求使用的端口号
requestMethod (httpMessage.method) network.http.method 传入请求的 HTTP 方法(GET、POST 等)
request (request网址) target.url 根据 httpMessage 字段计算出的完整网址
cs1 (attackData.rules) security_result.rule_id 针对相应请求触发的规则的规则 ID
cs2(attackData.ruleMessages) security_result.rule_name 触发的规则的消息
act (appliedAction) security_result.action 采取的操作(提醒、拒绝、中止等)
severity security_result.severity 计算出的严重程度(检测为 5,缓解为 10)
cs5 (attackData.clientReputation) security_result.threat_name 客户端信誉的客户端 IP 得分
cs6(attackData.apiId) security_result.detection_fields API 保护的 API ID
start (httpMessage.start) metadata.event_timestamp Edge 服务器发起连接的时间(纪元格式)
devicePayloadId (httpMessage.requestId) metadata.product_log_id 消息的全局唯一 ID
flexString1 (attackData.configId) security_result.detection_fields 应用于相应请求的安全配置的 ID
flexString2 (attackData.policyId) security_result.detection_fields 应用于相应请求的防火墙政策的 ID
AkamaiSiemJA4 (identity.ja4) network.tls.client.ja3 JA4 客户端 TLS 指纹

更新日志

查看相应解析器的更改日志

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。