前幾天已經完成 SSH 登入失敗的偵測。
目前整個流程可以做到:
SSH 登入異常
↓
Wazuh 偵測
↓
Rule 100002
↓
產生 Alert
↓
Dashboard 顯示事件
這代表 Wazuh 已經可以告訴我:
「這個來源正在進行可疑的 SSH 登入行為。」
但做到這裡,我發現還有一個問題。
知道有人在攻擊,然後呢?
如果每次看到 Alert 之後,都還要人工登入主機、確認來源 IP,再手動進行封鎖,那整個流程仍然相當被動。
所以接下來我要加入 Wazuh 的另一項功能:
Active Response。
Active Response 可以讓 Wazuh 在符合指定條件時,自動執行對應的處理動作。
原本的流程是:
偵測事件
↓
產生 Alert
↓
等待人工處理
加入 Active Response 後,就可以變成:
偵測事件
↓
觸發 Rule
↓
Active Response
↓
執行指定動作
也就是讓系統從:
Detection(偵測)
進一步走向:
Response(回應)
假設今天偵測到 SSH 多次登入失敗。
Wazuh 已經知道:
來源 IP
登入帳號
目標主機
Rule ID
如果最後只是:
Dashboard 跳出 Alert
攻擊來源仍然可能繼續嘗試連線。
因此我希望做到:
SSH 多次登入失敗
↓
Rule 100002
↓
取得來源 IP
↓
Active Response
↓
暫時阻擋來源
這樣系統就不只是「看到問題」,而是可以進一步做出反應。
這也是前面建立自訂 Rule 很重要的原因。
我已經建立:
Rule ID:100002
因此後面可以把 Active Response 與這條 Rule 連接起來。
概念就是:
SSH Login Failed
↓
符合自訂偵測條件
↓
Rule 100002
↓
Active Response
↓
執行封鎖
換句話說,Rule 負責:
什麼時候需要處理?
Active Response 則負責:
觸發之後要做什麼?
兩者的角色並不相同。
Wazuh 的 Active Response 可以搭配不同的 Command。
這次 SSH 測試中,我使用的是:
firewall-drop
目的很直接:
當指定的 SSH Rule 被觸發後,暫時阻擋事件來源 IP。
因此我要建立的完整流程是:
Windows
192.168.212.1
│
│ SSH Login
▼
Ubuntu Agent
192.168.212.128
│
▼
Wazuh
│
▼
Rule 100002
│
▼
Active Response
│
▼
firewall-drop
│
▼
Block Source IP
這也是這次實驗從「偵測」走向「防禦」最重要的一步。
這次實驗我不打算直接永久封鎖來源 IP。
而是設定一段時間後解除封鎖。
概念上就是:
Rule 100002 觸發
↓
封鎖來源 IP
↓
等待指定時間
↓
解除封鎖
這樣做也比較適合實驗環境。
因為如果測試一次就永久封鎖 Windows 攻擊端,後續要重新進行 SSH 測試就會比較麻煩。
目前概念看起來很簡單:
Rule 100002
↓
firewall-drop
↓
Block IP
但實際設定時並不是只要打開一個開關就完成。
還需要處理:
執行哪個 Command?
↓
在哪裡執行?
↓
哪條 Rule 觸發?
↓
封鎖多久?
這些都需要在 Wazuh 的設定檔中指定。
而且後面我實際測試時,也遇到了:
Alert 有出現
↓
Rule 有成功觸發
↓
但是來源 IP 沒有被封鎖
也就是:
偵測成功,不代表 Active Response 一定會成功。
這也成為後面除錯的重要部分。
今天開始進入 Wazuh Active Response。
前面的系統主要做到:
Detect
↓
Alert
接下來則希望變成:
Detect
↓
Alert
↓
Respond
我的目標就是把前面建立的:
Rule 100002
與:
firewall-drop
連接起來。
最後希望達成:
SSH 異常
↓
自動偵測
↓
自動封鎖
下一篇開始進入實作。
先確認 Wazuh 的:
firewall-drop
以及 Active Response Command 的運作方式。
接著準備把:
Rule 100002
正式接到自動封鎖流程上。