收集 Versa Networks 安全访问服务边缘 (SASE) 日志

支持的平台:

本文档介绍了如何收集 Versa Networks 安全访问服务边缘 (SASE) 日志。解析器会在初始 Grok 过滤器之后提取键值对。然后,它会将这些值映射到统一数据模型 (UDM),处理防火墙事件、应用日志和警报日志等各种日志格式,并针对 IP 协议和风险评分等特定字段执行转换和丰富操作。

准备工作

  • 确保您有一个 Google Security Operations 实例。
  • 确保您使用的是 Windows 2016 或更高版本,或者使用了带有 systemd 的 Linux 主机。
  • 如果在代理后面运行,请确保防火墙端口处于打开状态。
  • 确保您拥有对 Versa SASE 的特权访问权限。

获取 Google SecOps 提取身份验证文件

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

获取 Google SecOps 客户 ID

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

安装 BindPlane Agent

Windows 安装

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

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

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
    

其他安装资源

  • 如需了解其他安装选项,请参阅此安装指南

配置 BindPlane Agent 以提取 Syslog 并将其发送到 Google SecOps

  1. 访问配置文件:

    • 找到 config.yaml 文件。通常,在 Linux 上,该目录位于 /etc/bindplane-agent/ 目录中;在 Windows 上,该目录位于安装目录中。
    • 使用文本编辑器(例如 nanovi 或记事本)打开该文件。
  2. 按如下方式修改 config.yaml 文件:

    receivers:
        tcplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:54525"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: `/path/to/ingestion-authentication-file.json`
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: SYSLOG
                namespace: versa_networks_sase
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
    
  3. 根据基础架构中的需要替换端口和 IP 地址。

  4. <customer_id> 替换为实际的客户 ID。

  5. 获取 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
    

配置 Versa Networks SASE

管理员必须在每个 Versa Analytics 节点上配置远程收集器,以将日志转发到第三方系统。

如需配置 Versa 分析节点,请执行以下操作:

  • 启用日志转发
  • 启用会话 ID 日志记录

启用日志转发

  1. 登录 Versa 分析服务器
  2. 运行 cli 命令,前往 CLI
  3. 运行 configure 命令切换到配置模式,然后输入 load merge terminal
  4. 复制并粘贴以下命令以设置日志转发:

    • <collector_ip><collector_port> 替换为 syslog 收集器 (Bindplane) 的 IP 地址和端口。
    set system analytics log-collector-exporter destination-address <collector_ip>
    set system analytics log-collector-exporter destination-port <collector_port>
    set system analytics log-collector-exporter transport tcp
    set system analytics log-collector-exporter log-types firewall-log
    set system analytics log-collector-exporter log-types threat-log
    commit
    
  5. 保存配置:

    save
    

启用会话 ID 日志记录

如需记录 IP 地址相关信息,请启用会话 ID 日志记录。

  1. 登录 Versa Director
  2. 切换到导演视图
  3. 依次前往配置 > 设备 > 租户 > 设备,以访问设备视图
  4. 依次选择配置 > 其他 > 系统 > 配置 > 配置
  5. 参数窗格中,点击修改
  6. 修改参数窗口中,选择 LEF
  7. 防火墙部分,选中包含会话 ID 日志记录复选框。

  8. 点击确定

UDM 映射表

