2010-04-07

Fail2ban—-暴力口令破解的克星

Fail2ban对防止暴力破解口令有非常好的作用,它可以设置对方密码失败n次后用防火墙屏蔽n分钟,写入日志中,并可邮件你。 它的工作原理就是:
fail2ban → 监视log file → 连续出现多次错误信息 → 封锁IP.
请确定已经安装了 fail2ban,如果没有可以使用 sudo aptitude install fail2ban 来安装(fail2ban 这是 debian 源中的包,如果是群英汇客户,安装 ossxp-secure-fail2ban,自动安装了群英汇提供的过滤器扩展等)。您可以在群英汇的单点登录网站 中亲身体验到 fail2ban的威力。 8-) 8-) 下面以配置cosign 为例来演示 fail2ban 的配置使用。 在Debian上Fail2ban的配置文件在 /etc/fail2ban 下,jail.conf配置文件是fail2ban所保护的具体服务的配置,但是一般都是配置 jail.local 文件来覆盖 jail.conf。下面是一些fail2ban的全局变量,可以被覆盖:
ignoreip = 127.0.0.1 172.13.14.15   #忽略IP,在这个清单里的IP不会被屏蔽
bantime = 600                       #屏蔽时间
maxretry = 3                        #尝试次数
首先,fail2ban可以很方便的在 filter.d 目录增加filter文件,一定要注意filter文件必须有后缀 .conf 。增加cosign的filter文件 cosign-auth.conf 内容如下:
[Definition]
failregex = CoSign(?:\[\d+\]*)?: user .* authentication failure from host [[]<HOST>[]]
ignoreregex =
其中failregex就是cosign日志文件的匹配策略。fail2ban自身有一个很方便的正则表达式测试工具 fail2ban-regex ,可以这样使用:
sudo  fail2ban-regex /var/log/apache2/error.log cosign-auth.conf
然后,在 jail.local 中加入下面的内容, filter 就是上面的文件 cosign-auth.conf:
[cosign]
enabled = true                           # 开启
port    = https                          # 端口
filter  = cosign-auth                    # filter.d/cosign-auth.conf
logpath = /var/log/apache*/error.log     # cosign失败日志路径
最后,就需要重新启动 sudo /etc/init.d/fail2ban restart,在浏览器上访问检测。 如果重启 fail2ban 后,多次用错误口令访问之后还是没有禁用,可能有两种情况:
  1. 端口错误,即在 jail.local 文件中 [cosign] port 配置错误
  2. 防火墙 iptables 没有配置,你可以考虑安装 firestarter 或者 shorewall。
blog comments powered by Disqus