如何在 Linux 中使用 Fail2Ban 保護您的服務器

服務器安全是任何企業或組織的首要任務。 Fail2Ban 是系統管理員工具包中最重要的工具之一。 本指南解釋了 Fail2Ban 是什麼以及如何在 Linux 中使用 Fail2Ban 保護服務器免受攻擊。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

什麼是 Fail2Ban?

Fail2Ban 是一種入侵防禦工具,可監控日誌文件並阻止顯示惡意活動跡象的 IP 地址。 它通過創建“過濾器”來匹配日誌文件中的某些模式並執行操作,例如阻止違規 IP 地址。

為什麼在 Linux 中使用 Fail2Ban?

在 Linux 中使用 Fail2Ban 有幾個原因。 或許:

  • 它通過自動阻止惡意 IP 地址來節省您的時間。
  • 通過減少攻擊成功的機會來幫助保護您的服務器。
  • 它讓您高枕無憂,因為您知道您的服務器正在受到監控和保護。

在 Linux 中安裝 Fail2Ban

默認情況下,Fail2Ban 在 Ubuntu 存儲庫中可用。 使用apt安裝它。

sudo add-apt-repository universe sudo apt update && sudo apt install fail2ban -y

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

Fail2Ban 會在後台設置它的服務,但 systemd 默認會禁用它。 您可以使用以下命令啟動並啟用它:

sudo systemctl 啟動 fail2ban sudo systemctl 啟用 fail2ban

使用以下命令驗證 Fail2Ban 是否正在運行:

sudo systemctl狀態為fail2ban

您將看到類似於下圖的輸出。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

在 Linux 中配置 Fail2Ban

“/etc/fail2ban”目錄包含 Fail2Ban 的配置文件。 默認情況下,Fail2Ban 附帶一個“jail.conf”文件,其中包含將應用於所有服務的設置。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

但是,最好創建一個本地“jail.local”文件並覆蓋“jail.conf”中的設置,因為只要軟件更新,您對“jail.conf”所做的任何更改都會丟失。

您可以使用以下命令創建“jail.local”文件:

須藤cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

打開 jail.local 文件進行編輯:

須藤nano /etc/fail2ban/jail.local

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

好知識:學習 如何在 LINUX 上啟用無密碼 SSH 登錄。

探索 jail.local 文件

您將看到如下所示的類似輸出,您可能會被可用選項的數量所淹沒。 但別擔心,我們會引導您完成最重要的選項。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

你會看到一個圖標 “#” 在行首,表示這是一條註釋。 Fail2Ban 使用這些來解釋特定設置的作用。 您可以通過刪除此圖標在此處啟用某些設置。

部分包含 “[默認]” 適用於所有監獄的選項。 這是 Fail2Ban 的一般配置。 以下屏幕截圖顯示了一個示例。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

還有其他部分以服務名稱開頭。 此監獄適用於世界監獄之上的特定服務。

另請閱讀:  最佳兒童 Linux 軟件:應用程序、發行版和遊戲

例如,有一個監獄部分 “sshd”。 本節包含 sshd 服務的選項。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

提示:您還可以在以下位置了解有關服務器強化的更多信息 保護您的 SSH 服務器.

啟用自動禁止功能

進入設置 “bantime = 1 小時並刪除代碼 “#” 在該行的開頭啟用它。 此行設置 Fail2Ban 禁用 IP 地址所需的時間。 默認單位是 XNUMX 小時。 您還可以使用其他單位,例如分鐘 (米) 或天 (D) 甚至數週 (w)。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

您可以根據需要增加或減少此值。 例如,您可以將此值更改為 30 米,以將阻塞持續時間減少到 30 分鐘。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

更改登錄窗口的默認長度

接下來的設置是“maxretry”和“findtime”。 它們限制了攻擊者在 Fail2Ban 阻止其 IP 地址之前可以進行的登錄嘗試次數。

“maxretry”和“findtime”的默認值是 5 和 10 m。 如果一個 IP 在 2 分鐘內失敗了 XNUMX 次,FailXNUMXBan 將在 bantime 設置指定的持續時間內阻止它。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

您可以將這些值更改為您想要的任何值。 例如,您可以將“maxretry”設置為 3,將“findtime”設置為 5m:如果某個 IP 地址在 2 分鐘內驗證失敗 XNUMX 次,FailXNUMXBan 將禁用該 IP 地址。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

在 Linux 中啟用 Fail2Ban 通知功能

以下設置是 destemail、sendername 和 mta。 Fail2Ban 將使用這些設置來配置電子郵件通知。

  • 電子郵件設置是程序將向其發送通知的電子郵件地址。
  • 發件人姓名將顯示在通知電子郵件的“發件人”字段中。
  • mta 是 Fail2Ban 用來發送電子郵件的郵件傳輸代理。 mta 默認為 sendmail ,但您可以將其更改為其他內容,例如郵件。

如果你想接收郵件通知,你需要取消這些行的註釋並輸入適當的值,如圖所示。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

當禁令發生時,您將收到一封電子郵件通知,其中包含有關禁令的詳細信息,如圖所示。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

創建自定義大宗訂單

下一個設置是“action_=”。 這指定了 Fail2ban 在阻止 IP 地址時採取的操作。 默認是使用 iptables 來阻止 IP,直到“bantime”到期。

