利用 fail2ban 来控制 Laravel 站点的异常流量
说明
最近这段时间 LK 经常遭遇异常流量。
何为异常流量:
- 非主流搜索引擎的爬虫,算法垃圾,暴力爬取;
- 渗透性测试的机器人,高并发;
- 恶意获取站点内容的爬虫,暴力爬取。
以上三种请求 IP 池子都不小,人工去过滤 IP 不管用。这类似于 DDOS 了。
限流
- Nginx 可开启配置 limit_req_zone 和 limit_conn_zone 参数,进行限流操作;
- Laravel 添加限流,针对耗时的请求,调低请求阈值。
IP 黑名单
虽有 Laravel 限流,仍扛不住高并发的请求,因 Laravel 本身启动就会消耗大量的资源。
所以需要找一个工具,在 nginx 的请求还未迭代给 php-fpm 前,甚至在进入 nginx 之前,就将非法请求处理掉,这是最高效的。
最终选用 fail2ban 来处理恶意请求。
1. 安装和使用 fail2ban
这篇文章主要讲思路。安装和使用请参考以下两个文章:
2. Laravel 创建黑名单
Laravel 中的规则是,对特殊的 User Agent 或奇怪的请求 Query 进行匹配,发现异常的 IP 就响应到 418 状态码,这就相当于把 IP 加到黑名单了。
fail2ban 会自动解析 nginx 日志,发现 418 的就会对其 IP 进行访问限制。
结语
目前来讲效果不错,继续观察,还是不行就继续搞。
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 8个月前 自动加精
:+1: :+1: :+1:
兵来将挡,水来土掩
应该算CC攻击吧
最近老是遇到短信接口被刷的情况,虽然做了外国ip拦截,但是还是不停的请求接口,基本都是一秒几条请求,看日志一天都2GB
上个免费的CloudFlare cdn也可以过滤很大一部分
遇到了同样问题,免费站点,不注册就能看的
根据ua直接返回444,比如windows ce/98/2000, android [2-9]
国外的asn,各大云厂商的asn直接ban
后来发现还是不行,对方用了代理ip,都是国内正常家宽,开cf的5秒盾吧真的影响用户体验,而且挂了cf晚高峰国内基本无法访问,验证后返回内容也影响搜索引擎收录
是否可以使用
openresty
+lua
, 来控制黑名单呢刚刷到有人反馈 站长就处理了,反应 :+1: :+1: :+1:
是看到什么证据发现有人在爬虫的?学习学习
前段时间被CC 攻击了 一个月 ,
服务器 物理机 DELL R740 双CPU 6148 算是超高配了 被攻击期间 服务器cpu 百分之百;
起初宝塔防火墙 由于宝塔防火墙 也是通过服务器来处理的 最终还是打到了 服务器上;
CF五秒盾牌无效~
最后解决 CF + 服务器检测到被攻击 则 自动python 加入到CF防火墙 拉黑IP 解决;
不要自己扛 用CDN拉黑IP
如果你也遇到此类状况 可以 使用的方式哈~
最近看到一个开源项目:
github.com/crowdsecurity/crowdsec
据称速度是 fail2ban 的 60 倍!!!