收集 Ivanti Connect Secure (Pulse Secure) 日志

支持的平台:

本文档介绍了如何使用 Bindplane 将 Ivanti Connect Secure (Pulse Secure) 日志注入到 Google Security Operations。

Ivanti Connect Secure(以前称为 Pulse Secure)是一种 SSL VPN 解决方案,可安全地远程访问企业应用、资源和网络。它支持多重身份验证、端点合规性检查,以及针对远程工作者和合作伙伴的精细访问权限政策。注意:Pulse Secure 于 2020 年被 Ivanti 收购。解析器从 Pulse Secure VPN syslog 格式的日志中提取字段。它使用 grok 解析日志消息,然后将这些值映射到统一数据模型 (UDM)。它还会为事件来源和类型设置默认元数据值。

准备工作

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

  • Google SecOps 实例
  • Windows Server 2016 或更高版本,或者具有 systemd 的 Linux 主机
  • 如果通过代理运行,请确保防火墙端口已根据 Bindplane 代理要求打开
  • 对 Ivanti Connect Secure (Pulse Secure) 管理控制台的特权访问权限

获取 Google SecOps 注入身份验证文件

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载注入身份验证文件。将文件安全地保存在将要安装 Bindplane 的系统上。

获取 Google SecOps 客户 ID

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 配置文件
  3. 复制并保存组织详细信息部分中的客户 ID

安装 Bindplane 代理

按照以下说明在 Windows 或 Linux 操作系统上安装 Bindplane 代理。

Windows 安装

  1. 以管理员身份打开命令提示符PowerShell
  2. 运行以下命令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. 等待安装完成。

  4. 运行以下命令来验证安装:

    sc query observiq-otel-collector
    

该服务应显示为 RUNNING

Linux 安装

  1. 打开具有 root 或 sudo 权限的终端。
  2. 运行以下命令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. 等待安装完成。

  4. 运行以下命令来验证安装:

    sudo systemctl status observiq-otel-collector
    

该服务应显示为有效(正在运行)

其他安装资源

如需了解其他安装选项和问题排查信息,请参阅 Bindplane 代理安装指南

配置 Bindplane 代理以注入 syslog 并将其发送到 Google SecOps

找到配置文件

  • Linux

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

修改配置文件

  • config.yaml 的全部内容替换为以下配置:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'PULSE_SECURE_VPN'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

配置参数

  • 替换以下占位符:

    • 接收器配置

      • udplog:使用 udplog 表示 UDP syslog,使用 tcplog 表示 TCP syslog
      • 0.0.0.0:要监听的 IP 地址(0.0.0.0 表示监听所有接口)
      • 514:要监听的端口号(标准 syslog 端口)
    • 导出器配置

      • creds_file_path:提取身份验证文件的完整路径:
        • Linux/etc/bindplane-agent/ingestion-auth.json
        • WindowsC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID:从“获取客户 ID”部分获取的客户 ID
      • endpoint:区域端点网址:
        • 美国malachiteingestion-pa.googleapis.com
        • 欧洲europe-malachiteingestion-pa.googleapis.com
        • 亚洲asia-southeast1-malachiteingestion-pa.googleapis.com
        • 如需查看完整列表,请参阅区域级端点
      • log_type:日志类型,与在 Chronicle 中显示的完全一致 (PULSE_SECURE_VPN)

保存配置文件

  • 修改后,保存文件:
    • Linux:依次按 Ctrl+OEnterCtrl+X
    • Windows:依次点击文件 > 保存

重启 Bindplane 代理以应用更改

  • 如需在 Linux 中重启 Bindplane 代理,请运行以下命令:

    sudo systemctl restart observiq-otel-collector
    
    1. 验证服务是否正在运行:

        sudo systemctl status observiq-otel-collector
      
    2. 检查日志是否存在错误:

        sudo journalctl -u observiq-otel-collector -f
      
  • 如需在 Windows 中重启 Bindplane 代理,请选择以下选项之一:

    • 以管理员身份运行命令提示符或 PowerShell:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • 服务控制台:

      1. Win+R,输入 services.msc,然后按 Enter 键。
      2. 找到 observIQ OpenTelemetry 收集器
      3. 右键点击并选择重新启动

      4. 验证服务是否正在运行:

        sc query observiq-otel-collector
        
      5. 检查日志是否存在错误:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

在 Ivanti Connect Secure (Pulse Secure) 上配置 Syslog 转发

  1. 登录 Ivanti Connect Secure(以前称为 Pulse Secure)管理控制台。
  2. 依次前往系统 > 日志/监控 > Syslog 服务器
  3. 点击新服务器以添加 Syslog 服务器。
  4. 提供以下配置详细信息:
    • 服务器名称/IP:输入 Bindplane 代理主机 IP 地址。
    • 服务器端口:输入 514
    • 设备:选择 LOCAL0(或您偏好的设备)。
    • 类型:选择 UDP
  5. 事件过滤条件部分,选择要转发的事件类型:
    • 标准:适用于标准 syslog 格式
  6. 选择日志类别:
    • 事件:选择用户访问日志管理员日志传感器事件
    • 严重程度:选择信息及更高级别,以进行全面的日志记录。
  7. 点击保存更改
  8. 通过检查 Bindplane 代理日志,验证是否正在发送 syslog 消息。

UDM 映射表

日志字段 UDM 映射 逻辑
操作 security_result.action_details 直接从操作字段映射。
应用 principal.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 字段不是“保留”或空,则直接从该字段映射。
时长 network.session_duration.seconds 直接从时长字段映射并转换为整数。
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 字段映射。如果消息包含“because host”,则会在失败原因前添加文本“host”。
has_principal event.idm.read_only_udm.principal(存在) 如果填充了任何委托人字段,则设置为“true”,否则设置为“false”。由解析器逻辑派生。
has_target event.idm.read_only_udm.target (presence) 如果填充了任何目标字段,则设置为“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)。等级的原始值也会映射到 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 字段映射,还用于派生“严重程度”键的 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 字段不是“保留”或空,则直接从该字段映射。
子类型 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”格式从时间字段解析。
类型 metadata.product_event_type 与子类型结合使用,以形成 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_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 字段映射。

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