收集 Sophos Capsule8 記錄
本文說明如何使用 Bindplane 收集 Sophos Linux Sensor (舊稱 Capsule8) 記錄。Sophos Capsule8 會使用 eBPF 技術在核心層級偵測及回應威脅,為 Linux 工作負載、容器和 Kubernetes 環境提供執行階段防護。剖析器會先擷取並建構 JSON 格式的記錄資料,接著,系統會將擷取的欄位對應至 Chronicle 統合資料模型 (UDM) 中的相應屬性,著重於中繼資料、安全性結果和主體資訊。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- Windows 2016 以上版本,或搭載
systemd
的 Linux 主機 - 另一部 Windows 或 Linux 電腦,能夠持續執行 Python
- 如果透過 Proxy 執行,請確保防火牆通訊埠已根據 Bindplane 代理程式需求開啟
- Sophos Central 管理控制台的特殊權限
- 部署在 Linux 系統上的 Sophos Linux Sensor (舊稱 Capsule8)
設定 Sophos Linux Sensor,將快訊匯出至 Sophos Central
設定整合功能前,請先設定 Sophos Linux Sensor,將快訊資料傳送至 Sophos Central。
整合 Sophos Central 的必要條件
- Sophos Linux Sensor 5.5.2.22 以上版本。
- 下列其中一種授權:
- Intercept X Advanced for Server with XDR
- Central Managed Detection and Response Essential Server
- 中央代管偵測與應變完整伺服器
- 您的 Sophos Central MCS 網址和租戶 ID。
- 有效的 SLS 套件存放區 API 權杖。
找出 MCS 網址
- 登入 Sophos Central。
- 依序點選「帳戶名稱」>「支援設定」。
- 尋找以
This account is located
開頭的行,即可瞭解 Sophos Central 帳戶所在的地理區域。 請參閱下表,根據您所在的區域找出 MCS 網址:
區域 MCS 網址 美國 (奧勒岡州) mcs2-cloudstation-us-west-2.prod.hydra.sophos.com 美國 (俄亥俄州) mcs2-cloudstation-us-east-2.prod.hydra.sophos.com 愛爾蘭 mcs2-cloudstation-eu-west-1.prod.hydra.sophos.com 德國 mcs2-cloudstation-eu-central-1.prod.hydra.sophos.com 加拿大 mcs2.stn100yul.ctr.sophos.com 澳洲 mcs2.stn100syd.ctr.sophos.com 亞太地區 (東京) mcs2.stn100hnd.ctr.sophos.com 南美洲 (聖保羅) mcs2.stn100gru.ctr.sophos.com
如果表格中沒有您所在的區域,請使用 mcs2.stn100bom.ctr.sophos.com
做為 MCS 網址。
設定 Sophos Linux Sensor 警報輸出
- 在文字編輯器中開啟
/etc/sophos/runtimedetections.yaml
。 新增下列幾行,將預留位置值替換為實際的 Sophos Central 詳細資料:
send_labs_telemetry: true endpoint_telemetry_enabled: true cloud_meta: auto # Set your customer id: customer_id: "{tenant-id}" mcs: token: "{LINUX_REPO_API_KEY}" url: "{MCS_URL}" enabled: true
儲存變更並結束。
重新啟動感應器:
systemctl restart sophoslinuxsensor
選用:設定 Sophos Linux Sensor,將中繼事件傳送至資料湖
從 5.11.0 版開始,SLS 支援將事件資料傳送至 Sophos Data Lake。
- 在文字編輯器中開啟
/etc/sophos/runtimedetections.yaml
。 新增下列設定:
investigations: reporting_interval: 5s zeromq: topics: - process_events: running_processes_linux_events audit_user_msg: user_events_linux sinks: - backend: mcs name: "mcs" type: mcs flight_recorder: enabled: true tables: - name: "process_events" enabled: true rows: 1000 filter: - match eventType == "PROCESS_EVENT_TYPE_EXEC" - match eventType == "BASELINE_TASK" - default ignore - name: "audit_user_msg" enabled: true rows: 1000 filter: - ignore programName == "cron" - ignore processPid == 1 - default match
儲存變更並結束。
重新啟動感應器:
systemctl restart sophoslinuxsensor
取得 Google SecOps 擷取驗證檔案
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「收集代理程式」。
- 下載擷取驗證檔案。將檔案安全地儲存在要安裝 Bindplane 的系統上。
取得 Google SecOps 客戶 ID
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「設定檔」。
- 複製並儲存「機構詳細資料」專區中的客戶 ID。
安裝 Bindplane 代理程式
Windows 安裝
- 以管理員身分開啟「命令提示字元」或「PowerShell」。
執行下列指令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 安裝
- 開啟具有根層級或 sudo 權限的終端機。
執行下列指令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
其他安裝資源
- 如需其他安裝選項,請參閱這份安裝指南。
設定 Bindplane 代理程式,擷取系統記錄檔並傳送至 Google SecOps
存取設定檔:
- 找出
config.yaml
檔案。通常位於 Linux 的/etc/bindplane-agent/
目錄,或 Windows 的安裝目錄。 - 使用文字編輯器 (例如
nano
、vi
或記事本) 開啟檔案。
- 找出
按照下列方式編輯
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: 'SOPHOS_CAPSULE8' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
重新啟動 Bindplane 代理程式,以套用變更
如要在 Linux 中重新啟動 Bindplane 代理程式,請執行下列指令:
sudo systemctl restart bindplane-agent
如要在 Windows 中重新啟動 Bindplane 代理程式,可以使用「服務」控制台,或輸入下列指令:
net stop BindPlaneAgent && net start BindPlaneAgent
設定 Sophos Central API 存取權
- 登入 Sophos Central Admin。
- 依序選取「通用設定」>「API 權杖管理」。
- 按一下「新增權杖」即可建立新權杖。
- 輸入權杖名稱並點選「儲存」;(系統會顯示所提供權杖的「API 權杖摘要」)。
- 在「API 權杖摘要」部分中,按一下「複製」,複製 API 存取網址和標頭。
在其他機器上安裝 Python
- 開啟網路瀏覽器,然後前往 Python 網站。
- 按一下適用於您作業系統的「下載 Python」。
安裝 Python:
- Windows:
- 執行安裝程式。
- 勾選「Add Python to PATH」方塊。
- 按一下「立即安裝」。
使用 Mac 電腦:
- Python 可能已安裝完畢,如果沒有,您可以使用終端機安裝最新版本。
開啟「終端機」並輸入下列指令:
python --version
- Windows:
下載 Sophos 整合指令碼
- 前往 Sophos Central SIEM Integration GitHub 存放區的 GitHub 頁面。
- 按一下綠色的「Code」按鈕 >「Download ZIP」。
- 解壓縮 ZIP 檔案。
設定指令碼
- 在解壓縮 ZIP 封存檔的目錄中開啟
config.ini
檔案。 - 編輯設定檔:
- API 權杖:輸入先前從 Sophos Central 複製的 API 金鑰。
- 系統記錄檔伺服器詳細資料:輸入系統記錄檔伺服器的詳細資料。
- 主機:輸入 BindPlane 代理程式 IP 位址。
- 「Port」(通訊埠):輸入 BindPlane 代理程式通訊埠編號。
- 通訊協定:輸入 UDP (您也可以視設定使用 TCP 或 TLS)。
- 儲存檔案。
執行指令碼
前往指令碼資料夾。
使用 Windows 電腦:
- 按下 Windows 鍵,然後輸入
cmd
。 - 按一下「命令提示字元」。
- 前往指令碼資料夾:
cd C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integration
- 按下 Windows 鍵,然後輸入
在 macOS 上執行下列操作:
- 依序前往「應用程式」>「工具程式」。
- 開啟 [Terminal]。
- 前往指令碼資料夾:
cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
執行指令碼:
輸入下列指令來啟動指令碼:
python siem.py
在 Windows 上自動執行指令碼 (使用工作排程器):
- 在「開始」選單中輸入「工作排程器」,開啟工作排程器。
- 按一下「建立工作」。
- 在「一般」分頁中:
- 為工作命名 (例如
Sophos AV Log Export
)。
- 為工作命名 (例如
- 在「觸發條件」分頁中:
- 按一下「新增」,然後視需要將工作設為「每日」或「啟動時」執行。
- 在「動作」分頁中:
- 按一下「新增」,然後選取「開始計畫」。
- 瀏覽
python.exe
可執行檔 (通常位於C:/Python/XX/python.exe
)。 - 在「Add arguments」(新增引數) 欄位中,輸入指令碼的路徑 (例如
C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integrationsiem.py
)。
- 按一下「確定」儲存工作。
自動執行指令碼,在 Mac 上持續運作 (使用 Cron Jobs):
- 開啟終端機。
- 輸入
crontab -e
,然後按下 Enter 鍵。 在檔案結尾處加上新的一行:
* * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
按一下「儲存」並結束編輯器。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
類別 | read_only_udm.security_result.category_details | 系統會將類別陣列中的每個元素新增為個別的 category_details。 |
留言 | read_only_udm.security_result.description | 直接從註解欄位對應。 |
信賴度 | read_only_udm.security_result.severity_details | 直接從信賴度欄位對應。 |
說明 | read_only_udm.security_result.summary | 直接從說明欄位對應。 |
incident_id | read_only_udm.security_result.rule_id | 直接從 incident_id 欄位對應。 |
歷程 | principal.process.parent_process... | 系統會使用沿襲陣列填入父項程序鏈,最多可深入 15 個層級。譜系陣列中的每個元素都代表鏈結中的一個程序,索引 0 是直接父項,索引越高則代表更遠的祖先。每個沿襲元素的 pid 和 name 欄位都會對應至 UDM 中的相應欄位。 |
location.container_id | principal.labels.value | 直接從 location.container_id 欄位對應。對應的鍵會設為「container_id」。 |
location.container_labels.maintainer | principal.labels.value | 直接從 location.container_labels.maintainer 欄位對應。對應的鍵會設為「maintainer」。 |
location.container_name | principal.labels.value | 直接從 location.container_name 欄位對應。對應的鍵會設為「container_name」。 |
location.image_id | principal.labels.value | 直接從 location.image_id 欄位對應。對應的鍵會設為「image_id」。 |
location.image_name | principal.labels.value | 直接從 location.image_name 欄位對應。對應的鍵會設為「image_name」。 |
location.kubernetes_namespace | principal.labels.value | 直接從 location.kubernetes_namespace 欄位對應。對應的鍵會設為「kubernetes_namespace」。 |
location.kubernetes_pod | principal.labels.value | 直接從 location.kubernetes_pod 欄位對應。對應的鍵會設為「kubernetes_pod」。 |
matched_rule | read_only_udm.security_result.rule_name | 直接從 matched_rule 欄位對應。 |
metadata.gcp_instance_hostname | principal.hostname | 直接從 metadata.gcp_instance_hostname 欄位對應。 |
metadata.gcp_instance_zone | principal.cloud.availability_zone | 可用區是使用規則運算式,從 metadata.gcp_instance_zone 欄位擷取。 |
metadata.gcp_project_id | principal.cloud.project.name | 直接從 metadata.gcp_project_id 欄位對應。 |
metadata.gcp_project_numeric_id | principal.cloud.project.id | 直接從 metadata.gcp_project_numeric_id 欄位對應。 |
metadata.network_interface_eth0_addr_0 | principal.ip | 系統會使用規則運算式,從 metadata.network_interface_eth0_addr_0 欄位擷取 IP 位址。 |
metadata.network_interface_eth0_hardware_addr | principal.mac | 直接從 metadata.network_interface_eth0_hardware_addr 欄位對應。 |
policy_type | read_only_udm.metadata.product_event_type | 直接從 policy_type 欄位對應。 |
process_info.args | principal.labels.value | process_info.args 陣列中的每個元素都會新增為個別標籤。索引鍵會設為「process_info.arg[index]」,其中 index 是陣列中引數的位置。 |
process_info.name | principal.process.file.full_path | 直接從 process_info.name 欄位對應。 |
process_info.pid | principal.process.pid | 直接從 process_info.pid 欄位對應。 |
process_info.ppid | principal.process.parent_process.pid | 直接從 process_info.ppid 欄位對應。 |
優先順序 | read_only_udm.security_result.severity | 直接從優先順序欄位對應,並轉換為大寫。 |
時間戳記 | read_only_udm.metadata.event_timestamp | 直接從時間戳記欄位對應。 |
uuid | read_only_udm.metadata.product_log_id | 直接從 UUID 欄位對應。 |
不適用 | read_only_udm.metadata.log_type | 設為「SOPHOS_CAPSULE8」常數值。 |
不適用 | read_only_udm.metadata.event_type | 設為「SCAN_HOST」常數值。 |
不適用 | read_only_udm.metadata.vendor_name | 設為「Sophos」常數值。 |
不適用 | read_only_udm.metadata.product_name | 設為「Capsule8」的常數值。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。