背景交代完毕,现在我们一起来看看这个fail2ban的基本配置,至于如何安装,彷佛不须要解释,你可以 apt install fail2ban 或者 yum install fail2ban 安装好之后就可以开始配置了,配置文件在 /etc/fail2ban 目录,紧张有两个文件夹你须要关心:

1、jail.d ,即 /etc/fail2ban/jail.d 这个文件夹紧张存放详细的任务,理解成任务或许不错,它下面的每个配置文件都代表了要实行的事宜吧。

2、filter.d , 即 /etc/fail2ban/filter.d 这个文件夹下面是过滤器,或者理解为筛选器吧,比如,你须要把频繁要求你博客的IP拉黑,那么这件事须要一个描述文件,这个描述文件须要放在 jail.d 目录,而这个描述文件须要一个过滤器,它指定了须要拉黑的IP的特色,已经须要忽略的事宜的特色。
下面,我们以将频繁要求博客的IP拉黑为例。

php防刷新拉黑运维必备  防御 dos 进击利器fail2ban Webpack

首先,fail2ban是根据nginx的日志去筛选事宜,比如要拉黑一个IP是一个事宜,那么先须要筛选出来,然后拉黑。
nginx实在也可以防御ddos攻击,详细请看我之前写的这篇博客:利用Nginx防御ddos攻击 好了,我们先查看nginx谢绝了某个IP的日志 cat /var/log/nginx/error.log找到谢绝后的日志,大致如下:

limiting requests, excess: 10.870 by zone \公众common\公众, client: 112.10.110.183, serv

现在,我们考虑这段输出如何用正则去匹配,并提取出HOST,首先因此 limiting requests, excess:开头,中间可以理解为任意字符,接着是client: IP 末了的部分也可以理解为任意字符,以是正则可以如下:

limiting requests, excess:.client: <HOST>

现在,我们创建 /etc/fail2ban/filter.d/nginx-http-limit-request.conf 文件,内容如下:

[Definition]failregex = limiting requests, excess:.client: <HOST>ignoreregex = limiting requests, excess:.client: 45.77.134.36

这里,45.77.134.36 是我博客地址也是我梯子地址,由于是外洋做事器,以是我一样平常是走代理,以是不要把自己给拉黑了,接着新建 /etc/fail2ban/jail.d/nginx-limit.conf 文件,内容如下:

[nginx-http-limit-request]enabled = trueport = https,httplogpath = /var/log/nginx/error.logmaxretry = 3findtime = 120bantime = 180

这里,[nginx-http-limit-request] 指定了要利用的过滤器,接着指定了是否启用,以及端口,log文件,maxretry是指 这样的事可以发生几次,findtime 是指每隔多久检讨一次log 文件,bantime 是指暗黑韶光,我这里拉黑 3分钟。
同事,这个目录下有个默认的对ssh的配置你可以删除也可以禁用也可以自己折腾,我是删除了,我的ssh是改了端口且只能证书登录。
ssh 干系的你可以查看我这篇博客:ssh命令实用技巧总结

接着,你可以用让fail2ban开机自启并重启做事了:

systemctl enable fail2bansystemctl restart fail2ban

末了,我们来办理本文开始碰着的难题,将仿照登录的IP给禁掉,有了上线的先容,该当很明白,实在只须要一个过滤器即可。
附上我的过滤器:

/etc/fail2ban/filter.d/nginx-wordpress-login.conf

[Definition]failregex = <HOST> -.-./wp-login.php HTTP/. 404 .ignoreregex =

那么这里,我为啥没有忽略我自己的IP呢,由于我用了 WPS Hide Login 插件,将我的登录地址改了,以是我不可能访问那个地址,而访问那个地址的绝对是坏人。
你也可以测试,让自己触发事宜,然后被拉黑,测试是否还能访问。
我这边,自己手多的访问了/wp-login.php 结果自己被拉黑,末了通过如下命令进行解封。

fail2ban-client set nginx-wordpress-login unbanip 45.77.134.36

这里,nginx-wordpress-login 是你filter的名字。

如果你以为有用记得收藏哦,也可以转发让更多的人看到,ps,可以点击 左下角 理解更多 阅读优化排版的版本。
您的支持,是我持续创作的动力。