收集 IBM Informix 記錄

支援的國家/地區:

本文說明如何使用 Bindplane 代理程式,將 IBM Informix 記錄檔擷取至 Google Security Operations。

IBM Informix 是高效能的關聯式資料庫管理系統,透過安全稽核功能提供完善的稽核記錄功能。稽核記錄檔轉送至系統記錄檔 (ASL) 功能可將稽核記錄傳送至系統記錄檔精靈,以集中收集記錄並整合 SIEM。

事前準備

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

  • Google SecOps 執行個體
  • Windows Server 2016 以上版本,或搭載 systemd 的 Linux 主機
  • Bindplane 代理程式與 IBM Informix 伺服器之間的網路連線
  • 如果透過 Proxy 執行,請確保防火牆通訊埠已根據 Bindplane 代理程式需求開啟
  • 具有 AAO (稽核管理員) 角色的 IBM Informix 伺服器管理員存取權
  • IBM Informix 12.10 以上版本 (12.10 版推出 ASL 功能)
  • 為要監控的使用者或事件設定稽核遮罩

取得 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"
    

編輯設定檔

  1. config.yaml 的所有內容替換為下列設定:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/informix:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: INFORMIX
            raw_log_field: body
            ingestion_labels:
                env: production
                source: informix_audit
    
    service:
        pipelines:
            logs/informix_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/informix
    
  2. 替換下列預留位置:

    • 接收器設定:

      • listen_address:要監聽的 IP 位址和通訊埠:

        • 0.0.0.0:514,在通訊埠 514 (標準系統記錄檔通訊埠) 上監聽所有介面
        • 在 Linux 上以非超級使用者身分執行時,請使用 1514 以上的連接埠
        • 調整通訊埠編號,與 Informix syslog 設定相符
    • 匯出工具設定:

      • creds_file_path:擷取驗證檔案的完整路徑。請務必將下載的擷取驗證檔案儲存為 ingestion-auth.json,並放在下列其中一個位置:

        • Linux/etc/bindplane-agent/ingestion-auth.json
        • WindowsC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • customer_id:將 YOUR_CUSTOMER_ID 替換為上一個步驟中的客戶 ID

      • endpoint:區域端點網址:

        • 美國malachiteingestion-pa.googleapis.com
        • 歐洲europe-malachiteingestion-pa.googleapis.com
        • 亞洲asia-southeast1-malachiteingestion-pa.googleapis.com
        • 如需完整清單,請參閱「區域端點
      • log_type:設為 INFORMIX

      • ingestion_labels:用於分類記錄的選用標籤 (可視需要自訂)

TCP Syslog 的設定範例

  • 如要改用 TCP 確保傳送可靠性,請使用以下設定:

    receivers:
        tcplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/informix:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: INFORMIX
            raw_log_field: body
    
    service:
        pipelines:
            logs/informix_to_chronicle:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/informix
    

儲存設定檔

編輯完成後,請儲存檔案:

  • Linux:依序按下 Ctrl+OEnterCtrl+X
  • Windows:依序點選「檔案」>「儲存」

重新啟動 Bindplane 代理程式,以套用變更

  • 如要在 Linux 中重新啟動 Bindplane 代理程式,請執行下列步驟:

    1. 執行下列指令:

      sudo systemctl restart observiq-otel-collector
      
    2. 確認服務正在執行:

      sudo systemctl status observiq-otel-collector
      
    3. 檢查記錄中是否有錯誤:

      sudo journalctl -u observiq-otel-collector -f
      
  • 如要在 Windows 中重新啟動 Bindplane 代理程式,請按照下列步驟操作:

    1. 您可以選擇下列其中一個選項:

      • 以管理員身分開啟命令提示字元或 PowerShell:

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

        1. 按下 Win+R 鍵,輸入 services.msc,然後按下 Enter 鍵。
        2. 找出 observIQ OpenTelemetry Collector
        3. 按一下滑鼠右鍵,然後選取「重新啟動」
    2. 確認服務正在執行:

      sc query observiq-otel-collector
      
    3. 檢查記錄中是否有錯誤:

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

設定 IBM Informix 系統記錄檔轉送

建立稽核遮罩

啟用稽核功能前,您必須先建立稽核遮罩,定義要稽核哪些使用者的哪些事件。

  1. 以具備 AAO 角色的使用者身分連線至 IBM Informix 伺服器。

  2. 為所有使用者建立預設稽核遮罩,稽核常見的資料庫事件:

    onaudit -a -u _default -e +OPDB,GRDB,CRTB,ALTB,DRTB
    

    這項指令會建立 _default 遮罩,並稽核下列事件:

    • OPDB:開啟資料庫
    • GRDB:授予資料庫存取權
    • CRTB:建立資料表
    • ALTB:變更資料表
    • DRTB:捨棄資料表
  3. 如要啟用資料修改的資料列層級稽核,請使用資料列層級事件建立遮罩:

    onaudit -a -u _require -e +DLRW,INRW,UPRW,RDRW
    

    這項指令會建立 _require 遮罩並稽核:

    • DLRW:刪除列
    • INRW:插入列
    • UPRW:更新列
    • RDRW:讀取列
  4. 如要為特定使用者建立遮罩,請將 _default 替換為使用者名稱:

    onaudit -a -u username -e +OPDB,GRDB,CRTB,ALTB,DRTB,DLRW,INRW,UPRW
    
  5. 確認稽核遮罩已建立:

    onaudit -o
    

啟用稽核記錄至系統記錄 (ASL)

  1. 啟用 ASL 稽核功能並設定系統記錄參數:

    onaudit -E on -F LOG_LOCAL0 -I informix_audit -P LOG_INFO
    

    此指令會執行下列作業:

    • -E on:啟用稽核至 Syslog 功能
    • -F LOG_LOCAL0:將系統記錄設施設為 LOG_LOCAL0 (建議用於篩選)
    • -I informix_audit:將系統記錄 ID 設為 informix_audit (會顯示在系統記錄訊息中)
    • -P LOG_INFO:將系統記錄優先順序設為 LOG_INFO
  2. 為資料庫管理員啟用強制稽核功能:

    onaudit -A on -S on
    

    此指令會執行下列作業:

    • -A on:為 DBSA (資料庫伺服器管理員) 群組啟用強制稽核功能
    • -S on:為 DBSSO (資料庫安全長) 群組啟用強制稽核功能
  3. 如要為含有 AUDIT 旗標的資料表啟用資料列層級稽核,請按照下列步驟操作:

    onaudit -R 1
    

    這會將 ADTROWS 參數設為 1,啟用選擇性列層級稽核。

  4. 驗證稽核設定:

    onaudit -c
    

    輸出內容應如下所示:

    • ADT_SYSLOG_ENABLED = 1
    • ADT_SYSLOG_FACILITY = LOG_LOCAL0
    • ADT_SYSLOG_IDENTIFIER = informix_audit
    • ADT_SYSLOG_PRIORITY = LOG_INFO
    • ADT_DBSA = 1 (若已啟用)
    • ADT_DBSSO = 1 (若已啟用)

設定系統記錄檔 Daemon,將記錄轉送至 Bindplane 代理程式

Informix ASL 功能會將稽核記錄傳送至本機 syslog 精靈。您必須設定 syslog daemon,將這些訊息轉送至 Bindplane 代理程式。

適用於 rsyslog (Linux 最常見的記錄檔):

  1. 建立新的 rsyslog 設定檔:

    sudo nano /etc/rsyslog.d/30-informix-audit.conf
    
  2. 新增下列設定,轉送 Informix 稽核記錄:

    # Forward Informix audit logs to Bindplane agent
    local0.* @127.0.0.1:514
    

    如果您在 onaudit -F 指令中設定了其他設施,請將 local0 替換成您的設施 (例如 local1local2 等)。

    如果 Bindplane 代理程式位於其他伺服器,請將 127.0.0.1 替換為 Bindplane 代理程式的 IP 位址。

    如要使用 TCP 轉送 (更可靠),請使用 @@ 而不是 @

    local0.* @@127.0.0.1:514
    
  3. 儲存檔案並重新啟動 rsyslog:

    sudo systemctl restart rsyslog
    
  4. 確認 rsyslog 正在執行:

    sudo systemctl status rsyslog
    

syslog-ng:

  1. 編輯 syslog-ng 設定檔:

    sudo nano /etc/syslog-ng/syslog-ng.conf
    
  2. 新增下列設定:

    # Define destination for Bindplane agent
    destination d_bindplane {
        udp("127.0.0.1" port(514));
    };
    
    # Filter for Informix audit logs
    filter f_informix {
        facility(local0);
    };
    
    # Log path to forward Informix logs
    log {
        source(s_src);
        filter(f_informix);
        destination(d_bindplane);
    };
    
  3. 儲存檔案並重新啟動 syslog-ng:

    sudo systemctl restart syslog-ng
    

