QQ扫一扫联系
说明
最近这段时间 网站 经常遭遇异常流量。
何为异常流量:
非主流搜索引擎的爬虫,算法垃圾,暴力爬取;
渗透性测试的机器人,高并发;
恶意获取站点内容的爬虫,暴力爬取。
以上三种请求 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 进行访问限制。
结语
目前来讲效果不错,继续观察,还是不行就继续搞。