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

2010年7月30日 发表评论 阅读评论

  前几天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, dest=my@vpsma.com,
sender=my@vpsma.com]
#如果需要发信就去掉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, 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,说明没有成功。

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

  

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

ls /etc/fail2ban/filter.d

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

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

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

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

  如有类似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是否设置正确,命令:

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

?

  输入命令后,系统就会把规则和你的错误日志比对,如果你的错误记录符合规则,说明配置没有问题,就会显示对应的数目,如果没有就会显示0,就得检测下/etc/fail2ban/filter.d/sshd.conf里面的表达式问题了。
  看下vpsma的检测结果,这样表示有规则符合,可以正常工作(前提日志里有错误登陆或者尝试记录):
fail2ban安装教程,防止ssh和ftp密码被暴力破解

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

?

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

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

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

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

fail2ban安装教程,防止ssh和ftp密码被暴力破解转载请您尽量加本文链接: http://www.vpsma.com/fail2ban-ssh-ftp.html

  1. thanks
    2010年7月31日11:25 | #1

    能不能分享下你的/etc/fail2ban/filter.d/pure-ftpd.conf
    我用的kloxo,默认安装的这个,操作系统和您的一样的,fail2ban系统带的那个不能运行
    thanks! :grin:

    [回复]

  2. 2010年7月31日11:28 | #2

    嗯,默认的是不可以的,我在官网找的,测试可以用,这两行,替换原先的即可!我的目前可以用,试下吧

    __errmsg = (?:Authentication failed for user|Erreur d'authentification pour l'utilisateur)

    failregex = pure-ftpd: \(\?@\) \[WARNING\] %(__errmsg)s \[.+\]$

    [回复]

  3. gqkkk
    2012年6月5日17:48 | #3

    sed -i 's/#MaxAuthTries 6/MaxAuthTries 1/g' /etc/ssh/sshd_config
    设置sshd最大尝试次数1次,能解决repeated X times 问题

    [回复]