收集 Synology 日志

支持的语言:

概览

此解析器使用 grok 模式从 Synology SYSLOG 消息中提取字段,并将这些字段映射到 UDM。它可处理各种日志格式,识别用户登录和资源访问,并根据关键字对事件进行分类,同时利用供应商和产品信息丰富数据。

准备工作

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

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

设置 Feed

您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:

  • SIEM 设置 > Feed
  • 内容中心 > 内容包

通过“SIEM 设置”>“Feed”设置 Feed

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

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称,例如 Synology 日志
  5. 选择 Webhook 作为来源类型
  6. 选择 Synology 作为日志类型
  7. 点击下一步
  8. 可选:为以下输入参数指定值:
    • 拆分分隔符:用于分隔日志行的分隔符,例如 \n
    • 资源命名空间资源命名空间
    • 注入标签:应用于此 Feed 中事件的标签。
  9. 点击下一步
  10. 最终确定界面中检查 Feed 配置,然后点击提交
  11. 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
  12. 复制并存储密钥。您将无法再次查看此密钥。如有需要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥失效。
  13. 详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
  14. 点击完成

设置来自内容中心的 Feed

为以下字段指定值:

  • 拆分分隔符:用于分隔日志行的分隔符,例如 \n

高级选项

  • Feed 名称:用于标识 Feed 的预填充值。
  • 来源类型:用于将日志收集到 Google SecOps 中的方法。
  • 资源命名空间:与 Feed 关联的命名空间。
  • 提取标签:应用于相应 Feed 中所有事件的标签。

  • 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。

  • 复制并存储密钥。您将无法再次查看此密钥。如有需要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥失效。

  • 详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。

为 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 的密钥。

在 Synology 中为 Google SecOps 创建 Webhook

  1. 在 Synology NAS 上登录 DiskStation Manager (DSM)。
  2. 依次前往控制面板 > 通知 > Webhook
  3. 点击添加
  4. 为以下参数指定值:

    • 提供方:选择自定义
    • 规则:选择您要在网络钩子中发送的消息类型。

    • 点击下一步

    • 提供商名称:为 Webhook 指定一个独特的名称(例如 Google SecOps)。

    • 主题:将作为通知消息的前缀添加。

    • Webhook 网址(Webhook 网址):输入 ENDPOINT_网址

    • 选择以英文发送通知消息

    • 点击下一步

    • HTTP Method:选择 POST

    • 添加标头 X-Webhook-Access-Key,并设置值为 SECRET

    • 添加标头 X-goog-api-key,并使用 API_KEY 值。

    • 点击应用

  5. 点击应用以保存 Webhook。

UDM 映射表

日志字段 UDM 映射 逻辑
app target.application 由 grok 过滤器提取的 app 字段的值会分配给 target.application
desc metadata.description 由 grok 过滤器提取的 desc 字段的值会分配给 metadata.description
desc target.file.names 如果 desc 字段包含“Closed)”,则提取括号内的文件路径并将其分配给 target.file.names。如果 desc 字段包含“accessed shared folder”,则提取方括号内的文件夹路径并将其分配给 target.file.names
host principal.hostname 通过 grok 过滤器从 host_and_ip 字段提取的 host 字段的值会分配给 principal.hostname
host_and_ip principal.ip 系统会解析 host_and_ip 字段。如果找到 IP 地址 (ip1),则将其分配给 principal.ip。如果找到第二个 IP 地址 (ip2),系统也会将其添加到 principal.ip
intermediary_host intermediary.hostname 由 grok 过滤器提取的 intermediary_host 字段的值会分配给 intermediary.hostname。如果消息包含“已登录”或“登录”,则会在 extensions 内创建空的 auth 对象。使用原始日志中 collection_time 字段的时间戳。如果消息包含“已登录”或“登录”,则该值设置为 USER_LOGIN。如果消息包含“访问了共享文件夹”,则该值设置为 USER_RESOURCE_ACCESS。否则,该值会默认为 GENERIC_EVENT。由 grok 过滤器提取的 type 字段的值会分配给 metadata.product_event_type。该值静态设置为“SYNOLOGY”。该值静态设置为“SYNOLOGY”。如果消息包含“failed to sign”,则该值设置为 BLOCK。如果消息包含“success”,则该值设置为 ALLOW。如果 severity 字段(由 grok 提取)为“INFO”,则该值设置为 INFORMATIONAL
severity security_result.severity 由 grok 过滤器提取的 severity 字段的值用于确定 security_result.severity。如果值为“INFO”,则映射到“INFORMATIONAL”。
time metadata.event_timestamp 由 grok 过滤器提取的 time 字段会被解析并转换为时间戳。然后,此时间戳会分配给 metadata.event_timestamp
type metadata.product_event_type 由 grok 过滤器提取的 type 字段的值会分配给 metadata.product_event_type
user target.administrative_domain 如果从 user 字段中提取了网域,则会将其分配给 target.administrative_domain
user target.user.userid 提取 user 字段的用户名部分(如果存在“\”,则提取该符号之前的部分),并将其分配给 target.user.userid。使用原始日志的 collection_time 字段中的时间戳。

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