fail2ban安装教程,防止ssh和ftp密码被暴力破解

前几天vpsma也发帖说了,提醒让大家修改SSH和ftp的端口,大大的减小ssh和ftp密码被暴力破解的危险性,但是还觉得不安全,找了下fail2ban是一个不错的选择。

  fail2ban的官网地址:http://www.fail2ban.org 英文好的朋友可以去官网看下介绍。

  简单的说:fail2ban可以分析linux的错误日志,把一些尝试性登陆的ip,封锁。减小被暴力破解密码的可能性。vpsma安装过程中遇到了一些问题,也与大家分享出来,也有没有解决的问题,会的可以帮忙解决下。vpsma搜了很多中文的教程,结果都是千篇一律。下面说下我的安装过程,vpsma的vps是centos 5.5的。

  vpsma在官网找了下,最新版本的就是fail2ban-0.8.4了!


安装教程




依次执行下面命令:


wget http://cdnetworks-kr-2.dl.sourceforge.net/project/fail2ban/fail2ban-stable/fail2ban-0.8.4/fail2ban-0.8.4.tar.bz2


tar xvfj fail2ban-0.8.4.tar.bz2


cd fail2ban-0.8.4


python setup.py install


cd files


cp ./redhat-initd /etc/init.d/fail2ban


chkconfig --add fail2ban


service fail2ban start


配置教程


进SSH或者用winSCP打开文件: etc/fail2ban/jail.conf


总体配置:


ignoreip = 127.0.0.1


#此ip或者ip段不会被封锁


bantime = 60000


#出错一次封锁的时间


findtime = 600


#在多少秒内出现规定次数就开始工作


maxretry = 2


#最大尝试次数,下面的次数可以覆盖这里的次数


  配置ssh


[ssh-iptables]


enabled = true


#修改成 true


filter = sshd


action = iptables[name=root, port=22, protocol=tcp]


#这里的改成root和正确端口才能工作,vpsma不知道为什么,探讨中.


#sendmail-whois[name=SSH, [email protected],


[email protected]]


#如果需要发信就去掉sendmail前面的#,不需要就加个#注释掉


logpath = /var/log/secure


#日志路径,你查看是不是和你的对应,改成和你的一样的


maxretry = 2


#最大允许的次数,这里还有说法,vpsma会过会讨论


  ftp配置,vpsma用的是pure ftpd,这里说下pure ftpd,用其他的也一个道理:


[pure-ftpd-iptables]


enabled = true


filter = pure-ftpd


action = iptables[name=PureFtpd, port=ftp, protocol=tcp]


#sendmail-whois[name=PureFtpd, [email protected]]


#logpath = /var/log/messages


logpath = /var/log/secure


maxretry = 3


  配置好之后重启下:


service fail2ban start 


(如果你有重启iptables的话,也要 fail2ban,否则fail2ban不能生效,fail2ban的过滤表是在iptables 启动后在加入的)


配置好之后我们检测下fail2ban是否工作:


命令:


fail2ban-client status


  显示:这样,表示这两个阻止状态是可以的(具体生效这里还看不出)


view sourceprint?


[root@vpsma ~]#fail2ban-client status


Status


|- Number of jail: 2


`- Jail list: pure-ftpd-iptables, ssh-iptables


点击查看原图  

如果具体看某一项的状态也可以看,如果显示被ban的ip和数目就表示成功了,如果都是0,说明没有成功。


  以上安装的时候注意的是注意日志的路径。如果你还需要其他的防护,可以查下,是否支持,

命令:

点击查看原图

  

在上面配置好之后,你可以尝试几次错误的登录下,然后再看


下/var/log/fail2ban.log(具体看你设置的错误日志路径),有没有类似下图的

点击查看原图

  

如有类似WARNING [ssh-iptables] Ban 122.6.145.136 的记录这样就表示成功拦截了


  安装中遇到的问题:



1.日志压缩问题:


  如果你的日志是这种格式:

Jul 26 13:49:43 vpsma.com sshd[6898]: Failed password for root    from 122.x.xxx.xxx port 4222 ssh2

Jul 26 13:50:14 vpsma.com last message repeated 3 times   


  这里出现了repeated 3 times,而不是每条日志都逐条展示,这样的话,如果你设置的maxretry次数大于2的话,fail2ban就不能正确分析日志了,因为大于2的话就会显示repeated。很多版本的日志都会这样。vpsma的日志也是这样,所以maxretry次数只能设置为1或者2了,大于2就不能工作了!


  2.etc/fail2ban/jail.conf设置正确,但是不能工作,最大的可能就是对应的规则不对,规则的目录是:/etc/fail2ban/filter.d 里面所有的规则都是正则表达式,不熟悉正则的会有一定难度,熟悉的就很简单了!


  检测:开启的服务是否和规则对应的办法:

例如我们要检测我们的ssh是否设置正确,命令:


1

fail2ban-regex /var/log/secure /etc/fail2ban/filter.d/sshd.conf

  输入命令后,系统就会把规则和你的错误日志比对,如果你的错误记录符合规则,说明配置没有问题,就会显示对应的数目,如果没有就会显示0,就得检测下/etc/fail2ban/filter.d/sshd.conf里面的表达式问题了。

看下vpsma的检测结果,这样表示有规则符合,可以正常工作(前提日志里有错误登陆或者尝试记录):

点击查看原图

fail2ban安装失败主要错误原因分析:




1.日志目录不正确,fail2ban配置文件里一定要和自己VPS的目录路径一样。


  2.日志压缩问题,fail2ban不能读取压缩的日志,可以把最大的次数改成小于等于2。


  3.服务的规则问题,很多版本的用fail2ban带的规则就行,不同的根据错误日志的形式改变下,注意用正则表达式。


  这个fail2ban vpsma安装时候确实头疼了阵,好在最后大部分都解决了,大家遇到什么情况的可以共同探讨下!


另外,还有个软件DenyHosts和这个功能一样,都是防止别人暴力破解密码的。只是阻止别人防问的方式不一样



你可能感兴趣的:(fail2ban)