收集 VSFTPD 記錄
本文說明如何使用 Bindplane 將 VSFTPD 記錄擷取至 Google Security Operations。剖析器會使用 grok 模式從記錄中擷取欄位,並將這些欄位對應至 UDM。這項功能可處理各種記錄類型,包括登入、上傳、下載和目錄作業,並透過安全資料傳輸層 (SSL)/傳輸層安全標準 (TLS) 資訊和動作 (允許/封鎖) 等額外脈絡,豐富資料內容。此外,這項功能也會針對不同類型的記錄訊息執行特定轉換,例如擷取回應代碼和說明,以及將檔案大小轉換為整數。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- Windows 2016 以上版本,或搭載
systemd
的 Linux 主機 - 如果透過 Proxy 執行,請確認防火牆通訊埠已開啟
- 透過 VSFTPD 取得主機的特殊存取權
取得 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 log_type: 'VSFTPD' 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
在 VSFTPD 上設定系統記錄
- 登入 VSFTPD 主機。
如要在 Ubuntu/Debian 中安裝 rsyslog,請執行下列指令:
sudo apt install rsyslog
如要在 CentOS/RHEL 中安裝 rsyslog,請執行下列指令:
sudo yum install rsyslog
編輯 vsftpd 設定,以使用 Syslog:
sudo vi /etc/vsftpd.conf
請確認已設定下列參數:
syslog_enable=YES xferlog_enable=NO log_ftp_protocol=YES
儲存並結束。
重新啟動 vsftpd:
sudo systemctl restart vsftpd
編輯 rsyslog 設定,將記錄轉送至 Bindplane 代理程式:
sudo nano /etc/rsyslog.d/90-vsftpd.conf
新增以下指令行,使用
UDP
轉送記錄 (預設通訊埠為514
):if ($programname == 'vsftpd') then @@BINDPLANE_IP:514
請將
BINDPLANE_IP
替換為實際的 Bindplane 代理程式 IP 位址。- 使用
@
代表 UDP,@@
代表 TCP。
- 使用
重新啟動 rsyslog:
sudo systemctl restart rsyslog
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
certificate |
security_result.detection_fields.key :「cert」security_result.detection_fields.value :certificate 的值 |
certificate 欄位的值會對應至含有「cert」鍵的 security_result.detection_fields 物件。 |
cipher |
network.tls.cipher |
cipher 欄位的值會直接對應。 |
client_ip |
principal.ip |
client_ip 欄位的值會直接對應。 |
date |
metadata.event_timestamp |
與 month 、year 和 time 搭配使用,可建構 metadata.event_timestamp 。格式衍生自原始記錄中的 timestamp 欄位,經過剖析後會轉換為時間戳記物件。 |
day |
metadata.event_timestamp |
與 month 、year 和 time 搭配使用,可建構 metadata.event_timestamp 。 |
desc |
metadata.description |
系統會直接對應 desc 欄位的值 (從 type 欄位擷取)。這適用於「MKDIR」、「RMDIR」和「DELETE」作業。 |
description |
network.ftp.command security_result.description target.file.full_path |
如果 type 是「FTP 指令」,則值會對應至 network.ftp.command 。如果 type 是「DEBUG」且不符合特定 SSL 模式,則會對應至 security_result.description 。如果 type 以「OK」開頭,但不是「OK LOGIN」,且記錄檔說明檔案作業 (MKDIR、RMDIR、DELETE),則會對應至 target.file.full_path 。 |
file_name |
target.file.full_path |
file_name 欄位的值會直接對應。 |
file_size |
network.received_bytes network.sent_bytes |
如果 type 是「OK DOWNLOAD」或「FAIL DOWNLOAD」,系統會將值轉換為不帶正負號的整數,並對應至 network.received_bytes 。如果 type 是「OK UPLOAD」或「FAIL UPLOAD」,系統會將值轉換為不帶正負號的整數,並對應至 network.sent_bytes 。如果 type 為「OK LOGIN」,請設為「USER_LOGIN」。如果 type 與檔案作業相關 (「OK UPLOAD」、「OK DOWNLOAD」、「FAIL DOWNLOAD」、「OK MKDIR」、「OK RMDIR」、「OK DELETE」、「FAIL UPLOAD」),請設為「FILE_UNCATEGORIZED」。所有其他 type 值都設為「STATUS_UPDATE」。一律設為「VSFTPD」。一律設為「VSFTPD」。一律設為「VSFTPD」。 |
month |
metadata.event_timestamp |
與 day 、year 和 time 搭配使用,可建構 metadata.event_timestamp 。 |
pid |
principal.process.pid |
pid 欄位的值會直接對應。 |
response_code |
network.http.response_code |
response_code 欄位的值會轉換為整數並對應。 |
reused_status |
security_result.detection_fields.key :「重複使用狀態」security_result.detection_fields.value :reused_status 的值 |
reused_status 欄位的值會對應至以「reused status」為鍵的 security_result.detection_fields 物件。 |
speed |
additional.fields.key :「download_speed」或「upload_speed」additional.fields.value.string_value :speed 的值 |
如果 type 是「OK DOWNLOAD」或「FAIL DOWNLOAD」,則值會對應至 additional.fields ,且鍵為「download_speed」。如果 type 為「OK UPLOAD」或「FAIL UPLOAD」,則值會對應至 additional.fields ,並使用「upload_speed」鍵。 |
ssl_shutdown_state |
security_result.detection_fields.key : "SSL Shutdown State"security_result.detection_fields.value : value of ssl_shutdown_state |
ssl_shutdown_state 欄位的值會對應至以「SSL Shutdown State」為鍵的 security_result.detection_fields 物件。 |
ssl_version |
network.tls.version |
ssl_version 欄位的值會直接對應。 |
time |
metadata.event_timestamp |
與 day 、month 和 year 搭配使用,可建構 metadata.event_timestamp 。 |
type |
metadata.description security_result.action_details |
type 欄位的值會對應至 metadata.description ,但「OK LOGIN」除外。如果表示允許或封鎖動作 (開頭為「OK」或「FAIL」),也會對應至 security_result.action_details 。 |
userid |
principal.user.userid target.user.userid |
如果 type 是「OK LOGIN」,則值會對應至 target.user.userid 。否則會對應至 principal.user.userid 。 |
year |
metadata.event_timestamp |
與 day 、month 和 time 搭配使用,可建構 metadata.event_timestamp 。如果 type 為「OK LOGIN」,請設為「NETWORK」。如果 type 為「OK LOGIN」,請設為「MACHINE」。如果 type 開頭為「OK」,請設為「ALLOW」。如果 type 開頭為「FAIL」,請設為「BLOCK」。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。