在 Ubuntu 20.04 上安裝和配置 Fail2ban

Fail2ban 是一個用 Python 編寫的開源安全框架,可以保護服務器免受 蠻力攻擊. 它會掃描日誌文件並禁止嘗試登錄失敗的 IP 地址。 它的工作原理是更新防火牆以在可配置的時間段內拒絕來自這些 IP 地址的新連接。

默認情況下,Fail2ban 使用 Iptables 並且它可以與其他防火牆一起使用。 Fail2ban 支持 IPv4 和 IPv6。

默認情況下,Fail2ban 配置為監控 SSH 登錄嘗試 並且可以監控其他日誌文件,例如 Apache、vsftpd 和 Postfix 等。

在本教程中,我將帶您了解如何安裝和配置 禁止失敗Ubuntu 20.04。

在 Ubuntu 上安裝 Fail2ban

首先,打開您的終端並更新軟件包列表。

$ sudo 適當更新

Fail2Ban 已經打包在大多數 Linux 發行版中。 要使用 APT 包管理器安裝 fail2ban,請運行:

$ sudo apt安裝fail2ban

安裝 FAil2ban

安裝後,通過以下方式驗證它是否正在運行:

$ sudo systemctl 狀態 fail2ban

從輸出中,我們可以看到fail2ban 服務處於活動狀態並按預期運行。

檢查fail2ban狀態

要檢查 fail2ban 進程正在運行,請鍵入:

$ sudo ps -efww | egrep fail2ban

輸出:

根 1310843 1 0 11:17 ? 00:00:02 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

偉大的。 讓我們大致了解與 Fail2ban 相關的配置文件,以及如何將設置調整為黑名單或白名單 IP 地址。

配置文件概覽

Fail2ban 的配置文件位於 /etc/fail2ban 目錄如圖。

Fail2ban 配置文件Fail2ban 配置文件

主要的配置文件是 /etc/fail2ban/jail.conf /etc/fail2ban/jail.d/defaults-debian.conf.

無論您做什麼,都不建議修改這些文件,因為在更新 fail2ban 包時它們很有可能被覆蓋。

作為一種變通方法,配置 Fail2ban 的推薦方法是創建 jail.conf 歸檔到 jail.local 然後定義您自己的設置。 您不必包括來自 jail.conf 文件,只有那些你想覆蓋。

所以,讓我們首先創建 jail.local 配置文件如下。

$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

現在,使用您最喜歡的文本編輯器打開該文件。 在這裡,我使用的是 vim 編輯器。

$ sudo vim /etc/fail2ban/jail.local

將 IP 地址列入白名單

使用 ignoreip 指令,您可以排除被禁止的 IP 地址、IP 範圍或整個子網。 您可以在此處添加要列入白名單或允許訪問的遠程計算機的 IP 地址。 可以使用空格或逗號添加多個 IP。

為了 example, 將 IP 地址列入白名單 192.168.2.50 , 192.168.2.100 添加條目如下。

禁止設置

禁止設置

禁止條件由以下參數定義:

  1. 班時間
  2. 找時間
  3. 最大重試

班時間 – 這是禁止或拒絕 IP 地址嘗試重新連接服務器的時間段。 默認情況下,這設置為 10 分鐘,但您可以根據自己的喜好隨意設置。

找時間 – 這是實施禁令之前失敗登錄嘗試之間的持續時間。 這被設置為10分鐘。 這意味著,如果您嘗試 SSH 登錄並且失敗到達 最大的 值在 10 分鐘內,然後您正在連接的 IP 將被禁止。

最大重試 – 這表示在禁止 IP 之前嘗試連接失敗的最大次數。 B 默認設置為 5 秒,這應該沒問題,但我更喜歡 3 秒以盡量減少連接嘗試的轟炸。

電子郵件通知

Fail2ban 擁有在 IP 地址被禁止後發送電子郵件警報的能力。 要發送和接收電子郵件,您需要安裝和配置 SMTP 服務器。 要使用電子郵件通知功能,請添加以下行

動作 = %(action_mw)s

參數 %(action_mw)s 禁止可疑 IP 地址並發送電子郵件至 admin 帶有詳細的 whois 報告。 要包括日誌消息,請將參數設置為 %(action_mwl)s.

另外定義發送電子郵件地址以及收件人。

Fail2ban監獄

Fail2ban 的作案手法使用了監獄的概念。 也就是說,如果有問題的 IP 地址嘗試登錄或訪問服務失敗,它將被置於“監獄”中並且無法發起連接,直到 班時間 過去了。

監獄,簡單來說,就是一個帶有過濾器和動作的服務。 Fail2ban 查看日誌條目,一旦確定匹配的日誌條目並滿足條件,就會實施操作。

SSH jail 通常默認啟用,以限制來自可疑 IP 地址的惡意 SSH 連接。 要為另一個服務啟用監獄,只需添加 啟用 = 真 監獄標題後的屬性。 您還可以提供我們之前看到的禁止設置。

Fail2ban 客戶端

Fail2ban 提供了一個命令行工具來與 Fail2ban 交互,稱為 fail2ban 客戶端. 您可以執行無數任務,包括禁止和取消禁止 IP 地址。

要檢查 Fail2ban 的狀態並查看是否有任何禁止的 IP 或違反的過濾器,請運行以下命令:

$ sudo fail2ban 客戶端狀態 sshd

下面的輸出確認在 SSH 登錄嘗試失敗後是否存在被禁止或列入黑名單的 IP 地址。 IP 地址當前在 SSH 監獄中。

檢查禁令狀態檢查禁令狀態

您還可以過濾 fail2ban.log 文件以列出所有被禁止的 IP 地址:

$ sudo zgrep ‘禁止’ /var/log/fail2ban.log*

輸出:

2021-04-29 11:17:55,081 fail2ban.actions [1310843]: 注意 [sshd] 禁止 117.221.69.37 2021-04-29 11:17:55,123 fail2ban.actions [1310843]: 注意 [sshd] 禁令 49.233.251.133 2021-04-29 11:17:55,131 fail2ban.actions [1310843]: 注意 [sshd] 禁止 106.52.93.202 2021-04-29 11:17:55,139 fail2ban.actions [1310843]: 注意 [sshd] 禁令 222.187.232.205 2021-04-29 11:17:55,147 fail2ban.actions [1310843]: 注意 [sshd] Ban 222.187.239.107

要取消禁止列入黑名單的 IP 地址,請運行以下命令:

$ sudo fail2ban-client 設置 sshd unbanip 192.168.2.102

現在再次驗證Fail2ban的狀態,這一次,被禁止的IP不再註冊。

Fail2ban 解封 IPFail2ban 解封 IP

要禁止 IP 地址,請鍵入:

$ sudo fail2ban-client 設置 sshd banip 192.168.2.102

如需更多命令行選項,請運行以下命令:

$ fail2ban-client -h

Fail2ban 命令選項Fail2ban 命令選項

結論

請記住,Fail2ban 不能替代用於保護系統的防火牆和其他安全措施。 它只是一個額外的安全層,為您的服務器提供額外的保護層,以抵禦暴力攻擊,尤其是來自自動化機器人和腳本的暴力攻擊。 關於如何在 Ubuntu 20.04 上安裝和配置 Fail2ban 的教程到此結束。