收集 Imperva 資料庫記錄

支援的國家/地區:

本文說明如何使用 Bindplane,將 Imperva 資料庫記錄擷取至 Google Security Operations。剖析器會先嘗試從各種結構化記錄格式 (例如 CEF、LEEF 和 JSON) 擷取欄位。如果找不到這些格式,系統會使用 grok 模式從非結構化系統記錄訊息中擷取欄位,最終將擷取的資料對應至統合式資料模型 (UDM)。Imperva Database Security 提供全面的資料庫活動監控、稽核和保護功能。

事前準備

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

  • Google SecOps 執行個體
  • Windows 2016 以上版本,或搭載 systemd 的 Linux 主機
  • 如果透過 Proxy 執行,請確保防火牆通訊埠已根據 Bindplane 代理程式需求開啟
  • Imperva SecureSphere 管理控制台的特殊存取權

取得 Google SecOps 擷取驗證檔案

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「收集代理程式」
  3. 下載擷取驗證檔案。將檔案安全地儲存在要安裝 Bindplane 的系統上。

取得 Google SecOps 客戶 ID

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「設定檔」
  3. 複製並儲存「機構詳細資料」專區中的客戶 ID

安裝 Bindplane 代理程式

Windows 安裝

  1. 以管理員身分開啟「命令提示字元」或「PowerShell」
  2. 執行下列指令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 安裝

  1. 開啟具有根層級或 sudo 權限的終端機。
  2. 執行下列指令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

其他安裝資源

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

  1. 存取設定檔:

    1. 找出 config.yaml 檔案。通常位於 Linux 的 /etc/bindplane-agent/ 目錄,或 Windows 的安裝目錄。
    2. 使用文字編輯器 (例如 nanovi 或記事本) 開啟檔案。
  2. 按照下列方式編輯 config.yaml 檔案:

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'IMPERVA_DB'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • 視基礎架構需求替換通訊埠和 IP 位址。
    • <customer_id> 替換為實際的客戶 ID。
    • /path/to/ingestion-authentication-file.json 更新為「取得 Google SecOps 擷取驗證檔案」部分中驗證檔案的儲存路徑。

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

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

    sudo systemctl restart bindplane-agent
    
  • 如要在 Windows 中重新啟動 Bindplane 代理程式,可以使用「服務」控制台,或輸入下列指令:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

在 Imperva Database 上設定 Syslog 轉送

  1. 登入 Imperva SecureSphere 管理控制台
  2. 依序前往「設定」> 動作集」
  3. 按一下「新增」即可建立新的動作集,或編輯現有動作集。
  4. 按一下「新增動作」,然後提供下列設定詳細資料:
    • 名稱:輸入描述性名稱 (例如 Google SecOps Syslog)。
    • 動作類型:選取「GW Syslog」
    • 主機:輸入 BindPlane 代理程式 IP 位址。
    • 「Port」(通訊埠):輸入 BindPlane 代理程式通訊埠編號 (預設為 514)。
    • 通訊協定:根據 BindPlane 代理程式設定,選取「UDP」或「TCP」
    • 「系統記錄檔記錄層級」:選取「DEBUG」,即可取得詳細記錄。
    • 系統記錄設施:選取 LOCAL0 或適當的設施。
    • 動作介面:如要使用 SYSLOG+JSON 格式,請選取「Gateway Log - Security Event - System Log (syslog) - JSON format (Extended)」(閘道記錄 - 安全性事件 - 系統記錄 (syslog) - JSON 格式 (擴充));如要使用標準 SYSLOG 格式,請選取「Gateway Log - Security Event - System Log (syslog)」(閘道記錄 - 安全性事件 - 系統記錄 (syslog))
  5. 儲存動作設定。
  6. 依序前往「政策」>「安全性政策」或「政策」>「資料庫稽核政策」
  7. 編輯相關政策,並新增包含系統記錄動作的動作集,確保事件轉送至 Google SecOps。

UDM 對應表

