Fail2Ban 是一款用於保護伺服器免受暴力破解攻擊的安全工具,它會根據設定的條件監控伺服器上的日誌檔案,並當偵測到可疑行為時,自動封鎖攻擊源的 IP 地址。這款工具非常適合防止 SSH、FTP、Web 應用等服務的暴力破解攻擊,並且易於配置和使用。本文將介紹 Fail2Ban 的基本設定、啟用方法、如何檢查狀態、增加或解除 IP 以及一些運用範例。
1. 安裝 Fail2Ban
首先,確保您的伺服器已經安裝了 Fail2Ban。如果您使用的是基於 Debian 的系統(如 Ubuntu),可以使用以下命令來安裝:
sudo apt update sudo apt install fail2ban
對於 Red Hat/CentOS 系統,則可以使用:
sudo yum install fail2ban
2. 設定 Fail2Ban
Fail2Ban 的設定文件位於 /etc/fail2ban/
目錄下,主要設定文件為 jail.conf
和 jail.local
。通常,您不應該直接編輯 jail.conf
,而是創建或編輯 jail.local
,以避免在更新 Fail2Ban 時被覆蓋。
2.1 編輯 jail.local 設定文件
創建或編輯 jail.local
文件:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
在 jail.local
中,您可以設置各種服務的監控,例如 SSH:
[sshd] enabled = true port = ssh logpath = /var/log/auth.log maxretry = 3 bantime = 3600
enabled
:啟用或禁用此監控規則。port
:監控的端口,這裡設置為ssh
。logpath
:日誌文件路徑,用於 Fail2Ban 監控攻擊。maxretry
:允許的最大失敗次數,超過後將封鎖 IP。bantime
:封鎖時間(秒)。
2.2 配置其他服務
除了 SSH,您還可以設置其他服務,如 HTTPD(Apache)或 FTP。只需添加相應的條目並根據需要進行調整即可。
3. 啟用 Fail2Ban
設定完成後,啟用並啟動 Fail2Ban:
sudo systemctl enable fail2ban sudo systemctl start fail2ban
這會使 Fail2Ban 在開機時自動啟動。
4. 檢查 Fail2Ban 狀態
您可以使用 fail2ban-client
工具來檢查 Fail2Ban 的狀態,包括查看哪些服務正在運行,哪些 IP 地址被封鎖等。
4.1 查看 Fail2Ban 狀態
sudo fail2ban-client status
此命令將顯示所有啟用的監控服務列表,如 sshd
。要查看特定服務的詳細信息,請使用以下命令:
sudo fail2ban-client status sshd
這將顯示 sshd
監控規則的詳細信息,包括被封鎖的 IP 地址。
4.2 查看被封鎖的 IP 地址
若要查看哪些 IP 地址被 Fail2Ban 封鎖,可以使用以下命令:
sudo fail2ban-client status sshd
在輸出的 Banned IP list
中,您將看到當前被封鎖的所有 IP 地址。
5. 增加或解除 IP 地址
5.1 增加 IP 地址(白名單)
如果您希望某個 IP 地址永遠不被封鎖,可以將其加入白名單。這樣,該 IP 無論如何都不會被 Fail2Ban 封鎖。
sudo fail2ban-client set sshd unbanip <IP_ADDRESS>
5.2 解除 IP 地址(從黑名單中移除)
如果某個 IP 地址因為誤判被封鎖,您可以手動將其從黑名單中移除,解除封鎖:
sudo fail2ban-client set sshd unbanip <IP_ADDRESS>
這將立即解除對該 IP 的封鎖。
5.3 增加或解除封鎖 IP
若要手動封鎖一個 IP 地址,可以使用以下命令:
sudo fail2ban-client set sshd banip <IP_ADDRESS>
6. 運用範例
以下是一些使用 Fail2Ban 進行保護的實際範例:
6.1 防止 SSH 暴力破解
配置 Fail2Ban 來防止 SSH 暴力破解攻擊,將 sshd
服務啟用,設置最大重試次數為 3 次,封鎖時間為 1 小時。這樣,當某個 IP 地址嘗試超過 3 次錯誤登錄時,將被封鎖 1 小時。
[sshd] enabled = true port = ssh logpath = /var/log/auth.log maxretry = 3 bantime = 3600
6.2 防止 Apache Web 服務攻擊
如果您使用 Apache Web 服務,則可以使用 Fail2Ban 來防止常見的 Web 攻擊(如暴力破解登錄、SQL 注入等)。
[apache-auth] enabled = true port = http,https logpath = /var/log/apache2/*access.log maxretry = 3 bantime = 3600
這樣,若多次發生登錄失敗的情況,Fail2Ban 會自動封鎖該 IP。
7. 小結
Fail2Ban 是一款功能強大的安全工具,能夠有效保護伺服器免受暴力破解攻擊。通過簡單的設定,您可以快速啟用 Fail2Ban,保護 SSH、Web 服務和其他應用。透過 fail2ban-client
工具,您可以輕鬆檢查和管理被封鎖的 IP 地址,並進行相應的增刪操作。
不僅如此,Fail2Ban 還可以根據需要對各種服務進行細緻化配置,提供強大的防禦能力。如果您希望增強伺服器的安全性,Fail2Ban 是一個非常值得考慮的選擇。