技术学习 利用 fail2ban 来控制 Laravel 站点的异常流量

利用 fail2ban 来控制 Laravel 站点的异常流量

160
 

说明

最近这段时间 网站 经常遭遇异常流量。


何为异常流量:

非主流搜索引擎的爬虫,算法垃圾,暴力爬取;

渗透性测试的机器人,高并发;

恶意获取站点内容的爬虫,暴力爬取。

以上三种请求 IP 池子都不小,人工去过滤 IP 不管用。这类似于 DDOS 了。


限流

Nginx 可开启配置 limit_req_zone 和 limit_conn_zone 参数,进行限流操作;

Laravel 添加限流,针对耗时的请求,调低请求阈值。

IP 黑名单

虽有 Laravel 限流,仍扛不住高并发的请求,因 Laravel 本身启动就会消耗大量的资源。


所以需要找一个工具,在 nginx 的请求还未迭代给 php-fpm 前,甚至在进入 nginx 之前,就将非法请求处理掉,这是最高效的。


最终选用 fail2ban 来处理恶意请求。


1. 安装和使用 fail2ban

这篇文章主要讲思路。安装和使用请参考以下两个文章:


https://aureola.codes/en/blog/2021/how-stop-vulnaribility-scanners-laravel-fail2ban 

https://atpx.com/blog/nginx-fail2ban/ 

2. Laravel 创建黑名单

Laravel 中的规则是,对特殊的 User Agent 或奇怪的请求 Query 进行匹配,发现异常的 IP 就响应到 418 状态码,这就相当于把 IP 加到黑名单了。


fail2ban 会自动解析 nginx 日志,发现 418 的就会对其 IP 进行访问限制。


结语

目前来讲效果不错,继续观察,还是不行就继续搞。

更新:2024-06-20 12:12:17 © 著作权归作者所有
QQ
微信