DDOS防御实战手札

 
1 背景介绍
1.1 客户网络状况
3 13 ,接到紧急救助电话,描述客户网络遭遇 DDOS 攻击,被攻击目标为某知名网站的 Web 服务器,攻击来源无法确定,被攻击目标对外正常服务已经中断,无法提供正常服务。
 
1.2    该网站网络逻辑拓扑结构如下所示:
 
客户使用 2 台华为 8512 设备为核心设备,启用 VRRP ;接入层为若干华为 5024 ,后台为 Linux 系统平台的服务器,开放 Web 服务;在接入层与服务器之间使用负载均衡器,为后台约 20 组,共计 200 web 服务器做分发。

2 防御部署

鉴于客户的实际网络情况与黑客攻击情况,与客户方工程师主管协商后,决定将 DDOS 防御设备放置在网络边界上,充当安全边界设备。但考虑到接入到华为 8512 外部网络时路由协议可能会重新收敛问题,故将 DDOS 防御设备放置于华为 8512 内部。具体放置情况如下图所示:
 
在图 2 所述客户网络实际拓扑结构中,由于网络核心设备启用了 VRRP 协议,故首先将华为 8512 Active 核心交换的流量切换到华为 8512 Standby 核心交换上,同时将 DDOS 防御设备接入 Active 侧网络,在做好所有防护配置后,再将流量切换到 8512 Active 核心交换设备上;通过此方法,使得 DDOS 防御设备实现无缝平滑上架;(其实也可以直接在 Standby 侧上线后再切过来)。  

3 数据统计分析以及防御实施

3.1  黑客攻击分析

     通过现场检测,发现黑客攻击手段为复合型攻击,其攻击手段为 Connection Flood + SYN Flood + Connections Per Second 攻击。
A、             被攻击服务器上打开了大量的 TCP SYN_RCVD 连接, Client IP 地址散列,服务器本地端口为 80 ,是非常明显的 DDOS SYN Flood 攻击;
B、             攻击源 IP 地址来自 10.0.0 .0 127.0.0.0 219.148.0.0 221.23.0.0 218.5.0.0 211.94.0.0 221.23.0.0 120.160.0.0 20.170.218.0 22.82.205.0 59.33.0.0 等数十个网段,既有私有地址,也有实际地址,也就是说源地址散列,同时源端口散列,使得无法通过一般的 ACL 技术来屏蔽攻击;所有攻击来源中,大约有 50% 127.0.0.0 网段地址;
C、             网络流量为 900~ 1000M 每秒,而用户反映平时正常流量仅为 200M 多。在此情况下,后台服务器已经完全不能工作,而负载均衡设备也在强大的压力下频繁切换 Active/Standby ,从而造成网络不稳定。
 
鉴于黑客攻击手段较多,计划采取多种复合防御手段防护此次攻击。
所谓分布式拒绝服务攻击,就是通过分布在不同地点的计算机同时发起大量的无效的、无用的、非法请求,达到占用网络带宽、占用服务器系统资源等方式,从而使服务器不能正常地提供服务;下面我们来分析黑客进攻所使用 DDOS 攻击:
SYN Flooding :通过 TCP 协议的 3 次握手原理,只发送 SYN 到服务器,当服务器响应 SYN+ACK 时,不回应 ACK ,从而使得服务器的 TCP 连接表被大量的 Time Waiting 连接所占满,使得合法用户无法建立起新的连接,达到拒绝服务攻击的目的;该网站此次所遭遇到的攻击之一,就是属于此类攻击
对于此种攻击,可采取 SYN Proxy 技术,通过校验访问链接来源的有效性,从而防范了该种类型的攻击。
Connections Flooding :由于防御 SYN Flooding 攻击的方法越来越多,使得一般的 SYN Flooding 攻击不再具有足够的威胁,于是黑客们发展出更多的 DOS 攻击种类;所谓 Connections Flooding ,是指黑客控制大量的傀儡机(行话叫“肉鸡”),对服务器发起大量的 Connections ,与常规 SYN Flooding 不同的是,这次“肉鸡”们将完成与服务器的 TCP 3 次握手,但是在连接建立起来以后,所有肉鸡将不传送任何数据,从而达到通过占满服务器 TCP Connection Table 表或者服务器访问人数上限,使得服务器无法对外提供服务的攻击;
针对此类攻击,在实现 SYN proxy 的基础上,通过采用限制每个 IP 的同时连接数,从而有效地防范了该种类型攻击并降低服务器负担。
此外,此种攻击还用一个变种,名为实载攻击,就是所谓 CC 攻击,既是正常与服务器建立连接,然后发送大量的 http 请求,但是请求内容为无效或高负载内容,且请求数据非常庞大,导致服务器不断读取请求数据内容,从而占用大量内存直至死机;对于这种类型的攻击,由于是属于正常连接类型,所以不能提通过简单的阻止连接来实现防御,否则将会阻挡正常用户的访问从而形成误报;在该网站所遭受的攻击中,即有此种类型攻击
    通过限制每个 Client 总连接数,可达到一定的防御目的,但对于未达到 Client 连接总数限制的请求, DDOS 防御设备将予以放行,所以乃有少量的合法连接接入了服务器,并向服务器传递非法请求;对此,可以对 Client 连接总数的阀值进行修改,适当减少或者增加连接数,在 2 者之间取一个平衡点;
