收集 Forcepoint Web Security 記錄

支援的國家/地區:

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

Forcepoint Web Security 是一種網路 Proxy 和安全閘道,可針對網路存取、安全事件、驗證和政策執行作業,以 CEF (通用事件格式) 產生系統記錄訊息。剖析器會從 CEF 和系統記錄格式的記錄檔中擷取欄位,並對應至統合式資料模型 (UDM)。

事前準備

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

  • Google SecOps 執行個體
  • Windows Server 2016 以上版本,或搭載 systemd 的 Linux 主機
  • Bindplane 代理程式與 Forcepoint Web Security 之間的網路連線
  • 如果透過 Proxy 執行,請確保防火牆通訊埠已根據 Bindplane 代理程式需求開啟
  • Forcepoint Security Manager 或設備管理介面的管理員存取權

取得 Google SecOps 擷取驗證檔案

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「收集代理程式」
  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. 開啟具有根層級或 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

您可以設定 Bindplane 代理程式,透過 TCP (建議) 或 UDP 接收系統記錄訊息。

找出設定檔

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

編輯設定檔

config.yaml 的所有內容替換為所選通訊協定的設定:

  • 選項 A:TCP 設定 (建議)

    receivers:
        tcplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/forcepoint_webproxy:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: FORCEPOINT_WEBPROXY
            raw_log_field: body
    
    service:
        pipelines:
            logs/forcepoint_tcp_to_chronicle:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/forcepoint_webproxy
    
  • 選項 B:UDP 設定

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/forcepoint_webproxy:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: FORCEPOINT_WEBPROXY
            raw_log_field: body
    
    service:
        pipelines:
            logs/forcepoint_udp_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/forcepoint_webproxy
    

設定參數

替換下列預留位置:

  • 接收器設定:

    • listen_address:要接聽的 IP 位址和通訊埠:
      • 0.0.0.0,監聽所有介面 (建議)
      • 通訊埠 514 是標準的系統記錄通訊埠 (在 Linux 上需要根層級權限;非根層級權限請使用 1514)
  • 匯出工具設定:

    • creds_file_path:擷取驗證檔案的完整路徑:
      • Linux/etc/bindplane-agent/ingestion-auth.json
      • WindowsC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id:從 Google SecOps 控制台複製的客戶 ID
    • endpoint:區域端點網址:
      • 美國malachiteingestion-pa.googleapis.com
      • 歐洲europe-malachiteingestion-pa.googleapis.com
      • 亞洲asia-southeast1-malachiteingestion-pa.googleapis.com
      • 如需完整清單,請參閱「區域端點

儲存設定檔

  • 編輯完成後,請儲存檔案:
    • 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"
        

在 Forcepoint Web Security 上設定系統記錄轉送

設定 Forcepoint Web Security,以 CEF (通用事件格式) 格式將記錄轉送至 Bindplane 代理程式。

使用 Forcepoint Security Manager

  1. 使用管理員憑證登入 Forcepoint Security Manager
  2. 依序前往「設定」>「記錄」
  3. 在左側導覽面板中,選取「記錄伺服器」
  4. 按一下「新增」,建立新的記錄伺服器設定。
  5. 請提供下列設定詳細資料:
    • 伺服器類型:選取「Syslog 伺服器」或「CEF 伺服器」
    • 名稱:輸入描述性名稱 (例如 Google Security Operations Bindplane CEF)。
    • 主機:輸入 Bindplane 代理程式 IP 位址或主機名稱。
    • 「Port」(通訊埠):輸入 Bindplane 代理程式通訊埠編號 (例如 514)。
    • 通訊協定:選取與 Bindplane 設定相符的通訊協定:
      • 如果您在 Bindplane 中設定 tcplog 接收器 (建議),請選取「TCP」TCP
      • 如果您在 Bindplane 中設定 udplog 接收器,請選取「UDP」UDP
    • 格式:選取「CEF」(通用事件格式)
    • 設施:選取「Local0」 (或其他可用設施)。
    • 嚴重性:選取「資訊」 (擷取所有記錄層級)。
  6. 在「記錄類別」或「事件類型」下方,選取要轉送的事件:
    • 網路存取記錄 (交易記錄)
    • 安全性事件 (威脅偵測)
    • 驗證事件 (使用者登入/登出)
    • 系統事件 (系統和設定變更)
    • 或者選取「所有事件」,轉送所有可用的記錄類型。
  7. 選用:調整其他設定:
    • 批次大小:設為 1 可即時轉送,設為較高的值則可進行批次處理。
    • 訊息格式:請確認已選取 CEF 格式。
    • 包含使用者資訊:啟用後,記錄中會包含使用者身分。
  8. 按一下「測試連線」,驗證與 Bindplane 代理程式的連線。
  9. 按一下「儲存」即可套用設定。
  10. 按一下「Deploy」,將設定推送至所有 Forcepoint Web Security 閘道。