日志字段 UDM 映射 逻辑
accCkt additional.fields[].key:“accCkt”
additional.fields[].value.string_valueaccCkt
直接从 accCkt 字段中获取的值。
accCktId additional.fields[].key:“accCktId”
additional.fields[].value.string_valueaccCktId
直接从 accCktId 字段中获取的值。
accCktName additional.fields[].key:“accCktName”
additional.fields[].value.string_valueaccCktName
直接从 accCktName 字段中获取的值。
accessType additional.fields[].key:“accessType”
additional.fields[].value.string_valueaccessType
直接从 accessType 字段中获取的值。
action security_result.actionaction 如果 actiontypeidpActionavActionurlAction 为“允许”,则为 ALLOW。如果 actiontypeidpActionavActionurlAction 为“拒绝”“舍弃”“屏蔽”“拒绝”,则为 BLOCK。如果 idpAction 是任何其他值,则为 UNKNOWN_ACTION
alarmCause security_result.detection_fields[].key:“alarmCause”
security_result.detection_fields[].valuealarmCause
直接从 alarmCause 字段中提取的值。
alarmClass security_result.detection_fields[].key:“alarmClass”
security_result.detection_fields[].valuealarmClass
直接从 alarmClass 字段中提取的值。
alarmClearable security_result.detection_fields[].key:“alarmClearable”
security_result.detection_fields[].valuealarmClearable
直接从 alarmClearable 字段中获取的值。
alarmEventType metadata.product_event_typealarmEventType 直接从 alarmEventType 字段中提取的值。
alarmKey security_result.detection_fields[].key:“alarmKey”
security_result.detection_fields[].valuealarmKey
直接从 alarmKey 字段中提取的值。
alarmKind security_result.detection_fields[].key:“alarmKind”
security_result.detection_fields[].valuealarmKind
直接从 alarmKind 字段中获取的值。
alarmOwner security_result.detection_fields[].key:“alarmOwner”
security_result.detection_fields[].valuealarmOwner
直接从 alarmOwner 字段中提取的值。
alarmSeqNo security_result.detection_fields[].key:“alarmSeqNo”
security_result.detection_fields[].valuealarmSeqNo
直接从 alarmSeqNo 字段中获取的值。
alarmSeverity security_result.severity_detailsalarmSeverity 直接从 alarmSeverity 字段中提取的值。
alarmText security_result.summaryalarmText 直接从 alarmText 字段中提取的值,已移除双引号。
alarmType security_result.descriptionalarmType 直接从 alarmType 字段中获取的值。
appFamily metadata.product_event_typeappFamily
security_result.detection_fields[].key:“appFamily”
security_result.detection_fields[].valueappFamily
直接从 appFamily 字段中提取的值。
appId security_result.detection_fields[].key:“应用 ID”
security_result.detection_fields[].valueappId
直接从 appId 字段中获取的值。
appIdStr security_result.detection_fields[].key:“appIdStr”
security_result.detection_fields[].valueappIdStr
直接从 appIdStr 字段中获取的值。
applianceName principal.hostnameapplianceName 直接从 applianceNamesiteNamesite 字段中提取的值。
appProductivity security_result.detection_fields[].key:“appProductivity”
security_result.detection_fields[].valueappProductivity
直接从 appProductivity 字段中获取的值。
appRisk security_result.severity_detailsappRisk 直接从 appRisk 字段中获取的值。
appSubFamily security_result.detection_fields[].key:“appSubFamily”
security_result.detection_fields[].valueappSubFamily
直接从 appSubFamily 字段中获取的值。
avAccuracy additional.fields[].key:“avAccuracy”
additional.fields[].value.string_valueavAccuracy
直接从 avAccuracy 字段中获取的值。
avAction security_result.actionavAction 如需了解逻辑,请参阅 action
avMalwareName security_result.threat_nameavMalwareName 直接从 avMalwareName 字段中提取的值。
avMalwareType security_result.category_detailsavMalwareType 直接从 avMalwareType 字段中提取的值。
classMsg security_result.descriptionclassMsg 直接从 classMsg 字段中提取的值,已移除双引号。
clientIPv4Address target.ipclientIPv4Address 直接从 clientIPv4Address 字段中提取的值。
destIp target.ipdestIp
destinationIPv4AddressdestIp
直接从 destIp 字段中提取的值。
destinationIPv4Address target.ipdestinationIPv4Address 直接从 destinationIPv4Address 中获取的值或从 networkPrefix 字段派生的值。
destinationIPv6Address target.ipdestinationIPv6Address 直接从 destinationIPv6Address 字段中获取的值。
destinationPort target.portdestinationPort 直接从 destinationPort 字段中提取并转换为整数的值。
destinationTransportPort target.portdestinationTransportPort 直接从 destinationTransportPort 字段中提取并转换为整数的值。
deviceKey about.resource.attribute.labels[].key:“deviceKey”
about.resource.attribute.labels[].valuedeviceKey
如果不是“未知”,则直接从 deviceKey 字段中获取的值。
deviceName about.resource.attribute.labels[].key:“deviceName”
about.resource.attribute.labels[].valuedeviceName
如果不是“未知”,则直接从 deviceName 字段中获取的值。
duration network.session_duration.secondsduration 直接从 duration 字段中提取并转换为整数的值。
egressInterfaceName additional.fields[].key:“egressInterfaceName”
additional.fields[].value.string_valueegressInterfaceName
直接从 egressInterfaceName 字段中获取的值。
event.type metadata.event_typeevent.type 如果同时存在 applianceName(或 sourceIPv4AddressusersourceIPv6Address)和 destinationIPv4Address(或 remoteSitedestinationIPv6AddressclientIPv4Addresshostname),则为 NETWORK_CONNECTION。否则,STATUS_UPDATE。如果 applianceName 为空,则为 GENERIC_EVENT
eventType principal.resource.attribute.labels[].key:“eventType”
principal.resource.attribute.labels[].valueeventType
直接从 eventType 字段中提取的值。
family security_result.detection_fields[].key:“family”
security_result.detection_fields[].valuefamily
直接从 family 字段中提取的值。
fc security_result.detection_fields[].key:“ForwardingClass”
security_result.detection_fields[].valuefc
直接从 fc 字段中获取的值。
fileTransDir additional.fields[].key:“fileTransDir”
additional.fields[].value.string_valuefileTransDir
直接从 fileTransDir 字段中提取的值。
filename target.file.namesfilename 直接从 filename 字段中提取的值。
flowCookie metadata.collected_timestampflowCookie 直接从 flowCookie 字段中提取的值,并使用 UNIX 格式转换为时间戳。
flowId principal.resource.product_object_idflowId 直接从 flowId 字段中获取的值。
forwardForwardingClass security_result.detection_fields[].key:“forwardForwardingClass”
security_result.detection_fields[].valueforwardForwardingClass
直接从 forwardForwardingClass 字段中获取的值。
fromCountry principal.location.country_or_regionfromCountry
target.location.country_or_regionfromCountry
直接从 fromCountry 字段中获取的值。
fromUser principal.user.useridfromUser 直接从 fromUser 字段(如果不为空)获取的值,或“unknown”或“未知”。
fromZone additional.fields[].key:“fromZone”
additional.fields[].value.string_valuefromZone
直接从 fromZone 字段中提取的值。
generateTime metadata.collected_timestampgenerateTime 直接从 generateTime 字段中提取的值,并使用 UNIX 格式转换为时间戳。
hostname target.hostnamehostname 直接从 hostname 字段中获取的值。
httpUrl target.urlhttpUrl 直接从 httpUrl 字段中提取的值。
icmpTypeIPv4 additional.fields[].key:“icmpTypeIPv4”
additional.fields[].value.string_valueicmpTypeIPv4
直接从 icmpTypeIPv4 字段中获取的值。
idpAction security_result.actionidpAction 如需了解逻辑,请参阅 action
ingressInterfaceName additional.fields[].key:“ingressInterfaceName”
additional.fields[].value.string_valueingressInterfaceName
直接从 ingressInterfaceName 字段中获取的值。
ipsApplication additional.fields[].key:“ipsApplication”
additional.fields[].value.string_valueipsApplication
直接从 ipsApplication 字段中获取的值。
ipsDirection security_result.detection_fields[].key:“ipsDirection”
security_result.detection_fields[].valueipsDirection
直接从 ipsDirection 字段中获取的值。
ipsProfile security_result.detection_fields[].key:“ipsProfile”
security_result.detection_fields[].valueipsProfile
直接从 ipsProfile 字段中获取的值。
ipsProfileRule security_result.rule_nameipsProfileRule 直接从 ipsProfileRule 字段中提取的值。
ipsProtocol network.ip_protocolipsProtocol 直接从 ipsProtocol 字段中提取的值。
log_type metadata.descriptionlog_type
metadata.log_typelog_type
直接从 log_type 字段中提取的值。
mstatsTimeBlock metadata.collected_timestampmstatsTimeBlock 直接从 mstatsTimeBlock 字段中提取的值,并使用 UNIX 格式转换为时间戳。
mstatsTotRecvdOctets network.received_bytesmstatsTotRecvdOctets 直接从 mstatsTotRecvdOctets 字段中提取的值,并转换为无符号整数。
mstatsTotSentOctets network.sent_bytesmstatsTotSentOctets 直接从 mstatsTotSentOctets 字段中提取的值,并转换为无符号整数。
mstatsTotSessCount additional.fields[].key:“mstatsTotSessCount”
additional.fields[].value.string_valuemstatsTotSessCount
直接从 mstatsTotSessCount 字段中获取的值。
mstatsTotSessDuration network.session_duration.secondsmstatsTotSessDuration 直接从 mstatsTotSessDuration 字段中提取并转换为整数的值。
mstatsType security_result.category_detailsmstatsType 直接从 mstatsType 字段中提取的值。
networkPrefix target.ipnetworkPrefix
target.portnetworkPrefix
networkPrefix 字段中提取的 IP 地址。从 networkPrefix 字段中提取并转换为整数的端口。
protocolIdentifier network.ip_protocolprotocolIdentifier 直接从 protocolIdentifier 字段中提取的值,转换为整数,并使用查找功能映射到 IP 协议名称。
recvdOctets network.received_bytesrecvdOctets 直接从 recvdOctets 字段中提取的值,并转换为无符号整数。
recvdPackets network.received_packetsrecvdPackets 直接从 recvdPackets 字段中提取并转换为整数的值。
remoteSite target.hostnameremoteSite 直接从 remoteSite 字段中获取的值。
reverseForwardingClass security_result.detection_fields[].key:“reverseForwardingClass”
security_result.detection_fields[].valuereverseForwardingClass
直接从 reverseForwardingClass 字段中提取的值。
risk security_result.risk_scorerisk 直接从 risk 字段中提取并转换为浮点值。
rule security_result.rule_namerule 直接从 rule 字段中提取的值。
sentOctets network.sent_bytessentOctets 直接从 sentOctets 字段中提取的值,并转换为无符号整数。
sentPackets network.sent_packetssentPackets 直接从 sentPackets 字段中提取并转换为整数的值。
serialNum security_result.detection_fields[].key:“serialNum”
security_result.detection_fields[].valueserialNum
直接从 serialNum 字段中提取的值。
signatureId security_result.detection_fields[].key:“signatureID”
security_result.detection_fields[].valuesignatureId
直接从 signatureId 字段中获取的值。
signatureMsg security_result.detection_fields[].key:“signatureMsg”
security_result.detection_fields[].valuesignatureMsg
直接从 signatureMsg 字段中获取的值。
signaturePriority security_result.severitysignaturePriority 如果 signaturePriority 为“low”(不区分大小写),则为 LOW。如果 signaturePriority 为“medium”(不区分大小写),则 MEDIUM。如果 signaturePriority 为“high”(不区分大小写),则为 HIGH
site principal.hostnamesite
applianceNamesite
直接从 site 字段中提取的值。
siteId additional.fields[].key:“siteId”
additional.fields[].value.string_valuesiteId
直接从 siteId 字段中提取的值。
siteName principal.hostnamesiteName
applianceNamesiteName
直接从 siteName 字段中提取的值。
sourceIPv4Address principal.ipsourceIPv4Address 直接从 sourceIPv4Address 字段中获取的值。
sourceIPv6Address principal.ipsourceIPv6Address 直接从 sourceIPv6Address 字段中获取的值。
sourcePort principal.portsourcePort 直接从 sourcePort 字段中提取并转换为整数的值。
sourceTransportPort principal.portsourceTransportPort 直接从 sourceTransportPort 字段中提取并转换为整数的值。
subFamily security_result.detection_fields[].key:“subFamily”
security_result.detection_fields[].valuesubFamily
直接从 subFamily 字段中提取的值。
tcpConnAborted additional.fields[].key:“tcpConnAborted”
additional.fields[].value.string_valuetcpConnAborted
直接从 tcpConnAborted 字段中获取的值(如果不为空或“0”)。
tcpConnRefused additional.fields[].key:“tcpConnRefused”
additional.fields[].value.string_valuetcpConnRefused
直接从 tcpConnRefused 字段中获取的值(如果不为空或“0”)。
tcpPktsFwd network.sent_packetstcpPktsFwd 直接从 tcpPktsFwd 字段中提取并转换为整数的值。
tcpPktsRev network.received_packetstcpPktsRev 直接从 tcpPktsRev 字段中提取并转换为整数的值。
tcpReXmitFwd additional.fields[].key:“tcpReXmitFwd”
additional.fields[].value.string_valuetcpReXmitFwd
直接从 tcpReXmitFwd 字段中获取的值(如果不为空或“0”)。
tcpReXmitRev additional.fields[].key:“tcpReXmitRev”
additional.fields[].value.string_valuetcpReXmitRev
直接从 tcpReXmitRev 字段中获取的值(如果不为空或“0”)。
tcpSAA additional.fields[].key:“tcpSAA”
additional.fields[].value.string_valuetcpSAA
直接从 tcpSAA 字段中获取的值(如果不为空或“0”)。
tcpSSA additional.fields[].key:“tcpSSA”
additional.fields[].value.string_valuetcpSSA
直接从 tcpSSA 字段中获取的值(如果不为空或“0”)。
tcpSessCnt additional.fields[].key:“tcpSessCnt”
additional.fields[].value.string_valuetcpSessCnt
直接从 tcpSessCnt 字段中提取的值。
tcpSessDur network.session_duration.secondstcpSessDur 直接从 tcpSessDur 字段中提取并转换为整数的值。
tcpSynAckReXmit additional.fields[].key:“tcpSynAckReXmit”
additional.fields[].value.string_valuetcpSynAckReXmit
直接从 tcpSynAckReXmit 字段中获取的值(如果不为空或“0”)。
tcpSynReXmit additional.fields[].key:“tcpSynReXmit”
additional.fields[].value.string_valuetcpSynReXmit
直接从 tcpSynReXmit 字段中获取的值(如果不为空或“0”)。
tcpTWHS additional.fields[].key:“tcpTWHS”
additional.fields[].value.string_valuetcpTWHS
直接从 tcpTWHS 字段中获取的值(如果不为空或“0”)。
tenantId principal.resource.attribute.labels[].key:“tenantId”
principal.resource.attribute.labels[].valuetenantId
直接从 tenantId 字段中提取的值。
tenantName observer.hostnametenantName 直接从 tenantName 字段中获取的值。
threatType security_result.detection_fields[].key:“threatType”
security_result.detection_fields[].valuethreatType
直接从 threatType 字段中提取的值。
toCountry target.location.country_or_regiontoCountry 直接从 toCountry 字段中提取的值。
toZone additional.fields[].key:“toZone”
additional.fields[].value.string_valuetoZone
直接从 toZone 字段中提取的值。
traffType additional.fields[].key:“traffType”
additional.fields[].value.string_valuetraffType
直接从 traffType 字段中获取的值。
ts metadata.event_timestampts 直接从 ts 字段中提取并转换为时间戳的值。
type security_result.actiontype 如需了解逻辑,请参阅 action
urlAction security_result.actionurlAction 如需了解逻辑,请参阅 action
urlActionMessage security_result.summaryurlActionMessage 直接从 urlActionMessage 字段中获取的值。
urlCategory principal.resource.attribute.labels[].key:“urlCategory”
principal.resource.attribute.labels[].valueurlCategory
直接从 urlCategory 字段中获取的值。
urlProfile additional.fields[].key:“urlProfile”
additional.fields[].value.string_valueurlProfile
直接从 urlProfile 字段中获取的值。
urlReputation security_result.severity_detailsurlReputation 直接从 urlReputation 字段中获取的值。
user principal.ipuser 直接从 user 字段中获取的值。
vsnId principal.resource.attribute.labels[].key:“vsnId”
principal.resource.attribute.labels[].valuevsnId
直接从 vsnId 字段中获取的值。硬编码的值。硬编码的值。

更改

2024-06-03

  • 将“idpAction”映射到“security_result.action”。
  • 将“threatType”映射到“security_result.detection_fields”。
  • 将“ipsDirection”映射到“security_result.detection_fields”。
  • 将“ipsProfile”映射到“security_result.detection_fields”。
  • 将“signaturePriority”映射到“security_result.severity”。
  • 将“signatureMsg”映射到“security_result.detection_fields”。
  • 将“signatureId”映射到“security_result.detection_fields”。
  • 将“ipsApplication”映射到“security_result.detection_fields”。
  • 将“classMsg”映射到“security_result.description”。
  • 将“ipsProfileRule”映射到“security_result.rule_name”。
  • 将“ipsProtocol”映射到“network.ip_protocol”。

2023-07-03

  • 添加了对“entitlementlog”“monstatslog”和“tcpappmonlog”的支持。

2022-11-04

  • 新创建了解析器。