昨天介紹了 Wazuh 的 Active Response。
目前我的目標已經很明確:
SSH 多次登入失敗
↓
Rule 100002
↓
Active Response
↓
firewall-drop
↓
暫時阻擋來源 IP
今天開始進入實作。
在直接修改設定之前,我先確認 Wazuh 要怎麼把「偵測規則」和「封鎖動作」連接起來。
要讓 Wazuh 自動執行封鎖,主要可以拆成:
Command
+
Active Response
第一部分是:
要執行什麼?
第二部分則是:
什麼情況下執行?
在我的實驗中,就是:
Command
→ firewall-drop
觸發條件
→ Rule 100002
最後才組成:
Rule 100002
↓
Active Response
↓
firewall-drop
Wazuh 的設定中可以定義 Active Response 使用的 Command。
這次我要使用:
firewall-drop
它的目的就是在符合條件時,對事件中的來源 IP 執行封鎖動作。
因此 Wazuh 必須先從 Alert 中取得:
Source IP
再交給 Active Response 處理。
整個概念就是:
SSH Event
↓
Source IP:192.168.212.1
↓
Rule 100002
↓
firewall-drop
↓
Block 192.168.212.1
前面進行 Threat Hunting 時,我們已經確認事件中可以取得:
data.srcip
在我的測試環境中,事件來源為:
192.168.212.1
而 Ubuntu Agent 則是:
192.168.212.128
所以這兩個 IP 不能搞混。
192.168.212.1
→ SSH 連線來源
→ 要封鎖的對象
192.168.212.128
→ Ubuntu Agent
→ 被測試的主機
如果 Active Response 無法取得正確的來源 IP,就算 Rule 成功觸發,也沒有正確的目標可以進行封鎖。
前面我們已經驗證:
Rule ID:100002
可以成功產生 Alert。
所以接下來不需要重新設計 SSH 偵測,而是直接利用這條 Rule:
SSH 登入測試
↓
Rule 100002
↓
觸發 Active Response
這樣也讓前面做的自訂 Rule 真正開始發揮作用。
它不再只是:
Rule 100002 → Alert
而是準備變成:
Rule 100002
├──→ Alert
│
└──→ Active Response
↓
firewall-drop
這次是測試環境,所以我不希望來源 IP 被永久封鎖。
我的設計是:
偵測到事件
↓
封鎖來源 IP
↓
等待 60 秒
↓
解除封鎖
也就是使用暫時性的封鎖方式。
這樣等封鎖時間結束後,就可以再次進行 SSH 測試,不需要每次都手動解除規則。
做到這裡,Active Response 所需要的資訊已經準備完成:
偵測規則
→ Rule 100002
來源資訊
→ data.srcip
執行動作
→ firewall-drop
封鎖時間
→ 60 秒
接下來就只差把這些設定真正寫進 Wazuh。
也就是:
Rule 100002
↓
firewall-drop
↓
location
↓
timeout
下一篇就直接修改設定檔。
今天把前面完成的 SSH 偵測與 Active Response 串在一起。
現在整個設計已經變成:
Windows SSH 登入測試
↓
Ubuntu 產生 Log
↓
Wazuh 偵測
↓
Rule 100002
↓
取得 Source IP
↓
Active Response
↓
firewall-drop
↓
暫時封鎖來源 IP
目前還只是把需要的條件準備完成。
下一步,就要真正把 Active Response 寫進 Wazuh 設定檔。
下一篇直接修改 Wazuh 設定:
<active-response>
<command>firewall-drop</command>
<location>local</location>
<rules_id>100002</rules_id>
<timeout>60</timeout>
</active-response>
並逐一確認:
command
location
rules_id
timeout
到底控制了什麼。
正式把:
偵測
和:
自動封鎖
接起來。