此外,还可以抓取非法请求的内容,然后针对内容进行清洗;其原理为抓包然后分析这些 CC 攻击所请求的页面或内容,找出其规律,然后将此类 CC 攻击请求报文的特征码提交到 DDOS 防御设备上,并实行过滤。
一个附加的问题是,如果找不到请求的报文内容特征码,可用过一些其他的特征,如 HTTP GET/ HTTP POST 请求报文的大小 , 字长等其它第三特征来做简单过滤,虽然可能产生误伤,但可作为最后手段使用。
在此次防御过程中,抓包后发现黑客的 HTTP 请求报文的内容居然是射雕英雄传的小说内容,大小为 4K 左右,这个黑客真是懒到家了,估计是直接从某些小说网站上 Copy 下来直接塞进攻击软件中的。
 
Connection Per Second Flooding :此类型攻击方法的原理是,通过在同一时间内向服务器发起大量的 TCP 连接请求,并完成 3 次握手,然后再断开连接,再建立连接,如此反复;此种攻击使得服务器在短时间内无法相应正常用户的访问请求,从而达到拒绝服务攻击的目的;该网站所受攻击中,这也是其中之一。
可采取通过限制每个 Client 在同一时间内的 CPS 数来实现防御该种类型的攻击。
3.2      防御实施
  在分析黑客的进攻手法后,实施了如下防护手段:
A、 首先打开 DDOS 防御设备的 TCP SYN Proxy 功能实现对源地址的校验,把来自虚假地址的攻击进行屏蔽;
B、 限定 CPS Connection Per Second )值,即限定每秒新建连接数为 50 / 秒。
C、           针对 Connection Flooding 攻击,激活对 Connections Flooding 攻击的防护功能,限定每 Client 同时保持连接数为 25
D、 打开包过滤功能,对所有来自 10.x.x.x 127.x.x.x 等这些非正常源地址的报文进行过滤,
E、 最后的 CC 攻击,通过手工取样后,发现无法从请求的内容中找到规律,因此采用了第三方特征来进行过滤,即手工书写了过滤条件,判断所有请求报文,对于大于 4K 的请求报文一律丢弃,并将此策略在 DDOS 防御设备上启用。
在打开上述防御措施后,对于 SYN Flooding 类攻击被彻底防范;而 CPS 攻击也被限定在一定的范围内,从而使得黑客的 CPS/Connection Flooding 攻击对于服务器不再具有压倒性的威胁;由于每个 Client 仅仅能同时与服务器建立 25 个连接,所以远远不能达到 DDOS 攻击的目的,从而不再对服务器严重威胁。
 
3.3 防御情况
在经过上述攻击防护策略防护后,通过日志分析以及监控,网络情况如下:
A、     在后台服务器上, TCP 半连接基本消失;说明 SYN Proxy 技术对于防御 SYN Flood 攻击有着非常明显的有效防护。
B、     数据流量已经从 900M 左右降低到 250M 左右,说明对于实载型 Connection Flooding 攻击与 CPS 攻击提供了有效防护;同时,可以通过调整同时连接数与 CPS 数的阀值,进一步的降低黑客攻击流量,但误伤肯定存在,因此要找到策略的平衡点。
C、     通过日志分析,我们发现从 19:27:33 20:49:46 短短 1 个小时时间内,客户网络受到了高强度的攻击,黑客能够在短短几秒秒内,让一台服务器因资源耗尽而死机。
D、     在经过防护后,后台服务器基本能够恢复工作,能够提供服务。
 

4 安全建议

通过以上数据统计与分析,我们得出如下结论:
A、 目前对于 DDOS 类攻击的防御措施不够强健,建议对网络安全实施加固。
为避免再度遭受相同攻击,建议安全解决方案如下图所示:
建议在网络中部署 2 DDOS 设备作为安全边界,同时在设备之间启用 HA ,从而提高可靠性,采取上述网络安全设计后,能够实现:
A.       能够提供我们所遇见的 SYN Flooding Connection Flooding CPS 等各种类型 DDOS 攻击,但对于 UDP Flooding 等类型的毫无技术含量的纯粹堵带宽的攻击,可让上级 ISP 的协助启用路由下水道技术。
B.       在保证安全性的同时,设备的性能是很高的,设备的处理能力完全可以满足现有网络环境下对设备性能的要求,目前的性能是在启用了 894 个攻击过滤器的条件下获得的。由于采用了 FPGA 芯片技术,因此所有的策略均可现场编程至芯片中执行,而该芯片可以支持多达 10 000 条过滤器的并行处理,保证扩展能力,完全可以满足客户对性能的高要求。

5 总结

A.       任何设备都不是万能的,最重要的还是人,而不是机器。
B.       误伤是肯定存在的,不要相信任何零误报的谎言。
C.       DDOS 的攻击有很多种类,某些种类是不能靠客户端来防御的,必须与上级 ISP 合作。
D.       现在的鸟人们真懒,连个数据包都懒的构造,直接抓小说内容来填充。
E.        本文内容仅供参考,如有雷同,实属巧合;请勿与任何实际案例挂钩,本人不负任何法律责任,谢谢。
 

本文出自 “王懿” 博客,转载请与作者联系!

你可能感兴趣的:(实战,ddos,休闲,防御,手札)