收集 Forescout NAC 記錄
本文說明如何使用 Bindplane,將 Forescout Network Access Control (NAC) 記錄擷取至 Google Security Operations。剖析器會處理 Forescout NAC 的系統記錄和 CEF 格式記錄。它會使用 grok 模式擷取欄位、將欄位對應至統一資料模型 (UDM),並根據關鍵字和擷取的欄位將事件分類,處理登入/登出、網路連線、郵件事件和系統狀態更新。針對處理「CounterACT」和「Virtual Firewall」事件,實作特定邏輯,包括嚴重程度對應和使用者環境資訊擴充。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- Windows 2016 以上版本,或搭載
systemd
的 Linux 主機 - 如果透過 Proxy 執行,防火牆通訊埠已開啟
- 請安裝 ForeScout CounterAct 8.0 以上版本
- 必須安裝 ForeScout CounterAct 核心擴充模組 Syslog 外掛程式 v3.5
- Forescout 裝置和 CounterACT 外掛程式的特殊存取權
取得 Google SecOps 擷取驗證檔案
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「收集代理程式」。
- 下載擷取驗證檔案。將檔案安全地儲存在要安裝 Bindplane 的系統上。
取得 Google SecOps 客戶 ID
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「設定檔」。
- 複製並儲存「機構詳細資料」專區中的客戶 ID。
安裝 Bindplane 代理程式
請按照下列操作說明,在 Windows 或 Linux 作業系統上安裝 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 ingestion_labels: log_type: 'FORESCOUT_NAC' 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
安裝 CounterACT Syslog 外掛程式
- 前往「Forescount Base Plugins」(Forescount 基礎外掛程式) 頁面,然後下載外掛程式 .fpi 檔案。
- 將檔案儲存至安裝 CounterACT Console 的電腦。
- 登入 CounterACT Console。
- 依序選取「選項」>「外掛程式」>「安裝」。
- 瀏覽並選取儲存的外掛程式 FPI 檔案。
- 按一下 [安裝]。
- 接受授權協議,然後繼續操作。
- 安裝完成後,按一下「關閉」。
- 在「外掛程式」窗格中選取外掛程式,然後按一下「開始」。
- 選取要啟動外掛程式的 CounterACT 裝置 (建議在環境中的所有裝置上執行外掛程式)。
- 按一下 [確定]。
- 按一下 [關閉]。
在 Forescout CounterACT Syslog 外掛程式上設定 Syslog
- 在「外掛程式」窗格中,依序點選「系統記錄」>「設定」。
- 在對話方塊中選取任一裝置或 Enterprise Manager,然後按一下「確定」。
- 在「將事件傳送至」中,按一下「新增」。
- 提供下列設定詳細資料:
- 伺服器位址:輸入 Bindplane 代理程式 IP 位址。
- 伺服器通訊埠:輸入 Bindplane 代理程式通訊埠編號 (例如 UDP 的
514
)。 - 伺服器通訊協定:選取「UDP」。
- 身分:任意文字欄位,用於識別系統記錄訊息。
- 選用:設施:Syslog 訊息設施,會以訊息優先順序欄位的一部分傳輸。如果未提及設施值,則會設為
local5
。 - 嚴重性:選取「資訊」。
- 前往「Syslog Trigger」(系統記錄觸發條件) 分頁。
- 請勿選取「Only send messages generated by the "Send Message to Syslog" action」(僅傳送由「Send Message to Syslog」動作產生的訊息) 核取方塊。
- 只勾選「Include timestamp and CounterACT device identifier in all messages」(在所有訊息中加入時間戳記和 CounterACT 裝置 ID) 核取方塊。
- 按一下「選項」,定義會觸發系統記錄訊息的事件類型:
- 包含 NAC 政策記錄。
- 納入 NAC 政策比對/不比對事件。
- 選取其他活動 (如有)。
- 前往「預設動作設定」分頁。
- 提供下列設定詳細資料:
- 伺服器位址:輸入 Bindplane 代理程式 IP 位址。
- 伺服器通訊埠:輸入 Bindplane 代理程式通訊埠編號 (例如 UDP 的
514
)。 - 伺服器通訊協定:選取「UDP」。
- 訊息 ID:任意文字欄位,用於識別 Syslog 訊息。
- 選用:設施:Syslog 訊息設施,會以訊息優先順序欄位的一部分傳輸。如未提及設施值,則會設為
local5
。 - 嚴重性:選取「資訊」。
- 按一下 [確定]。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
act |
security_result.action_details |
直接從 CEF 記錄中的 act 欄位對應。 |
app |
network.application_protocol |
直接從 CEF 記錄中的 app 欄位對應。 |
Available_memory |
additional.fields |
當 event_type 為「系統統計資料」時,從 kv_data 擷取。索引鍵為「可用記憶體」,值為擷取的字串。 |
Available_swap |
additional.fields |
如果 event_type 為「系統統計資料」,則會從 kv_data 擷取。索引鍵為「Available swap」,值為擷取的字串。 |
application_status |
additional.fields |
當 event_type 為「Application status」時,系統會從 kv_data 擷取這項資訊。鍵為「Application status」,值為擷取的字串。 |
Assigned_hosts |
additional.fields |
當 event_type 為「Application status」時,系統會從 kv_log_data 擷取這項資訊。索引鍵為「Assigned hosts」,值為擷取的字串。 |
Category |
security_result.description |
security_result.description 的一部分,et_lower 為「nac policy log」(NAC 政策記錄)。與其他詳細資料串連。 |
command |
principal.process.command_line |
如果開頭為「command:」,則會從 CEF 記錄的 rnmsg 欄位擷取。 |
Connected_clients |
additional.fields |
當 event_type 為「Application status」時,系統會從 kv_log_data 擷取這項資訊。鍵為「Connected clients」,值為擷取的字串。 |
CPU_usage |
additional.fields |
如果 event_type 為「系統統計資料」,則會從 kv_data 擷取。索引鍵為「CPU usage」,值為擷取的字串。 |
cs1 |
additional.fields |
直接從 CEF 記錄中的 cs1 欄位對應。索引鍵為「法規遵循政策名稱」。 |
cs2 |
additional.fields |
直接從 CEF 記錄中的 cs2 欄位對應。索引鍵為「法規遵循政策子規則名稱」。 |
cs3 |
additional.fields |
直接從 CEF 記錄中的 cs3 欄位對應。鍵為「Host Compliancy Status」。 |
cs4 |
additional.fields |
直接從 CEF 記錄中的 cs4 欄位對應。鍵為「法規遵循事件觸發條件」。 |
data |
security_result.description |
用於剖析器的各個部分,可擷取資訊並提供給最終 UDM 欄位。不會直接對應至單一 UDM 欄位。 |
details |
security_result.description |
用於在多種情況下填入 security_result.description ,包括剖析「記錄」事件和使用者工作階段變更時。可能會進一步剖析,以取得特定資訊。 |
Destination |
target.ip 、target.hostname |
從 kv_data 或 data 剖析。如果可以轉換為 IP 位址,則會對應至 target.ip 。否則會對應至 target.hostname 。 |
deviceExternalId |
about.asset.asset_id |
直接從 CEF 記錄檔的 deviceExternalId 欄位對應,並加上「Forescout.CommandCenter:」前置字元。 |
dhost |
target.hostname |
直接從 CEF 記錄中的 dhost 欄位對應。 |
dmac |
target.mac |
直接從 CEF 記錄中的 dmac 欄位對應。 |
dntdom |
target.administrative_domain |
直接從 CEF 記錄中的 dntdom 欄位對應。 |
dst |
target.ip |
直接從 CEF 記錄中的 dst 欄位對應。 |
dpt |
target.port |
直接從 CEF 記錄中的 dpt 欄位對應。 |
duser |
target.user.user_display_name |
直接從 CEF 記錄中的 duser 欄位對應。 |
dvc |
about.ip |
直接從 CEF 記錄中的 dvc 欄位對應。 |
dvchost |
about.hostname |
直接從 CEF 記錄中的 dvchost 欄位對應。 |
EM_connection_status |
additional.fields |
當 event_type 為「Application status」時,系統會從 kv_log_data 擷取這項資訊。鍵為「EM connection status」,值為擷取的字串。 |
Engine_status |
additional.fields |
當 event_type 為「Application status」時,系統會從 kv_log_data 擷取這項資訊。鍵為「引擎狀態」,值為擷取的字串。 |
event_type |
metadata.description 、security_result.summary |
從記錄訊息剖析。用於判斷 UDM 事件類型和其他欄位。如果事件是「GENERIC_EVENT」,也會用於說明。 |
eventtype |
additional.fields |
直接從 CEF 記錄中的 eventtype 欄位對應。索引鍵為「eventtype」。 |
externalId |
metadata.product_log_id |
直接從 CEF 記錄中的 externalId 欄位對應。 |
from\[...\] to\[...\] |
principal.ip 、target.ip |
從「from[...] to[...]」模式中擷取來源和目的地 IP。 |
Host |
principal.ip 、principal.hostname |
當 et_lower 為「封鎖事件」時,系統會從 kv_data 剖析此值。如果可轉換為 IP,則對應至 principal.ip ;否則對應至 principal.hostname 。 |
Hostname |
principal.hostname 、principal.asset.hostname |
如果屬性變更偵測事件中存在這些屬性,則會對應至 principal.hostname 和 principal.asset.hostname 。 |
Installed_Plugins |
additional.fields |
當 event_type 為「Application status」時,系統會從 kv_log_data 擷取這項資訊。鍵為「Installed Plugins」,值為擷取的字串。 |
iporhost |
intermediary.ip 、intermediary.hostname |
從「header_data 」剖析。如果可轉換為 IP,則對應至 intermediary.ip ;否則對應至 intermediary.hostname 。 |
Is Virtual Firewall blocking rule |
security_result.action 、security_result.rule_name |
如果為「true」,則將 security_result.action 設為「BLOCK」,並將 security_result.rule_name 設為「Virtual Firewall blocking」。 |
log_description |
security_result.summary |
如果存在,則直接對應至 security_result.summary 。 |
log_type |
metadata.log_type |
設為常數值「FORESCOUT_NAC」。 |
MAC |
principal.mac |
從偵測到的資源變更事件中剖析,並格式化為 MAC 位址。kv_data |
mail_from |
network.email.from |
直接從 mail_details 擷取的 mail_from 欄位對應。 |
mail_subject |
network.email.subject |
直接從 mail_details 擷取的 mail_subject 欄位對應。 |
mail_to |
network.email.to |
直接從 mail_details 擷取的 mail_to 欄位對應。 |
Match |
security_result.rule_name |
當 et_lower 為「nac policy log」時,直接從 Match 欄位對應。 |
metadata.event_type |
metadata.event_type |
由剖析器中的各種條件決定,包括記錄訊息中是否有特定欄位和關鍵字。預設為 GENERIC_EVENT ,並根據剖析的資料更新。例如 USER_LOGIN 、USER_LOGOUT 、NETWORK_CONNECTION 、SCAN_NETWORK 、STATUS_UPDATE 、EMAIL_TRANSACTION 和 USER_UNCATEGORIZED 。 |
metadata.product_name |
metadata.product_name |
大多數事件都設為「FORESCOUT NAC」,如果存在 product 欄位,則設為該欄位的值。如果是 CEF 事件,則會設為「CounterAct」。 |
metadata.vendor_name |
metadata.vendor_name |
大多數事件都設為「FORESCOUT」。如果是 CEF 事件,則取自 cs1Label 欄位 (如有),或設為「ForeScout Technologies」。 |
msg |
metadata.description |
直接從 CEF 記錄中的 msg 欄位對應。 |
pid |
intermediary.process.pid |
直接從 header_data 擷取的 pid 欄位對應。 |
policy_details |
security_result.description |
security_result.description 的一部分,et_lower 為「nac policy log」(NAC 政策記錄)。與其他詳細資料串連。 |
product |
metadata.product_name |
如果存在,則直接對應至 metadata.product_name 。 |
proto |
network.ip_protocol |
直接從 CEF 記錄中的 proto 欄位對應。 |
Reason |
security_result.description |
當 et_lower 為「封鎖事件」時,直接從 Reason 欄位對應。 |
resource |
principal.resource.name |
直接從 CEF 記錄中的 resource 欄位對應。 |
rnmsg |
security_result.description 、principal.process.command_line |
如果開頭為「command:」,則「command:」後方的部分會對應至 principal.process.command_line 。否則會對應至 security_result.description 。 |
rt |
metadata.event_timestamp |
直接從 CEF 記錄的 rt 欄位對應,並轉換為時間戳記。 |
Rule |
security_result.rule_id |
當 et_lower 為「nac policy log」時,直接從 Rule 欄位對應。 |
security_result.severity |
security_result.severity |
衍生自「severity_level 」欄位。0 到 3 對應到「低」,4 到 6 對應到「中」,7 到 8 對應到「高」,9 到 10 對應到「嚴重」。 |
security_result.severity_details |
security_result.severity_details |
直接從 CEF 記錄中的 severity 欄位對應。 |
Service |
target.port 、network.ip_protocol |
系統會剖析網址,擷取通訊埠和通訊協定。通訊埠對應至 target.port ,通訊協定對應至 network.ip_protocol 。 |
session_id |
network.session_id |
直接從「session_id 」欄位對應。 |
severity |
security_result.severity_details |
直接從 CEF 記錄中的 severity 欄位對應。 |
severity_level |
security_result.severity |
用於判斷 security_result.severity 。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。