前幾天已經完成 SSH 偵測規則,並準備好 Active Response 要使用的條件。
這次的目標是:
Rule 100002
↓
Active Response
↓
firewall-drop
↓
封鎖來源 IP
今天就正式修改 Wazuh 設定,讓前面的「偵測」和後面的「回應」真正連接起來。
首先進入 Wazuh Manager,開啟:
sudo nano /var/ossec/etc/ossec.conf
接著加入 Active Response 設定:
<active-response>
<command>firewall-drop</command>
<location>local</location>
<rules_id>100002</rules_id>
<timeout>60</timeout>
</active-response>

這幾行就是這次自動封鎖的核心設定。
第一個設定:
<command>firewall-drop</command>
指定 Active Response 要執行的 Command。
這次使用:
firewall-drop
也就是當指定 Rule 被觸發後,利用防火牆機制對事件中的來源 IP 進行處理。
因此:
Rule 觸發
↓
取得來源 IP
↓
firewall-drop
↓
加入封鎖
接下來是:
<location>local</location>
location 用來指定 Active Response 執行的位置。
這次設定為:
local
代表回應動作會在產生該事件的 Agent 端執行。
在我的環境中,也就是受監控的 Ubuntu Agent。
因此目標是讓 Ubuntu 在偵測到符合條件的 SSH 行為後,對來源 IP 執行封鎖。
這次最重要的設定之一是:
<rules_id>100002</rules_id>
這代表 Active Response 與前面建立的:
Rule ID:100002
綁定。
所以不是所有 SSH Alert 都會直接執行封鎖,而是:
SSH Event
↓
符合我的偵測條件
↓
Rule 100002
↓
Active Response
這也是為什麼前面要先確認 Rule 100002 能正常觸發。
最後是:
<timeout>60</timeout>
這次設定:
60 秒
也就是採用暫時性的回應方式。
概念上:
Rule 100002 觸發
↓
封鎖 Source IP
↓
等待 60 秒
↓
解除封鎖
對實驗環境來說這樣比較方便,因為封鎖結束後可以再次進行 SSH 測試。
修改設定完成後,需要讓 Wazuh 重新載入設定。
在 Manager 上執行:
sudo systemctl restart wazuh-manager
接著確認服務狀態:
sudo systemctl status wazuh-manager
如果服務正常:
active (running)
代表設定至少已經成功載入,沒有因為設定格式問題造成 Manager 無法啟動。
做到這裡,整個設定已經完成:
Windows
192.168.212.1
│
│ SSH
▼
Ubuntu Agent
192.168.212.128
│
▼
Wazuh 偵測
│
▼
Rule 100002
│
▼
Active Response
│
▼
firewall-drop
│
▼
Block Source IP
│
▼
60 秒後解除
照理來說,接下來只要再次從 Windows 進行 SSH 登入測試,並成功觸發 Rule 100002,來源 IP 就應該被暫時封鎖。
但實際測試後,我遇到了一個問題:
Rule 100002 有觸發
✓
Alert 有出現
✓
來源 IP 被封鎖
✗
也就是:
偵測成功了,但 Active Response 沒有按照預期執行。
這代表問題已經不在前面的 SSH 偵測,而是在 Active Response 的執行流程中。
今天正式把 Active Response 寫進 Wazuh:
<active-response>
<command>firewall-drop</command>
<location>local</location>
<rules_id>100002</rules_id>
<timeout>60</timeout>
</active-response>
四個主要設定分別是:
command
→ 要執行什麼
location
→ 在哪裡執行
rules_id
→ 哪條 Rule 觸發
timeout
→ 封鎖多久
到這裡,我原本以為:
偵測成功
↓
設定完成
↓
自動封鎖成功
但實際結果卻不是這麼順利。
這也讓下一步從「設定功能」正式進入「Debug」。
下一篇就來處理這次實驗中真正遇到的問題:
SSH 測試
↓
Rule 100002 ✓
↓
Alert ✓
↓
Active Response ?
↓
Block IP ✗
既然前面的偵測都正常,問題到底出在哪裡?
接下來開始從 Log 與 Active Response 的執行狀態一步一步往下查。