前面幾天介紹了 Wazuh 的檔案完整性監控(FIM)、漏洞偵測及漏洞管理,這些功能主要用於發現系統中的安全問題。
然而,當系統偵測到攻擊時,如果只能產生警報,仍需要管理人員進行後續處理。
Wazuh 提供的 Active Response(主動回應) 功能,可以在符合特定安全規則時,自動執行預先設定的處理動作,例如封鎖惡意 IP、停用帳號等,減少人工處理時間。
Active Response 主要透過 Wazuh 的規則偵測與腳本執行機制運作。
其基本流程如下:
系統產生安全事件
↓
Wazuh Agent 收集日誌
↓
Wazuh Server 分析事件
↓
符合特定安全規則
↓
觸發 Active Response
↓
執行對應的防禦腳本
↓
封鎖 IP、停用帳號等
↓
記錄處理結果
例如,當有人持續嘗試透過 SSH 登入伺服器,Wazuh 可以根據登入失敗紀錄判斷是否符合暴力破解攻擊規則。
如果符合設定條件,系統便能自動執行 IP 封鎖腳本,暫時阻止該來源繼續連線。
Wazuh 提供多種預設的回應腳本,能依照不同安全事件執行對應措施。
| 回應方式 | 功能說明 |
|---|---|
| firewall-drop | 透過 iptables 封鎖指定 IP |
| firewalld-drop | 使用 firewalld 封鎖 IP |
| disable-account | 停用指定使用者帳號 |
| netsh.exe | 在 Windows 使用防火牆規則封鎖 IP |
| restart-wazuh | 重新啟動 Wazuh Agent 或 Manager |
其中,firewall-drop 是常見的應用方式,可用來阻擋 SSH 暴力破解等攻擊。
不同腳本有各自的作業系統及環境需求,並不是所有功能都能直接跨平台使用。
Active Response 可以分為兩種主要類型。
Wazuh 的 Active Response 可以透過修改 Server 端的設定檔進行設定。
設定檔位置:
/var/ossec/etc/ossec.conf
以下使用 SSH 暴力破解攻擊作為範例。
<command>
<name>firewall-drop</name>
<executable>firewall-drop</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
此設定代表使用 firewall-drop 腳本封鎖 IP,並允許設定自動解除封鎖的時間。
2. 設定觸發條件
在同一個設定檔的 <ossec_config> 節點中加入:
<active-response>
<disabled>no</disabled>
<command>firewall-drop</command>
<location>local</location>
<rules_id>5763</rules_id>
<timeout>180</timeout>
</active-response>
各項參數說明:
| 參數 | 說明 |
|---|---|
| disabled | 是否停用主動回應功能,no 代表啟用 |
| command | 指定執行的防禦指令 |
| location | 指定執行位置,local 代表產生事件的端點 |
| rules_id | 指定觸發回應的規則 ID |
| timeout | 設定回應持續時間,單位為秒 |
其中,規則 ID 5763 對應 SSH 暴力破解攻擊的偵測規則。
當事件符合該規則時,Wazuh 便會嘗試執行 firewall-drop,封鎖攻擊來源 IP 180 秒。此範例適用於具備相應 iptables 功能的 Linux 環境。
3. 重新啟動 Wazuh Manager
完成設定後,執行:
sudo systemctl restart wazuh-manager
當主動回應功能被觸發時,可以透過日誌確認執行結果。
在 Linux 端點執行:
sudo tail -f /var/ossec/logs/active-responses.log
如果封鎖動作成功執行,就能在日誌中找到對應的回應紀錄。
另外,也可以透過 Wazuh Dashboard 查看相關安全事件,例如:
雖然自動化防禦可以提升事件處理效率,但設定不當也可能影響正常服務。
例如,如果將一般登入失敗事件直接設定為封鎖條件,可能導致正常使用者因輸入錯誤密碼而被阻擋。
因此,使用時應注意以下事項: