淺談 Fail2Ban:如何設定、啟用、檢查、增加或解除 IP 以及運用範例

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.confjail.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 是一個非常值得考慮的選擇。

瀏覽次數:101