关于CC攻击防御策略(一) - 攻击原理及防御手段

前言:在最近的一周的时间里,咱们的服务器遭受了大量的CC攻击,下面就从最近收获的经验里面,来说下具体的防御策略和攻击原理

什么是CC攻击

首先关于防御CC攻击,首先咱们要知道什么样的攻击定义为CC攻击,下面是百科的一些官方性解释。mysql

CC(ChallengeCollapsar,挑战黑洞)攻击是DDoS攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求。CC根据其工具命名,攻击者使用代理机制,利用众多普遍可用的免费代理服务器发动DDoS攻击。许多免费代理服务器支持匿名模式,这使追踪变得很是困难。

CC攻击的原理是攻击者经过控制某些主机不停地发大量数据包给对方服务器形成服务器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的,每一个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些须要大量数据操做(就是须要大量CPU时间)的页面,形成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的链接直至就网络拥塞,致使正常的访问被停止。linux

那么如何发动一场CC攻击呢?成本有多低呢?nginx

如何发动CC攻击:

最简单的手段如莫过于使用Windows平台下一些编号的现成CC攻击器,只须要设置目标站点URL和线程数,便可快速进行发动一场CC攻击。web

image

在linux或mac os平台下,咱们可使用apache的压力测试工具ab,也能够简单模拟CC攻击的效果redis

ab -n 100000 -c 1000 http://www.baidu.com/

基本用法:ab –n 请求次数 –c 并发次数 如:ab –n 1000 –c 100 sql

-n后面的10000表明总共发出10000个请求;-c后面的1000表示采用1000个并发(模拟1000我的同时访问),后面的网址表示测试的目标URL。数据库

攻击的成本

攻击的方式有2种,有肉鸡CC攻击和代理CC攻击,前者的成本更高,可是更容易模拟真实用户,伪造合法数据请求,可是攻击者须要控制大量的肉鸡来发动攻击,后者只须要单台或多台服务器,加上扫描出来的IP,经过工具代理,模拟不一样IP疯狂请求目标站点,形成目标站点访问终端。apache

肉鸡CC攻击成本:不太好说,要根据肉鸡数量规模来定,可是比代理CC攻击更难防护。缓存

代理CC攻击成本:能够经过本身本身扫描,也能够经过6元/天 30元/周的第三方代理提取站点,进行无限次的提取。服务器

打手攻击成本:在一些第三方论坛上,第三方专业打手甚至经过了50 元/小时攻击,每小时保底打出1G的流量。

根据上面的 总体状况来看,发动一场CC攻击的技术手段不只很是容易,并且攻击成本最低只须要几块钱,就能达到让目标站点进行瘫痪的效果,因此在这类攻击的本质:即是双方攻防资源的对抗,一方要不断囤积大量资源具有超大流量输出,一方要不断建设可以抗住超大流量的带宽,就像一场战争同样,要实时对对方进行侦查和防护。

如何防御

(一)基于IP限制的防御

咱们能够经过防火墙或者nginx server调整单个IP的限制链接数,及每分钟最大请求次数,设置必定的阀值,动态调整,当某IP超过指定阀值后,进行拦截或黑名单处理,让目标IP没法到底应用层,影响正经常使用户使用,在网络层就进行屏蔽处理。

(二)基于用户频率调用限制

能够将应用的新用户和老用户区分至不一样的服务器群,如新用户每分钟请求上限为60s/分钟,老用户为:45次/分钟,如新用户忽然暴涨,混入了大量肉鸡注册的帐号进行了攻击,咱们则能够将他们路由到另外一个服务器群,致使老用户所在的服务群不受正常影响,而后找出异常的用户进行封停和拦截处理。

image

(三)优化数据缓存(减小磁盘IO)

在一些通用的业务接口上,可屡次重用的数据,能够考虑使用redis或memcached基于内存的缓存服务,减小数据库检索次数,由于数据库数据储存仍是基于文件储存的,一旦查询起来就免不了对文件进行读写操做,内存访问可比磁盘IO的速度但是要快上几百倍的,一旦数据查询和计算出结果后,尽可能就存放至缓存中,以便下次请求时,可直接经过缓存读取,减轻DB服务器的压力。

(四)优化核心代码

在一些关键的接口或核心代码处,尽量使用缓存来存储重复的查询内容,减小重复的数据查询资源开销。减小复杂框架的调用,减小没必要要的数据请求和处理逻辑。程序执行中,及时释放资源,好比及时关闭mysql链接,及时关闭memcache链接等,减小空链接消耗。

(五)更改访问端口

通常正常接口下web server经过80端口对外提供服务,所以攻击者通常也是针对目标站点的80端口进行攻击,以此在不影响外部业务提供的状况下,咱们能够调整web端口,来达到防御目的,可是通常此类策略,若是对方是个懂一些的,通常很快就会被再次发现,治标不治本。

(六)扩充服务器资源

在手头资金预算足够的状况下,咱们能够对服务器群组进行水平和垂直扩充,来提升服务器对CC攻击的承载能力。

水平扩充:升级服务器硬件,如:升级CPU、添加内存、添加SSD固态硬盘,扩充带宽等。

垂直扩充:增长服务器数量来提高承载能力。

结尾

在计算机的攻与防的博弈中,做为防护方的咱们,不要老是想着如何彻底去打败另外一方,咱们应该尝试去寻找最短的路径,不要太过于拘泥没必要要的细节,应该快速找到当下的痛点,快速的打上一针止痛剂,尝试去增长对方的攻击成本,消除对方的耐心,即是最佳的防护实践。

以上内容若有疑问或看法错误之处,还请多多指教。