尽管上一篇提到了限制单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,所以此计并非万全

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

Last modification:February 5th, 2020 at 11:01 am
如果觉得我的文章对你有用,请随意赞赏