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,可以修改。