收集 NetApp ONTAP 日志
本文档介绍了如何通过 Syslog 收集 NetApp ONTAP 日志。解析器使用正则表达式从 syslog 消息中提取字段。然后,它会将提取的字段映射到相应的 UDM(统一数据模型)字段,从而有效地将原始日志数据转换为结构化格式,以便进行安全分析。
准备工作
- 确保您有一个 Google Security Operations 实例。
- 确保您使用的是 Windows 2016 或更高版本,或者使用了带有
systemd
的 Linux 主机。 - 如果在代理后面运行,请确保防火墙端口处于打开状态。
- 确保您拥有对 NetApp ONTAP 集群的管理员访问权限。
- 确保 ONTAP 可以与 Syslog 服务器 (Bindplane) 通信。
获取 Google SecOps 提取身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载提取身份验证文件。将该文件安全地保存在将安装 BindPlane 的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次选择 SIEM 设置 > 配置文件。
- 复制并保存组织详细信息部分中的客户 ID。
安装 BindPlane Agent
Windows 安装
- 以管理员身份打开命令提示符或 PowerShell。
运行以下命令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
其他安装资源
- 如需了解其他安装选项,请参阅此安装指南。
配置 BindPlane Agent 以提取 Syslog 并将其发送到 Google SecOps
访问配置文件:
- 找到
config.yaml
文件。通常,在 Linux 上,该目录位于/etc/bindplane-agent/
目录中;在 Windows 上,该目录位于安装目录中。 - 使用文本编辑器(例如
nano
、vi
或记事本)打开该文件。
- 找到
按如下方式修改
config.yaml
文件:receivers: udplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: netapp_ontap raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
根据基础架构中的需要替换端口和 IP 地址。
将
<customer_id>
替换为实际的客户 ID。在获取 Google SecOps 提取身份验证文件部分中,将
/path/to/ingestion-authentication-file.json
更新为身份验证文件的保存路径。
重启 BindPlane 代理以应用更改
在 Linux 中,如需重启 BindPlane 代理,请运行以下命令:
sudo systemctl restart bindplane-agent
在 Windows 中,如需重启 BindPlane Agent,您可以使用 Services 控制台,也可以输入以下命令:
net stop BindPlaneAgent && net start BindPlaneAgent
在 ONTAP 中配置 Syslog 目的地
使用 SSH 访问 ONTAP 集群,并将
<ontap-cluster-ip>
替换为 ONTAP 集群的管理 IP:ssh admin@<ontap-cluster-ip>
查看现有事件过滤条件和通知:
event filter show event notification show
创建 Syslog 目标,将
<syslog-server-ip>
和<syslog-server-port>
替换为您的 Syslog 服务器详细信息 (Bindplane):event notification destination create -name syslog-ems -syslog <syslog-server-ip> -syslog-port <syslog-server-port> -syslog-transport udp-unencrypted
-syslog-transport 的其他选项:
- udp-unencrypted(默认)
- tcp-unencrypted
- tcp-encrypted(适用于 TLS)。
验证 syslog 目标位置:
event notification destination show
配置现有事件过滤条件
将默认过滤条件关联到 Syslog 目的地:
event notification create -filter-name no-info-debug-events -destinations syslog-ems event notification create -filter-name default-trap-events -destinations syslog-ems
可选:创建和配置自定义过滤条件
身份验证事件过滤条件(登录/退出):捕获说明与“登录”或“退出”匹配的日志:
event filter create -filter-name auth_events event filter rule add -filter-name auth_events -type include -message-name *login* -severity info event filter rule add -filter-name auth_events -type include -message-name *logout* -severity info
安全检测字段过滤器:捕获与 nmsdk_language、nmsdk_platform、nmsdk_version 和 netapp_version 相关的日志:
event filter create -filter-name security_fields event filter rule add -filter-name security_fields -type include -message-name *nmsdk_language* -severity info event filter rule add -filter-name security_fields -type include -message-name *nmsdk_platform* -severity info event filter rule add -filter-name security_fields -type include -message-name *nmsdk_version* -severity info event filter rule add -filter-name security_fields -type include -message-name *netapp_version* -severity info
基于严重级别的日志过滤器:捕获严重级别为“信息”的日志:
event filter create -filter-name severity_info event filter rule add -filter-name severity_info -type include -message-name * -severity info
网络活动过滤器:捕获包含 src_ip 和 src_port 的日志:
event filter create -filter-name network_activity event filter rule add -filter-name network_activity -type include -message-name *src_ip* -severity info event filter rule add -filter-name network_activity -type include -message-name *src_port* -severity info
网址目标日志过滤器:捕获包含网址信息的日志:
event filter create -filter-name url_target event filter rule add -filter-name url_target -type include -message-name *url* -severity info
将每个过滤器应用于 Syslog 目的地:
event notification create -filter-name auth_events -destinations syslog-ems event notification create -filter-name security_fields -destinations syslog-ems event notification create -filter-name severity_info -destinations syslog-ems event notification create -filter-name network_activity -destinations syslog-ems event notification create -filter-name url_target -destinations syslog-ems
验证通知:
event notification show
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
代码 | 未映射 | |
说明 | metadata.description | 使用 Grok 模式从日志消息中提取。仅当说明为“退出账号”或“登录账号”时才会显示。 |
intermediary_host | intermediary.hostname | 使用 Grok 模式从日志消息中提取。 |
nmsdk_language | security_result.detection_fields.value | 使用 Grok 模式从日志消息中提取。此值会作为“值”添加到“key”为“nmsdk_language”的 detection_fields 对象中。 |
nmsdk_platform | security_result.detection_fields.value | 使用 Grok 模式从日志消息中提取。此值会作为“值”添加到“detection_fields”对象(“key”为“nmsdk_platform”)中。 |
nmsdk_version | security_result.detection_fields.value | 使用 Grok 模式从日志消息中提取。此值会作为“值”添加到“detection_fields”对象,其中“key”为“nmsdk_version”。 |
netapp_version | security_result.detection_fields.value | 使用 Grok 模式从日志消息中提取。此值会作为“值”添加到“detection_fields”对象,其中“key”为“netapp_version”。 |
product_event_type | metadata.product_event_type | 使用 Grok 模式从日志消息中提取。 |
security_result.summary | security_result.summary | 使用 Grok 模式从日志消息中提取。 |
和程度上减少 | security_result.severity | 如果严重程度为“信息”,则设置为“INFORMATIONAL”(不区分大小写)。 |
src_ip | principal.ip | 使用 Grok 模式从日志消息中提取。 |
src_port | principal.port | 使用 Grok 模式从日志消息中提取。 |
状态 | security_result.summary | 使用 Grok 模式从日志消息中提取。 |
ts | metadata.event_timestamp.seconds | 使用 Grok 模式从日志消息中提取,并转换为时间戳。 |
网址 | target.url | 使用 Grok 模式从日志消息中提取。 |
用户 | target.user.userid | 使用 Grok 模式从日志消息中提取。 |
extensions.auth.type | 如果说明为“退出登录”或“登录”,则设置为“AUTHTYPE_UNSPECIFIED”。 | |
metadata.event_type | 如果说明为“Logging in”(登录),则设置为“USER_LOGIN”。 | |
metadata.event_type | 如果说明为“Logging out”(退出),请将其设置为“USER_LOGOUT”。 | |
metadata.event_type | 如果说明不是“登录”或“退出”,则设置为“SCAN_UNCATEGORIZED”。 | |
metadata.log_type | 设置为“NETAPP_ONTAP”。 | |
metadata.product_name | 设置为“NETAPP_ONTAP”。 | |
metadata.vendor_name | 设置为“NETAPP_ONTAP”。 | |
target.platform | 如果 nmsdk_platform 包含“windows”(不区分大小写),则设置为“WINDOWS”。 |
更改
2023-04-03
- 新创建的解析器。