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”, 这个参数就是尝试的时间段, 在这个时间段内判断前面尝试次数, 达到则阻止其它参数我没动, 等有时间了再研究。
启动方法很简单, 这里就不说了。
……