收集 BloxOne Threat Defense 記錄
本文說明如何使用 Bindplane,將 BloxOne Threat Defense 記錄擷取至 Google Security Operations。Logstash 剖析器會從以 SYSLOG 或 JSON 格式接收的 BLOXONE DNS 記錄中擷取欄位。系統會先將記錄訊息正規化為 JSON 物件,然後將擷取的欄位對應至 Unified Data Model (UDM),並加入地理位置和 DNS 詳細資料,以利進行安全性分析。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
 - Windows 2016 以上版本,或搭載 
systemd的 Linux 主機 - 如果透過 Proxy 執行,防火牆通訊埠已開啟
 - Infoblox BloxOne 的特殊存取權
 
取得 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: 'BLOXONE' 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
在 Infoblox BloxOne 中設定 Syslog
- 登入 Infoblox 入口網站。
 - 依序前往「設定」>「管理」>「資料連結器」。
 - 選取「目的地設定」分頁標籤。
 - 依序點選「建立」> Syslog。
 - 提供下列設定詳細資料:
- 名稱:提供描述性名稱 (例如 Google SecOps 收集器)。
 - 說明:提供簡短說明。
 - 狀態:選取「啟用」。
 - 標記:按一下「新增」,然後指定下列項目,將鍵與目的地建立關聯:
- KEY:輸入金鑰的描述性名稱。
 - VALUE:輸入金鑰的值。
 
 - 格式:選取「CEF」。
 - 通訊協定:選取「UDP」或「TCP」 (視 Bindplane 代理程式設定而定)。
 - FQDN/IP:輸入 Bindplane 代理程式 IP 位址。
 - 連接埠:輸入 Bindplane 代理程式連接埠 (預設為 UDP 的 
514)。 
 - 按一下「Save & Close」。
 
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 | 
|---|---|---|
additional_list.key | 
這個欄位用於迴圈,可疊代 additional_list 陣列並根據 key 欄位的值擷取資料。不會直接對應至 UDM。 | 
|
additional_list.value | 
principal.location.region_latitude、principal.location.region_longitude、target.location.region_latitude、target.location.region_longitude | 
這個欄位會與 additional_list.key 搭配使用,從 additional_list 陣列中擷取特定值。擷取和對應值的邏輯取決於對應的 key。舉例來說:- 如果 additional_list.key 是 intel:source:ip:geoIP:location,請使用 grok 擷取經緯度值,並分別對應至 principal.location.region_latitude 和 principal.location.region_longitude。- 如果 additional_list.key 為 intel:destination:ip:geoIP:location,請使用 grok 擷取經緯度值,並分別對應至 target.location.region_latitude 和 target.location.region_longitude。 | 
additional_string.key | 
與 additional_list.key 類似,這個欄位用於迴圈,可疊代 additional_string 陣列並根據 key 值擷取資料。不會直接對應至 UDM。 | 
|
additional_string.value | 
additional.fields.value.string_value,principal.location.country_or_region,target.location.country_or_region,src.ip,src.port,src.hostname,network.ip_protocol | 
與 additional_string.key 搭配使用,可從 additional_string 陣列擷取值。值對應邏輯取決於對應的 key。例如:- 如果 additional_string.key 是 intel:source:ip:ip2asn:start_ip、intel:source:ip:ip2asn:finish_ip、intel:destination:ip:ip2asn:start_ip 或 intel:destination:ip:ip2asn:finish_ip,請將值對應至 additional.fields.value.string_value,並使用對應的鍵。- 如果 additional_string.key 為 intel:source:ip:geoIP:country,請將值對應至 principal.location.country_or_region。- 如果 additional_string.key 為 intel:destination:ip:geoIP:country,請將值對應至 target.location.country_or_region。- 如果 additional_string.key 為 log:source:ip,請將值對應至 src.ip。- 如果 additional_string.key 為 log:source:port,請將值轉換為整數,然後對應至 src.port。- 如果 additional_string.key 為 log:source:hostname,請將值對應至 src.hostname。- 如果 additional_string.key 為 log:cdh:input:protocol,請將值轉換為大寫,然後對應至 network.ip_protocol。 | 
app_category | 
security_result.category_details | 
直接對應。 | 
confidence | 
security_result.confidence | 
根據下列邏輯對應: - 如果 confidence 為 LOW,則對應至 LOW_CONFIDENCE。- 如果 confidence 為 MEDIUM,則對應至 MEDIUM_CONFIDENCE。- 如果 confidence 為 HIGH,則對應至 HIGH_CONFIDENCE。 | 
country | 
principal.location.name | 
直接對應,但僅限 raw.infobloxb1region 空白時。 | 
device | 
principal.ip、principal.asset.ip | 
直接對應,但僅限 raw.dvc 空白時。 | 
dhcp_fingerprint | 
security_result.detection_fields.value | 
直接對應至鍵 dhcp_fingerprint。 | 
dns_view | 
security_result.detection_fields.value | 
直接對應至鍵 dns_view。 | 
endpoint_groups | 
security_result.detection_fields.value | 
直接對應至鍵 endpoint_groups。 | 
event_time | 
metadata.event_timestamp.seconds | 
系統會將其剖析為 ISO8601 時間戳記,並擷取秒數值。只有在 timestamp 欄位空白時才會使用。 | 
feed_name | 
principal.resource.name | 
「feed_name」已對應到「principal.resource.name」。 | 
feed_type | 
principal.resource.attribute.labels.value | 
直接對應至鍵 feed_type。 | 
mac_address | 
principal.mac | 
轉換為小寫後直接對應。 | 
network | 
principal.hostname、principal.asset.hostname | 
直接對應,但前提是 raw.dvchost 和 raw.dvc 皆為空值。 | 
os_version | 
principal.platform_version | 
直接對應。 | 
policy_action | 
security_result.action_details、security_result.action | 
policy_action 直接對應至 security_result.action_details。security_result.action 是根據下列邏輯衍生而來:- 如果 policy_action 是 Redirect 或 Log,則對應至 ALLOW。- 如果 policy_action 為 BLOCK,則對應至 BLOCK。 | 
policy_name | 
security_result.detection_fields.value | 
直接對應至鍵 policy_name。 | 
qname | 
network.dns.questions.name | 
直接對應。 | 
qtype | 
network.dns.questions.type | 
根據下列邏輯對應: - 如果 qtype 為 A,則對應至 1 (轉換為不帶正負號的整數)。- 如果 qtype 為 PTR,則對應至 12 (轉換為不帶正負號的整數)。 | 
raw.act | 
security_result.action_details | 
直接對應。 | 
raw.app | 
network.application_protocol | 
轉換為大寫後直接對應。 | 
raw.deviceeventclassid | 
metadata.product_event_type | 
與 raw.name 串連 (以 - 分隔),並對應至 metadata.product_event_type。 | 
raw.devicevendor | 
metadata.vendor_name | 
直接對應。 | 
raw.deviceproduct | 
metadata.product_name | 
直接對應。 | 
raw.deviceversion | 
metadata.product_version | 
直接對應。 | 
raw.deviceseverity | 
security_result.severity_details、security_result.severity | 
raw.deviceseverity 直接對應至 security_result.severity_details。security_result.severity 是根據下列邏輯衍生而來:- 如果 raw.deviceseverity 位於 [0、1、2、3],則對應至 LOW。- If raw.deviceseverity is in [4, 5, 6], map to MEDIUM.- If raw.deviceseverity is in [7, 8], map to HIGH.- If raw.deviceseverity is in [9, 10], map to CRITICAL. | 
raw.dvc | 
principal.ip、principal.asset.ip | 
直接對應。 | 
raw.dvchost | 
principal.hostname、principal.asset.hostname | 
直接對應,但前提是不等於 raw.dvc。 | 
raw.infobloxb1connectiontype | 
additional.fields.value.string_value | 
直接對應至鍵 infobloxb1connectiontype。 | 
raw.infobloxb1ophname | 
observer.hostname、observer.asset.hostname | 
直接對應。 | 
raw.infobloxb1ophipaddress | 
observer.ip | 
直接對應。 | 
raw.infobloxb1policyname | 
security_result.detection_fields.value | 
直接對應至鍵 infobloxb1policyname。 | 
raw.infobloxdnsqclass | 
dns_question.class、dns_answer.class | 
根據 dns_query_class_mapping.include 檔案中定義的查閱表,衍生 dns_question.class 和 dns_answer.class。 | 
raw.infobloxdnsqtype | 
dns_question.type、dns_answer.type | 
根據 dns_record_type.include 檔案中定義的查閱表,衍生 dns_question.type 和 dns_answer.type。 | 
raw.infobloxdnsrcode | 
network.dns.response_code | 
用於根據 dns_response_code.include 檔案中定義的查閱表衍生 network.dns.response_code。 | 
raw.infobloxpolicyid | 
security_result.detection_fields.value | 
直接對應至鍵 infobloxpolicyid。 | 
raw.msg | 
metadata.description | 
移除開頭和結尾的引號後,raw.msg 會直接對應至 metadata.description。 | 
raw.name | 
metadata.product_event_type | 
與 raw.deviceeventclassid 串連 (以 - 分隔),並對應至 metadata.product_event_type。 | 
rcode | 
security_result.detection_fields.value、network.dns.response_code | 
rcode 會直接對應至 security_result.detection_fields.value,並使用 rcode 做為鍵。如果 rcode 為 NXDOMAIN,則 network.dns.response_code 會設為 3 (轉換為不帶正負號的整數)。 | 
rdata | 
network.dns.answers.data | 
直接對應。 | 
rip | 
target.ip、target.asset.ip | 
直接對應。 | 
severity | 
security_result.severity | 
根據下列邏輯對應: - 如果 severity 為 INFO (不區分大小寫),則對應至 INFORMATIONAL。- 如果 severity 為 HIGH,則對應至 HIGH。 | 
tclass | 
security_result.detection_fields.value | 
直接對應至鍵 tclass。 | 
threat_indicator | 
security_result.detection_fields.value | 
直接對應至鍵 threat_indicator。 | 
timestamp | 
metadata.event_timestamp.seconds | 
系統會將這個值剖析為 ISO8601 時間戳記,並擷取秒數值。 | 
user | 
principal.user.user_display_name | 
直接對應。 | 
user_groups | 
security_result.detection_fields.value | 
直接對應至鍵 user_groups。 | 
| 不適用 | principal.resource.resource_subtype | 
如果 feed_name 不為空白,請設為 Feed。 | 
| 不適用 | metadata.log_type | 
設為 BLOXONE。 | 
| 不適用 | additional.fields.key | 
根據對應的 raw 欄位,設為 infobloxancount、infobloxarcount、infobloxb1connectiontype、infobloxnscount、intel:destination:ip:ip2asn:finish_ip、intel:destination:ip:ip2asn:start_ip、intel:source:ip:ip2asn:finish_ip 或 intel:source:ip:ip2asn:start_ip。 | 
| 不適用 | metadata.event_type | 
如果 has_principal 是 true,則設為 STATUS_UPDATE,否則設為 GENERIC_EVENT。 | 
| 不適用 | network.dns.questions.type | 
設為 1 (適用於 A 記錄) 和 12 (適用於 PTR 記錄),並轉換為不帶正負號的整數。 | 
| 不適用 | network.dns.answers.name、network.dns.answers.type、network.dns.answers.class | 
透過剖析 DNS 回應字串,從 raw.msg 擷取。 | 
| 不適用 | intermediary.hostname、intermediary.ip、intermediary.asset.ip | 
透過剖析 DNS 回應字串,從 raw.msg 擷取。 | 
注意:這個表格只包含對應至 UDM 的欄位。剖析器可能會在內部使用原始記錄中的某些欄位,但不會直接反映在最終的 UDM 輸出內容中。
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。