Active Response 是 Wazuh 提供的自動化安全回應功能,可以根據規則觸發的警報,自動執行指定腳本或系統指令。
例如,當 Wazuh 偵測到某個 IP 在短時間內多次嘗試登入失敗,就可以透過防火牆暫時阻擋該 IP,減少持續遭受攻擊的風險。
常見的 Active Response 功能如下:
| 回應方式 | 功能說明 |
|---|---|
| 阻擋 IP | 封鎖可疑來源的網路連線 |
| 停用帳號 | 暫時停用具有異常行為的使用者帳號 |
| 執行自訂腳本 | 根據事件執行指定的處理程序 |
| 重新啟動服務 | 在特定條件下重新啟動服務 |
| 傳送通知 | 透過整合腳本將事件通知管理員 |
Wazuh 提供部分內建回應腳本,也支援管理員自行撰寫腳本,以符合不同環境的資安需求。
Active Response 的主要運作流程如下:
系統產生安全日誌
↓
Wazuh Agent 收集日誌
↓
Wazuh Manager 分析日誌
↓
Decoder 解析日誌內容
↓
Rules 判斷是否符合攻擊條件
↓
觸發安全警報
↓
Active Response 執行防護措施
↓
阻擋可疑 IP 或執行指定指令
其中,Rules 負責判斷事件是否符合條件,而 Active Response 則負責執行對應的處理動作。
兩者搭配使用,可以讓 Wazuh 從單純的監控工具,進一步具備自動化事件回應能力。
接下來以 Linux 環境為例,示範如何利用 Active Response 自動封鎖可疑 IP。
本次使用 Wazuh 內建的 firewall-drop 腳本,並以 Wazuh 內建 SSH 暴力破解偵測規則 5763 作為觸發條件。
sudo nano /var/ossec/etc/ossec.conf
這是 Wazuh Manager 的主要設定檔,用來管理日誌收集、規則處理與 Active Response 等功能。
建議修改前先備份:
sudo cp /var/ossec/etc/ossec.conf \
/var/ossec/etc/ossec.conf.bak
<command>
<name>firewall-drop</name>
<executable>firewall-drop</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
各項參數功能如下:
| 參數 | 功能 |
|---|---|
| name | 設定回應指令名稱 |
| executable | 指定執行的腳本 |
| timeout_allowed | 是否允許逾時後撤銷回應動作 |
firewall-drop 是 Wazuh 提供的內建腳本,主要透過 Linux 的 iptables 防火牆封鎖指定 IP。
如果原本的設定檔已經存在相同的 區塊,就不需要重複新增。
3. 新增 Active Response 設定
接著,在 <ossec_config> 區塊中新增:
<active-response>
<disabled>no</disabled>
<command>firewall-drop</command>
<location>local</location>
<rules_id>5763</rules_id>
<timeout>180</timeout>
</active-response>
這項設定代表,當 Wazuh 偵測到符合規則 5763 的 SSH 暴力破解事件時,會在產生警報的受監控端點上執行 firewall-drop,將攻擊來源 IP 暫時封鎖 180 秒。
相關參數說明如下:
| 參數 | 設定值 | 功能 |
|---|---|---|
| disabled | no | 啟用 Active Response |
| command | firewall-drop | 指定封鎖 IP 的腳本 |
| location | local | 在觸發警報的端點執行 |
| rules_id | 5763 | 指定 SSH 暴力破解偵測規則 |
| timeout | 180 | 設定封鎖時間為 180 秒 |
其中,location 可以根據需求調整執行位置,例如在 Wazuh Server 或指定 Agent 上執行。
本次使用 local,讓防護動作直接在受監控的 Linux 系統上執行。
完成設定後,需要重新啟動 Wazuh Manager。
sudo systemctl restart wazuh-manager
接著確認服務狀態:
sudo systemctl status wazuh-manager
如果服務正常啟動,就可以進一步測試 Active Response。
另外,也可以確認受監控 Linux 主機是否具有對應的回應腳本:
ls /var/ossec/active-response/bin/
由於 firewall-drop 依賴 iptables,測試前也應確認端點具有必要的防火牆工具及執行權限。
本次測試的目標,是確認當 Wazuh 偵測到 SSH 暴力破解事件後,能否自動封鎖攻擊來源 IP。
建議在隔離的虛擬機或授權測試環境進行,避免影響正式系統。
sudo tail -f /var/ossec/logs/active-responses.log
如果 Active Response 成功執行,就能在日誌中觀察到相關回應紀錄。
3. 檢查防火牆規則
可以透過以下指令查看 iptables 規則:
sudo iptables -L -n
若防護動作成功,應能在對應規則中看到被封鎖的來源 IP。
當設定的 180 秒結束後,支援逾時復原的腳本會撤銷先前的封鎖動作。
需要注意,wazuh-logtest 主要用於測試 Decoder 與 Rules,不會直接執行實際的 Active Response 封鎖動作。因此,本次必須透過真實收集的測試日誌來驗證功能。
雖然 Active Response 可以提升事件處理效率,但在實際使用時仍需要考慮誤判與系統安全性。
| 項目 | 說明 |
|---|---|
| 自動化處理 | 減少管理員手動處理事件的時間 |
| 即時防護 | 偵測到符合條件的事件後執行防護 |
| 彈性設定 | 可依照規則、警報等級設定回應方式 |
| 誤判風險 | 正常使用者也可能因異常操作而被阻擋 |
| 系統影響 | 錯誤設定可能導致合法連線遭到封鎖 |
因此,在正式環境中,建議先確認偵測規則的準確性,再逐步啟用自動封鎖功能。
也可以透過 timeout 設定暫時性封鎖,降低誤判造成的長期影響。
透過前幾天的規則設定,Wazuh 已經能夠偵測異常事件並產生警報。
加入 Active Response 後,系統便能進一步執行自動化防護措施。
| 比較項目 | 傳統警報偵測 | Active Response |
|---|---|---|
| 事件偵測 | 支援 | 搭配 Rules 觸發 |
| 產生警報 | 支援 | 依據警報執行動作 |
| 自動阻擋 IP | 不支援 | 支援 |
| 執行自訂腳本 | 不支援 | 支援 |
| 人工介入需求 | 通常較高 | 可減少部分人工操作 |
透過 Rules 與 Active Response 的整合,Wazuh 不僅能夠協助管理員發現資安事件,也能在符合指定條件時,自動採取初步的防護行動。