記錄欄位 UDM 對應 邏輯
acct principal.user.userid 如果 acct 是「admin」,則對應至 target.user.userid,否則對應至 principal.user.userid。請先從 acct 中移除引號和空格,再進行對應。
動作 security_result.action_details 原始記錄中的 action 欄位值
alertSev security_result.severity 如果 alertSev 為「Informative」,則對應為「INFORMATIONAL」,否則對應為 alertSev 的大寫版本
調度應用程式資源 principal.application 如果 application 是「pam_unix(sudo:session)」,或 description 包含「pam_unix」,則對應為「pam_unix」。如果 message 包含「run-parts」,請對應為「run-parts」。如果 message 包含「audispd」,則對應為「audispd」。如果 message 包含「FSS audit」,請對應為「FSS audit」。否則,請將其對應為原始記錄檔中的 application 欄位
application-name target.application 原始記錄中的 application-name 欄位值
audit-policy security_result.category_details 原始記錄中的 audit-policy 欄位值
bind-variables additional.fields.bind_variables_label.value.string_value 原始記錄中的 bind-variables 欄位值
category security_result.category_details 原始記錄中的 category 欄位值
COMMAND target.process.command_line 如果 exe 不為空,則從原始記錄對應為 exe 欄位。否則,請將其對應為原始記錄檔中的 COMMAND 欄位
createTime 未對應
db-schema-pair additional.fields.DB Name_{index}.value.string_value、additional.fields.Schema Name_{index}.value.string_value 針對原始記錄中的每個 db-schema-pair 物件,擷取 db-nameschema-name 欄位,並分別對應至 UDM 中的 DB Name_{index}Schema Name_{index},其中 index 是陣列中物件的索引。
db-user principal.user.userid 如果 db-user 不為空,則從原始記錄對應為 db-user 欄位。否則,如果 os-user 不為空值,且 db-user 為空值,則從原始記錄對應為 os-user 欄位
dbName target.resource.name 原始記錄中的 dbName 欄位值
dest-ip target.ip、target.asset.ip 原始記錄中的 dest-ip 欄位值
dest-port target.port 原始記錄中的 dest-port 欄位值
說明 metadata.description 如果 description 包含「user:」,請從 description 擷取使用者 ID,並對應至 userid。如果 userid 不為空白,且 description 包含「Invalid」或「invalid」,請將「Invalid user」替換為「Invalid」。如果 application 是「sshd」,請從 description 中移除「from」和「by」。否則,請將其對應為原始記錄檔中的 description 欄位
dst target.ip、target.asset.ip 原始記錄中的 dst 欄位值
dstIP target.ip、target.asset.ip 原始記錄中的 dstIP 欄位值
dstPort target.port 原始記錄中的 dstPort 欄位值
event-type metadata.product_event_type 原始記錄中的 event-type 欄位值
eventType metadata.product_event_type、metadata.event_type 如果 eventType 不為空,且 srcIPdstIP 不為空,請將 eventType 對應至 metadata.product_event_type,並將「NETWORK_CONNECTION」對應至 metadata.event_type
evntDesc security_result.description 原始記錄中的 evntDesc 欄位值
exe target.process.command_line 原始記錄中的 exe 欄位值
來自 network.email.from from 中移除「<」和「>」,然後對應至 network.email.from
群組 target.user.group_identifiers 原始記錄中的 group 欄位值
gw-ip intermediary.ip、intermediary.asset.ip 原始記錄中的 gw-ip 欄位值
主機 target.hostname、target.asset.hostname 原始記錄中的 host 欄位值
主機名稱 principal.hostname、principal.asset.hostname 原始記錄中的 host-name 欄位值
主機名稱 principal.hostname、principal.asset.hostname 原始記錄中的 hostname 欄位值
ip target.ip、target.asset.ip 原始記錄中的 ip 欄位值
mx-ip intermediary.ip、intermediary.asset.ip 原始記錄中的 mx-ip 欄位值
objects-list additional.fields.Object_{index}.value.string_value 針對原始記錄中的每個 objects-list 物件,擷取該物件並對應至 UDM 中的 Object_{index},其中 index 是陣列中物件的索引。
作業 about.labels.Operation.value 原始記錄中的 Operation 欄位值
Operation type about.labels.Operation Type.value 原始記錄中的 Operation type 欄位值
os-user principal.user.userid, additional.fields.OS User.value.string_value 如果 os-user 不為空值,且 db-user 為空值,則從原始記錄對應為 os-user 欄位。否則,請將其對應為原始記錄檔中的 OS User 欄位
剖析的查詢 target.process.command_line 原始記錄中的 Parsed Query 欄位值
parsed-query additional.fields.Parsed Query.value.string_value 原始記錄中的 parsed-query 欄位值
pid target.process.pid 原始記錄中的 pid 欄位值
policy-id security_result.detection_fields.Policy_ID_{index}.value 針對原始記錄中的每個 policy-id 物件,擷取政策並對應至 UDM 中的 Policy_ID_{index},其中 index 是陣列中物件的索引。
policyName security_result.detection_fields.policyName_label.value 原始記錄中的 policyName 欄位值
通訊埠 target.port 原始記錄中的 port 欄位值
特殊權限 about.labels.Privileged.value 如果 Privileged 為 true,則對應為「True」,否則對應為「False」
proto network.ip_protocol 原始記錄中的 proto 欄位值
通訊協定 network.ip_protocol 如果 protocol 是「TCP」或「UDP」,則從原始記錄對應為 protocol 欄位
PWD target.file.full_path 原始記錄中的 PWD 欄位值
Raw Data target.resource.attribute.labels.raw_Data.value 原始記錄中的 Raw Data 欄位值
raw-query additional.fields.Raw Query.value.string_value 原始記錄中的 raw-query 欄位值
ruleName security_result.rule_name 原始記錄中的 ruleName 欄位值
server-group additional.fields.serve_group_label.value.string_value 原始記錄中的 server-group 欄位值
service-name additional.fields.service_name_label.value.string_value 原始記錄中的 service-name 欄位值
Service Type additional.fields.Service Type.value.string_value 原始記錄中的 Service Type 欄位值
大小 network.received_bytes 原始記錄中的 size 欄位值
Stored Proc about.labels.Stored_Proc.value 如果 Stored Proc 為 true,則對應為「True」,否則對應為「False」
Table Group target.group.group_display_name 原始記錄中的 Table Group 欄位值
時間戳記 metadata.event_timestamp 原始記錄中的 timestamp 欄位值
network.email.to to 中移除「<」和「>」,然後對應至 network.email.to
使用者 principal.user.userid、target.user.userid 如果 USER 不為空且 USER 為「admin」,則將原始記錄中的 USER 欄位對應至 target.user.userid。否則,如果 USER 不為空白,則將原始記錄中的 USER 欄位對應至 principal.user.userid
user-authenticated security_result.detection_fields.user_authenticated.value 原始記錄中的 user-authenticated 欄位值
user-group additional.fields.user_group_label.value.string_value 原始記錄中的 user-group 欄位值
使用者名稱 principal.user.user_display_name 原始記錄中的 username 欄位值
usrName principal.user.userid 原始記錄中的 usrName 欄位值
extensions.auth.mechanism 如果 description 包含「authentication failure」、「check pass; user unknown」、「Invalid user」、「invalid user」或 error 不為空白,則會硬式編碼為「USERNAME_PASSWORD」
extensions.auth.type 如果 has_principal 為「true」,且 has_target 為「true」,且 event-type 為「Login」,則會硬式編碼為「AUTHTYPE_UNSPECIFIED」
metadata.event_type 如果 PWD 不為空白,則硬式編碼為「PROCESS_OPEN」。如果 message 包含「starting」,或 application 為「pman」、「CROND」或「run-parts」,且 event_type 為空白,則會硬式編碼為「PROCESS_OPEN」。如果 description 是「Syslog connection established」(已建立 Syslog 連線)、「Syslog connection broken」(Syslog 連線已中斷) 或「Syslog connection failed」(Syslog 連線失敗),則會硬式編碼為「NETWORK_CONNECTION」。如果 application 是「postfix/qmgr」、「postfix/local」或「postfix/pickup」,則會硬式編碼為「EMAIL_UNCATEGORIZED」。如果 application 是「postfix/local」或「postfix/pickup」,且 status 是「sent (delivered to mailbox)」,則會硬式編碼為「EMAIL_TRANSACTION」。如果 application 為「sshd」,且 description 不含「check pass; user unknown」、不含「authentication failure」且不含「invalid」,則硬式編碼為「NETWORK_HTTP」。descriptiondescription如果 description 包含「authentication failure」、「check pass; user unknown」、「Invalid user」、「invalid user」或 error 不為空白,則會硬式編碼為「USER_LOGIN」。如果 file_path 不為空白,則硬式編碼為「FILE_SYNC」。如果 message 包含「reconfigure」且 application 為「pman」,則會硬式編碼為「PROCESS_UNCATEGORIZED」。如果 message 包含「exit code 1」,且 application 為「pman」,則會硬式編碼為「PROCESS_TERMINATION」。如果 eventType 不是空白,且 srcIPdstIP 不是空白,則會硬式編碼為「NETWORK_CONNECTION」。如果 has_principal 為「true」、has_target 為「true」,且 event-type 為「Login」,則會硬式編碼為「USER_LOGIN」。如果 has_principal 為「true」、has_target 為「true」,且 protocol 不為空白,則會硬式編碼為「NETWORK_CONNECTION」。如果 has_principal 為「true」,則會硬式編碼為「STATUS_UPDATE」。如果 event_type 為空白或「GENERIC_EVENT」,則會硬式編碼為「GENERIC_EVENT」
metadata.log_type 硬式編碼為「IMPERVA_DB」
metadata.product_name 硬式編碼為「IMPERVA DB」
metadata.vendor_name 硬式編碼為「IMPERVA DB」
security_result.action 如果 description 不包含「authentication failure」、「check pass; user unknown」、「Invalid user」或「invalid user」,且 error 為空白,則會硬式編碼為「ALLOW」。如果 description 包含「authentication failure」、「check pass; user unknown」、「Invalid user」、「invalid user」或 error 不為空白,則會硬式編碼為「BLOCK」
security_result.rule_id 如果 description 包含「alert_score」或「new_alert_score」,請從 description 擷取 ruleid,並對應至 security_result.rule_id

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