fail2ban 介紹與教學,如何在 Ubuntu/nginx 上設定?

fail2ban 是什麼?

Fail2ban是一個開源的安全工具,用於防範惡意的登入嘗試和暴力破解攻擊。它主要用於保護Linux系統中的服務,如SSH(Secure Shell),FTP(File Transfer Protocol),HTTP(HyperText Transfer Protocol)等。

fail2ban 的工作原理

Fail2ban的工作原理是監控系統日誌文件,例如/var/log/auth.log,以檢測潛在的惡意行為。它使用正則表達式來分析日誌文件中的事件,例如登入失敗的嘗試或特定錯誤消息。一旦檢測到一個可疑事件,Fail2ban會執行預先定義的操作,例如封鎖攻擊者的IP地址或執行自定義的腳本。

為什麼要用 fail2ban

通過使用 Fail2ban,您可以增強系統的安全性,減少受到惡意登入嘗試和暴力破解攻擊的風險。它是一個廣泛使用的工具,特別是在公共伺服器或暴露在互聯網上的系統中,以保護系統免受未經授權的訪問和入侵。

Fail2ban 具有靈活的配置選項,您可以定義要監控的日誌文件、檢測規則和封鎖操作。您可以設置封鎖的時間長度,以及在封鎖期間顯示自定義的警告頁面。它還提供了一個Web界面和命令行界面,用於配置和監控Fail2ban的運行。

在 Ubuntu 上安裝 fail2ban

在Ubuntu上安裝Fail2ban,您可以按照以下步驟進行操作:

  1. 開啟終端機(Terminal)。
  2. 更新系統套件庫: sudo apt update
  3. 安裝Fail2ban套件:sudo apt install fail2ban
  4. 安裝完成後,Fail2ban服務將自動啟動。您可以使用以下指令檢查服務狀態:sudo systemctl status fail2ban
  5. 預設情況下,Fail2ban使用的配置文件是/etc/fail2ban/jail.conf。您可以根據需要進行配置。

如何與 nginx 搭配設定使用

  1. 先確認主機上已安裝 nginx
  2. 開啟Fail2ban的Nginx配置文件。輸入以下指令以編輯該文件:sudo nano /etc/fail2ban/jail.d/nginx.conf
  3. 在該文件中,修改以下配置以適應您的需求:
[nginx]
enabled = true
filter = nginx
action = iptables-multiport[name=nginx, port="http,https"]
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 3600
  • enabled:設置為true以啟用Fail2ban的Nginx過濾器。
  • filter:指定使用的過濾器,這裡設置為nginx。
  • action:指定執行的動作,這裡使用iptables-multiport動作封鎖攻擊者的IP地址。
  • logpath:指定Nginx訪問日誌文件的路徑,這裡設置為/var/log/nginx/access.log。
  • maxretry:設置最大嘗試次數,當一個IP地址的請求失敗次數超過該值時,將被封鎖。
  • bantime:設置封鎖時間長度(以秒為單位),在此期間內被封鎖的IP將無法訪問Nginx。
  1. 保存並關閉文件。
  2. 重新啟動Fail2ban服務,以應用新的配置:udo systemctl restart fail2ban