前一天已經開始排查 Active Response 沒有成功封鎖來源 IP 的問題。
當時遇到的情況是:
SSH 登入失敗
↓
Wazuh Alert ✓
↓
Active Response ?
↓
來源 IP 未被封鎖 ✗
經過檢查後,我將問題集中在兩個方向:
firewall-drop。今天就針對這兩個部分進行確認與修正,為最後的封鎖測試做準備。
首先回到 Wazuh Dashboard,確認 SSH 登入異常實際觸發的規則。
這次使用的自訂規則為:
Rule ID:100002
接著開啟 Wazuh Manager 的設定檔:
sudo nano /var/ossec/etc/ossec.conf
確認 Active Response 中的設定:
<rules_id>100002</rules_id>
這裡最重要的就是:
Dashboard 實際觸發的 Rule ID,必須與 Active Response 指定的 Rule ID 一致。
如果兩者不同,即使 Dashboard 有 Alert,也不代表會執行封鎖動作。
因此我重新確認了自訂 Rule 與 Active Response 的對應關係,讓系統可以根據正確的規則執行回應。
除了 Rule ID,另一個需要確認的是防火牆環境。
這次使用的 Command 是:
firewall-drop
它會透過系統的防火牆工具處理需要封鎖的來源 IP。
因此我先在 Ubuntu Agent 上檢查:
sudo iptables -L -n
這個指令可以查看目前的 iptables 規則,也能協助確認相關工具是否可以正常使用。
由於不同 Linux 環境的防火牆工具與設定可能有所差異,因此不能只確認 Wazuh 已經產生 Alert,就認為 firewall-drop 一定能正常執行。
還需要確認執行封鎖的端點是否具備對應的工具與權限。
完成前面的檢查後,我重新確認整段設定:
<active-response>
<command>firewall-drop</command>
<location>local</location>
<rules_id>100002</rules_id>
<timeout>60</timeout>
</active-response>
這次設定的目的很明確:
| 設定 | 用途 |
|---|---|
command |
指定 firewall-drop |
location |
在產生事件的端點執行 |
rules_id |
指定 Rule 100002 |
timeout |
設定 60 秒的暫時封鎖 |
另外也需要確認 firewall-drop 的 Command 定義存在,並支援設定的逾時解除機制。
這樣才能讓 Active Response 不只收到觸發條件,也有對應的封鎖動作可以執行。
確認設定後,重新啟動 Wazuh Manager:
sudo systemctl restart wazuh-manager
接著查看服務狀態:
sudo systemctl status wazuh-manager
確認服務正常運作後,才繼續進行測試。
這裡需要注意的是,Manager 正常啟動,只代表服務有成功運作,不等於 Active Response 已經成功封鎖 IP。
真正的封鎖效果還是要透過後續測試驗證。
這次重新整理後,預期的完整流程為:
Windows
192.168.212.1
│
│ SSH 登入測試
▼
Ubuntu Agent
192.168.212.128
│
▼
Wazuh 偵測
│
▼
Rule 100002
│
▼
Active Response
│
▼
firewall-drop
│
▼
暫時封鎖來源 IP
與前一次不同的是,這次已經特別確認 Rule ID 的對應關係,以及封鎖命令所需要的執行環境。
接下來就要重新進行 SSH 登入測試,觀察來源 IP 是否真的會被阻擋。
今天主要針對 Active Response 無法封鎖 IP 的問題,重新確認了規則與執行環境。
這次學到最重要的一點是:
自動回應不只是設定一條 Rule,還必須確認觸發條件、執行位置與封鎖工具都能正確配合。
目前已經完成相關設定的確認與調整,接下來就要透過實際連線測試,驗證整個防禦流程是否成功。
下一篇將再次從 Windows 進行 SSH 登入測試,觀察 Wazuh 觸發 Active Response 後的連線變化。
這次要驗證的不只是:
Alert 有沒有出現?
而是:
來源 IP 是否真的無法繼續連線?
看看前面幾天的設定與除錯,能不能讓 Wazuh 從偵測異常,真正走向自動防禦。