Fail2ban其实非常强大的,可以保护openssh、openvpn等等一些常用端口的密码爆破、渗透扫描,下面我们说说怎么用。

以CentOS为例

1、安装,缺省CentOS是没有这个玩意的

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm  
yum install fail2ban  

2、编辑配置文件,不要试图去编辑原始的jail.conf,应该拷贝一个local的副本,编辑副本:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local  

3、配置自己要管控的部分,有两种做法,一种是建立sshd.local,然后在jail.local中包含。一种是直接在jail.local中建立。更喜欢第二种,所以本文采用第二种

# vi /etc/fail2ban/jaiol.conf

[ssh-iptables]
enabled  = true  
ignoreip = 127.0.0.1 60.195.251.38 10.1.0.0/24  
filter   = sshd  
action   = iptables[name=SSH, port=ssh, protocol=tcp]  
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath  = /var/log/secure  
maxretry = 5  
  • Enabled 启用规则

  • ignoreip 忽略ip,得把自己加入白名单啊,否则因为同网段的同事错误过多,而把自己ban掉的话,就悲剧了。

  • filter 指明了用哪个filter,对应到/etc/fail2ban/filter.d/sshd.conf。/etc/fail2ban/filter.d里面规则有很多,大家按需选用,实在没有,自己照着改写一个即可。

  • Action 指明了action。这里用到的是iptable。对应/etc/fail2ban/action.d/iptables.conf。

    "iptables" 这个action,看文件包含了/etc/fail2ban/action.d/iptables-common.conf,于是有几个缺省参数chain, name, port, protocal, blocktype, returntype等。我们这里只配了三个参数,name/port/protocal,如果遇到非标准的端口,我们可以如下配置: iptables[name=haha, port=30000, protocol=tcp]

    "sendmail-whois"这个action,自然对应/etc/fail2ban/action.d/sendmail-whois.conf, 发送邮件。

  • logpath 这个很重要,fail2ban去哪里寻找失败信息呢?就是这里了,配错了可就ban空气去了。

  • maxretry 最大尝试数,这里是5。也就是说有人ssh,5次失败后就会被ban掉。

Over,最后重启fail2ban即可:

service fail2ban restart  

注意:缺省的bantime = 3600,可以修改。

comments powered by Disqus