iT邦幫忙

0

Day 23|Wazuh 實戰應用:SSH 暴力破解偵測與自動封鎖

  • 分享至 

  • xImage
  •  

一、什麼是 SSH 暴力破解攻擊?

SSH(Secure Shell)是一種遠端連線協定,常用於 Linux 伺服器管理。由於 SSH 允許使用者透過網路登入系統,因此也可能成為攻擊者的目標。
暴力破解攻擊(Brute Force Attack) 是指攻擊者反覆嘗試不同的帳號與密碼組合,試圖取得系統存取權限。
常見的攻擊行為包括:

  • 短時間內大量登入失敗。
  • 使用不同密碼反覆嘗試同一帳號。
  • 對多個使用者帳號進行登入測試。
  • 從同一來源 IP 持續發送登入請求。
    Wazuh 可以分析 SSH 登入日誌,辨識異常登入行為,並結合 Active Response 自動封鎖可疑來源。

二、實驗環境與架構

本次以隔離的 Linux 測試環境模擬 SSH 登入失敗事件,觀察 Wazuh 如何偵測並執行自動封鎖。

設備 系統 用途
Wazuh Server Linux 接收日誌、分析事件及觸發規則
被監控主機 Ubuntu Linux 安裝 Wazuh Agent 與 SSH Server
測試主機 Linux 模擬 SSH 登入失敗

實驗流程:
測試主機
|
| 多次 SSH 登入失敗
v
Linux 被監控主機
|
| SSH 認證日誌
v
Wazuh Agent
|
| 傳送事件
v
Wazuh Server
|
| 觸發 SSH 暴力破解規則
v
Active Response
|
| 執行 firewall-drop
v
封鎖測試主機 IP

三、確認 SSH 日誌收集

首先確認被監控主機已安裝 SSH Server。
Ubuntu 系統可使用:

sudo apt update
sudo apt install openssh-server

確認 SSH 服務狀態:

sudo systemctl status ssh

接著確認 Wazuh Agent 能夠收集 SSH 認證日誌。
在 Ubuntu 系統中,可以檢查:

sudo tail -f /var/log/auth.log

當 SSH 登入失敗時,可能出現以下紀錄:

sshd[1234]: Failed password for testuser
from 192.168.56.20 port 54321 ssh2

其中,Failed password 代表登入失敗,後面的 IP 則表示連線來源。
若 Agent 尚未監控該日誌,可在 /var/ossec/etc/ossec.conf 中的 <ossec_config> 節點加入:

<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/auth.log</location>
</localfile>

儲存後重新啟動 Agent:

sudo systemctl restart wazuh-agent

實際日誌位置可能依 Linux 發行版本及日誌服務設定而有所不同。

四、設定 SSH 自動封鎖規則

延續第 22 天介紹的 Active Response,這次將功能應用於 SSH 暴力破解防禦。
開啟 Wazuh Server 設定檔:

sudo nano /var/ossec/etc/ossec.conf

確認已定義 firewall-drop 指令,並在 <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 偵測到符合 Rule ID 5763 的 SSH 暴力破解事件時,會在觸發事件的端點執行封鎖動作,持續 180 秒。
完成後重新啟動:

sudo systemctl restart wazuh-manager

需確認被監控的 Linux 主機支援 iptables,並具備 Wazuh 所需的回應腳本。

五、模擬 SSH 登入失敗

接下來使用測試主機,連線至自己管理的實驗用 SSH 伺服器。

ssh testuser@192.168.56.10

其中:

  • testuser:測試帳號。
  • 192.168.56.10:被監控主機的示範 IP。
    在密碼提示中輸入錯誤密碼,重複數次,以產生 SSH 登入失敗紀錄。
    這個方法可以驗證日誌是否正確收集,但不保證一定觸發 Rule ID 5763。是否被判定為暴力破解,仍取決於短時間內的事件數量、規則條件與 Wazuh 設定。
    建議只在授權的隔離測試環境操作,避免對正式伺服器造成影響。

六、透過 Wazuh Dashboard 觀察結果

完成測試後,可以進入 Wazuh Dashboard 的安全事件介面,搜尋 SSH 相關警報。
以下為主要觀察項目:

觀察項目 說明
SSH 登入失敗 確認系統有收集到異常登入紀錄
Rule ID 5763 SSH 暴力破解攻擊偵測
Rule ID 651 firewall-drop 封鎖動作警報
Source IP 顯示攻擊來源 IP
Timestamp 顯示事件發生時間

如果觸發了 SSH 暴力破解規則,Dashboard 應能看到相應的安全警報。
若 Active Response 成功執行,還可觀察是否產生 Host Blocked by firewall-drop 事件。

七、驗證 IP 封鎖結果

可以在被監控主機上執行:

sudo tail -f /var/ossec/logs/active-responses.log

確認是否有 Active Response 執行紀錄。
也可以檢查防火牆規則:

sudo iptables -L -n

如果封鎖成功,應能在對應的防火牆規則中找到測試主機 IP。
測試時也可以觀察原本的 SSH 連線是否遭到阻擋,以及設定的 180 秒結束後是否恢復正常。
需注意,連線結果還可能受到其他防火牆規則及網路設定影響,因此應搭配回應日誌確認,而不是只依賴連線成功或失敗判斷。

八、實驗結果與安全應用

透過這次實驗,可以觀察 Wazuh 如何整合 SSH 日誌分析、規則偵測及自動化防禦。

階段 預期結果
日誌收集 Agent 成功取得 SSH 登入失敗紀錄
攻擊偵測 符合條件時觸發 Rule ID 5763
自動回應 執行 firewall-drop 封鎖來源 IP
日誌紀錄 保留 Active Response 執行資訊
解除封鎖 設定時間到期後還原封鎖規則

需要特別強調的是,以上屬於預期驗證結果,實際是否成功必須透過 Dashboard、日誌及防火牆規則確認。
透過這種方式,Wazuh 不僅能協助管理人員發現異常登入行為,也能在符合條件時執行自動封鎖,縮短從攻擊偵測到事件處理的時間。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言