浅谈拒绝服务攻击的原理与防御(6):拒绝服务攻击的防御

2018-02-24 11:13:53 浏览数 (1)

0×01前言

DDOS攻击是每个需要对外提供服务的公司最大的威胁之一,尤其是新兴的互联网公司与电信运行商对此尤其看重,每个公司的网络安全组都必须具备一定的防御DDOS攻击的能力,不仅仅是会使用各个品牌的安全设备,更重要的是要有防御DDOS攻击的明确思路以及正确的方法,这样才能保证自己的公司不被黑客破坏、勒索。

任何需要通过网络提供服务的业务系统,不论是处于经济原因还是其他方面,都应该对DDoS攻击防护的投资进行考虑。大型企业、政府组织以及服务提供商都需要保护其基础业务系统(包括Web、DNS、Mail、交换机、路由器或是防火墙)免受DDoS攻击的侵害,保证其业务系统运行的连续性。虽然DDoS防护需要增加运营成本,但是从投资回报率上进行分析,可以发现这部分的投资是值得的。接下来我将详细讲解一下在企业层面和运营商层面防御主流DDOS攻击的思路。

0×02 企业层面的防御

在企业层面上防御DDOS攻击目的比较明确,就是保障自身的服务在攻击过程中不受明显的破坏,但由于企业自身能力有限,有时候必须求助电信运营商帮助才能清洗较大流量。

SYN FLOOD的防御

Random Drop:随机丢包的方式,这种是最简单但是效果也最不理想的方法,会对用户的体验造成很大影响,如果在垃圾流量比例较高时,会使大量用户无法获得服务,这种方法不推荐只有在万不得已情况下(例如服务器濒临死机)才能使用。

首报文丢弃:对所有首次发来的syn包丢弃,如果是真是由用户会刷新再次连接,第二次就可以成功通过,如果是软件随机生成的就不会再次 重试,但是如果对于那种一次发两个到多个报文的攻击就会失去效果,可以改进算法使用首秒丢弃,一秒对于用户来说不算长,但是对于攻击的软件来说一秒很久。

特征匹配:在攻击发生时统计攻击报文的特征,例如源IP、ID、TTL、flag标志位、seq等字段,然后丢弃与攻击报文有相同特征的报文,但是对于完全随机的攻击报文则无法防御。

反向探测:企业服务器前的安全设备ADS或者WAF对每一个syn请求的地址发起反向探测,探测syn请求的源地址是否真实存在,如果不存在即可断开 半开连接。但是如果每个syn包再配一个ack包会使反向探测难度增大,使得效果降低。

cookie验证:清洗设备收到syn报文时不向服务器端转发,而是由清洗设备直接给客户端回复syn ack报文,同时在回复syn ack报文的序列号中携带随机变化的cookie值,在收到客户端的回复报文中检查cookie值,如果检查通过则是合法客户端,允许访问服务器;而通常仿冒攻击的客户端没有完整的TCP状态机制,无法回复携带正确cookie的报文,因此无法通过清洗设备的cookie验证,最终无法对服务器形成攻击,可以有效用于syn flood的防护

TCP 代理:这种方法能完美的解决syn flood攻击,方法 就是在服务器前增加一个代理机制,访问服务器的TCP连接先与代理进行三次握手,握手成功后代理再与服务器进行三次握手,如果收到只有一个syn的半开连接,代理将不会与服务器进行连接,从而保护服务器 不受到syn flood的攻击,但是这种方法比较耗费TCP代理的资源,需要用专业的设备才行。如下图:

SafeReset算法

所有的SYN包均主动回应,回应包特意构造错误的字段,真实存在的IP地址会发送reset包给防护设备,然后发起第2次连接,从而建立TCP连接。缺点是如果攻击者的源IP可以伪造成互联网上真实存在的IP,同样也会回复reset,进而通过验证。原理如下:

ACK FLOOD防御

ack的防御于syn防御有很多的共通之处,再此我就不过多赘述。

特征匹配:同syn的特征匹配,计算攻击包的 指纹对符合的包直接丢弃。

TCP代理:TCP代理既能完美防御syn攻击也能防御 ack攻击,但是ack攻击也会消耗TCP代理的大量资源。

带宽限制:限制ack数据包的传入带宽,使数量不足以瘫痪服务器。

cookie验证:同syn cookie验证。

CC攻击的防御

防御cc攻击的重点在于反欺骗,在海量的连接中需要分辨出攻击流量与正常流量 ,如何分辨出攻击流量与正常流量正是防 CC攻击的难点。

协议栈行为分析:检查数据流中的各标志位是否符合RFC 规范,攻击流量一般由黑客自定义随机生成有可能会产生一些不符合规定 的报文,但是正常的应用程序产生的报文一般都会完全符合RFC的标准,所以一般违规的报文都是攻击报文。

