详细介绍DDoS攻击及防御办法

详细介绍DDoS攻击及防御办法

搞个业务不容易,一波DDoS却要了命。

面对DDoS攻击时,只能花钱续命, DDoS防御成本太高,如果您对DDoS攻击的不了解,往往会花了大钱却防御不了攻击。 本文就给您介绍下DDoS攻击类型及相关攻击防御办法。

DNS查询请求攻击和防御办法

DNS Query Flood攻击实质上是UDP Flood的一种,但是由于DNS服务器的不可替代的关键作用,一旦服务器瘫痪,影响一般都很大。 DNS Query攻击是我从业10多年来,最具备威胁的攻击方式,普遍存在于棋牌游戏,私服,菠菜,AV等暴利。

DNS Query Flood就是攻击者操纵大量傀儡机器,对目标发起海量的域名查询请求。为了防止基于ACL的过滤,必须提高数据包的随机性。常用的做法是UDP层随机伪造源IP地址、随机伪造源端口等参数。在DNS协议层,随机伪造查询ID以及待解析域名。随机伪造待解析域名除了防止过滤外,还可以降低命中DNS缓存的可能性,尽可能多地消耗DNS服务器的CPU资源。

根据微软的统计数据,一台DNS服务器所能承受的动态域名查询的上限是每秒钟9000个请求。而我们知道,在一台P3的PC机上可以轻易地构造出每秒钟几万个域名解析请求,足以使一台硬件配置极高的DNS服务器瘫痪,由此可见DNS 服务器的脆弱性。同时需要注意的是,蠕虫扩散也会带来大量的域名解析请求。
所以防御这种DNS Query攻击,不但难度极大,而且成本极高,并且还不一定是100%防御。

DNS Query Flood攻击防御

  1. 在UDP Flood的基础上对 UDP DNS Query Flood 攻击进行防护
  2. 根据域名 IP 自学习结果主动回应,减轻服务器负载(使用 DNS Cache)
  3. 对突然发起大量频度较低的域名解析请求的源 IP 地址进行带宽限制
  4. 在攻击发生时降低很少发起域名解析请求的源 IP 地址的优先级

UDP Flood攻击和防御方法

UDP Flood攻击目前来说越来越普遍,得益于各种软件设计缺陷和UDP协议的无连接特性,这让UDP Flood攻击非常容易发起,并且可以得到数十倍数千倍的攻击放大。

常见的情况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。100k pps的UDP Flood经常将线路上的骨干设备例如防火墙打瘫,造成整个网段的瘫痪。由于UDP协议是一种无连接的服务,在UDP FLOOD攻击中,攻击者可发送大量伪造源IP地址的小UDP包。但是,由于UDP协议是无连接性的,所以只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击。正常应用情况下,UDP包双向流量会基本相等,而且大小和内容都是随机的,变化很大。出现UDP Flood的情况下,针对同一目标IP的UDP包在一侧大量出现,并且内容和大小都比较固定。

UDP Flood防御方法

对于网站业务来说,是用不到UDP协议的,所以防御这种攻击只需要拥有足够大的接入带宽(只要接入带宽比DDoS攻击更大),你只需要一条防火墙安全策略,丢弃UDP协议便可以防御这种攻击。

但是对于游戏业务和视频直播业务来说,那就是噩梦了,因为很大一部分的游戏和视频直播业务都是基于UDP协议开发的,因为UDP协议的传输速度和    效率比TCP协议更高,延迟也更低,这是UDP的优点,但是也是导致UDP攻击极难防御的关键原因。 针对有UDP协议的服务来防御可以按以下操作:

判断包大小,如果是大包攻击则使用防止UDP碎片方法:根据攻击包大小设定包碎片重组大小,通常不小于1500。在极端情况下,可以考虑丢弃所有UDP碎片。
攻击端口为业务端口:根据该业务UDP最大包长设置UDP最大包大小以过滤异常流量。
攻击端口为非业务端口:一个是丢弃所有UDP包,可能会误伤正常业务;一个是建立UDP连接规则,要求所有去往该端口的UDP包,必须首先与TCP端口建立TCP连接。不过这种方法需要很专业的防火墙或其他防护设备支持。

