攔截暴力入侵的 IP — Fail2Ban

Fail2Ban 是一套用 Python 寫成的系統安全工具,它會監察伺服器的紀錄檔,當出現多次登入錯誤後,便會觸發一些安全動作,例如將 IP 封鎖或用 Email 通知系統管理員等。Fail2Ban 相當具彈性,可以針對自己的需求設定不同的過濾規則,而 Fail2Ban 已經內建多個過濾規則,包含一些熱門伺服器軟體的過濾規則,支援 sshd, web server, ftp server, email server, dns server 等。

安裝方法:

1. Fail2Ban 是以 Python 寫成,所以要先確定系統有安裝 Python,在 Redhat 安裝 Python 的方法是:
# yum install python python-devel gamin-python

2. 然後安裝 EPEL Repos 及 Fail2Ban

Centos 5 x86_64:
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

CentOS 5 i386:
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm


安裝 fail2ban:
# yum install fail2ban

設定方法:
安裝 Fail2Ban 後,可以開啟 /etc/fail2ban/jail.conf 進行設定,主要的幾個設定為:

ignoreip = 127.0.0.1 ( 忽略的 ip )
bantime = 86400 ( 封鎖 ip 的時間, 以秒為單位, 這裡是 1 天 )
findtime = 600 ( 錯誤登入的時間 )
maxretry = 3 ( 在 findtime 時間內發生的錯誤發入次數 )

設定 SSHD
在 /etc/fail2ban/jail.conf 內找到 [ssh-iptables] 段落,將 enabled 設定成 true,例如:

[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=SSH, protocol=tcp]
logpath = /var/log/secure
maxretry = 3

修改檔案後,要重新啟動 Fail2Ban:
# /etc/rc.d/init.d/fail2ban restart

要觀察 Fail2Ban 的狀態,可以查看紀錄檔 /var/log/fail2ban.log,或者用 iptables 查看:
# iptables -nvL




Leave a Reply