普通cc攻击是一个ip上大量的请求,还好封一点,通过防火墙的速率验证就能封住。
而这种测速网站,是单纯的ip多,收集四五个测速网站,就有500个ip了,它就一秒请求一次,你服务器也扛不住。(动态网站,比如我们子比不缓存html,他们一个节点请求一次(网站测速,不是ping),就相当于正常用户访问一次,需要请求数据库和php渲染出html然后下发),而且没办法通过速率限制去封禁它。所以我们要解决这个问题。
方法:
一:缓存两秒,两秒内所有请求都是响应相同html等内容,itdog无论哪个测速网站,快测也都是几秒内完成。正常用户缓存两秒也相当于实时。
建议不要在cdn处或者缓存插件或者Nginx的proxy_cache和FastCGI去缓存。会导致页面不实时刷新,从而产生一些问题。
我们是wordpress等,可以在宝塔中有一个宝塔加速软件,这里能缓存html,里面选择wp规则的话,默认登录用户和用户登录行为不会缓存,那么html缓存的话就不会影响用户登录。
二:抓ua特征,比如itdog提供了http_checkmode 这个请求头,检测到就封就行了https://www.itdog.cn/article/content-313.html
但是其他测速网站很流氓,很多都没有特定ua,而且ua详情请求头,nginx默认不记录的,需要你去自己改一下nginx配置,日志中才会显示完整请求头,自己去找特征才行。
三:抓所有ip(写一个访问就禁的页面,让测速网站去测速这个页面),或者你直接网站目录创建一个block.html的,然后去宝塔nginx防火墙设置url增强验证,给这个页面单独上人机验证,然后用测速网站去测速这个页面,测速几次,然后人机验证不通过,所有ip就自动封禁在防火墙了,然后你再一键拉黑。
目前我用的方法三,几乎适合所有测速网站。
暂无评论内容