收集 IBM Informix 記錄

支援的服務:

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

IBM Informix 是高效能關聯式資料庫管理系統,透過安全稽核功能提供完善的稽核記錄功能。「稽核至 Syslog」(ASL) 功能可將稽核記錄傳送至 Syslog Daemon,以便集中化記錄收集及整合 SIEM。

事前準備

請確認您符合下列必要條件:

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

取得 Bindplane 代理程式的 Google SecOps 憑證

如要向 Google SecOps 驗證 Bindplane 代理程式,請選擇下列其中一種方法:

  • 新部署作業:使用 Chronicle API (選項 1)。
  • 舊版部署作業:繼續使用擷取驗證檔案 (選項 2),直到 Ingestion API 於 2027 年 7 月 20 日停用。
  1. 登入 Google Cloud 控制台,選取連結至 Google SecOps 執行個體的 Google Cloud 專案。
  2. 依序前往「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
  3. 按一下「建立服務帳戶」。
  4. 提供下列設定詳細資料:
    • 服務帳戶名稱:輸入帳戶名稱 (例如 bindplane-ingest)。
    • 服務帳戶說明:輸入說明 (例如 Bindplane agent log ingestion)。
  5. 點按「Create and continue」(建立並繼續)。
  6. 在「將專案存取權授予這個服務帳戶」部分,按一下「選取角色」,然後選取「Chronicle 編輯者」。
  7. 依序點選「繼續」和「完成」。
  8. 按一下您建立的服務帳戶,然後前往「金鑰」分頁標籤。
  9. 依序點選「新增金鑰」>「建立新的金鑰」。
  10. 選取「JSON」,然後按一下「建立」。金鑰檔案會下載到電腦。
  11. 將金鑰檔案儲存為 Bindplane 收集器目錄中的 ingestion-auth.json (Linux 上的 /opt/observiq-otel-collector/ingestion-auth.json 或 Windows 上的 C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json),或更新 config.yaml 中的 creds_file_path,使其與儲存路徑相符。
  12. 依序前往「IAM & Admin」(IAM 與管理) >「Settings」(設定),然後複製「Project number」(專案編號)。設定匯出工具時會用到。

方法 2:下載擷取驗證檔案 (舊版)

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM Settings」 > 「Collection Agents」。
  3. 下載擷取驗證檔案。
  4. 將檔案安全地儲存在要安裝 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
    

    服務應顯示為「active (running)」。

其他安裝資源

如需其他安裝選項和疑難排解資訊,請參閱 Bindplane 代理程式安裝指南。

設定 Bindplane 代理程式,擷取系統記錄檔並傳送至 Google SecOps

找出設定檔

  • Linux:

    sudo nano /opt/observiq-otel-collector/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:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.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:服務帳戶 JSON 金鑰檔案的完整路徑 (選項 1)。請務必將憑證檔案儲存為 ingestion-auth.json,並存放在下列其中一個位置:

        • Linux:/opt/observiq-otel-collector/ingestion-auth.json
        • Windows:C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • customer_id:將 YOUR_CUSTOMER_ID 替換為上一步的客戶 ID

      • location:將 <LOCATION> 替換為 Google SecOps 執行個體的區域 (例如 us、europe 或 asia-southeast1)。匯出工具會在這個值前面加上 chronicle.googleapis.com。如需完整清單,請參閱「區域性端點」。

      • project:依序前往「IAM 與管理」>「設定」,然後將 <PROJECT_NUMBER> 替換為專案編號。

      • endpoint:維持設為 chronicle.googleapis.com。

      • log_type:設為 INFORMIX。

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

TCP Syslog 的設定範例

  • 如果您偏好使用 TCP 確保可靠傳輸,請改用以下設定:

    receivers:
      tcplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/informix:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: INFORMIX
        raw_log_field: body
    
    service:
      pipelines:
        logs/informix_to_chronicle:
          receivers:
            - tcplog
          exporters:
            - chronicle/informix
    

舊版 Ingestion API 匯出工具

  • 如果您使用選項 2 的擷取驗證檔案,請將 exporters 區塊替換為下列內容。將 creds_file_path 設為擷取驗證檔案的路徑。如果執行個體位於美國境外,請將 malachiteingestion-pa.googleapis.com 替換為區域端點 (例如 europe-malachiteingestion-pa.googleapis.com)。

    exporters:
      chronicle/informix:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/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
    

儲存設定檔

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

  • Linux:依序按下 Ctrl+O、Enter 和 Ctrl+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
    

啟用稽核至 Syslog (ASL)

  1. 啟用 ASL 稽核功能並設定 syslog 參數:

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

    此指令會執行下列作業:

    • -E on:啟用稽核至系統記錄檔功能
    • -F LOG_LOCAL0:將系統記錄設施設為 LOG_LOCAL0 (建議用於篩選)
    • -I informix_audit:將 syslog 識別碼設為 informix_audit (顯示在 syslog 訊息中)
    • -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 (若已啟用)

設定 syslog daemon,將記錄轉送至 Bindplane 代理

Informix ASL 功能會將稽核記錄傳送至本機 syslog daemon。您必須設定 syslog 常駐程式,將這些訊息轉送至 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 替換為您的設施 (例如 local1、local2 等)。

    如果 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 公用程式,查看 syslog 檔案中的稽核記錄:

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

稽核記錄格式

  • 透過 syslog 傳送的 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:-
    

    格式包括:

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

額外設定選項

  • 如要設定系統記錄選項:

    onaudit -O LOG_NDELAY,LOG_PID
    

    可用選項:

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

    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 已與「Message Id」、「Dequeue Count」、「Request 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 如果類型不等於「ERROR」,系統會直接複製值
processId principal.process.pid 如果類型 !=「ERROR」,則直接複製值
eventOutput, eventName principal.resource.attribute.labels 與「事件輸出」和「事件名稱」的標籤合併
dbName principal.resource.name 如果資料 != "",則直接複製值
principal.resource.type 如果 data != "",則設為「DATABASE」
userName principal.user.userid 如果類型不等於「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 如果 description != "",則直接複製值
blob_name, file_name target.file.full_path 如果 type == 'ERROR',則為 blob_name 中的值,否則為 file_name
metadata.product_name 設為「INFORMIX」
metadata.vendor_name 設為「IBM」

變更記錄

查看這個剖析器的變更記錄

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