使用 Forcepoint Web Security Appliance (直接設定)

如果直接在設備上設定:

  1. 登入 Forcepoint Web Security Appliance 管理介面。
  2. 依序前往「系統」>「記錄伺服器」
  3. 按一下「新增」或「編輯」,即可建立或修改記錄伺服器。
  4. 請提供下列設定詳細資料:
    • 伺服器位址:輸入 Bindplane 代理程式 IP 位址。
    • 「Port」(通訊埠):輸入 514 (或自訂通訊埠)。
    • 通訊協定:選取「TCP」或「UDP」,與 Bindplane 設定相符。
    • 格式:選取「CEF」或「Common Event Format」
    • 設施:選取「Local0」
  5. 在「記錄類型」下方,選取要轉送的記錄:
    • 存取記錄
    • 安全性記錄
    • 管理員記錄
  6. 按一下「套用」或「儲存」
  7. 如果使用多部家電,請在每部家電上重複執行這項設定。

UDM 對應表

記錄欄位 UDM 對應 邏輯
action security_result.summary 如果 action_msg 不為空白,則會對應至 security_result.summary。否則,如果 action 不是空白,就會對應至 security_result.summary。否則,如果 act 不是空白,則會對應至 security_result.summary
action_msg security_result.summary 如果 action_msg 不為空白,則會對應至 security_result.summary。否則,如果 action 不是空白,就會對應至 security_result.summary。否則,如果 act 不是空白,則會對應至 security_result.summary
app target.application 如果 destinationServiceName 不為空白,則會對應至 app_name。否則,如果 app 不為空白且不含 http 或 HTTP,則會對應至 app_name。最後,app_name 會對應到 target.application
bytes_in network.received_bytes 如果 in 不為空白,則會對應至 bytes_in。最後,bytes_in 會對應到 network.received_bytes
bytes_out network.sent_bytes 如果 out 不為空白,則會對應至 bytes_out。最後,bytes_out 會對應到 network.sent_bytes
cat security_result.category_details 如果 cat 不為空白,則會對應至 category。最後,category 會對應到 security_result.category_details
category_no security_result.detection_fields.value 如果 category_no 不為空白,系統會將其對應至 security_result.detection_fields.value,並使用鍵 Category Number
cn1 security_result.detection_fields.value 如果 cn1 不為空白,系統會將其對應至 security_result.detection_fields.value,並使用鍵 Disposition Number
ContentType target.file.mime_type 如果 contentType 不為空白,則會對應至 ContentType。最後,ContentType 會對應到 target.file.mime_type
cs1 target_role.description cs1」已對應到「target_role.description」。
cs2 security_result.category_details 如果 cs2 不為空白且不是 0,則會對應至 security_result.category_details,並加上前置字串 Dynamic Category:
cs3 target.file.mime_type cs3」已對應到「target.file.mime_type」。
description metadata.description 如果 description 不為空白,則會對應至 metadata.description
destinationServiceName target.application 如果 destinationServiceName 不為空白,則會對應至 app_name。最後,app_name 會對應到 target.application
deviceFacility metadata.product_event_type 如果 product_eventdeviceFacility 不是空白,系統會以 - 串連兩者,並對應至 metadata.product_event_type。否則,product_event 會對應至 metadata.product_event_type
disposition security_result.detection_fields.value 如果 disposition 不為空白,系統會將其對應至 security_result.detection_fields.value,並使用鍵 Disposition Number
dst target.ip 如果 dst 不為空白,但 dvchost 為空白,則會對應至 dst_ip。最後,dst_ip 會對應到 target.ip
dst_host target.hostname 如果 dst 不為空白,但 dvchost 為空白,則會對應至 dst_host。最後,dst_host 會對應到 target.hostname
dst_ip target.ip 如果 dst 不為空白,但 dvchost 為空白,則會對應至 dst_ip。最後,dst_ip 會對應到 target.ip
dst_port target.port 如果 dst 不為空白,但 dvchost 為空白,則會對應至 dst_port。最後,dst_port 會對應到 target.port
duration network.session_duration.seconds 如果 duration 不為空白且不是 0,則會對應至 network.session_duration.seconds
dvchost intermediary.ip 如果 dvchost 不為空白,則會對應至 int_ip。最後,如果 int_ip 是有效的 IP 位址,則會對應至 intermediary.ip,否則會對應至 intermediary.hostname
file_path target.file.full_path 如果 file_path 不為空白,則會對應至 target.file.full_path
host principal.ip 如果 host 不為空白,則會對應至 src。最後,src 會對應到 principal.ip
http_method network.http.method 如果 requestMethod 不為空白,則會對應至 http_method。否則,如果 method 不是空白,就會對應至 http_method。最後,http_method 會對應到 network.http.method
http_proxy_status_code network.http.response_code 如果 http_response 為空白、0-,且 http_proxy_status_code 不為空白,則會對應至 network.http.response_code
http_response network.http.response_code 如果 http_response 不為空值、不是 0,也不是 -,則會對應至 network.http.response_code
http_user_agent network.http.user_agent 如果 http_user_agent 不為空白且不是 -,則會對應至 network.http.user_agent
in network.received_bytes 如果 in 不為空白,則會對應至 bytes_in。最後,bytes_in 會對應到 network.received_bytes
int_host intermediary.hostname 如果 int_ipint_host 皆不為空值,且 int_hostint_ip 不同,則會對應至 intermediary.hostname
int_ip intermediary.ip 如果 dvchost 不為空白,則會對應至 int_ip。最後,如果 int_ip 是有效的 IP 位址,則會對應至 intermediary.ip,否則會對應至 intermediary.hostname
level target_role.name 如果 level 不為空白,但 role 為空白,則會對應至 role。最後,role 會對應到 target_role.name
log_level security_result.severity 如果 severity1,或 log_level 包含 info,或 message 包含 notice,則 security_result.severity 會設為 INFORMATIONAL。如果 severity7,則 security_result.severity 會設為 HIGH
loginID principal.user.userid 如果 loginID 不為空白,則會對應至 user。最後,如果 user 不是空白且不是 -,且不包含 LDAP,則會對應至 principal.user.userid
method network.http.method 如果 requestMethod 不為空白,則會對應至 http_method。否則,如果 method 不是空白,就會對應至 http_method。最後,http_method 會對應到 network.http.method
NatRuleId security_result.detection_fields.value 如果 NatRuleId 不為空白,系統會將其對應至以 NatRuleId 為鍵的 security_result.detection_fields.value
out network.sent_bytes 如果 out 不為空白,則會對應至 bytes_out。最後,bytes_out 會對應到 network.sent_bytes
pid target.process.pid 如果 pid 不為空白,則會對應至 target.process.pid
policy target_role.description 如果 Policy 不為空白,則會對應至 policy。如果 policy 不為空白且不是 -,則會對應至 target_role.description
Policy target_role.description 如果 Policy 不為空白,則會對應至 policy。如果 policy 不為空白且不是 -,則會對應至 target_role.description
product_event metadata.product_event_type 如果 product 不為空白,則會對應至 product_event。如果 product_eventdeviceFacility 不是空白,系統會以 - 串連兩者,並對應至 metadata.product_event_type。否則,product_event 會對應至 metadata.product_event_type
proxyStatus-code network.http.response_code 如果 http_response 為空白、0-,且 http_proxy_status_code 為空白但 proxyStatus-code 不為空白,則會對應至 network.http.response_code
refererUrl network.http.referral_url 如果 refererUrl 不為空白且不是 -,則會對應至 network.http.referral_url
requestClientApplication network.http.user_agent 如果 requestMethod 不為空白,則會對應至 http_user_agent。最後,http_user_agent 會對應到 network.http.user_agent
requestMethod network.http.method 如果 requestMethod 不為空白,則會對應至 http_method。最後,http_method 會對應到 network.http.method
role target_role.name 如果 level 不為空白,但 role 為空白,則會對應至 role。最後,role 會對應到 target_role.name
RuleID security_result.rule_id 如果 RuleID 不為空白,則會對應至 security_result.rule_id
serverStatus-code network.http.response_code 如果 http_response 為空白、0-,且 http_proxy_status_code 為空白但 proxyStatus-code 不為空白,則會對應至 network.http.response_code
severity security_result.severity 如果 severity1,或 log_level 包含 info,或 message 包含 notice,則 security_result.severity 會設為 INFORMATIONAL。如果 severity7,則 security_result.severity 會設為 HIGH
spt principal.port 如果 spt 不為空白,則會對應至 src_port。最後,src_port 會對應到 principal.port
src principal.ip 如果 src_host 不為空白,則會對應至 source_ip_temp。如果 source_ip_temp 是有效的 IP 位址,且 src 為空,則會對應至 src。如果 host 不為空白,則會對應至 src。最後,src 會對應到 principal.ip
src_host principal.hostname 如果 src_host 不為空白,則會對應至 source_ip_temp。如果 source_ip_temp 不是有效的 IP 位址,則會對應至 principal.hostname。如果 source_ip_temp 是有效的 IP 位址,且 src 為空,則會對應至 src。最後,src 會對應到 principal.ip
src_port principal.port 如果 src_port 不為空白,則會對應至 principal.port
suser principal.user.userid 如果 loginID 不為空白,則會對應至 user。如果 suser 不為空白,則會對應至 user。最後,如果 user 不是空白且不是 -,且不包含 LDAP,則會對應至 principal.user.userid
url target.url 如果 url 不為空白,則會對應至 target.url
user principal.user.userid 如果 loginID 不為空白,則會對應至 user。如果 suser 不為空白,則會對應至 user。否則,如果 usrName 不是空白,就會對應至 user。最後,如果 user 不是空白且不是 -,且不包含 LDAP,則會對應至 principal.user.userid
usrName principal.user.userid 如果 loginID 不為空白,則會對應至 user。如果 suser 不為空白,則會對應至 user。否則,如果 usrName 不是空白,就會對應至 user。最後,如果 user 不是空白且不是 -,且不包含 LDAP,則會對應至 principal.user.userid
when metadata.event_timestamp 如果 when 不為空白,系統會剖析並對應至 metadata.event_timestamp
不適用 metadata.log_type FORCEPOINT_WEBPROXY 會硬式編碼至 metadata.log_type
不適用 metadata.product_name Forcepoint Webproxy 會硬式編碼至 metadata.product_name
不適用 metadata.vendor_name Forcepoint 會硬式編碼至 metadata.vendor_name
不適用 network.application_protocol 如果 dst_port80,則 network.application_protocol 會設為 HTTP。如果 dst_port443,則 network.application_protocol 會設為 HTTPS
不適用 principal.user.group_identifiers 如果 user 不為空白且不是 -,並包含 LDAP,系統會擷取使用者字串的 OU 部分,並對應至 principal.user.group_identifiers
不適用 principal.user.user_display_name 如果 user 不為空白且不是 -,並包含 LDAP,系統會擷取使用者字串的使用者名稱部分,並對應至 principal.user.user_display_name
不適用 security_result.action 如果 action_msgactionact 不為空白,系統會根據這些值將 sec_action 設為 ALLOWBLOCK。最後,sec_action 會對應到 security_result.action
不適用 security_result.detection_fields.key 對應 dispositioncn1 時,值 Disposition Number 會硬式編碼到 security_result.detection_fields.key 中。對應 NatRuleId 時,值 NatRuleId 會硬式編碼至 security_result.detection_fields.key。對應 category_no 時,值 Category Number 會硬式編碼至 security_result.detection_fields.key

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