SSH(Secure Shell)是一種遠端連線協定,常用於 Linux 伺服器管理。由於 SSH 允許使用者透過網路登入系統,因此也可能成為攻擊者的目標。
暴力破解攻擊(Brute Force Attack) 是指攻擊者反覆嘗試不同的帳號與密碼組合,試圖取得系統存取權限。
常見的攻擊行為包括:
本次以隔離的 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 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 發行版本及日誌服務設定而有所不同。
延續第 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 testuser@192.168.56.10
其中:
完成測試後,可以進入 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 事件。
可以在被監控主機上執行:
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 不僅能協助管理人員發現異常登入行為,也能在符合條件時執行自動封鎖,縮短從攻擊偵測到事件處理的時間。