收集 Synology 日志
概览
此解析器使用 grok 模式从 Synology SYSLOG 消息中提取字段,并将这些字段映射到 UDM。它可处理各种日志格式,识别用户登录和资源访问,并根据关键字对事件进行分类,同时利用供应商和产品信息丰富数据。
准备工作
确保您满足以下前提条件:
- Google SecOps 实例。
- 对 Synology DSM 的特权访问权限。
设置 Feed
您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:
- SIEM 设置 > Feed
- 内容中心 > 内容包
通过“SIEM 设置”>“Feed”设置 Feed
如需配置 Feed,请按以下步骤操作:
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称,例如 Synology 日志。
- 选择 Webhook 作为来源类型。
- 选择 Synology 作为日志类型。
- 点击下一步。
- 可选:为以下输入参数指定值:
- 拆分分隔符:用于分隔日志行的分隔符,例如
\n
。 - 资源命名空间:资源命名空间。
- 注入标签:应用于此 Feed 中事件的标签。
- 拆分分隔符:用于分隔日志行的分隔符,例如
- 点击下一步。
- 在最终确定界面中检查 Feed 配置,然后点击提交。
- 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
- 复制并存储密钥。您将无法再次查看此密钥。如有需要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥失效。
- 在详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
- 点击完成。
设置来自内容中心的 Feed
为以下字段指定值:
- 拆分分隔符:用于分隔日志行的分隔符,例如
\n
。
高级选项
- Feed 名称:用于标识 Feed 的预填充值。
- 来源类型:用于将日志收集到 Google SecOps 中的方法。
- 资源命名空间:与 Feed 关联的命名空间。
提取标签:应用于相应 Feed 中所有事件的标签。
点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
复制并存储密钥。您将无法再次查看此密钥。如有需要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥失效。
在详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
为 Webhook Feed 创建 API 密钥
前往 Google Cloud 控制台 > 凭据。
点击创建凭据,然后选择 API 密钥。
将 API 密钥访问权限限制为 Google Security Operations API。
指定端点网址
- 在客户端应用中,指定 webhook Feed 中提供的 HTTPS 端点网址。
通过在自定义标头中指定 API 密钥和密钥来启用身份验证,格式如下:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
建议:将 API 密钥指定为标头,而不是在网址中指定。
如果您的 Webhook 客户端不支持自定义标头,您可以使用以下格式的查询参数指定 API 密钥和密钥:
ENDPOINT_URL?key=API_KEY&secret=SECRET
替换以下内容:
ENDPOINT_URL
:Feed 端点网址。API_KEY
:用于向 Google Security Operations 进行身份验证的 API 密钥。SECRET
:您生成的用于验证 Feed 的密钥。
在 Synology 中为 Google SecOps 创建 Webhook
- 在 Synology NAS 上登录 DiskStation Manager (DSM)。
- 依次前往控制面板 > 通知 > Webhook。
- 点击添加。
为以下参数指定值:
- 提供方:选择自定义。
规则:选择您要在网络钩子中发送的消息类型。
点击下一步。
提供商名称:为 Webhook 指定一个独特的名称(例如 Google SecOps)。
主题:将作为通知消息的前缀添加。
Webhook 网址(Webhook 网址):输入 ENDPOINT_网址。
选择以英文发送通知消息。
点击下一步。
HTTP Method:选择 POST。
添加标头 X-Webhook-Access-Key,并设置值为 SECRET。
添加标头 X-goog-api-key,并使用 API_KEY 值。
点击应用。
点击应用以保存 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 专业人士那里获得解答。