网站首页 > 技术教程 正文
我之前使用zblog后来用emlog,但都是虚拟主机,之后又使用hexo,直到最近才开始使用wordpress,但却遇到了一堆问题,尤其是有大量俄罗斯IP一直在模拟登录,这感觉很恶心,之前一直想基于openresty和lua实现动态拉黑IP,但是又不着急,所以一直搁置,这件事的发生让我觉得很有必要,但我最初的想法是惩罚这个恶意IP,Google的时候发现别人也有类似的想法,惩罚ddos攻击者,而在stackoverflow里,有人建议不要试图去惩罚了,因为背后往往是肉鸡,而应该考虑使用 fail2ban ,所以我很好奇,fail2ban是什么,搜索后发现它可以根据nginx日志及时拉黑恶意IP
背景交代完毕,现在我们一起来看看这个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拉黑为例。
首先,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 = true
- port = https,http
- logpath = /var/log/nginx/error.log
- maxretry = 3
- findtime = 120
- bantime = 180
这里,[nginx-http-limit-request] 指定了要使用的过滤器,接着指定了是否启用,以及端口,log文件,maxretry是指 这样的事可以发生几次,findtime 是指每隔多久检查一次log 文件,bantime 是指暗黑时间,我这里拉黑 3分钟。同事,这个目录下有个默认的对ssh的配置你可以删除也可以禁用也可以自己折腾,我是删除了,我的ssh是改了端口且只能证书登录。ssh 相关的你可以查看我这篇博客:ssh命令实用技巧总结
接着,你可以用让fail2ban开机自启并重启服务了:
- systemctl enable fail2ban
- systemctl 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,可以点击 左下角 了解更多 阅读优化排版的版本。您的支持,是我持续创作的动力。
- 上一篇: Docker容器的攻击思路以及防护策略
- 下一篇: 新的PHP高危漏洞可导致黑客执行远程代码攻击
猜你喜欢
- 2024-10-16 Evilginx - 一个用于钓鱼攻击的中间人攻击框架
- 2024-10-16 新CC攻击中的慢速攻击(cc攻击教学)
- 2024-10-16 快速云:服务器针对DDOS攻击有哪些对策?
- 2024-10-16 DDOS攻击会带来什么危害?有什么应对策略?
- 2024-10-16 通过一次安全处理暴露的问题(通过一次安全处理暴露的问题的英文)
- 2024-10-16 一文搞懂Web的攻击技术(web攻击手段)
- 2024-10-16 Linux基础14-网络安全之模拟CC攻击以及防御(连载中)
- 2024-10-16 利用APR缓存攻击实例(arp高速缓存)
- 2024-10-16 Nginx并发模型与traffic_server并发模型比较
- 2024-10-16 2.7KStar!程序员必备!NginxUI,让服务器配置不再难!
你 发表评论:
欢迎- 最近发表
-
- linux日志文件的管理、备份及日志服务器的搭建
- Linux下挂载windows的共享目录操作方法
- Linux系统中的备份文件命令(linux系统中的备份文件命令有哪些)
- 麒麟KYLINOS|通过不同方法设置用户访问文件及目录权限
- 「Linux笔记」系统目录结构(linux目录的结构及含义)
- linux中修改归属权chown命令和chgrp命令
- 工作日报 2021.10.27 Android-SEAndroid权限问题指南
- Windows和Linux环境下,修改Ollama的模型默认保存路径
- 如何强制用户在 Linux 上下次登录时更改密码?
- 如何删除Linux文件夹中除某些扩展名之外的所有文件?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)