尽管上一篇提到了限制单IP的请求和并发,但效果仍然不是很显著,在一些大型PHP页面被cc时尽管只有一点量,但也足够致命。
我们下面来说说怎样通过禁止UA来达到相应的防御效果
食用方法:
被cc过后,我们可以通过查看相应网站的Nginx日志文件来查看攻击端的UA。由于攻击者没有伪造UA,所以一眼就看出了不对,虽然使用了大量代理,但其UA都是一致的,而且是从未见过的奇怪UA
下面是UA
45.140.. - - [02/Feb/2020:03:39:27 +0800] "GET / HTTP/1.1" 200 2018 "-" "Mozilla/5.0 (pc-x86_64-linux-gnu) Siege/4.0.4"

那么我们只用记住

Siege/4.0.4
这个关键词就好

然后,我们打开相应站点的配置文件,并在server"{" "}"中间加入

if ($http_user_agent ~* "Siege/4.0.4"){
return 403;
}

warning:请不要再把这段规则写在http下,众所周知这都会导致语法错误

聪明的人应该看出来了,要对UA进行判断,规则就是:

if ($http_user_agent ~* "这里填UA"){
...
}
以下为实测环节:
Screenshot_20200202-034706.png
Screenshot_20200202-034727.png
可以看到,服务器对攻击端发送的HTTP请求全都返回了403,而且服务器基本没什么负载。

总结:
虽然禁止UA可以防得住代理cc Attack,但也不排除对方伪造UA的CC Attack,所以此计并非万全

---此文章为原创文章,转载请注明出处

最后修改:2022 年 04 月 30 日
如果觉得我的文章对你有用,请随意赞赏