利用 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 协议》,转载必须注明作者和本文链接
摈弃世俗浮躁,追求技术精湛
本帖由系统于 1周前 自动加精
Summer
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 20

:+1: :+1: :+1:

1周前 评论

兵来将挡,水来土掩

1周前 评论

应该算CC攻击吧

1周前 评论

最近老是遇到短信接口被刷的情况,虽然做了外国ip拦截,但是还是不停的请求接口,基本都是一秒几条请求,看日志一天都2GB

1周前 评论
IT学徒 1周前
人艰不拆 1周前
wangbin (作者) 1周前
wangbin (作者) 1周前

上个免费的CloudFlare cdn也可以过滤很大一部分

1周前 评论
xuchunyang 1周前
Summer (楼主) 1周前

遇到了同样问题,免费站点,不注册就能看的

根据ua直接返回444,比如windows ce/98/2000, android [2-9]

国外的asn,各大云厂商的asn直接ban

后来发现还是不行,对方用了代理ip,都是国内正常家宽,开cf的5秒盾吧真的影响用户体验,而且挂了cf晚高峰国内基本无法访问,验证后返回内容也影响搜索引擎收录

1周前 评论
Summer (楼主) 1周前
晏南风 1周前
随波逐流

是否可以使用 openresty + lua, 来控制黑名单呢

1周前 评论
lovewei 1周前

刚刷到有人反馈 站长就处理了,反应 :+1: :+1: :+1:

1周前 评论

是看到什么证据发现有人在爬虫的?学习学习

1周前 评论
小李世界 1周前

前段时间被CC 攻击了 一个月 ,
服务器 物理机 DELL R740 双CPU 6148 算是超高配了 被攻击期间 服务器cpu 百分之百;
起初宝塔防火墙 由于宝塔防火墙 也是通过服务器来处理的 最终还是打到了 服务器上;
CF五秒盾牌无效~
最后解决 CF + 服务器检测到被攻击 则 自动python 加入到CF防火墙 拉黑IP 解决;
不要自己扛 用CDN拉黑IP
如果你也遇到此类状况 可以 使用的方式哈~

2天前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!