Wazuh Dashboard 是 Wazuh 提供的圖形化管理介面,可以用來查看、搜尋與分析由各個 Agent 收集回來的安全資料。
如果沒有 Dashboard,我們可能需要直接查看大量的 Log 檔案;有了 Dashboard,就能夠透過圖表、搜尋條件與篩選器快速找到重要事件。
Wazuh Dashboard 中可以查看的資訊很多,例如:
| 功能 | 用途 |
|---|---|
| Agents | 查看目前受監控的裝置與連線狀態 |
| Threat Hunting | 搜尋與分析各種安全事件 |
| Vulnerability Detection | 查看系統是否存在已知漏洞 |
| MITRE ATT&CK | 將偵測到的行為對應到攻擊技術 |
| File Integrity Monitoring | 監控重要檔案是否被修改 |
| Configuration Assessment | 檢查系統設定是否符合安全基準 |
今天主要會使用 Agents 與 Threat Hunting。
登入 Wazuh Dashboard 後,可以先查看目前已經加入 Wazuh Server 的 Agent。
進入:
Agents management → Summary
可以看到目前受到 Wazuh 監控的裝置。
正常情況下,前幾天安裝完成的 Agent 應該會顯示為:
Active
這表示:
Agent 正常執行
↓
與 Wazuh Server 保持連線
↓
持續收集系統資料
↓
將資料傳送到 Server
如果顯示為 Disconnected,則代表 Agent 曾經註冊成功,但是目前沒有與 Server 保持正常連線。
因此在進行事件分析之前,先確認 Agent 為 Active 是很重要的一個步驟。
確認 Agent 正常之後,就可以開始查看 Wazuh 收集到的事件。
在 Dashboard 左側選單找到:
Threat intelligence → Threat Hunting
Threat Hunting 可以理解成 Wazuh 中用來「搜尋安全事件」的重要功能。
進入之後通常可以看到大量事件資料,例如:
實際出現哪些事件,會依照 Agent 使用的作業系統以及目前的操作行為而有所不同。
如果使用 Linux Agent,即使目前沒有進行攻擊測試,通常也可以看到許多正常的系統活動。
點開其中一筆事件後,可以看到非常多欄位。
第一次看到可能會覺得有點複雜,但目前先認識幾個重要欄位即可。
| 欄位 | 說明 |
|---|---|
| timestamp | 事件發生時間 |
| agent.name | 產生事件的 Agent |
| agent.id | Agent 編號 |
| rule.id | Wazuh 規則編號 |
| rule.level | 事件嚴重程度 |
| rule.description | 規則描述 |
| decoder.name | 負責解析 Log 的 Decoder |
| full_log | 原始日誌內容 |
例如可能看到:
rule.description:
sshd: authentication failed.
代表 Wazuh 偵測到一次 SSH 驗證失敗事件。
另一筆可能是:
PAM: Login session opened.
代表系統建立了一個登入 Session。
這些描述讓管理者不需要直接閱讀所有原始 Linux Log,也能快速了解系統發生了什麼事情。
這也是 Wazuh 很核心的一個概念。
Agent 本身會從系統中收集各種 Log,例如 Linux 的:
/var/log/auth.log
可能出現:
Failed password for invalid user admin from 192.168.1.100 port 52431 ssh2
對 Linux 管理者來說可能很好理解,但是如果每天有數萬筆 Log,就很難全部人工閱讀。
因此 Wazuh 會經過幾個處理步驟:
Linux 系統
↓
產生原始 Log
↓
Wazuh Agent 收集
↓
傳送至 Wazuh Server
↓
Decoder 解析 Log
↓
Rule 規則比對
↓
判斷事件類型與 Level
↓
產生 Alert
↓
Wazuh Dashboard 顯示
Decoder 的工作主要是:
「看懂 Log 的格式。」
例如從:
Failed password for root from 192.168.1.100
解析出:
使用者:root
來源 IP:192.168.1.100
事件:登入失敗
Decoder 負責解析 Log,而 Rule 則負責判斷這筆 Log 有沒有安全上的意義。
例如:
Failed password
Wazuh 的 Rule 可能會判斷這是一筆:
SSH authentication failed
並給予對應的 Rule ID 與 Level。
Wazuh 的 Rule 通常包含:
Rule ID
Rule Level
Description
Group
Condition
因此可以簡單理解成:
Decoder
「這筆 Log 在說什麼?」
Rule
「這個行為是否值得注意?」
這兩個機制搭配之後,Wazuh 才能把大量原始日誌轉換成比較容易分析的安全資訊。
每一條 Wazuh Rule 都會有一個 Level,用來表示事件的安全重要程度。
Wazuh Rule Level 的範圍為:
0~16
數字越高,通常代表事件的安全重要性越高。
可以先簡化理解為:
| Level | 大致意義 |
|---|---|
| 0 | 忽略事件 |
| 1~2 | 非常低優先度的系統事件 |
| 3~4 | 一般系統事件或低優先度錯誤 |
| 5~7 | 值得注意的事件 |
| 8~11 | 較高風險的安全事件 |
| 12~15 | 高嚴重度事件 |
| 16 | 最高嚴重度 |
例如:
正常登入
與:
短時間大量 SSH 登入失敗
在安全意義上明顯不同,因此 Wazuh 可以透過 Rule Level 幫助管理者決定哪些事件應該優先處理。
不過要特別注意:
Level 高並不等於系統一定已經被入侵。
它代表的是這個事件依照 Wazuh 規則判斷具有較高的安全重要性,仍然需要搭配其他資訊進一步分析。
Wazuh 並不是把所有事件都當成 Alert。
在預設設定中,Wazuh 產生並儲存的 Alert 門檻為:
Level 3
也就是通常只有符合 Level 3 以上規則的事件,才會作為 Alert 儲存。
因此有時候明明系統產生了某個 Log,卻沒有在安全事件中看到它,原因可能就是該事件沒有達到 Alert 的門檻。
這也是避免大量沒有安全意義的系統訊息塞滿 Dashboard 的方法之一。
接著可以從 Threat Hunting 中隨便選擇一筆事件。
例如找到:
sshd: authentication failed.
展開之後,可以觀察:
agent.name
確認是哪一台電腦產生事件。
再看:
rule.id
查看觸發的是哪一條 Wazuh Rule。
接著查看:
rule.level
了解事件的嚴重程度。
最後可以查看:
rule.description
快速理解事件內容。
因此我們可以把一筆 Alert 理解成:
哪一台電腦
↓
什麼時間
↓
發生什麼行為
↓
觸發哪一條 Rule
↓
嚴重程度多少
這幾項資訊也是後續進行事件調查時最基本的資料。
當事件數量開始增加之後,不可能一筆一筆查看,因此搜尋與篩選就非常重要。
例如今天只想查看某一台 Agent 的事件,就可以使用 Agent 相關欄位進行篩選。
如果想尋找 SSH 事件,也可以搜尋:
ssh
或查看相關的 Rule Description。
例如:
authentication failed
就可以更快找到驗證失敗相關事件。
之後當我們開始進行真正的攻擊模擬時,就可以利用這種方式快速找出攻擊所產生的 Alert。
Endpoint
↓
Wazuh Agent
↓
Log Collection
↓
Wazuh Server
↓
Decoder
↓
Rule
↓
Alert
↓
Wazuh Indexer
↓
Wazuh Dashboard
↓
安全事件分析
前面的環境建置其實都是為了最後這一步:
讓我們能夠從大量系統 Log 中找出真正值得注意的安全事件。
接下來就可以進一步製造一些比較明顯的安全行為,例如登入失敗或 SSH 異常,觀察 Wazuh 是否能夠成功偵測並產生 Alert。