CC 攻击和采集都是同个IP发起大量访问请求,这个会造成大量请求拥堵,导致服务器资源耗尽,CC攻击主要针对特定服务接口,属于实现 DoS 攻击的一种方式 。
如果没有套上CDN,那其实防御思路非常简单,识别出访问量大的IP,直接用服务器的iptable防火墙封禁IP就行了,但是如果使用CDN,那所有访客都是通过CDN连接我们的服务器,这种情况下,服务器封禁IP的话,只能封到CDN的IP,无法阻止CDN后面的真实访客访问,对这部分有攻击行为的访客,只能通过CDN的防火墙,导入IP黑名单方式来屏蔽 。
虽然服务器级别的封禁IP,在CDN下有难度,但是通过NGINX还是可以识别到单独的访问进程,通过识别出CDN后的真实IP访问,在处理这部分访问的时候,直接转给他502页面,不进行后续网页输出就行 。
说一下NGINX 流控,有两种方式:
limit_req_zone:通过“漏桶”算法限制每个 IP 发起的请求频率 。
limit_conn_zone:限制每个 IP 发起的连接数 。
实践配置
一般NGINX 部分
配置error_log/www/wwwlogs/nginx_error.logerror;
这样才能正确显示到被封禁的错误记录出来个FAIL2BAN使用
然后在 http 部分中配置:
map $http_x_forwarded_for$clientRealIp{""$remote_addr;~^(?P
limit_req zone=sym burst=5;limit_conn conn_sym 10;宝塔安装的NGINX按下面配置
Nginx管理-配置修改
先将
error_log/www/wwwlogs/nginx_error.logcrit;
改成
error_log/www/wwwlogs/nginx_error.logerror;
然后在http部分
include proxy.conf;下面增加
map $http_x_forwarded_for$clientRealIp{""$remote_addr;~^(?P
【宝塔面板识别CDN真实访问者IP并屏蔽思路【防采集思路】】limit_conn_zone $binary_remote_addr zone=perip:10m;改成
limit_conn_zone $clientRealIp zone=perip:10m;这样才能针对使用代理IP刷你的站的人的真实IP进行计数,达到每秒多少个就封禁访问
然后到需要进行防御的网站点设置-流量限制
这里启用流量限制,并将单IP并发数进行限制,一般如果网站页面不复杂设置为10就行 。
接下来重启 NGINX 后当有超流客户端请求时将记录在 www/wwwroot/nginx_error.log(不是宝塔面板的话,NGINX默认错误日志在 /var/log/nginx/error.log) 中看到类似记录:
2018/04/27 14:25:27 [error] 6307#0: *1472746 limiting connections by zone “perip”, client: 182.161.35.139, server: 104.153.102.68, request: “GET /index.php?10=8 HTTP/1.1”
此时请求已经被 NGINX 限流 。
以上就是爱惜日网?宝塔面板识别CDN真实访问者IP并屏蔽思路【防采集思路】的相关内容了,更多精彩请关注作者:爱惜日号SEO专员
推荐阅读
- 生蚝怎么看死还是活
- 复制指纹 复制指纹打卡最简单方法
- 恩施藤茶与莓茶的区别
- 核酸检测如何识别是否是新冠病毒
- 如何识别黑芝麻是否染色?
- 核酸检测怎么识别身份
- 电脑人脸识别怎么设置 台式电脑人脸识别设置方法
- 自动错别字识别软件 免费的扫描转换文字的方法
- 冬虫夏草怎么判断真假
- 作为农民应该如何快速识别农药是否失效呢