iT邦幫忙

2026 iThome 鐵人賽

DAY 24
0
Security

從零打造 Wazuh 自動化防禦與威脅狩獵戰情中心系列 第 24 篇

Day 24|正式設定 Active Response:讓 Rule 100002 觸發自動封鎖

  • 分享至 

  • xImage
  •  

前幾天已經完成 SSH 偵測規則,並準備好 Active Response 要使用的條件。

這次的目標是:

Rule 100002
      ↓
Active Response
      ↓
firewall-drop
      ↓
封鎖來源 IP

今天就正式修改 Wazuh 設定,讓前面的「偵測」和後面的「回應」真正連接起來。


1. 修改 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>

https://ithelp.ithome.com.tw/upload/images/20261007/201842607YkeGRe6IQ.png

這幾行就是這次自動封鎖的核心設定。


2. command:要執行什麼動作?

第一個設定:

<command>firewall-drop</command>

指定 Active Response 要執行的 Command。

這次使用:

firewall-drop

也就是當指定 Rule 被觸發後,利用防火牆機制對事件中的來源 IP 進行處理。

因此:

Rule 觸發
   ↓
取得來源 IP
   ↓
firewall-drop
   ↓
加入封鎖

3. location:在哪裡執行?

接下來是:

<location>local</location>

location 用來指定 Active Response 執行的位置。

這次設定為:

local

代表回應動作會在產生該事件的 Agent 端執行。

在我的環境中,也就是受監控的 Ubuntu Agent。

因此目標是讓 Ubuntu 在偵測到符合條件的 SSH 行為後,對來源 IP 執行封鎖。


4. rules_id:哪一條 Rule 才要執行?

這次最重要的設定之一是:

<rules_id>100002</rules_id>

這代表 Active Response 與前面建立的:

Rule ID:100002

綁定。

所以不是所有 SSH Alert 都會直接執行封鎖,而是:

SSH Event
   ↓
符合我的偵測條件
   ↓
Rule 100002
   ↓
Active Response

這也是為什麼前面要先確認 Rule 100002 能正常觸發。


5. timeout:封鎖多久?

最後是:

<timeout>60</timeout>

這次設定:

60 秒

也就是採用暫時性的回應方式。

概念上:

Rule 100002 觸發
      ↓
封鎖 Source IP
      ↓
等待 60 秒
      ↓
解除封鎖

對實驗環境來說這樣比較方便,因為封鎖結束後可以再次進行 SSH 測試。


6. 重新啟動 Wazuh

修改設定完成後,需要讓 Wazuh 重新載入設定。

在 Manager 上執行:

sudo systemctl restart wazuh-manager

接著確認服務狀態:

sudo systemctl status wazuh-manager

如果服務正常:

active (running)

代表設定至少已經成功載入,沒有因為設定格式問題造成 Manager 無法啟動。


7. 現在理論上應該可以自動封鎖了

做到這裡,整個設定已經完成:

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」。


Alert 明明出現了,為什麼 IP 沒有被封鎖?

下一篇就來處理這次實驗中真正遇到的問題:

SSH 測試
   ↓
Rule 100002 ✓
   ↓
Alert ✓
   ↓
Active Response ?
   ↓
Block IP ✗

既然前面的偵測都正常,問題到底出在哪裡?

接下來開始從 Log 與 Active Response 的執行狀態一步一步往下查。


上一篇
# Day 23|準備自動封鎖:把 SSH Alert 接到 firewall-drop
下一篇
#Day 25|Alert 明明出現了,為什麼 Active Response 沒有封鎖 IP?
系列文
從零打造 Wazuh 自動化防禦與威脅狩獵戰情中心 共 25 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言