測試設定

  1. 連線至資料庫,產生測試稽核事件:

    dbaccess stores_demo
    

    然後結束資料庫。

  2. 檢查 Bindplane 代理程式記錄,確認是否收到稽核記錄:

    Linux:

    sudo journalctl -u observiq-otel-collector -f | grep informix
    

    Windows:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log" | findstr informix
    
  3. 您也可以使用 onshowaudit 公用程式,查看系統記錄檔中的稽核記錄:

    onshowaudit -f /var/log/syslog -u your_username
    

稽核記錄格式

  • 透過系統記錄傳送的 Informix 稽核記錄格式如下:

    Jan 12 11:59:21 hostname informix_audit: ONLN|2021-01-12 18:59:21.512|hostname|31055|servername|username|0:OPDB:stores_demo:0:-
    

    格式包括:

    • 系統記錄檔時間戳記和主機名稱 (由系統記錄檔精靈新增)
    • 系統記錄識別碼 (使用 -I 選項設定)
    • 伺服器狀態 (ONLN = 線上)
    • Informix 時間戳記
    • 主機名稱
    • 程序 ID
    • 伺服器名稱
    • 使用者名稱
    • 活動代碼和詳細資料 (以半形豎線分隔)

額外設定選項

  • 如要設定系統記錄檔選項,請按照下列步驟操作:

    onaudit -O LOG_NDELAY,LOG_PID
    

    可用選項:

    • LOG_NDELAY:立即開啟連線 (預設)
    • LOG_ODELAY:延遲開啟連線 (與 LOG_NDELAY 互斥)
    • LOG_PID:在訊息中加入程序 ID
    • LOG_CONS:如果無法使用系統記錄檔,請寫入控制台
    • LOG_PERROR:同時寫入 stderr 和系統記錄檔
  • 如要變更稽核檔案路徑 (適用於傳統稽核):

    onaudit -p /path/to/audit/directory
    
  • 如要設定稽核記錄檔大小上限:

    onaudit -s 50000000
    

    這會將大小上限設為 50 MB (以位元組為單位)。

  • 如要手動啟動新的稽核檔案,請按照下列步驟操作:

    onaudit -n
    
  • 如何設定錯誤處理模式:

    onaudit -e 1
    

錯誤模式:

  • 0:繼續處理並記錄錯誤 (預設)
  • 1:暫停執行緒,直到可以寫入稽核記錄為止
  • 3:關閉伺服器

UDM 對應表

記錄欄位 UDM 對應 邏輯
id、dequeue_count、RequestId about.labels 已與「郵件 ID」、「取消佇列計數」、「要求 ID」的標籤合併
時間戳記 metadata.event_timestamp 已轉換為 yyyy-MM-dd HH:mm:ss.SSS 格式
類型 metadata.event_type 如果 type == 'ERROR',則設為 'GENERIC_EVENT',否則設為 'SYSTEM_AUDIT_LOG_UNCATEGORIZED'
serverName principal.asset.asset_id 如果 type != 'ERROR',則會從「PRODUCT_SPECIFIC_ID: 」和 serverName 串連
hostName principal.hostname 如果 type != 'ERROR',則直接複製值
processId principal.process.pid 如果 type != 'ERROR',則直接複製值
eventOutput、eventName principal.resource.attribute.labels 與「活動輸出」、「活動名稱」的標籤合併
dbName principal.resource.name 如果資料 != "",則直接複製值
principal.resource.type 如果資料 != "",則設為「DATABASE」
userName principal.user.userid 如果 type != 'ERROR',則直接複製值
errorCode、type security_result.action 如果 type == 'ERROR',則設為 'BLOCK';如果 errorCode == '0',則設為 'ALLOW';否則設為 'BLOCK'
例外狀況 security_result.description 如果 kv_data_1 != "",則直接複製值
ErrorCode security_result.rule_name 如果 kv_data_1 != "",則直接複製值
說明 security_result.summary 如果說明 !=「」,則直接複製值
blob_name、file_name target.file.full_path 如果 type == 'ERROR',則為 blob_name 中的值,否則為 file_name
metadata.product_name 設為「INFORMIX」
metadata.vendor_name 設為「IBM」

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。