上篇文章讲到在fail2ban日志中发现大量来自103.41.124.0网段的不同IP的攻击,针对这种自动更换ip地址的暴力破解,fail2ban的默认配置是无能为力的。但是看了下fail2ban的文档之后,发现只需要修改一下默认的配置文件,就能够实现自动屏蔽整个网段的功能,防止这种更换ip地址的暴力破解方式。下面就来动手操作一下
查找和编辑动作配置文件
首先,找到fail2ban使用的动作配置文件。
一般情况下,可以在 /etc/fail2ban/jail.local 的配置文件内查找 banaction 变量,后面跟的就是使用的动作配置文件名称,一般情况下默认的配置文件名称是 iptables-multiport.conf
找到配置文件名称后打开对应的动作配置文件
1 |
# nano /etc/fail2ban/action.d/iptables-multiport.conf |
然后查找下面这两条语句
1 2 3 4 5 6 7 8 9 |
... # Values: CMD # actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP ... # Values: CMD # actionunban = iptables -D fail2ban-<name> -s <ip> -j DROP |
actionban 语句是在屏蔽某ip的时候给iptable发送的指令, actionunban 语句是在取消屏蔽的时候给iptable发送的指令。
可以看到命令中间的 <ip> 就是我们要修改的屏蔽IP地址,要实现屏蔽整个网段,只需要在需要屏蔽的IP地址后面添加斜杠加位数的ip掩码就可以了,例如127.0.0.1/8,就表示屏蔽包含所有IP地址第一段为127的IP地址。
关于ip段掩码的意义,可以参考维基百科的相关词条
一般常用的掩码如下
1 2 3 4 5 |
IPv4/CIDR Mask Hosts a.b.c.0/24 255.255.255.000 256 a.b.0.0/16 255.255.000.000 65,536 a.0.0.0/8 255.000.000.000 16,777,216 0.0.0.0/0 000.000.000.000 4,294,967,296 |
这里我们不但要考虑安全也要兼顾实用,所以建议采用第一行的24位IP掩码。如果采用更大的掩码,有一定的几率会屏蔽掉自己的登陆IP,因为根据对fail2ban日志的分析,有90%的攻击IP来自于中国的各个地方,保不准就会有IP和自己登陆的IP网段重合,虽然屏蔽之后也还是可以通过lish来登陆SSH,但还是尽量避免这种情况发生。
这样设置之后,如果有类似183.136.216.3的ip地址被发现存在暴力破解,那么fail2ban就会添加一条IP为183.136.216.0/24的iptable规则,把所有在183.136.216.0这个网段下的ip地址都进行屏蔽,这样一次可以屏蔽256个同网段的IP地址,大大提高fail2ban的屏蔽的效率。
特别是针对同网段的大量IP地址轮流进行的暴力破解有很好的防护作用。
设置完成后的action配置文件就像下面这样
1 2 3 4 5 6 7 8 9 |
... # Values: CMD # actionban = iptables -I fail2ban-<name> 1 -s <ip>/24 -j DROP ... # Values: CMD # actionunban = iptables -D fail2ban-<name> -s <ip>/24 -j DROP |
修改好配置文件之后在SSH执行 # service fail2ban restart 命令重启服务
验证动作配置文件
过一段时间,刷新下iptable规则,如果发现如下的IP规则被添加,则说明fail2ban运行正常,并且能够很好的执行修改后的actionban指令
然后我们再试下fail2ban,看是否能够执行actionunban指令
输入 # service fail2ban restart 命令重启fail2ban服务,fail2ban会自动unban之前所有IP地址
然后输入 # iptables -L -n --line-number 命令查看iptable规则,看看是否通过重启服务清空了fail2ban的iptable规则。
如果actionunban执行成功,那么通过fail2ban建立的规则都会被清空。
至此,就完成了通过修改fail2ban的action配置文件来提高对自动更换IP的暴力破解的防护。
系统环境
- Debian 7
- fail2ban 0.8.6-3wheezy3
- iptables 1.4.14-3.1
There are no comments yet