收集 OpenCanary 日志

支持:

此解析器从 OpenCanary SYSLOG 和 JSON 日志中提取字段,将这些字段标准化为 UDM 格式,并使用派生字段(例如 metadata.event_typesecurity_result.severity)丰富数据。它会处理各种日志格式,执行 IP 地址验证,并将字段映射到适当的 UDM 对象,例如 principaltargetnetwork

准备工作

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

  • Google SecOps 实例。
  • 对 OpenCanary 的特权访问权限。

设置 Feed

如需配置 Feed,请按以下步骤操作:

  1. 依次前往 SIEM 设置 > Feed
  2. 点击 Add New Feed (添加新 Feed)。
  3. 在下一页上,点击 Configure a single feed (配置单个 Feed)。
  4. Feed name (Feed 名称)字段中,输入 Feed 的名称;例如,OpenCanary Logs (OpenCanary 日志)。
  5. 选择 Webhook 作为 Source type (来源类型)。
  6. 选择 OpenCanary 作为 Log type (日志类型)。
  7. 点击下一步
  8. 可选:为以下输入参数指定值:
    • Split delimiter:用于分隔日志行的分隔符,例如 \n
  9. 点击下一步
  10. Finalize (最终确定)界面中检查 Feed 配置,然后点击提交
  11. 点击 Generate Secret Key (生成密钥)以生成用于对该 Feed 进行身份验证的密钥。
  12. 复制并存储密钥。您无法再次查看此密钥。如有需要,您可以重新生成新密钥,但此操作会使之前的密钥失效。
  13. Details (详细信息)标签页中,从 Endpoint Information (端点信息)字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
  14. 点击完成

为 Webhook Feed 创建 API 密钥

  1. 依次前往 Google Cloud 控制台 > 凭据

    前往“凭据”页面

  2. 点击创建凭据 ,然后选择 API 密钥

  3. 将 API 密钥访问权限限制为 Google Security Operations API

指定端点网址

  1. 在客户端应用中,指定 Webhook Feed 中提供的 HTTPS 端点网址。
  2. 通过以以下格式在自定义标头中指定 API 密钥和密钥来启用身份验证:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    建议:将 API 密钥指定为标头,而不是在网址中指定。

  3. 如果您的 Webhook 客户端不支持自定义标头,您可以使用以下格式的查询参数指定 API 密钥和密钥:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    替换以下内容:

    • ENDPOINT_URL:Feed 端点网址。
    • API_KEY:用于向 Google Security Operations 进行身份验证的 API 密钥。
    • SECRET:您生成的用于对 Feed 进行身份验证的密钥。

为 Google SecOps 设置 OpenCanary Webhook

  1. 找到 OpenCanary 配置文件 config.json

  2. 使用文本编辑器打开 config.json 文件。

  3. 在配置文件中找到标有 alerters 的部分。

  4. 如果 webhook 提醒器已存在,请对其进行修改。否则,请为 webhook 提醒器添加新条目。

  5. 使用以下配置(将 ENDPOINT_网址SECRETAPI_KEY 替换为您的值):

"handlers": {
    "Webhook": {
        "class": "opencanary.logger.WebhookHandler",
        "url": "<ENDPOINT_URL>",
        "method": "POST",
        "data": {"message": "%(message)s"},
        "status_code": 200,
        "headers": {
            "X-Webhook-Access-Key": "<SECRET>",
            "X-goog-api-key": "<API_KEY>"
         }
    }
}
  1. 保存 config.json 文件。
  2. 重启 OpenCanary 服务以应用更改。(例如,sudo systemctl restart opencanary )。

UDM 映射表

