收集 Suricata EVE 日志

支持的平台:

本文档介绍了如何使用 Bindplane 将 Suricata EVE 日志注入到 Google Security Operations。

Suricata 是一款开源的高性能网络威胁检测引擎,可提供入侵检测 (IDS)、入侵防御 (IPS) 和网络安全监控功能。EVE(可扩展事件格式)日志输出提供全面的 JSON 格式日志,涵盖了提醒、流、DNS、HTTP、TLS 和文件交易数据。解析器从 Suricata EVE JSON 格式的日志中提取字段。它会解析 JSON 消息,然后将这些值映射到统一数据模型 (UDM)。它还会为事件来源和类型设置默认元数据值。

准备工作

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

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

获取 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: 'SURICATA_EVE'
            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 中显示的完全一致 (SURICATA_EVE)

保存配置文件

  • 修改后,保存文件:
    • 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"
        

配置 Suricata EVE syslog 转发

  1. 打开 Suricata 配置文件(通常为 /etc/suricata/suricata.yaml)。
  2. 找到 outputs 部分,并为 syslog 配置 EVE 日志输出:

    outputs:
      - eve-log:
          enabled: yes
          filetype: syslog
          identity: "suricata"
          facility: local5
          level: Info
          types:
            - alert:
                payload: yes
                payload-printable: yes
                packet: yes
                metadata: yes
            - http:
                extended: yes
            - dns:
                query: yes
                answer: yes
            - tls:
                extended: yes
            - files:
                force-magic: no
            - flow
            - netflow
            - anomaly:
                enabled: yes
            - stats:
                enabled: yes
    
  3. 如果未将 syslog 守护程序配置为转发到 Bindplane,请配置 rsyslog 或 syslog-ng:

    • 对于 rsyslog(修改 /etc/rsyslog.conf 或创建 /etc/rsyslog.d/suricata.conf):

      local5.* @BINDPLANE_IP:514
      
      • BINDPLANE_IP 替换为 Bindplane 代理主机 IP 地址。
      • 对于 UDP,请使用 @;对于 TCP,请使用 @@
    • 对于 syslog-ng(修改 /etc/syslog-ng/syslog-ng.conf):

      destination d_bindplane { udp("BINDPLANE_IP" port(514)); };
      filter f_suricata { facility(local5); };
      log { source(s_src); filter(f_suricata); destination(d_bindplane); };
      
  4. 重启 syslog 守护程序:

    sudo systemctl restart rsyslog
    
  5. 重启 Suricata:

     sudo systemctl restart suricata
    
  6. 通过检查 Bindplane 代理日志,验证是否正在发送 syslog 消息。

UDM 映射表

日志字段 UDM 映射 逻辑
时间戳 metadata.event_timestamp 活动时间戳
event_type metadata.product_event_type EVE 事件的类型(例如,提醒、流、DNS、HTTP、TLS)
src_ip principal.ip 来源 IP 地址
src_port principal.port 来源端口号
dest_ip target.ip 目标 IP 地址
dest_port target.port 目标端口号
proto network.ip_protocol 网络协议(例如 TCP、UDP、ICMP)
flow_id network.session_id 唯一流程标识符
alert.signature security_result.rule_name 提醒签名名称
alert.signature_id security_result.rule_id 提醒签名标识符
alert.severity security_result.severity 提醒严重程度
alert.category security_result.category_details 提醒分类类别
alert.action security_result.action 采取的操作(例如,允许、阻止)
alert.rev security_result.rule_version 规则修订版本号
http.hostname target.hostname HTTP 请求主机名
http.url target.url HTTP 请求网址
http.http_method network.http.method HTTP 请求方法
http.status network.http.response_code HTTP 响应状态代码
http.http_user_agent network.http.user_agent HTTP 用户代理字符串
http.http_refer network.http.referral_url HTTP 引荐来源网址
http.length additional.fields HTTP 内容长度
dns.type network.dns.type DNS 查询或响应
dns.rrname network.dns.questions.name DNS 查询名称
dns.rrtype network.dns.questions.type DNS 查询类型
dns.rdata network.dns.answers.data DNS 响应数据
tls.subject network.tls.client.subject TLS 证书主题
tls.issuerdn network.tls.client.issuer TLS 证书颁发机构
tls.sni network.tls.client.server_name TLS 服务器名称指示
tls.version network.tls.version TLS 版本
tls.ja3.hash network.tls.client.ja3 JA3 客户端指纹哈希
tls.ja3s.hash network.tls.server.ja3s JA3S 服务器指纹哈希
app_proto network.application_protocol 检测到应用层协议
flow.bytes_toserver network.sent_bytes 从客户端发送到服务器的字节数
flow.bytes_toclient network.received_bytes 从服务器发送到客户端的字节数
flow.pkts_toserver additional.fields 从客户端发送到服务器的数据包
flow.pkts_toclient additional.fields 从服务器发送到客户端的数据包
in_iface additional.fields 输入网络接口
community_id network.community_id 网络社区 ID 流哈希

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