收集 Synology 日志

支持的平台:

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

准备工作

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

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

设置 Feed

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

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

在 Synology 中为 Google SecOps 创建 Webhook

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

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

    • 点击下一步。

    • 提供方名称:为网络钩子指定一个独特的名称(例如 Google SecOps)。

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

    • 网络钩子网址:输入 ENDPOINT_URL。

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

    • 点击下一步。

    • HTTP 方法:选择 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。如果消息包含“成功”,则该值设置为 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 专业人士的解答。