Fail2ban即可以用系统自带的防火墙,如Linux的iptables或FreeBSD的ipfw,又可以换用tcpd,此外还可以扩展到其它网络服务,目前我主要使用在监控22端口,以及/var/log/secure日志,主要是那些非法访问的日志,当发现某个IP在一个定义的时间段内,尝试SSH密码失败达到一个定义的次数,则利用LINUX的iptables阻止改IP一个定义的时间段,当然,也可以无期限的阻止。
下载地址http://fail2ban.sourceforge.net/,在download中选择适合自己操作系统的版本下载,我选择的是REDHAT版本,该系统下软件没有部分其它版本高,不过没关系,已经完全满足我们的需求。
下载fail2ban-0.6.2-1brn.src.rpm,由于0.6.1版本有时间判断上的BUG,并且使用源代码重新编译可以更加的和实际系统环境配合,达到最好的性能,所以……选择的这个版本的源代码包。
rpmbuild ——rebuild fail2ban-0.6.2-1brn.src.rpm
从编译日志可以得知编译好的RPM在/usr/src/redhat/RPMS/noarch/fail2ban-0.6.2-1brn.noarch.rpm
rpm -Uvh /usr/src/redhat/RPMS/noarch/fail2ban-0.6.2-1brn.noarch.rpm
执行文件已经在 /etc/init.d/fail2ban ,并且作为一个服务可以用service fail2ban {start|stop|status|restart|condrestart}来进行操作
配置文件在/etc/fail2ban.conf
默认配置就是监控SSH端口和日志,所以我未作大的改动,有兴趣的兄弟可以尝试监控其它服务的日志和端口。
我改了一下几个参数:
“locale = ”改为“locale = en_US”,这个主要是为了时间格式的匹配,反正0.6.1版本有这个BUG并且没这个参数,导致我安装后无法使用,安装0.6.2后正常。
“maxfailures = 3”,这个其实就是最大尝试次数,在后面定义的时间区间如果超过了这个尝试次数将阻止IP访问SSH端口。
“bantime = 3600”,其实就是阻止的时间段,当达到阻止条件的时候,阻止该IP访问SSH端口3600秒,文档说如果设为“-1”就是永久阻止,各位可以视自己情况设定。
“findtime = 60”,这个参数就是尝试的时间段,在这个时间段内判断前面尝试次数,达到则阻止其它参数我没动,等有时间了再研究。
启动方法很简单,这里就不说了。