🐧 Linux Fail2Ban 與防火牆整合進階應用:封鎖惡意 IP 全攻略
在開放網路環境中,Linux 伺服器常遭受暴力登入與掃描攻擊。Fail2Ban 可自動分析日誌、封鎖惡意 IP,搭配 firewalld 或 iptables,能有效防止 SSH、HTTP、FTP 等服務被暴力破解。本文教你從安裝、設定到進階防禦整合的完整實作。
📘 一、Fail2Ban 概念與運作原理
- 核心原理:透過分析日誌(如 /var/log/secure),偵測重複失敗登入行為。
- 封鎖機制:自動呼叫防火牆(firewalld / iptables)封鎖來源 IP。
- 整合範圍:SSH、vsftpd、Postfix、nginx、Apache、Proxmox 皆可套用。
⚙️ 二、安裝 Fail2Ban
# Rocky / CentOS
sudo dnf install fail2ban -y
# Ubuntu / Debian
sudo apt install fail2ban -y
啟動並設定開機自動啟用:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo systemctl status fail2ban
✅ 小提示:若顯示
active (running),代表服務啟動成功。
🧩 三、設定 SSH 防暴力登入保護
建立覆寫設定檔:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
編輯 /etc/fail2ban/jail.local:
[sshd]
enabled = true
port = ssh
logpath = /var/log/secure
maxretry = 3
bantime = 600
backend = systemd
套用設定:
sudo systemctl restart fail2ban
🧱 四、整合 firewalld 封鎖規則
Fail2Ban 會自動建立 zone f2b-sshd,可用以下指令檢查:
sudo firewall-cmd --info-zone=f2b-sshd
sudo firewall-cmd --list-all-zones | grep f2b
查看目前被封鎖 IP:
sudo fail2ban-client status sshd
解除封鎖(例如解除 192.168.1.50):
sudo fail2ban-client set sshd unbanip 192.168.1.50
📈 五、日誌與狀態監控
# 查看 Fail2Ban 總狀態
sudo fail2ban-client status
# 查看各 jail 封鎖紀錄
sudo fail2ban-client status sshd
# 監控即時封鎖
sudo tail -f /var/log/fail2ban.log
🧠 六、進階應用:自訂多重防禦
- 結合 nginx 或 apache 日誌,封鎖特定路徑的攻擊。
- 透過
recidivejail 累積封鎖多次重犯 IP。 - 搭配 systemd 定時清理舊紀錄。
[recidive]
enabled = true
filter = recidive
logpath = /var/log/fail2ban.log
bantime = 86400
findtime = 3600
📘 七、結語
透過 Fail2Ban 搭配防火牆,可自動偵測並封鎖惡意登入來源,大幅提升伺服器安全性。建議再搭配 GoAccess 或 rsyslog 做流量與異常分析,形成完整安全監控鏈。
🔗 延伸閱讀
— WWFandy・系統與網路筆記
沒有留言: