使用Fail2ban防止黑客对SSH和FTP的穷举密码攻击
目前暴力破解SSH和FTP的密码风险越来越高,随便个小孩找个所谓的黑客工具就能开始扫我们服务器的密码,为了安全起见,还是应该将频繁扫描我们端口的企图直接扼杀,因此fail2ban是一个不错的选择。
fail2ban的官网地址:http://www.fail2ban.org
简单的说:fail2ban可以分析linux的错误日志,把一些尝试性登陆的ip,封锁。减小被暴力破解密码的可能性。
下面说下我的安装过程,我系统是centos 5.5的,其他系统到官网看下要使用哪个安装包。
目前最新版本是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, dest=my@vpsma.com,
sender=my@vpsma.com]
#如果需要发信就去掉sendmail前面的#,不需要就加个#注释掉
logpath = /var/log/secure
#日志路径,你查看是不是和你的对应,改成和你的一样的
maxretry = 2
#最大允许的次数,这里还有说法,vpsma会过会讨论
ftp配置,我用的是pure ftpd,这里说下pure ftpd,用其他的也一个道理:
[pure-ftpd-iptables]
enabled = true
filter = pure-ftpd
action = iptables[name=PureFtpd, port=ftp, protocol=tcp]
#sendmail-whois[name=PureFtpd, dest=my@vpsma.com]
#logpath = /var/log/messages
logpath = /var/log/secure
maxretry = 3
配置好之后重启下:
service fail2ban start
(如果你有重启iptables的话,也要重启 fail2ban,否则fail2ban不能生效,fail2ban的过滤表是在iptables 启动后在加入的)
配置好之后我们检测下fail2ban是否工作:
命令:
fail2ban-client status
显示:这样,表示这两个阻止状态是可以的(具体生效这里还看不出)
[root@vpsma ~]#fail2ban-client status
Status
|- Number of jail: 2
`- Jail list: pure-ftpd-iptables, ssh-iptables
如果具体看某一项的状态也可以看,如果显示被ban的ip和数目就表示成功了,如果都是0,说明没有成功。
以上安装的时候注意的是注意日志的路径。如果你还需要其他的防护,可以查下,是否支持,
命令:
ls /etc/fail2ban/filter.d
在上面配置好之后,你可以尝试几次错误的登录下,然后再看
下/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。很多版本的日志都会这样。我的日志也是这样,所以maxretry次数只能设置为1或者2了,大于2就不能工作了!
2.etc/fail2ban/jail.conf设置正确,但是不能工作,最大的可能就是对应的规则不对,规则的目录是:/etc/fail2ban/filter.d 里面所有的规则都是正则表达式,不熟悉正则的会有一定难度,熟悉的就很简单了!
检测:开启的服务是否和规则对应的办法:
例如我们要检测我们的ssh是否设置正确,命令:
fail2ban-regex /var/log/secure /etc/fail2ban/filter.d/sshd.conf
输入命令后,系统就会把规则和你的错误日志比对,如果你的错误记录符合规则,说明配置没有问题,就会显示对应的数目,如果没有就会显示0,就得检测下/etc/fail2ban/filter.d/sshd.conf里面的表达式问题了。
看下下图的检测结果,这样表示有规则符合,可以正常工作(前提日志里有错误登陆或者尝试记录):
fail2ban安装失败主要错误原因分析:
1.日志目录不正确,fail2ban配置文件里一定要和自己VPS的目录路径一样。
2.日志压缩问题,fail2ban不能读取压缩的日志,可以把最大的次数改成小于等于2。
3.服务的规则问题,很多版本的用fail2ban带的规则就行,不同的根据错误日志的形式改变下,注意用正则表达式。
这个fail2ban vpsma安装时候确实头疼了阵,好在最后大部分都解决了,大家遇到什么情况的可以共同探讨下!
- 最新评论