您還可以使用其他過程,如下所示。 為簡單起見,本教程堅持使用默認設置。

  • action_mw: 當 IP 地址被阻止時發送電子郵件通知以及相關的 WHOIS 信息。
  • action_mwl: 當 IP 地址被阻止時發送電子郵件通知,以及導致阻止的相關 WHOIS 信息和日誌文件條目。
  • action_xarf: 當 IP 地址被阻止時發送 X-ARF 電子郵件通知以及觸發阻止的日誌文件條目。
另請閱讀:  如何更新 Fedora Linux

還有許多其他過程可用,但不可能在本教程中涵蓋所有這些過程。 您可以 閱讀所有可用的程序 在 Fail2ban 文檔中。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

為服務啟用配置

除了配置 Fail2ban 的默認行為外,還可以為一些流行的 Internet 服務使用預製的過濾器文件。 這些是由開發人員編寫的小文件,用於搜索特定服務器的特定日誌輸出。

例如,“apache-shellshock.conf”文件包含所有必要的設置,允許 Fail2ban 檢查是否有任何惡意嘗試生成 shellshock 錯誤。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

您可以通過列出目錄“/etc/fail2ban/filter.d”來找到適用於您系統的所有可用過濾器文件:

ls /etc/fail2ban/filter.d

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

知道要使用的過濾器後,通過打開“jail.local”文件告訴 Fail2ban 在啟動期間加載它們:

須藤nano /etc/fail2ban/jail.local

在“jail.local”中創建一個空間,您可以在其中激活新過濾器。 我在評論標題和 [INCLUDES] 塊之間創建了自己的。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

添加要激活的過濾器。 例如,以下是我在配置中使用的片段:

# Comments: 使用 '#' 作為註釋行和 ';' (在空格之後)用於內聯註釋 [sshd] enabled = true [nginx-bad-request] enabled = true [bitwarden] enabled = true [INCLUDES]

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

完成後,保存並關閉文件。 重新啟動 fail2ban 以應用更改。

sudo systemctl重新啟動fail2ban

測試您的配置

現在您已經在 Linux 中配置了 Fail2Ban,是時候對其進行測試了。

測試您的配置的最簡單方法是快速連續多次嘗試使用不正確的密碼登錄。 您可以使用 SSH 連接來執行此操作。

在處置機器上,嘗試使用“admin”用戶名通過 SSH 連接到您的 Fail2ban 服務器。 將“your_server_ip_address”替換為您的 Fail2ban 服務器的實際 IP 地址。

ssh admin@your_server_ip_address

出現提示時輸入隨機密碼並重複幾次。 嘗試幾次後,您將看到一條消息,表明服務器拒絕了您的連接嘗試。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

除了使用 ssh,您還可以通過運行 Fail Status 來測試 Fail2ban 中的其他過濾器文件。 在我的例子中,我使用“nginx-bad-request”過濾器來檢測主機是否正在向服務器發送無效請求。

另請閱讀:  加速 Ubuntu 的 7 種方法

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

知道這一點後,您可以通過使用 curl 有意向您的 Web 服務器發送空請求來測試此功能:

curl -H “用戶代理:” -H “主機:” https://yourwebsite.com -v

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

在 Linux 中檢查 Fail2Ban 例程

最後,在 Fail2ban 服務器上運行以下命令以驗證 fail2ban 是否已將必要的規則添加到 iptables。

grep 命令過濾 iptables 命令的輸出。 -S 選項告訴 iptables 以易於解析的格式打印規則。

須藤 iptables -S | grep f2b

您將看到類似於下圖的輸出。 “–reject-with icmp-port-unreachable”參數告訴 iptables 在嘗試連接時向客戶端發送 ICMP 端口不可達消息。 您還可以查看服務器已阻止的設備的 IP 地址。

如何在 Linux 中使用 Fail2Ban 保護您的伺服器 - %categories

提示:您還應該使用 SELinux 來保護您的 Linux 服務器。

經常問的問題

Q1:當 Fail2ban 阻止 IP 地址時,為什麼我會收到空白電子郵件通知?
回答: 如果您收到一封空的電子郵件通知,很可能是您沒有正確配置您的郵件服務器。 檢查您的郵件服務器配置並確保它可以發送電子郵件。

Q2:如何解鎖IP地址?
回答: 首先找到當前被封IP的jail:sudo fail2ban-client status ,然後通過運行以下命令取消阻止 IP 地址:sudo fail2ban-client set 未清理.

Q3:如何查看fail2ban日誌文件?
回答: 您可能需要查看 fail2ban 日誌文件以解決問題或找出 IP 地址被阻止的原因。 文件“/var/log/fail2ban.log”包含 fail2ban 生成的所有日誌。 使用cat命令查看fail2ban日誌文件:cat /var/log/fail2ban.log。

Q4:我啟用了多個過濾文件。 為什麼他們都不工作?
回答: 發生此問題的最有可能是因為篩選器覆蓋了它之前的另一個文件。 解決此問題的一種方法是通過將多個過濾器組合在一起來創建您自己的過濾器文件。

Q5:Fail2ban 會保護我的服務器免受 DoS 攻擊嗎?
回答: 是和不是。 在大多數情況下,Fail2ban 將能夠阻止任何向您的服務器發送無效請求的 IP。 但是,該程序的最大限制之一是它無法對不產生日誌條目的事件採取行動。 因此,針對這些形式的攻擊,使用其他工具保護您的 Linux 服務器仍然很重要。

你可能也會喜歡