昨天我們介紹了 Wazuh 的 Decoder。
當 Ubuntu 產生 SSH 登入失敗紀錄:
Failed password for hacker from 192.168.212.1
Wazuh 可以透過 SSHD Decoder 解析這筆 Log,取得來源 IP、使用者以及事件類型等資訊。
但 Decoder 只負責:
「這筆 Log 是什麼?」
真正決定要不要產生警報的,則是今天的主角:
Wazuh Rule。
Rule 可以簡單理解成 Wazuh 的事件判斷規則。
Decoder 把 Log 解析完成後,Rule Engine 會根據事件內容判斷是否符合特定條件。
整個流程可以想成:
原始 Log
↓
Decoder
↓
解析事件資訊
↓
Rule
↓
判斷事件
↓
Alert
所以 Decoder 與 Rule 的工作其實不同。
Decoder → 看懂 Log
Rule → 判斷 Log
假設 Linux 產生:
Failed password for hacker from 192.168.212.1
首先經過 SSHD Decoder:
SSH Log
↓
SSHD Decoder
↓
辨識為 SSH Authentication Failed
接著 Wazuh Rule Engine 會拿解析後的事件去比對規則。
如果符合某個 SSH Authentication 相關 Rule,就會產生對應的 Security Alert。
因此我們最後才會在 Dashboard 看到這筆事件。
在 Wazuh Dashboard 查看事件時,可以看到:
Rule ID
Rule Level
Description
其中 Rule ID 可以理解成每條規則的識別編號。
例如:
Rule ID:XXXXX
代表這筆事件符合了某一條 Wazuh Rule。
而 Description 則會告訴我們這條規則主要在描述什麼事件。

所以當 Dashboard 出現 Alert 時,我們可以透過 Rule ID 進一步追查:
到底是哪一條規則讓這個 Alert 被觸發?
除了 Rule ID 之外,還會看到:
Rule Level
Wazuh 會使用不同的 Level 表示事件的重要程度。
概念上可以理解成:
較低 Level
↓
一般或較低風險事件
較高 Level
↓
較值得注意的安全事件
因此我們在看 Dashboard 時,不應該只注意:
有沒有 Alert
還需要觀察:
哪條 Rule 被觸發?
Rule Level 是多少?
Description 是什麼?
來源 IP 是誰?
事件發生幾次?
這些資訊放在一起,才能比較完整地理解事件。
這裡就出現一個很重要的問題。
假設:
hacker 密碼輸入錯一次
Wazuh 可以辨識這是一筆 SSH Authentication Failed。
但如果變成:
Failed Login
Failed Login
Failed Login
Failed Login
Failed Login
那麼我們可能希望產生一個更值得注意的警報:
偵測到多次 SSH 登入失敗
這時候 Rule 就不能只判斷:
這是不是 SSH Login Failed?
還需要考慮:
發生幾次?
+
多久內發生?
↓
是否觸發另一條 Rule?
而這正是我後面設定自訂 SSH 偵測規則時碰到的重要概念。
目前整個 SSH 偵測流程已經可以串起來:
Windows SSH Login
↓
密碼輸入錯誤
↓
Ubuntu Authentication Log
↓
Wazuh Agent
↓
SSHD Decoder
↓
解析 SSH Event
↓
Wazuh Rule
↓
Security Alert
也就是說,Wazuh 並不是單純「看到 Log 就叫」。
而是經過:
收集 → 解析 → 規則判斷 → 告警
這幾個步驟。
現在我們已經知道:
一筆 SSH 登入失敗
↓
Decoder
↓
Rule
↓
Alert
但是我的實驗真正想做到的是:
如果短時間內連續出現多次 SSH 登入失敗,再產生更明顯的警報。
這時候就會遇到兩個非常重要的設定:
frequency
timeframe
例如概念上:
短時間內
↓
SSH 登入失敗
SSH 登入失敗
SSH 登入失敗
↓
達到指定次數
↓
觸發 Rule
這也是下一篇要研究的內容。
今天把昨天的 Decoder 再往後推進了一步。
目前我們已經知道:
Log
↓
Decoder
↓
Rule
↓
Alert
其中:
Decoder
→ 負責解析 Log
Rule
→ 負責判斷事件
Alert
→ 呈現最後的安全警報
這樣一來,我們就能理解 Wazuh Dashboard 上的 Alert 並不是憑空產生的。
背後其實有一套完整的 Log 分析與 Rule Matching 流程。
下一篇就要直接回到我的實驗結果。
在 Wazuh Event 中,我可以看到:
frequency = 3
firedtimes = 3
這些數字到底代表什麼?
以及 Wazuh 怎麼從:
單次登入失敗
進一步判斷成:
短時間內多次 SSH 登入失敗
下一篇就來拆解 Wazuh 的事件關聯機制。