昨天我們從 Windows 嘗試 SSH 登入 Ubuntu,並故意輸入錯誤密碼。
Linux 最後留下類似這樣的紀錄:
Failed password for hacker from 192.168.212.1 port 55430 ssh2
人看到這一行,很容易理解:
登入結果:失敗
帳號:hacker
來源 IP:192.168.212.1
服務:SSH
但對 Wazuh 來說,一開始收到的其實只是一段 Log。
所以今天要看的問題是:
Wazuh 到底怎麼「看懂」這一行文字?
答案就是 Decoder。
Decoder 可以理解成 Wazuh 的「日誌解析器」。
它的工作不是直接判斷攻擊,而是先從原始 Log 中找出有意義的資訊。
例如:
Failed password for hacker from 192.168.212.1 port 55430 ssh2
經過解析之後,可以取得:
Service → sshd
User → hacker
Source IP → 192.168.212.1
Event → Authentication Failed
也就是把原本的一串文字,轉換成後續規則可以使用的資訊。
目前整個流程就可以再往前走一步:
Windows SSH Login
↓
Ubuntu sshd
↓
Authentication Log
↓
Wazuh Agent
↓
Decoder
↓
解析事件資訊
Decoder 負責的是:
「這筆 Log 在說什麼?」
而不是:
「這是不是攻擊?」
後面這個問題會交給 Rule 處理。
在我的 SSH 測試事件中,回到 Wazuh Dashboard 查看詳細資料,可以看到:
Decoder Name:
SSHD
這代表這筆事件已經被 Wazuh 辨識為 SSHD 相關的日誌。

同一筆事件中,也可以看到 SSH 登入相關資訊,例如使用者與來源 IP。
所以原本 Linux 中的一行:
Failed password for hacker from 192.168.212.1
到了 Wazuh 裡面,就不再只是單純的一串文字。
這兩個概念很容易搞混。
可以把它們簡單分成:
Decoder
↓
「這筆 Log 是什麼?」
Rule
↓
「這筆事件代表什麼?」
例如:
SSH Log
↓
Decoder
↓
辨識 SSH 登入失敗
↓
Rule
↓
判斷是否符合警報條件
↓
Alert
所以 Wazuh 並不是直接從 Log 跳到 Alert。
中間其實還有解析與判斷的過程。
如果 Wazuh 沒有正確解析 Log,就可能不知道:
誰在登入?
從哪個 IP 來?
使用什麼服務?
登入成功還是失敗?
後面的 Rule 自然也很難進行判斷。
所以目前我們已經一路從:
SSH Login
↓
Linux Log
↓
Wazuh Decoder
把資料追到 Wazuh 內部了。
但現在還差最後一個問題:
Wazuh 已經看懂這是一筆 SSH 登入失敗,那它為什麼要產生警報?
這就是 Rule 的工作。
今天認識了 Wazuh 的 Decoder。
它主要負責把:
原始 Log
解析成 Wazuh 可以進一步處理的事件資訊。
目前流程已經變成:
Windows
↓
SSH Login Failed
↓
Ubuntu Authentication Log
↓
Wazuh Agent
↓
SSHD Decoder
↓
解析使用者、來源 IP 等資訊
下一步,就要把解析完成的事件交給 Wazuh Rule Engine。
下一篇繼續追這筆 SSH Event。
看看 Wazuh 在 Decoder 解析完成之後,如何透過 Rule 判斷事件,最後讓我們在 Dashboard 上看到 Security Alert。
Log
↓
Decoder
↓
Rule
↓
Alert