收集 Pulse Secure 日志
本文档介绍了如何使用 Google 安全运营转发器收集 Pulse Secure 日志。
如需了解详情,请参阅将数据提取到 Google 安全运营中心概览。
注入标签用于标识将原始日志数据标准化为结构化 UDM 格式的解析器。本文档中的信息适用于具有 PULSE_SECURE_VPN
注入标签的解析器。
配置 Pulse Secure VPN
如需配置 Pulse Secure VPN,请执行以下操作之一:
- 配置 Pulse Secure VPN 8.3R3 及更低版本
- 配置 Pulse Secure VPN 8.3R4 及更高版本
配置 Pulse Secure VPN 8.3R3 及更低版本
- 登录 Pulse Connect Secure 控制台。
- 在 Pulse Connect Secure 控制台中,依次选择系统 > 日志/监控 > 设置。您可以从事件标签页、用户访问权限标签页或管理员访问权限标签页中选择设置。
- 在选择要记录的事件部分,选中与事件对应的所有复选框。
- 在 Syslog 服务器部分,执行以下操作:
- 在服务器名称/IP 字段中,指定 Google 安全运营转发器的 IP 地址。
- 在设施列表中,选择 LOCAL0。设施列表提供了 8 个设施:
LOCAL0
到LOCAL7
。您可以使用其中一种设置来映射 syslog 服务器上的设施。 - 在类型列表中,选择 UDP 或 TCP。
- 点击添加。
- 可选:如需为事件、管理员访问权限或用户访问日志添加多个 syslog 服务器,请重复第 2 至 4 步。
- 点击保存更改。
- 为确保将标准日志格式设置为默认,请执行以下操作:
- 打开 Pulse Connect Secure 控制台。
- 在事件标签页、用户访问权限标签页和管理员访问权限标签页中,将过滤条件设置为标准。
- 如果标准过滤条件未定义为默认过滤条件,请点击设为默认。
- 点击保存。
配置 Pulse Secure VPN 8.3R4 及更高版本
- 在 Pulse Connect Secure 控制台中,点击事件标签页、用户访问权限标签页或管理员访问权限标签页,然后将过滤条件设置为新建过滤条件。
- 在过滤条件名称字段中,输入过滤条件的名称。
在导出格式部分,选择自定义,然后在字段中输入以下格式:
[SecureConnect] %date% %time% - %node% - [%sourceip%] %user%(%realm%)[%role%] - %msg%
点击保存。
根据您要启用 syslog 配置的设备版本,执行以下操作之一:
- 在 Pulse Secure VPN 上启用 syslog 日志记录
- 在 Ivanti Connect Secure 上启用 syslog 日志记录
在 Pulse Secure VPN 上启用 syslog 日志记录
- 在 Pulse Connect Secure 控制台中,依次选择系统 > 日志/监控 > 设置。 您可以从事件标签页、用户访问权限标签页或管理员访问权限标签页中选择设置。
- 在选择要记录的事件部分,选中除 HTML5 访问、准入控制消息和未经身份验证的请求复选框以外的所有复选框。
- 在 Syslog 服务器字段中,输入 Syslog 服务器的相关信息。
- 在 Syslog 服务器部分,执行以下操作:
- 在服务器名称/IP 字段中,输入服务器名称或 Google 安全运营转发器 IP 地址。
- 在设施列表中,选择 LOCAL0。
- 在过滤条件列表中,选择您之前创建的过滤条件。
- 点击添加。
- 可选:如需为事件、管理员访问权限或用户访问日志添加多个 syslog 服务器,请重复第 2 至 4 步。
- 点击保存更改。
在 Ivanti Connect Secure 上启用 syslog 日志记录
- 在 Pulse Connect Secure 控制台中,点击事件标签页、用户访问权限标签页或管理员访问权限标签页,然后选择过滤器。
- 点击新建过滤器标签页。
在导出格式部分,选择自定义,然后在字段中输入以下格式:
[SecureConnect] %date% %time% - %node% - [%sourceip%] %user%(%realm%)[%role%] - %msg%
点击保存。
依次点击 System(系统)> Log/monitoring(日志/监控),然后选择 Settings(设置)标签页。
在日志大小上限字段中,指定日志大小上限,然后选择要记录的事件。
按如下方式指定服务器配置:
在服务器名称/IP 字段中,为 syslog 服务器指定完全限定域名或 Google 安全运营转发器 IP 地址。
如果您从类型列表中选择传输层安全 (TLS),则服务器名称必须与从服务器获取的证书中的 subjectDN 中的 CN 相匹配。
在设施列表中,选择一个 syslog 服务器设施级别。
在类型列表中,将与 syslog 服务器的连接类型选择为 UDP、TCP 或 TLS。TLS 使用加密协议来提供安全通信。
如果您选择 TLS,请选择要用于对 syslog 服务器进行身份验证的已安装客户端证书。客户端证书在 Configuration(配置)> Certificates(证书)> Client auth certificates(客户端身份验证证书)窗口中定义。客户端证书必须先安装到设备上,然后才能使用。请与您的证书授权机构联系以获取证书。
在过滤条件列表中,选择自定义。
点击添加。
配置 Google Security Operations 转发器以注入 Pulse Secure 日志
- 依次选择 SIEM 设置 > 转发器。
- 点击添加新转发器。
- 在转发器名称字段中,为转发器输入一个唯一名称。
- 点击提交,然后点击确认。系统会添加转发器,并显示添加收集器配置窗口。
- 在 Collector name(收集器名称)字段中,为收集器输入一个唯一名称。
- 选择 Pulse Secure 作为日志类型。
- 选择 Syslog 作为收集器类型。
- 配置以下必需的输入参数:
- 协议:指定收集器用于监听 syslog 数据的连接协议。
- 地址:指定收集器所在并监听 syslog 数据的目标 IP 地址或主机名。
- 端口:指定收集器所在的目标端口,以及收集器监听 syslog 数据的端口。
- 点击提交。
如需详细了解 Google Security Operations 转发器,请参阅通过 Google Security Operations 界面管理转发器配置。
如果您在创建转发器时遇到问题,请与 Google 安全运营支持团队联系。
字段映射参考文档
此解析器会从 Pulse Secure VPN 日志中提取字段,同时处理 Windows 事件日志和 syslog 格式。它会将各种日志结构标准化为常见格式,对登录、注销、连接和政策更改等事件进行分类,并使用用户代理、IP 地址和时间戳等上下文数据对其进行丰富。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
操作 | security_result.action_details |
直接从 action 字段映射。 |
应用 | principal.application |
直接从 application 字段映射。 |
bytes_read | network.received_bytes |
直接从 bytes_read 字段映射并转换为无符号整数。 |
bytes_written | network.sent_bytes |
直接从 bytes_written 字段映射并转换为无符号整数。 |
client_host | principal.hostname ,principal.asset.hostname |
直接从 client_host 字段映射。 |
cmd | principal.process.command_line |
直接从 cmd 字段映射。 |
connection_status | security_result.detection_fields.value.string_value |
直接从 connection_status 字段映射。 |
data_time | metadata.event_timestamp.seconds |
使用各种时间戳格式(MM-dd-yyyy HH:mm:ss Z、RFC 3339、ISO8601、MMM d HH:mm:ss、MMM d HH:mm:ss)从 data_time 字段解析出。 |
devname | principal.hostname ,principal.asset.hostname |
直接从 devname 字段映射。 |
dstip | target.ip ,target.asset.ip |
直接从 dstip 字段映射。 |
dstport | target.port |
直接从 dstport 字段映射并转换为整数。 |
dstcountry | target.location.country_or_region |
如果 dstcountry 字段不是“Reserved”或空,则直接从该字段映射。 |
时长 | network.session_duration.seconds |
直接从 duration 字段映射并转换为整数。 |
dvc | intermediary.hostname 或 intermediary.ip |
如果 dvc 字段可以转换为 IP 地址,则会映射到 intermediary.ip 。否则,它会映射到 intermediary.hostname 。 |
dvc_hostname | intermediary.hostname 、principal.hostname 、principal.asset.hostname 或 intermediary.ip 、principal.ip 、principal.asset.ip |
如果 dvc_hostname 字段可以转换为 IP 地址,则会映射到相应的 IP 字段。否则,它会映射到相应的主机名字段。 |
event_type | metadata.product_event_type |
直接从 event_type 字段映射。 |
failure_reason | security_result.description |
直接从 failure_reason 字段映射。如果消息包含“因为主机”,系统会在失败原因前面附加“主机”文本。 |
has_principal | event.idm.read_only_udm.principal (活跃状态) |
如果填充了任何主要字段,则设置为“true”;否则设置为“false”。由解析器逻辑派生。 |
has_target | event.idm.read_only_udm.target (活跃状态) |
如果填充了任何目标字段,则设置为“true”;否则设置为“false”。由解析器逻辑派生。 |
has_target_user | event.idm.read_only_udm.target.user.userid (活跃状态) |
如果已填充 target.user.userid ,则设置为“true”;否则,设置为“false”。由解析器逻辑派生。 |
host_ip | principal.ip ,principal.asset.ip |
直接从 host_ip 字段映射。 |
host_mac | principal.mac |
直接从 host_mac 字段映射,将连字符替换为英文冒号。 |
http_method | network.http.method |
直接从 http_method 字段映射。 |
http_response | network.http.response_code |
直接从 http_response 字段映射并转换为整数。 |
info_desc | about.labels.value |
直接从 info_desc 字段映射。 |
ip_new | target.ip ,target.asset.ip |
直接从 ip_new 字段映射。 |
level | security_result.severity ,security_result.severity_details |
security_result.severity 派生自 level 字段(“error”/“warning”-> HIGH、“notice”-> MEDIUM、“information”/“info”-> LOW)。level 的原始值也会映射到 security_result.severity_details 。 |
logid | metadata.product_log_id |
直接从 logid 字段映射。 |
locip | principal.ip ,principal.asset.ip |
直接从 locip 字段映射。 |
消息 | metadata.description |
用于使用 grok 和 kv 过滤器提取各种字段。如果消息包含“EventID”,则会作为 Windows 事件日志进行处理。 |
message_info | metadata.description |
如果未在更具体的 Grok 模式中另作使用,则直接映射到 metadata.description 。 |
msg | metadata.product_event_type ,metadata.description |
如果存在 msg 字段,系统会提取商品类型并将其映射到 metadata.product_event_type ,并将其余消息映射到 metadata.description 。 |
msg_hostname | principal.hostname ,principal.asset.hostname |
直接从 msg_hostname 字段映射。 |
msg_ip | principal.ip ,principal.asset.ip |
直接从 msg_ip 字段映射。 |
msg_user_agent | network.http.user_agent 、network.http.parsed_user_agent 、metadata.product_version |
用户代理字符串会映射到 network.http.user_agent ,解析后的用户代理会映射到 network.http.parsed_user_agent ,产品版本(如果有)会映射到 metadata.product_version 。 |
network_duration | network.session_duration.seconds |
直接从 network_duration 字段映射并转换为整数。 |
policyid | security_result.rule_id |
直接从 policyid 字段映射。 |
policyname | security_result.rule_name |
直接从 policyname 字段映射。 |
policytype | security_result.rule_type |
直接从 policytype 字段映射。 |
priority_code | about.labels.value |
直接从 priority_code 字段映射,也用于为“Severity”键派生 about.labels.value (请参阅“逻辑”)。 |
prod_name | metadata.product_name |
直接从 prod_name 字段映射。 |
product_type | metadata.product_event_type |
直接从 product_type 字段映射。 |
product_version | metadata.product_version |
直接从 product_version 字段映射。 |
proto | network.ip_protocol |
使用查找功能转换为 IP 协议名称后,映射到 network.ip_protocol 。 |
pwd | principal.process.file.full_path |
直接从 pwd 字段映射。 |
大区 | principal.group.attribute.labels.value |
直接从 realm 字段映射。 |
rcvdbyte | network.received_bytes |
直接从 rcvdbyte 字段映射并转换为无符号整数。 |
remip | target.ip |
直接从 remip 字段映射。 |
资源名称 | target.resource.name |
移除前导/尾随空格和连字符后,直接从 resource_name 字段映射。 |
resource_status | security_result.description |
直接从 resource_status 字段映射。 |
resource_user_group | principal.user.group_identifiers |
直接从 resource_user_group 字段映射。 |
resource_user_name | principal.user.userid |
直接从 resource_user_name 字段映射。 |
角色 | principal.user.group_identifiers |
直接从 roles 字段映射。 |
sentbyte | network.sent_bytes |
直接从 sentbyte 字段映射并转换为无符号整数。 |
session_id | network.session_id |
直接从 session_id 字段映射。 |
sessionid | network.session_id |
直接从 sessionid 字段映射。 |
srcip | principal.ip ,principal.asset.ip |
直接从 srcip 字段映射。 |
srcport | principal.port |
直接从 srcport 字段映射并转换为整数。 |
srccountry | principal.location.country_or_region |
如果 srccountry 字段不是“Reserved”或空,则直接从该字段映射。 |
子类型 | metadata.product_event_type |
与 type 结合使用,形成 metadata.product_event_type 。 |
target_file | target.file.full_path |
直接从 target_file 字段映射。 |
target_host | target.hostname ,target.asset.hostname |
直接从 target_host 字段映射。 |
target_ip | target.ip ,target.asset.ip |
直接从 target_ip 字段映射。 |
target_port | target.port |
直接从 target_port 字段映射并转换为整数。 |
target_url | target.url |
直接从 target_url 字段映射。 |
时间 | metadata.event_timestamp.seconds |
使用“yyyy-MM-dd HH:mm:ss”格式从 time 字段解析出。 |
类型 | metadata.product_event_type |
与 subtype 结合使用,形成 metadata.product_event_type 。 |
u_event_source_ip | principal.ip 、principal.asset.ip 或 target.ip |
如果存在 target_ip 或 target_host ,则 u_event_source_ip 会映射到 principal.ip 和 principal.asset.ip 。否则,如果 target_ip 、target_host 和 target_url 均为空,则 u_event_source_ip 会映射到 target.ip 。 |
u_observer_ip | observer.ip |
直接从 u_observer_ip 字段映射。 |
u_prin_ip | principal.ip ,principal.asset.ip |
直接从 u_prin_ip 字段映射。 |
用户 | target.user.userid |
直接从 user 字段映射。 |
user_agent | network.http.user_agent ,network.http.parsed_user_agent |
用户代理字符串会映射到 network.http.user_agent ,而解析后的用户代理会映射到 network.http.parsed_user_agent 。 |
user_group_identifier | target.user.group_identifiers 或 principal.user.group_identifiers |
在大多数情况下,会映射到 target.user.group_identifiers 。在 IP 地址更改 (USER_UNCATEGORIZED) 和 Realm 限制事件中映射到 principal.user.group_identifiers 。 |
user_ip | principal.ip ,principal.asset.ip |
直接从 user_ip 字段映射。如果为空且 u_event_source_ip 不为空,则采用 u_event_source_ip 的值。 |
用户名 | principal.user.userid 或 target.user.userid |
在大多数情况下,会映射到 principal.user.userid 。在某些特定场景(例如 detect_user_logout_failed 为 false 且 detect_policy_change_failed 为 false 时)映射到 target.user.userid 。 |
username_removed | target.user.userid |
直接从 username_removed 字段映射。 |
vd | principal.administrative_domain |
直接从 vd 字段映射。 |
metadata.vendor_name
、metadata.product_name
、metadata.event_type
、metadata.log_type
、network.ip_protocol
、security_result.action
、security_result.severity
和 extensions.auth.type
由解析器逻辑根据“逻辑”列中所述的条件派生或设置。
变化
2024-05-27
- 将“observer_hostname”映射到“observer.hostname”。
- 如果“dvc_hostname”是有效的 IP 地址,则将其映射到“principal.ip”,否则将其映射到“principal.hostname”。
- 将“priority_code”“Syslog_version”和“info_desc”映射到“about.labels”。
- 将“prod_name”映射到“metadata.product_event_type”。
2024-04-16
- 添加了新的 GROK 模式,用于解析新的 SYSLOG 日志模式。
- 将“connection_status”映射到“security_result.detection_fields”。
2024-02-26
- 添加了“kv”块来解析键值对数据。
- 将“username”映射到“target.user.userid”。
- 添加了针对“message_info”的条件检查。
- 将“u_prin_ip”映射到“principal.ip”。
- 将“u_observer_ip”映射到“observer.ip”。
2023 年 11 月 7 日
- bug 修复:
- 将“observer_host”的映射从“observer.hostname”更改为“additional.fields”。
2023-08-19
- 添加了 Grok 模式来解析失败的日志。
2023-05-26
- 添加了 Grok 模式,以支持新的 syslog 日志。
2023-01-06
- 修改了 Grok 以解析“product_type”并映射到“metadata.product_event_type”。
2022-10-25
- 为“message_info”添加了新的 Grok 模式,以提取 session_id。
- 将“session_id”映射到“network.session_id”。
- 将 detect_policy_change_failed 为 false 时 target.ip 更改为 principal.ip。
- 将 detect_policy_change_failed 为 false 时 target.mac 更改为 principal.mac。
2022-10-12
- 增强功能 - 为以下字段添加了映射:
- 从“msg”字段中提取 IP 的值,并将其映射到“principal.ip”。
- 从“msg”字段中提取了主机名的值,并将其映射到“principal.hostname”。
- 将“user”映射到“target.user.userid”。
- 将“realm”映射到“principal.group.attribute.labels”。
- 将“roles”映射到“principal.user.group_identifiers”。
- 将“metadata.event_type”的值从“GENERIC_EVENT”更改为“USER_UNCATEGORIZED”。
2022-10-03
- 改进 - 解析了包含“sudo”的日志。
- 添加了对新的键值对类型日志格式的支持。
2022-07-01
- 增强功能 - 为事件 ID 4624 生成了新事件
- 将 metadata.event_type 从“GENERIC_EVENT”更改为“STATUS_UPDATE”或“NETWORK_CONNECTION”,前提是“principal.ip”或“target.ip”或“principal.hostname”不为 null。
2022-04-13
- 增强功能 - 为 GENERIC_EVENT event_type 中的新字段添加了映射:
- user_ip 更改为 event.idm.read_only_udm.principal.ip。
- user_group_identifier 更改为 event.idm.read_only_udm.target.user.group_identifiers。
- 修改了所有 event_type 中的时间戳,以添加时区。
- 修改了 GENERIC 和 NETWORK_CONNECTION 事件类型的 user_ip、target_ip 字段。