前言
CC攻击(Challenge Collapsar)CC攻击的本名叫做HTTP-flood,是一种专门针对于Web的应用层flood攻击,攻击者操纵网络上的肉鸡,对目标Web服务器进行海量http request攻击,造成对方服务器资源耗尽,一直到宕机崩溃。
本站情况
- 今天晚上本站遭受到大量的CC攻击,峰值在3GB左右;持续了十几二十分钟!
- 但是本站用了CDN,抗下了大量的数据请求;但是回源的数据达到17Mbps
- 但是本站还是安全的抗下了这次CC的全部流量,并且服务器无任何波动.
- 那么我们就谈谈本站是如何防御这场CC
攻击流量图
- 攻击时常有十几分钟,CDN全部扛下来了但是部分流量回源到服务器!
- 攻击源在广东,分析部分日志得出是一共2台服务器进行发包.
- 防御过程如下
设置CDN防御CC
1.设置每秒QPS
数量
2.带宽封顶配置
- 由于CDN抗下大部分流量导致回源访问的链接不多日志少!
设置Nginx防御CC
- 设置
worker_processes 8
根据自己的机器设置多个进程! - 设置
worker_connections 5120
根据自己的机器设置每个进程处理的连接数 - 使用
ngx_http_limit_conn_module
模块使用方法:官方文档 - 使用
ngx_http_limit_req_module
模块使用方法:官方文档 - 使用
ngx_http_referer_module
模块使用方法:官方文档 - 还有很多模块可以进行防止CC,不一一举例使用!
ngx_http_limit_conn_module
模块的使用
- 这个模块主要是限制连接数.
http {
limit_conn_zone $ binary_remote_addr zone = addr:10m;
server {
location /admin/ {
limit_conn addr 1;//设置只能一个IP连接
}
}
}
- 具体设置根据你的需求,我的设置比较严谨!详细设置访问nginx官网查看官方文档!
ngx_http_limit_req_module
模块的使用
- 这个模块主要是设置每秒的请求数.
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=80r/s;
server {
location ~* /handsome/usr/\.(js|jpg|json) {
limit_req zone=one burst=5 nodelay;//设置超过的请求丢弃
}
}
}
配置文件的部分讲解
$binary_remote_addr 远程地址.
zone=one:10m 为one分配10m内存,用来储存连接.
rate=80r/s 限制频率每秒80个请求.
burst=5 允许超过频率设置的请求书不能超过5个,超过的就丢弃.
nodelay 设置超过的请求不延时处理.
- 详细解释参考nginx官方文档!
ngx_http_referer_module
模块的使用
- referer模块是防止referer头字段中没有请求来源则丢弃该请求
location ~* /handsome/usr/\.(js|jpg|png|css)
{
valid_referers none blocked *.i7dom.cn server_names ~\.badu\. ~\.google\.;
if ($invalid_referer)
{
return 403;
}
}
- 防止不是从主站或者百度,google的链接则之家返回404;
防止数据库耗尽资源
- 本站之所以能再二十多万的链接中存活下来是用了nosql;
- 在CC发起到结束可以正常访问,无任何延迟;
- 如果资源允许的情况下可以用
redis
或者memcache
本站采用了redis
防止读库导致资源耗尽!
攻击前后的使用率
- 以上是服务器的使用率,波动不大!
攻击前后CDN的情况
攻击源分析
- 我下载了CDN的日子分析分析得到结果如下!
第一波CC攻击持续6分钟
第二波CC工具持续二十分钟,流量虽然低但是触发了我设置的阈值后全部返回404页面
而后我分析出攻击的主页没有在redis
设置缓存,虽然CDN全部扛下了流量但是一部分回源到主机上;但是波动不大,第一次回源触发了nginx设置的阈值全部丢弃该IP的所有数据包.
紧接着CDN线路负载挂了,腾讯云关闭了我域名的线路进行被动防御!
至此,防御结束;服务器波动可以忽略!CDN流量卒,插件在读redis
的缓存时负载过高出现debug
信息!
得出结论
- 减少静态资源的读取
- 限制CDN的流量阈值
- 限制CDN的IP访问阈值
- 减少回源次数,减少服务端的读库数量;使用缓存进行防御CC!
- 单IP访问数量超过200QPS时可以写策略进行跳转到其他网站;比如
阿里,腾讯,或者政府网站
,尽量不要跳转到zf网站不要搞事情! - 情况允许的情况下可以接入某盾,某宝进行防御;但是价钱嘛!略高
- 以上抗不下来就硬抗吧!
版权属于:龙之介大人
本文链接:https://i7dom.cn/98/2019/27/cdn-cc-1.html
本站所有原创文章采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 您可以自由的转载和修改,但请务必注明文章来源和作者署名并说明文章非原创且不可用于商业目的。
羡慕会被CC的,像我这种日0IP的连被CC的份都没有╮(╯▽╰)╭
就是cc看起来好牛逼,日访都没超过三位数