大公司就不说了,付费CDN,防火墙,大流量,一般也会配置专门的安全问题响应团队。今天侧重讨论一下中小型网站如何(优雅)防范CC攻击。
先说说一般的中小站点安全问题通病:对安全问题不重视,不少iptables都是默认的,主要目标是网站能正常工作,当然也无专门的安全运维人员。(欢迎补充)
然后抛砖引玉,说下前段时间帮朋友网站应对CC攻击时的一些措施,希望各位坛友头脑风暴,看下还有没有更好的应对方案。
1.封IP。IP写到防火墙黑名单。
分析访问日志,封异常IP。
虽说显得被动,但简单粗暴有一定效果。不过一般现在攻击方都是拉一堆肉鸡和IP池做代理,而且动态IP也是变动的,流量特别大的几个IP封了还好说,所有攻击IP都封掉不现实。而且解封也有点麻烦,需要自己写脚本处理。
2.服务器限流。
(比如使用nginx做反向代理,可以增加设置限流)
limit_conn_zone
limit_req_zone
个人感觉还是有用的,相对优雅,nginx的漏桶算法还是不错的。但是还是容易误杀,需要对网站性能有充分理解再来设置。
3.根据请求特征拒绝访问。
比如User-Agent或者是refer,里面会有一些固定信息,可以作为nginx拦截的依据。作为被动防御还是挺有用的,拦截到疑似请求后nginx直接返回403,不过限制UA的时候用得多些,反爬虫比别。当然,现在已经有很多开源变化UA的方法了。对于refer特征一致的请求拦截效果意外的好。
4.请求跳转(转给攻击方)
就是nginx根据请求特征重定向到其它页面。建议别顺手写baidu.com,万一被百度判罚了就麻烦了。可以设置成攻击你的来源,给他打回去。操作虽说优雅,就是返回去的请求并不一定能给攻击方造成压力,不过个人觉得这样的处理压力应该会比直接返回403、404来得大。
5.用CDN带的CC防御功能
之前用过CDNbest效果还可以的,安利给各位,可以尝试使用
6.提高网站性能
如果是在限流情况下还能被CC攻击搞崩的网站,的确也需要性能自测一波,优化下代码了。