事件背景:
公司服务部署框架因redis瓶颈,cc攻击导致资源全部被占用,APP几乎打不开
处理过程
一、因亚马逊服务就开启了cloudfront服务,结果因cloudfront是国外的CDN服务在国内不兼用,结果打开翻墙才能用,否则不行
二、在nginx上配置
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
#限制每ip每秒不超过20个请求,漏桶数burst为5
#brust的意思就是,如果第1秒、2,3,4秒请求为19个,
#第5秒的请求为25个是被允许的。
#但是如果你第1秒就25个请求,第2秒超过20的请求返回503错误。
#nodelay,如果不设置该选项,严格使用平均速率限制请求数,
#第1秒25个请求时,5个请求放到第2秒执行,
#设置nodelay,25个请求将在第1秒执行。
limit_req zone=one burst=1 nodelay;
}
}
上面样本的配置是什么意思呢?
- $binary_remote_addr 表示:客户端IP地址
- zone 表示漏桶的名字
- rate 表示nginx处理请求的速度有多快
- burst 表示峰值
- nodelay 表示是否延迟处理请求,还是直接503返回给客户端,如果超出rate设置的情况下。
例子如下:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
limit_req zone=one burst=1 nodelay;
}
}
此时可以人工对规定时间内的访问次数的用户进行控制(屏蔽/开放)
三、最终解决的办法是:通过cloudfare来进行攻防
1、登陆https://www.cloudfare.com然后进行注册账号,直接点击下一步输入需要处理的域名,然后再下一步
扫描二维码关注公众号,回复:
5267706 查看本文章
2、当出现DNS的位置时就需要我们将原有的DNS服务改掉,我们用的是万网,需要将万网的换成下面的
3、在万网上更改DNS这个可以在阿里上找到更改方法
4、将万网上的解析全部迁移到cloudfare
遇到的问题:
更改后后台管理到数据时报一下错误
原因是cloudfare禁用了了cookie,解决办法
5、可是结果还不理想
我们就在firewall上添加配置
选中firewall
将安全等级调高
最后根据日志添加应用规则
最后选择保存