Fail2Ban 防火牆部署與配置|阻止 SSH 暴力攻擊

## 前言

Fail2Ban 係 Linux 系統既即時入侵防禦工具,可以自動封鎖多次登入失敗既 IP。以下係喺 Ubuntu 22.04 上既完整架設與配置過程。

## 什麼係 Fail2Ban?

Fail2Ban 係一個實時入侵檢測系統,通過分析日誌檔案,自動封鎖可疑IP。默認使用 iptables 作為防火牆。

## 安裝 Fail2Ban

“`bash
sudo apt update
sudo apt install -y fail2ban
“`

## 配置 Fail2Ban

### 主要設定檔

“`bash
sudo nano /etc/fail2ban/jail.local
“`

### 推薦配置內容

“`ini
[DEFAULT]
bantime = 3600 # 封鎖 1 小時
findtime = 600 # 10分鐘內
maxretry = 5 # 最多嘗試5次
action = %(action_mwl)s

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3 # SSH 只允許3次
bantime = 86400 # 封鎖 24 小時
findtime = 600
“`

## 常見 Jail 配置

### SSH 防護

“`ini
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
“`

### Web 登入防護

“`ini
[openclaw-http]
enabled = true
port = 18791,21822
filter = apache-auth
logpath = /var/log/fail2ban.log
maxretry = 10
bantime = 3600
“`

## 管理指令

“`bash
# 啟動服務
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# 查看狀態
sudo fail2ban-client status

# 查看特定 jail
sudo fail2ban-client status sshd

# 手動封鎖 IP
sudo fail2ban-client set sshd banip

# 解除封鎖
sudo fail2ban-client set sshd unbanip

# 重新載入配置
sudo fail2ban-client reload
“`

## 查看被封鎖的 IP

“`bash
# 方法一:fail2ban-client
sudo fail2ban-client banned sshd

# 方法二:iptables
sudo iptables -L f2b-sshd -n
“`

## 與防火牆的關係

Fail2Ban 唔係防火牆,但會自動操作 iptables:

“`
攻擊者嘗試登入

Fail2Ban 檢測日誌

發現多次失敗

自動執行 iptables 封鎖 IP
“`

## 最佳實踐

| 建議 | 原因 |
|——|——|
| SSH 用非標準端口 | 減少 99% 攻擊 |
| 設定合理 maxretry | 太少影響正常用戶 |
| 設定適當 bantime | 太短無效,太長影響修復 |
| 定期檢查日誌 | 了解攻擊模式 |

## 疑難排解

| 問題 | 解決方案 |
|——|———-|
| 服務啟動失敗 | 檢查 /var/log/fail2ban.log |
| 無法發送郵件 | 安裝 sendmail 或配置 SMTP |
| 無法封鎖 | 確認 iptables 權限 |

## 總結

Fail2Ban 係保護 Linux 伺服器既必備工具,配合 SSH 非標準端口和強密碼,可以大幅提升系統安全性。

Leave a Comment