收集 OPNsense 防火墙日志

支持的平台:

此解析器会从 OPNsense 防火墙日志(syslog 和 CSV 格式)中提取字段,并将其映射到 UDM。它使用 grok 和 CSV 解析“filterlog”应用日志,处理不同的日志格式和网络协议(TCP、UDP、ICMP 等),以填充 principal、target、network 和 security_result 等 UDM 字段。它还会添加供应商和产品名称等元数据,并根据是否存在主要对象和目标对象信息来确定事件类型。

准备工作

  • 确保您有一个 Google Security Operations 实例。
  • 确保您拥有对 OPNsense 网络界面的特权访问权限。

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

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载提取身份验证文件

获取 Google SecOps 客户 ID

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

安装 BindPlane Agent

  1. 对于 Windows 安装,请运行以下脚本:
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. 对于 Linux 安装,请运行以下脚本:
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. 如需了解其他安装选项,请参阅此安装指南

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

  1. 访问安装了 BindPlane 的机器。
  2. 按如下方式修改 config.yaml 文件:

    receivers:
      tcplog:
        # 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: testNamespace
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 使用以下命令重启 BindPlane Agent 以应用更改:sudo systemctl bindplane restart

向 OPNsense 添加 Syslog 服务器配置

  1. 登录 OPNsense 网页界面。
  2. 依次前往系统 > 设置 > 日志记录
  3. 远程日志记录部分,选中将日志发送到远程 syslog 服务器复选框,以启用该功能。
  4. Remote Syslog Servers 字段中,输入 syslog 服务器的 IP 地址,包括 PORT(例如 10.10.10.10:54525)。
  5. 选择 Local0 作为 syslog 设施
  6. 将 Syslog 级别设置为提醒

  7. 点击保存以应用更改。

UDM 映射表

日志字段 UDM 映射 逻辑
column1 security_result.rule_id 直接从 column1 映射。
column10 additional.fields[].key:“tos”
additional.fields[].value.string_valuecolumn10 的值
直接从 column10 映射,嵌套在 additional.fields 下,键为“tos”。
column12 additional.fields[].key:“ttl”
additional.fields[].value.string_valuecolumn12 的值
直接从 column12 映射,嵌套在 additional.fields 下,键为“ttl”。
column13 additional.fields[].key:“ID”
additional.fields[].value.string_valuecolumn13 的值
直接从 column13 映射,嵌套在 additional.fields 下,键为“Id”。
column14 additional.fields[].key:“偏移量”
additional.fields[].value.string_valuecolumn14 的值
直接从 column14 映射,嵌套在 additional.fields 下,键为“offset”。
column15 additional.fields[].key:“flags”
additional.fields[].value.string_valuecolumn15 的值
直接从 column15 映射,嵌套在 additional.fields 下,键为“flags”。
column17 network.ip_protocol 转换为大写后,直接从 column17 映射。
column18 network.received_bytes 转换为无符号整数后,直接从 column18 映射。
column19 principal.ip 直接从 column19 映射。
column20 target.ip 直接从 column20 映射。
column21 principal.port(如果 column17 为 TCP 或 UDP)
additional.fields[].key:“data_length”
additional.fields[].value.string_value:提取的值(如果 column17 为 ICMP、GRE、ESP 或 IGMP)
如果 column17 为 TCP/UDP,则直接从 column21 映射并转换为整数。否则,系统会使用 grok 提取“datalength”值,并将其放入 additional.fields 中,键为“data_length”。
column22 target.port 如果 column17 为 TCP 或 UDP,则直接从 column22 映射,并转换为整数。
column24 additional.fields[].key:“tcp_flags”
additional.fields[].value.string_valuecolumn24 的值
如果 column17 为 TCP,则直接从 column24 映射;如果为 UDP,则嵌套在 additional.fields 下,键为“tcp_flags”。
column29 additional.fields[].key:“tcp_options”
additional.fields[].value.string_valuecolumn29 的值
如果 column17 为 TCP,则直接从 column29 映射;如果为 UDP,则嵌套在 additional.fields 下,键为“tcp_options”。
column4 additional.fields[].key:“tracker”
additional.fields[].value.string_valuecolumn4 的值
直接从 column4 映射,嵌套在 additional.fields 下,键为“tracker”。
column5 additional.fields[].key:“接口”
additional.fields[].value.string_valuecolumn5 的值
直接从 column5 映射,嵌套在 additional.fields 下,键为“interface”。
column6 security_result.rule_type 直接从 column6 映射。
column7 security_result.action column7 映射而来。如果为“block”,则转换为大写的“BLOCK”。如果为“pass”,请设置为“ALLOW”。
column8 network.direction column8 映射而来。如果为“in”,请设置为“INBOUND”。如果为“出”,请设置为“OUTBOUND”。
domain principal.administrative_domain 直接从 grok 提取的 domain 映射而来。如果同时存在主 IP 地址和目标 IP 地址,则设置为“NETWORK_CONNECTION”,否则设置为“GENERIC_EVENT”。已硬编码为“OPNSENSE”。已硬编码为“OPNSENSE”。
message 各种字段 使用 grok 和 csv 过滤器进行解析,以提取各种字段。如需查看具体映射,请参阅其他行。
ts metadata.event_timestamp.secondstimestamp.seconds 使用 grok 从消息字段解析,然后转换为时间戳。秒数值用于填充 metadata.event_timestamp.secondstimestamp.seconds
application principal.application 直接从 grok 提取的 application 映射而来。

更改

2023-11-22

  • 新创建的解析器。