Linux 技术手札

拦截暴力入侵的 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

Exit mobile version