收集 Symantec CloudSOC CASB 記錄
本文說明如何使用 Bindplane,將 Symantec CloudSOC 記錄擷取至 Google Security Operations。剖析器會從 Syslog 或 JSON 格式訊息擷取記錄。這項函式會執行多項重要作業:剖析訊息欄位、視需要將訊息轉換為 JSON 格式、擷取欄位、將欄位對應至 Unified Data Model (UDM),以及使用時間戳記和安全性結果詳細資料等額外內容擴充事件。剖析器也會處理各種記錄格式,並根據 activity_type
欄位執行特定動作,正確分類事件。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- Windows 2016 以上版本,或搭載
systemd
的 Linux 主機 - 如果透過 Proxy 執行,防火牆通訊埠已開啟
- Symantec CloudSOC 的特殊存取權
取得 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: '/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 ingestion_labels: log_type: 'SYMANTEC_CASB' raw_log_field: body 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
在 Symantec CASB 中設定系統記錄檔
- 登入 Symantec CloudSOC 主機。
執行下列指令,找出系統使用的記錄器:
ls –d /etc/*syslog*
根據前一個指令的回應,前往對應的章節:
- syslog.conf:舊版系統記錄檔。
- syslog-ng.conf:Syslog-ng。
舊版系統記錄設定
使用
vi
編輯器開啟syslogd
檔案,通常位於/etc/default
目錄中。vi /etc/default/syslogd
確認
SYSLOGD
值包含-r
旗標。SYSLOGD="-r"
儲存檔案並結束編輯器:
- 按下 Esc 鍵,切換至指令模式。
- 按下
:
(半形冒號) 開啟提示列。 - 在半形冒號後輸入
wq
,然後按 Enter 鍵。
使用
vi
編輯器開啟services
檔案,該檔案通常位於/etc
目錄中。vi /etc/services
編輯系統記錄服務的通訊埠值:
syslog 514/udp
儲存檔案並結束編輯器:
- 按下 Esc 鍵,切換至指令模式。
- 按下
:
(半形冒號) 開啟提示列。 - 在半形冒號後輸入
wq
,然後按 Enter 鍵。
使用
vi
編輯器開啟syslog.conf
檔案,該檔案通常位於/etc
目錄中。vi /etc/syslog.conf
更新設定,將所有記錄轉寄至 Google SecOps。
*.* @bindplane_agent_host
儲存檔案並結束編輯器:
- 按下 Esc 鍵,切換至指令模式。
- 按下
:
(半形冒號) 開啟提示列。 - 在半形冒號後輸入
wq
,然後按 Enter 鍵。
使用
vi
編輯器開啟hosts
檔案,該檔案通常位於/etc
目錄中。vi /etc/hosts
為
bindplane_agent_host
建立本機 DNS 項目。0.0.0.0 bindplane_agent_host
儲存檔案並結束編輯器:
- 按下 Esc 鍵,切換至指令模式。
- 按下
:
(半形冒號) 開啟提示列。 - 在半形冒號後輸入
wq
,然後按 Enter 鍵。
重新啟動 syslog daemon 服務。
Syslog-ng 設定
使用
vi
編輯器開啟syslog-ng.conf
檔案,該檔案通常位於/etc
目錄中。vi /etc/syslog-ng.conf
在檔案結尾新增下列程式碼:
destination d____ { udp("bindplane_agent_host" port(514));}; log {source(s_src); destination(d____);};
使用
vi
編輯器開啟hosts
檔案,該檔案通常位於/etc
目錄中。vi /etc/hosts
為
bindplane_agent_host
建立本機 DNS 項目。0.0.0.0 bindplane_agent_host
儲存檔案並結束編輯器:
- 按下 Esc 鍵,切換至指令模式。
- 按下
:
(半形冒號) 開啟提示列。 - 在半形冒號後輸入
wq
,然後按 Enter 鍵。
重新啟動 syslog-ng Daemon 服務。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
_domain |
target.hostname |
_domain 欄位的值 |
_domain |
target.asset.hostname |
_domain 欄位的值 |
_id |
metadata.product_log_id |
_id 欄位的值 |
actions_taken |
security_result.detection_fields[].value |
actions_taken 欄位的值。系統會動態產生金鑰,格式為 Action_ + 索引。 |
activity_type |
metadata.product_event_type |
如果 product_data.activity_type 為空,則為 activity_type 欄位的值;如果 product_data.activity_type 不為空,則為 product_data.activity_type 的值。 |
collector_device_ip |
principal.ip |
collector_device_ip 欄位的值 (如果不是 Unknown IP )。 |
collector_device_ip |
principal.asset.ip |
collector_device_ip 欄位的值 (如果不是 Unknown IP )。 |
collector_device_name |
principal.hostname |
collector_device_name 欄位的值。 |
collector_device_name |
principal.asset.hostname |
collector_device_name 欄位的值。 |
content_checks.dlp.raw_response.contentdetails[].contentBlockId |
security_result.detection_fields[].value |
content_checks.dlp.raw_response.contentdetails[].contentBlockId 的值。系統會動態產生金鑰,格式為 contentBlockId_ + 索引。 |
content_checks.dlp.raw_response.contentdetails[].topLevelFileType |
security_result.detection_fields[].value |
content_checks.dlp.raw_response.contentdetails[].topLevelFileType 的值。系統會動態產生金鑰,格式為 topLevelFileType_ + 索引。 |
content_checks.dlp.raw_response.requestid |
security_result.detection_fields[].value |
content_checks.dlp.raw_response.requestid 的值。金鑰為 Request ID 。 |
content_checks.dlp.raw_response.responseaction |
security_result.detection_fields[].value |
content_checks.dlp.raw_response.responseaction 的值。金鑰為 Response Action 。 |
content_checks.dlp.raw_response.violation[].name |
security_result.detection_fields[].value |
content_checks.dlp.raw_response.violation[].name 的值。系統會動態產生金鑰,格式為 Violation_Policy_Name_ + 索引。 |
content_checks.dlp.raw_response.violation[].policyId |
security_result.detection_fields[].value |
content_checks.dlp.raw_response.violation[].policyId 的值。系統會動態產生金鑰,格式為 Violation_Policy_ID_ + 索引。 |
content_checks.dlp.updated_timestamp |
additional.fields[].value.string_value |
content_checks.dlp.updated_timestamp 的值。金鑰為 Updated TimeStamp 。 |
content_checks.filename |
target.file.full_path |
content_checks.filename 的值。 |
content_checks.mimetype |
target.file.mime_type |
content_checks.mimetype 的值。 |
content_checks.risktype_list[] |
security_result.detection_fields[].value |
content_checks.risktype_list[] 的值。系統會動態產生金鑰,格式為 RiskType_ + 索引。 |
content_checks.vba_macros.expressions[].values[].key |
security_result.detection_fields[].key |
content_checks.vba_macros.expressions[].values[].key 的值與索引串連。 |
content_checks.vba_macros.expressions[].values[].value |
security_result.detection_fields[].value |
content_checks.vba_macros.expressions[].values[].value 的值。 |
content_checks.vk_content_iq_violations[] |
security_result.detection_fields[].value |
content_checks.vk_content_iq_violations[] 的值。系統會動態產生金鑰,格式為 content_violation_ + 索引。 |
content_checks.vk_dlp_policy_violations[] |
security_result.detection_fields[].value |
content_checks.vk_dlp_policy_violations[] 的值。系統會動態產生金鑰,格式為 dlp_policy_violation_ + 索引。 |
content_checks.vk_encryption |
security_result.detection_fields[].value |
content_checks.vk_encryption 的值。金鑰為 vk_encryption 。 |
content_checks.vk_glba |
security_result.detection_fields[].value |
content_checks.vk_glba 的值。金鑰為 vk_glba 。 |
content_checks.vk_hipaa |
security_result.detection_fields[].value |
content_checks.vk_hipaa 的值。金鑰為 vk_hipaa 。 |
content_checks.vk_pci |
security_result.detection_fields[].value |
content_checks.vk_pci 的值。金鑰為 vk_pci 。 |
content_checks.vk_pii |
security_result.detection_fields[].value |
content_checks.vk_pii 的值。金鑰為 vk_pii 。 |
content_checks.vk_source_code |
security_result.detection_fields[].value |
content_checks.vk_source_code 的值。金鑰為 vk_source_code 。 |
content_checks.vk_vba_macros |
security_result.detection_fields[].value |
content_checks.vk_vba_macros 的值。金鑰為 vk_vba_macros 。 |
content_checks.vk_virus |
security_result.detection_fields[].value |
content_checks.vk_virus 的值。金鑰為 vk_virus 。 |
content_checks.violations |
security_result.detection_fields[].value |
content_checks.violations 的值。金鑰為 violations 。 |
created_timestamp |
additional.fields[].value.string_value |
created_timestamp 的值。金鑰為 Created TimeStamp 。 |
date |
metadata.event_timestamp.seconds |
從 date 欄位擷取的 Epoch 秒數。 |
device_ip |
target.ip |
device_ip 欄位的值 (如果不是 Unknown IP )。 |
device_ip |
target.asset.ip |
device_ip 欄位的值 (如果不是 Unknown IP )。 |
file_size |
target.file.size |
如果前者為空值,則為 file_size 或 product_data.file_size 的值。已轉換為無正負號整數。 |
file_url |
target.file.full_path |
product_data.file_url 的值。 |
group_name |
target.group.group_display_name |
從「group_name 」欄位擷取的顯示名稱。 |
hosts[] |
principal.ip |
以半形逗號分隔的 hosts 欄位值。 |
inserted_timestamp |
additional.fields[].value.string_value |
inserted_timestamp 的值。金鑰為 Inserted TimeStamp 。 |
instance |
principal.hostname |
如果 instance 欄位是陣列,則為第一個值;如果是字串,則為 instance 欄位的值。 |
instance |
principal.asset.hostname |
如果 instance 欄位是陣列,則為第一個值;如果是字串,則為 instance 欄位的值。 |
ioi_code |
security_result.summary |
ioi_code 欄位的值。 |
_latency |
security_result.detection_fields[].value |
_latency 欄位的值。金鑰為 Latency 。 |
locations |
security_result.detection_fields[].value |
locations 欄位的值。金鑰為 Locations 。 |
log_name |
intermediary.asset.asset_id |
從 log_name 欄位擷取的記錄檔 ID,前置字串為 logid: 。 |
mailbox_owner |
target.user.userid |
product_data.mailbox owner 的值。 |
metadata.log_type |
metadata.log_type |
硬式編碼為 SYMANTEC_CASB 。 |
metadata.product_name |
metadata.product_name |
硬式編碼為 SYMANTEC_CASB 。 |
metadata.vendor_name |
metadata.vendor_name |
硬式編碼為 SYMANTEC 。 |
msg |
metadata.description |
msg 欄位的值,或 msg 不存在時 message 欄位的值。 |
name |
security_result.detection_fields[].value |
name 欄位的值。金鑰為 Name 。 |
object_name |
security_result.detection_fields[].value |
object_name 欄位的值。金鑰為 Object Name 。 |
object_type |
target.resource.name |
object_type 欄位的值。 |
org_unit |
security_result.detection_fields[].value |
org_unit 欄位的值。金鑰為 org_unit ID 。 |
policy_action |
security_result.action_details |
policy_action 欄位的值。 |
policy_type |
security_result.detection_fields[].value |
policy_type 欄位的值。金鑰為 policy_type 。 |
policy_violated |
security_result.detection_fields[].value |
policy_violated 欄位的值。金鑰為 policy_violated 。 |
product_data._domain |
target.hostname |
product_data._domain 的值。 |
product_data._domain |
target.asset.hostname |
product_data._domain 的值。 |
product_data.activity_type |
metadata.product_event_type |
product_data.activity_type 的值。 |
product_data.file url |
target.file.full_path |
product_data.file url 的值。 |
product_data.file_size |
target.file.size |
product_data.file_size 的值。 |
product_data.group |
target.group.group_display_name |
product_data.group 的值。 |
product_data.location |
principal.location.country_or_region |
product_data.location 的值。 |
product_data.logon error |
security_result.summary |
product_data.logon error 的值。 |
product_data.mailbox owner |
target.user.userid |
product_data.mailbox owner 的值。 |
product_data.name |
target.file.full_path |
product_data.name 的值。 |
product_data.object_name |
target.file.full_path |
product_data.object_name 的值。 |
product_data.originatingserver product_data.service |
target.application |
product_data.service 的值。 |
product_data.site url |
target.url |
product_data.site url 的值。 |
product_data.target |
target.user.userid |
product_data.target 的值。 |
product_data.useragent |
network.http.user_agent |
product_data.useragent 的值。 |
product_name |
intermediary.application |
product_name 欄位的值。 |
product_uid |
metadata.product_name |
product_uid 欄位的值。 |
responsible_logs |
additional.fields[].value.string_value |
responsible_logs 欄位的值。金鑰為 responsible_logs 。 |
resource_id |
target.resource.product_object_id |
resource_id 欄位的值。 |
risks |
security_result.detection_fields[].value |
risks 欄位的值。金鑰為 Risks 。 |
security_result.action |
security_result.action |
衍生自 product_data.logon error 。如果 product_data.logon error 為 BlockedByConditionalAccess ,請設為 BLOCK 。 |
security_result.severity |
security_result.severity |
如果 severity 欄位的值屬於支援的嚴重程度,則為該值的大寫版本。 |
security_result.severity_details |
security_result.severity_details |
severity 欄位的值 (如果不是支援的嚴重程度)。 |
security_result.summary |
security_result.summary |
ioi_code 欄位的值,或 ioi_code 不存在時的值 product_data.logon error 。 |
service |
target.application |
如果 product_data.service 為空,則 service 欄位的值。 |
site_url |
target.url |
product_data.site url 的值。 |
source |
principal.resource.attribute.labels[].value |
source 欄位的值。金鑰為 Source 。 |
sub_feature |
additional.fields[].value.string_value |
sub_feature 欄位的值。金鑰為 Sub Feature 。 |
target.application |
target.application |
根據product_data.activity_type 和主體與目標的存在狀態推導而來。 |
target.resource.name |
target.resource.name |
根據product_data.activity_type 和主體與目標的存在狀態推導而來。 |
threat_score |
security_result.detection_fields[].value |
threat_score 欄位的值。金鑰為 Threat Score 。 |
transaction_id |
security_result.detection_fields[].value |
transaction_id 欄位的值。金鑰為 Transaction ID 。 |
updated_timestamp |
additional.fields[].value.string_value |
如果前者為空值,則為 updated_timestamp 或 content_checks.dlp.updated_timestamp 的值。金鑰為 Updated TimeStamp 。 |
user |
principal.user.userid |
user 欄位的值。 |
user_email |
target.user.userid |
user_email 欄位的值。 |
user_mail |
target.user.userid |
從 msg 欄位擷取的 user_mail 欄位值。 |
user_name |
principal.user.user_display_name |
user_name 欄位的值。 |
user_uid |
principal.user.userid 或target.user.userid |
user_uid 欄位的值。如果 product_data.activity_type 不是 InvalidLogin 或 Login ,則會對應至 principal.user.userid ,否則會對應至 target.user.userid 。 |
uuid |
intermediary.asset.product_object_id |
uuid 欄位的值。 |
version |
metadata.product_version |
version 欄位的值。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。