近两年发生多起针对全球大型机构的大规模DDos攻击事件,使得DDos攻击又重回大众视野,引起业界的广泛关注。金融机构虽按照要求建立了本地以及运营商级的DDos攻击检测清洗服务,但随着互联网类业务的快速发展,同时DDos攻击的成本不断降低,新型攻击攻击手法层出不穷,攻击工具的肆意传播,使得DDos攻击形成了一个地下产业,投入极低的成本便可发动一次DDos攻击,互联网类业务遭受到的威胁也在不断攀升。
本文主要结合多年网络安全运维经验以及对DDos的基本理解,浅谈DDos攻击原理和基本防护思路。
一、DDos的基本概念及类型
Dos拒绝服务攻击是通过各种手段消耗网络带宽和系统CPU、内存、连接数等资源,直接造成网络带宽耗尽或系统资源耗尽,使得该目标系统无法为正常用户提供业务服务,从而导致拒绝服务。DDos分布式拒绝服务攻击由Dos演变而来,黑客利用控制的多台计算机(肉鸡)对一个特定目标发送尽可能多的网络访问请求,形成流量洪流来冲击目标业务系统,其攻击源是分散的、范围可能遍布全球。信息安全的三要素——“保密性”、“完整性”和“可用性”中,传统拒绝服务攻击针对的目标正是系统“可用性”。
DDos攻击主要分为两大类:流量攻击型应用攻击型。流量型攻击最大的特点就是流量大,快速消耗用户的网络带宽造成带宽耗尽,可能出现一个特定目标单位被攻击影响到共用运营商资源的其他单位带宽受影响的情况。流量型DDos又可分为直接型和反射型,直接型主要包括SYNACKICMPUDP FLOOD等,反射型主要包括NTPDNSSSDP反射FLOOD等。
而应用型DDos攻击最典型的就是CC攻击和HTTP慢速攻击,CC是DDos攻击的一种,CC攻击是借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装,CC攻击(Challenge Collapsar)主要是通过制造大量的后台数据库查询动作来攻击页面,消耗目标资源;HTTP慢速攻击是CC攻击的变种,对任何一个开放了HTTP访问的服务器,攻击者先建立一个连接,指定一个比较大的content-length,然后以非常低的速度发包,比如1-10s发一个字节,然后维持住这个连接不断开。如果客户端持续建立这样的连接,那么服务器上可用的连接数将一点一点被占满,从而导致拒绝服务。CC攻击、慢速攻击等应用型攻击与流量型DDos的区别就是流量型DDos是针对IP的攻击,而CC攻击的是服务器资源。
二、流量型DDos攻击防护思路
常规流量型的DDos攻击应急防护方式因其选择的引流技术不同而在实现上有不同的差异性,主要分为以下三种方式,实现分层清洗的效果:
一般恶意组织发起DDos攻击时,率先感知并起作用的一般为本地数据中心内的DDos防护设备,金融机构本地防护设备较多采用旁路镜像部署方式。本地DDos防护设备一般分为DDos检测设备、清洗设备和管理中心,首先,DDos检测设备日常通过流量基线自学习方式,按各种和防御有关的维度,比如syn报文速率、http访问速率等进行统计,形成流量模型基线,从而生成防御阈值。学习结束后继续按基线学习的维度做流量统计,并将每一秒钟的统计结果和防御阈值进行比较,超过则认为有异常,通告管理中心。由管理中心下发引流策略到清洗设备,启动引流清洗。异常流量清洗通过特征、基线、回复确认等各种方式对攻击流量进行识别、清洗。经过异常流量清洗之后,为防止流量再次引流至DDos清洗设备,可通过在出口设备回注接口上使用策略路由强制回注的流量去往数据中心内部网络,访问目标系统。
当流量型攻击的攻击流量超出互联网链路带宽或本地DDos清洗设备性能不足以应对DDos流量攻击时,需要通过运营商清洗服务或借助运营商临时增加带宽来完成攻击流量的清洗,运营商通过各级DDos防护设备以清洗服务的方式帮助用户解决带宽消耗型的DDos攻击行为。实践证明,运营商清洗服务在应对流量型DDos攻击时较为有效。
当运营商DDos流量清洗不能实现既定效果的情况下,可以考虑紧急启用运营商云清洗服务来进行最后的对决。依托运营商骨干网分布式部署的异常流量清洗中心,实现分布式近源清洗技术,在运营商骨干网络上靠近攻击源的地方把流量清洗掉,提升攻击对抗能力。具备适用场景的可以考虑利用CNAME或域名方式,将源站解析到安全厂商云端域名,实现引流、清洗、回注,提升抗D能力。进行这类清洗需要较大的流量路径改动,牵涉面较大,一般不建议作为日常常规防御手段。
总结来看,以上三种防御方式存在共同的缺点,由于本地DDos防护设备及运营商均不具备HTTPS加密流量解码能力,导致针对HTTPS流量的防护能力有限;同时由于运营商清洗服务多是基于Flow的方式检测DDos攻击,且策略的颗粒度往往较粗,因此针对CC或HTTP慢速等应用层特征的DDos攻击类型检测效果往往不够理想。
对比三种方式的不同和适用场景,发现单一解决方案不能完成所有DDos攻击清洗,因为大多数真正的DDos攻击都是“混合”攻击(掺杂着各种不同的攻击类型),比如说:以大流量反射做背景,期间混入一些CC和连接耗尽,以及慢速攻击。那么这个时候很有可能需要运营商清洗(针对流量型的攻击)先把80%以上的流量清洗掉,把链路带宽清出来,这个时候剩下的20%里面很有可能还有80%是攻击流量(类似CC攻击、HTTP慢速攻击等),那么就需要本地配合进一步进行清洗。
三、应用型DDos攻击防护思路
这里要重点介绍一下CC攻击。CC攻击是一个依赖http协议,并通过构造特殊的http请求导致服务器保持连接等待状态,直至服务器CPU、内存、连接数等资源被打满,从而造成拒绝服务的一种攻击方式,属于典型的应用层DDos攻击。CC攻击的特点和流量型DDoS攻击最大的区别是并不需要大流量即可达到攻击效果。有些极端情况下在遭受此类攻击的时候,流量特征可能没有明显的变化,而业务层面出现访问缓慢、超时等现象,且大量访问请求可能指向同一个或少数几个页面。
因为CC攻击来的IP都是真实的、分散的,且CC攻击的请求,全都是有效的请求,无法拒绝的请求。对于此类攻击,DDoS攻击清洗设备的基础算法的作用可能就没那么明显了,需要在攻击过程中实时抓取攻击的特征,对症下药。
但是总结对于CC攻击来说,发生攻击时还是有较明显的攻击特征。一般情况客户在访问业务的时候不会集中在几个页面,而是比较分散的。而当发生了CC攻击的时候,抓包后可以很明显的发现大量的访问都集中在某几个或者多个页面,那么我们可以针对该特征进行针对性防护配置。
浅谈CC攻击的防护思路
由于CC攻击是典型的应用层DDos攻击,因此传统安全设备,如防火墙、运营商清洗等很难起到很好的防护作用。目前业界通常会在应用服务器前端部署具备安全功能的代理设备进行防护,比如WAF、负载均衡等,避免让服务器直接面对CC攻击。代理设备启用资源代理和安全防护功能,比如要求在接收完整的HTTP请求之后才会与服务器建立TCP连接并发送已收到的HTTP 请求,此时攻击者的请求直接被代理设备终结而不会发往服务器。
1、部署架构上,可将前端WAF或者负载均衡设备部署于HTTPS卸载器之后,从而实现对HTTPS流量的防护能力;
2、使用IP地址信誉库,对请求IP地址进行甄别和过滤,阻止来自恶意IP的服务请求;
3、通过跟踪客户端的Session信息、标记Session的威胁指数与可疑度、识别访问频度、鼠标键盘操作时间等技术,识别恶意请求,同时制定挑战策略,对于不合法的请求可以采取挑战验证码、识别机器人行为特征,快速阻断不合法请求或BOT发起的仿正常请求;
1、轻应用部署。应用部署时考虑页面静态比例,尽量让网站静态化,减少不必要的动态查询等方式,同时应急情况下可以将动态页面临时替换为静态页面,减少后台请求数据库/应用服务器的次数;
2、限制单IP连接数量,降低同一ip攻击者带来的危害和影响;
3、降低连接超时时间,及时释放系统资源应对TCP连接资源耗尽类型的CC攻击;
4、及时清理无用过期等文件,并将大的文件对象或者页面部署在CDN节点上,隐藏真正的互联网带宽入口,降低对源站的影响等。
以上防护手段可以起到一定的防护作用。不过,我们也要看到,目前黑客攻击有多样化的趋势,一次攻击行为内往往混合了多种攻击方式和手段。金融机构需要抵御这种凶猛的攻击,靠单独的某一类设备是不够的。金融机构应该搭建层次化的立体防御架构,防范攻击需要在合适的维度采用合适的防御技术,且每个防御层面都需要充分考虑其架构可扩展性,架构上需要仔细考量与设计。
四、DDos防护实践总结