HTTP(s) Flood攻击(CC攻击)防御方法

HTTP(s) Flood攻击和SYN Flood攻击一样非常棘手,但是也非常经典,攻击效果非常显著,而防御难度却比SYN Flood攻击高出几个数量级!

HTTP(s) Flood攻击早在08年的时候,防御还是较为简单的,因为浏览器单一(大部分都是IE浏览器),通常硬件防火墙会采用JS-Redirect算法来做CC防御,效果非常 显著,但是99%的DDoS硬件防火墙是不支持HTTPS场景防御的。到了12年移动互联网高度发达的时候,传统的硬件防火墙对于CC攻击的防御早已力不从心(根本防不住),各种浏览器百花齐放,PC端的360浏览器,Chrome,FireFox,IE,手机端的UC浏览器,QQ浏览器,Chrome,Firefox浏览器等。 同时攻击软件也日新月异,各种攻击模式,很大一部分的攻击软件甚至都可以完全模拟用户行为,使用headless浏览器攻击网站,真真假假很难分辨。

针对CC攻击的防御,也是分攻击规模的。 如果攻击规模不大的,可以考虑将被攻击的页面静态化,避开数据库查询,和动态语言。 如果攻击规模巨大,每秒QPS高达数万以上的CC攻击,有两种办法。

方法1: 购买大量的服务器和带宽,以及专业的硬件负载均衡设备做负载均衡,将WEB服务器和数据库服务器做成集群和高可用架构,这样可以极大的提高CC攻击的防御能力,但是这个成本可能会很高。

方法2: 购买专业的DDoS云清洗和云防御服务商的服务,专业的事情交给专业的人去做。因为CC攻击防御难度很高,并不是所有攻击都能依靠安全规则来防御,需要专业人员去审计来防御。

  • 情提示一下:CC攻击防御难度很高,建议让防御服务商免费提供1-2天的防御试用,如果攻击期间防御效果不满意可以换一家,而不至于被骗。
  • 我们提供攻击防御测试,防的住你就用。

慢请求攻击和防御方法

慢请求攻击是这几年新兴的攻击方式,通过大量的肉鸡发起大量的请求,每个肉鸡每秒只请求1次,大量肉鸡会导致服务器遭受大量的攻击请求,但每个源IP看着却   没有异常行为。 慢请求型的CC攻击危害较大,但是发起的难度和成本也会高一些,通常攻击者为了利用有限的肉鸡打出较大的攻击,通常会将单个肉鸡的每秒查询速度设定到较大的值,例如每秒5到10次,这种攻击方式往往可以通过源IP频率限制等方式拦截,而慢请求型的CC攻击反其道而行,攻击者往往有足够多的肉鸡资源。例如攻击者有10万肉鸡在线量,那么每个肉鸡每秒只发起一次请求,10万个肉鸡也可以发起10万每秒的请求,这对于WEB服务器来说压力是巨大的,尤其是中小型企业,没有那么多预算去做Web集群和数据库集群,以及动态可伸缩的Web和MySQL,一旦面临这种慢连接和慢请求CC攻击,基本上都会直接出现数据库过载瘫痪,Web服务器瘫痪。

慢请求攻击防御方式:

方案1:主要是扩展后端业务服务器规模来死扛这种攻击,成本极高,但是能解决。

部署数据库集群,支持横向扩展,应对超大的CC攻击带来的数据库查询压力。

部署WEB服务器集群,支持横向扩展,对应超大CC攻击带来的CPU和内存以及内核连接数瓶颈压力。

业务熔断机制和算法,需要自行研发业务熔断保护算法,在遭受超大攻击的时候能够对业务进行熔断和降级保护,防止所有业务全线崩溃。

方案2:寻找专业的云安全服务提供商,解决这种攻击。

关于作者

cdnya administrator

安全防御技术员

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据