cc攻击及遭遇攻击的对策
本文于2021年1月24日由AlvinCR更新
文章导引
1 基础知识
1 什么是cc attack
CC攻击(Challenge Collapsar Attack,CC)是针对Web服务器或应用程序的攻击,利用获取信息的标准的GET/POST请求,如请求涉及数据库操作的URI(Universal Resource Identifier)或其他消耗系统资源的URI,造成服务器资源耗尽,无法响应正常请求。
你这样做也能手动模仿cc攻击:打开一个网站,按住ctrl并一直点击一个网页链接,当你在短时间内点击的链接数量超过服务器允许的上限时,你的访问就变成了cc攻击,这时你的IP就会被禁止一段时间访问,比较狠的网站可以直接封你的IP。
比如我自己由于点击我的站点次数过多(编辑文章),结果自己把自己禁了,俗称的狠起来连自己都打……
2 DDOS攻击和cc攻击
DDoS攻击打的是网站的服务器,而CC攻击是针对网站的页面攻击的,用术语来说就是,一个是WEB网络层拒绝服务攻击(DDoS),一个是WEB应用层拒绝服务攻击(CC)。CC攻击模拟用户对一些比较消耗资源的网页进行攻击,而DDoS攻击则是针对ip进行攻击,两者的危害也是不一样的,DDoS的攻击会比CC攻击更难防御,造的危害会更大
总结而言DDoS攻击会使你特定服务器上的网站全部崩溃,而cc攻击只会对特定网站进行大量访问。
此外:cc攻击的是网页,服务器可以ping通,但是网页无法访问。
3 攻击方法
分为肉鸡cc攻击和代理cc攻击,其中肉鸡cc就是使用很多无辜但是被控制的电脑对网站进行攻击(例如alvincr不小心打开了什么病毒,结果被黑客利用了我的计算机,用来攻击alvincr.com)
肉鸡CC攻击是黑客使用CC攻击软件,控制大量肉鸡,发动攻击,相比来后者比前者更难防御。 因为肉鸡可以模拟正常用户访问网站的请求。
代理CC攻击是黑客借助代理服务器生成指向受害主机的合法网页请求,实现DDoS,和伪装就叫:cc
2 解决方法
方法1 :设置黑名单
如果使用宝塔进行管理的话,使用nginx防火墙,添加黑名单,也可以添加白名单这样就不会出现我上面那种情况了。
方法2:nginx的limit_req_module模块
下文转载自(个人认为下文是机翻,非原作者):https://www.jianshu.com/p/dff5a0d537d8,里面提供的链接都无效,跳转到GitHub无法访问,应该是原作者关闭账号了。
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设置的情况下。
详细的可以参考官方说明文档:Module ngx_http_limit_req_module
这里我们需要Apache Benchmark这个小工具来生成请求
//1个用户持续100s的时间向服务器发送请求
ab -t 100 -c 1 -vvv http://example.com/
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
limit_req zone=one burst=1 nodelay;
}
}
方法3: 开启CDN加速
使用CDN加速能够利用CDN加速服务商的服务器进行自动屏蔽,这样就省心多了,不过如果是学习网页相关知识的话,还是不要用CDN厂家的屏蔽,自己多遭受一下攻击找到应对措施更好。
另一个好处是:CDN加速可以缓存你的网页,即使你的站点出现异常,但是其他人还是能够看到你站点的内容。