收集 Suricata EVE 記錄

支援的國家/地區:

本文說明如何使用 Bindplane,將 Suricata EVE 記錄擷取至 Google Security Operations。

Suricata 是開放原始碼的高效能網路威脅偵測引擎,可提供入侵偵測 (IDS)、入侵防禦 (IPS) 和網路安全監控功能。EVE (可擴充事件格式) 記錄輸出內容提供全面的 JSON 格式記錄,涵蓋快訊、流程、DNS、HTTP、TLS 和檔案交易資料。這個剖析器會從 Suricata EVE JSON 格式記錄中擷取欄位。並將這些值對應至統合式資料模型 (UDM)。此外,也會為事件來源和類型設定預設中繼資料值。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體
  • Windows Server 2016 以上版本,或搭載 systemd 的 Linux 主機
  • 如果透過 Proxy 執行,請確保防火牆通訊埠已根據 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. 開啟具有根層級或 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 代理程式,擷取系統記錄檔並傳送至 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 系統記錄,或使用 tcplog 進行 TCP 系統記錄
      • 0.0.0.0:要接聽的 IP 位址 (0.0.0.0 可接聽所有介面)
      • 514:要接聽的通訊埠號碼 (標準系統記錄通訊埠)
    • 匯出工具設定:

      • 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 Collector
      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. 如果系統記錄檔 Daemon 未設定轉送至 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 daemon:

    sudo systemctl restart rsyslog
    
  5. 重新啟動 Suricata:

     sudo systemctl restart suricata
    
  6. 檢查 Bindplane 代理程式記錄,確認系統記錄訊息是否已傳送。

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 專屬流程 ID
alert.signature security_result.rule_name 快訊簽名名稱
alert.signature_id security_result.rule_id 快訊簽章 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 專業人員尋求答案。