日志字段 UDM 映射 逻辑
dst_host target.asset.ip 原始日志的 dst_host 字段映射到 UDM。还会映射到 target.ip
dst_host target.ip 原始日志的 dst_host 字段映射到 UDM。还会映射到 target.asset.ip
dst_port target.port 原始日志的 dst_port 字段先转换为字符串,然后转换为整数并映射到 UDM。
local_time metadata.event_timestamp 原始日志的 local_time 字段用于填充 UDM 中的 metadata.event_timestamp。如果 local_time 字段不存在,解析器会使用批处理对象中的 create_time
local_time_adjusted security_result.detection_fields 原始日志的 local_time_adjusted 字段作为键值对添加到 UDM 中的 security_result.detection_fields 数组。
logdata.COMMUNITY_STRING security_result.detection_fields 原始日志的 logdata.COMMUNITY_STRING 字段作为键值对添加到 UDM 中的 security_result.detection_fields 数组。
logdata.DOMAIN principal.administrative_domain 原始日志的 logdata.DOMAIN 字段映射到 UDM。
logdata.FILENAME target.file.full_path 原始日志的 logdata.FILENAME 字段映射到 UDM。
logdata.HOSTNAME principal.asset.hostname 如果 logdata.HOSTNAME 字段不是 IP 地址,则会映射到 UDM。还会映射到 principal.hostname
logdata.HOSTNAME principal.asset.ip 如果 logdata.HOSTNAME 字段是 IP 地址,则会映射到 UDM。还会映射到 principal.ip
logdata.HOSTNAME principal.hostname 如果 logdata.HOSTNAME 字段不是 IP 地址,则会映射到 UDM。还会映射到 principal.asset.hostname
logdata.HOSTNAME principal.ip 如果 logdata.HOSTNAME 字段是 IP 地址,则会映射到 UDM。还会映射到 principal.asset.ip
logdata.LOCALNAME principal.asset.hostname 原始日志的 logdata.LOCALNAME 字段映射到 UDM。还会映射到 principal.hostname
logdata.LOCALNAME principal.hostname 原始日志的 logdata.LOCALNAME 字段映射到 UDM。还会映射到 principal.asset.hostname
logdata.LOCALVERSION principal.platform_version 原始日志的 logdata.LOCALVERSION 字段映射到 UDM。
logdata.PASSWORD extensions.auth.mechanism 如果存在 logdata.PASSWORD 字段,解析器会将 UDM 中的 extensions.auth.mechanism 设置为 USERNAME_PASSWORD
logdata.PATH network.http.referral_url 原始日志的 logdata.PATH 字段映射到 UDM。
logdata.REMOTENAME target.asset.hostname 原始日志的 logdata.REMOTENAME 字段映射到 UDM。还会映射到 target.hostname
logdata.REMOTENAME target.hostname 原始日志的 logdata.REMOTENAME 字段映射到 UDM。还会映射到 target.asset.hostname
logdata.REMOTEVERSION target.platform_version 原始日志的 logdata.REMOTEVERSION 字段映射到 UDM。
logdata.SMBVER network.application_protocol 如果存在 logdata.SMBVER 字段,解析器会将 UDM 中的 network.application_protocol 设置为 SMB
logdata.USERAGENT network.http.parsed_user_agent 原始日志的 logdata.USERAGENT 字段转换为已解析的用户代理,并映射到 UDM。
logdata.USERAGENT network.http.user_agent 原始日志的 logdata.USERAGENT 字段映射到 UDM。
logdata.USERNAME target.user.userid 原始日志的 logdata.USERNAME 字段映射到 UDM。
loglevel security_result.severity 原始日志的 loglevel 字段决定了 UDM 中的 security_result.severityWARNING 映射到 HIGHINFO/INFORMATION 映射到 LOW
logtype security_result.detection_fields 原始日志的 logtype 字段作为键值对添加到 UDM 中的 security_result.detection_fields 数组。
node_id principal.asset.asset_id 原始日志的 node_id 字段会添加“id:”前缀,并映射到 UDM。
src_host principal.asset.ip 原始日志的 src_host 字段映射到 UDM。还会映射到 principal.ip
src_host principal.ip 原始日志的 src_host 字段映射到 UDM。还会映射到 principal.asset.ip
src_port principal.port 原始日志的 src_port 字段转换为整数并映射到 UDM。
utc_time security_result.detection_fields 原始日志的 utc_time 字段作为键值对添加到 UDM 中的 security_result.detection_fields 数组。

更新日志

查看此解析器的更新日志

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