限制代理:cc攻击一般都是通过代理服务器发动的,借助 代理服务器可以轻易产生高并发数,在收到cc攻击时可以临时的禁止代理服务器的访问,检查HTTP头中是否包含X_FORWARDED_FOR,VIA,CLIENT_IP,XONNECTION,XROXY_CONNECTION等等Proxy服务加入的特征字符, 如果有则丢弃该请求。

验证码:在登录时使用随机验证码 ,使得机器无法正常登录。

IP连接限制:有时黑客会控制少量的主机模拟出大量的访问,这时只需限制每个IP地址的连接数量就可大大减轻攻击效果。

http cookie:在http response包里设置cookie 值,如果下次客户端发出的数据包中携带此cookie值则为真实用户,否则为假。

Botnet攻击:目前没有可行的办法针对这种攻击,因为攻击方都是大量的真是存在的主机,只是受到黑客的控制同时访问服务器,不过这种botnet攻击如果受控主机数量不太大那么攻击效果也不会太明显。

UDP FLOOD防御

这里说的UDP是指小UDP包,这中UDP攻击不是以大流量的形式攻击目标,而是通过pps数量沾满防火墙等设备的新生会话数以及路由设备的转发数。正常情况下,UDP包的数量在双向基本相等,UDP包的大小及内容是随机的,如果出现UDP FLOOD攻击,会使同一目标 IP 的 UDP包在一侧大量突现,UDP包的大小及内容相对固定。UDP攻击特征明显,只要发现攻击就让流量清洗设备ADS开始清洗符合特征的UDP流量,避免大量UDP包直接冲击服务器。

反射型攻击的防御

反射性攻击或者说所有的以大流量为手段的攻击方式在用户端基本都是无法防御的,因为这些攻击报文到达用户的设备的时候,攻击的目的已经达到了,阻塞和丢包是在运营商路由器接口处就发生了,抵御这种攻击最简单的方法就是拔掉网线,动态路由协议快速收敛后失去目标路由使得攻击流量路由不可达,不过这让攻击者达到了目的,但是却使得同一IDC的其他用户免受波及,一般IDC处理攻击事件时也会采取这种方法。防御反射攻击最有效的方法就是购买运营商的清洗服务,比如电信的“云堤”和阿里云的“云盾”,不过价格应该是不便宜啊。

企业安全整体防御

如今的DDOS攻击不会由单一种类的进攻,当然企业也不能单一的防御,企业安全应该从整体考量,建立一个系统的全面的防御体系。分层次的进行防御。

定期扫描加固自身设备

尽量避免因为软件漏洞而引起的拒绝服务,有时一个报文就能导致服务器的宕机,定期扫描现有的主机和网络节点,对安全漏洞和不规范的安全配置进行及时整改,对先的漏洞及时打补丁。

确保资源冗余提高抵抗力

建立多节点的负载均衡,配备高于业务需求的带宽,多个网络出口,提高服务器的运算能力。

服务最小化

关闭不需要的服务和端口,实现服务最小化,让服务器专一提供服务。

明确并执行应急流程

提前演练被攻击时的状况,除人工处理外还应该包涵一定的自动化、半自动化的处理能力。

建立ADS流量清洗站

来自互联网的攻击混合流量试图进入城域网内企业用户端,而我们的清洗中心部署在城域网边界。整个工作原理的核心就是这个智能识别净化矩阵。

反欺骗:通过基于行为的智能反向探测,检验访问的合法性;

然后是协议栈行为分析:检查数据流中各标志位是否符合RFC规范,不符合则直接阻断;

特定应用防护:比如后端只为DNS或者WEB这些特定应用,那么特定应用防护功能即只放行特定应用而阻断干扰流量;

用户行为模式分析:互联网上应用流量呈现随机特点,而在一次攻击中,攻击者如果采用固定模式、固定带宽攻击,在分析到这类攻击后可实施阻断;

动态指纹识别:根据检查和生产攻击指纹,匹配后期攻击数据;

最后的流量限速:丢车保帅的策略,经过前期过滤发现流量都为正常访问,但是仍然超出应用所能承受范围,不得已丢弃部分流量,保全服务器。经过矩阵后,保障交付给客户的都是纯净流量。

企业安全防护思想的演进

DDoS防护的设计思想从最早的“堵塞”攻击流量发展到现在的“疏导”。而部署方式也从单一的串联模式,发展为旁路和串联相结合的方式,针对不同的用户、不同的环境,采用不同的部署方式。串联模式适用于非运营商的用户,在出口带宽一般小于1-2G的情况下,采用专业抗DDoS串联部署,提供精细化的小流量检测能力,可以实时在线对DDoS进行清洗。

对于运营商或者大型网络,利用旁路部署技术,抗拒绝服务产品可以不必串联在原有网络中,除了减少故障点,而且由于大多数带宽不必实时通过抗拒绝服务产品,因此一个较小的抗DDoS清洗容量就可以适用于一个大带宽的网络中,有效的降低投入成本。旁路工作原理如下:

1.攻击检测:通过配置镜像接口或Netflow方式 感知到有攻击流量,判断是否有拒绝服务攻击发生。

2.流量牵引:确定发生拒绝服务攻击后,利用路由 交换技术,将原本要去往受害IP的流量牵引至旁路 ADS设备。被牵引的流量为正常流量与攻击流量的混合流量;

3.攻击防护/流量净化:ADS设备通过多层次 的垃圾流量识别与净化功能,将拒绝服务攻击 的流量从混合流量中分离、过滤;

4.流量注入:经过ADS净化之后的正常流量被重新注入回网络,到达目的IP。

采用旁路部署,具有以下优势:

1.仅在IPS等安全设备报警时与之联动,开始自动注入混合流量,平时正常情况下并不工作。

2.设备旁路部署即使ADS出现故障也不会影响网络连通性。

4.多机并用成倍提升清洗能力。

5.支持手动/自动牵引流量,让安全工程师与安全设备互补。

0×03 运营商层面的防御

一级运营商管理运营丰富的骨干网带宽资源,对于大流量及超大流量DDoS攻击具有先天性的压制优势,运营商是整个网络的支撑者,所有的攻击流量都必须通过运营商, 如果在运营商层面全面的打击DDOS攻击行为,将能起到一劳永逸的效果,所以我认为运营商应该扛起这份重任,打造 抗DDOS的堡垒。

对于运营商而言,保证其网络可用性是影响ROI的决定因素。如果运营商的基础网络遭受攻击,那么所有承载的业务都会瘫痪,这必然导致服务质量的下降甚至失效。同时,在目前竞争激烈的运营商市场,服务质量的下降意味着客户资源的流失,尤其是那些高ARPU值的大客户,会转投其他的运营商,这对于运营商而言是致命的打击。所以,有效的DDoS防护措施对于保证网络服务质量有着重要意义。另一方面,对运营商或是IDC而言,DDoS防护不仅仅可以避免业务损失,还能够作为一种增值服务提供给最终用户,这给运营商带来了新的利益增长点,也增强了其行业竞争能力。

源IP验证:目前大部分的DDOS攻击都会使用伪造的IP地址,尤其是反射型的DDOS攻击,如果不使用伪造的IP将无法攻击,如果运营商在全网开启源IP的校验,是不伪造的IP无法进入互联网则可以从源头上制止DDOS攻击。比如目前电信已经全面开启了松散uRPF,这有效的防止了伪造源地址的攻击行为。

使用溯源技术:因为在全网开展源地址验证可能会难度很大,但是防DDOS的关键又在源地址上,所以应该使用各种溯源技术,在攻击发生时迅速找到攻击源,取证并切断攻击源的网络,使攻击止于源头。

我认为对于普通用户的网络接入应尽量给与私网IP地址,然后通过NAT多个用户公用同一IP,这样第一节省了IP地址,第二,普通用户发出的各种报文的源地址都会被NAT替换成真实的地址,防止源地址伪造。第三,也有利于普通用户的安全,这相当于多了一道防火墙,能够阻挡大部分来自公网的主动连接,比如扫描等行为。

或者把ip报文头中未实际使用的部分,比如八位的QOS标志、IP选项字段,加入对来源标识功能,每个接入层的路由交换设备带有不同的标致,可以通过报文携带的不同标志找到它的大体发送源。

加固自身基础设备的安全性:运营商一定要高度重视自身网络设备的安全性,不要让网络设备成为反射放大器甚至被黑客控制,因为运营商在网络中起到只管重要的作用,如果黑客远程关闭一台核心交换机将比任何DDOS攻击危害更大效果更明显。

在全国建立流量清洗站为企业提供清洗服务:在全国各个地区建立流量清洗站,清洗DDOS流量,并且为企业提供清洗服务,将DDOS流量转入清洗站清洗,如遇特大型的DDOS攻击,让全国的清洗站共同分担清洗流量。

与大型云计算公司合作:云计算公司有很大的计算能力,运营商有很大的带宽资源,强强联合能极大提升抗DDOS能力。

0×04 结语

在DDOS攻击中,攻击方和防御方就像两名棋局上的棋手,见招拆招,根据对方的改变而改变自己的攻击/防御方法,仅仅通过一种方式就打瘫一个目标是很难实现的,仅仅靠ADS设备去自动的防御所有的攻击也是不现实呢,我认为不论实在攻击还是防御中,人都应该处在主导地位,通过安全人员的专业知识与经验,合理的使用和配置防御设备才能更好的防御住来自于各方的各种DDOS攻击。

备注:这篇文章是在我去年的毕业论文中截取的一段,现在我做了些简单的修改,言语有些死板,专业知识也有些不足,还望各位莫要嫌弃,对文中的错误多多指正。

0 人点赞