DDoS防御方法分析
2014-09-17陈栋
陈 栋
(连云港广播电视大学)
0 引言
DDoS(Distributed Denial of Service)分布式拒绝服务攻击已经成为除SQL注入式攻击外,黑客最关心的攻击方法.2009年5月19日,国内著名的“暴风门事件”就是由黑客利用了暴风影音的软件漏洞,使成千上万的暴风影音用户向国内域名服务器发送大量暴风网站的DNS解析查询信息,形成“多米诺骨牌”效应,形成大规模的DDoS攻击后的大范围网络故障.
1 DDoS的起源和定义
DDoS攻击发源于传统的DoS(Denial of Service)拒绝服务攻击基础之上,DoS往往是指黑客通过单一的IP地址向某一目标主机发出“合法”的访问请求,而耗尽目标主机的网络带宽和硬件资源(CPU、内存等)的攻击方式.这种攻击方式在当今网络技术和硬件技术飞速发展的情况下,已基本无用武之地.于是,分布式拒绝服务DDoS攻击方式应运而生.所谓分布式拒绝服务攻击,就是黑客利用互联网的优势,利用操作系统或软件漏洞同时联合众多傀儡机对某一目标主机展开更大规模、更高强度的攻击,使目标主机的大量网络和硬件资源被占用,而无法对正常用户提供服务.
2 DDoS的攻击分类
2.1 基于网络层的DDoS攻击
早期的DDoS攻击主要针对于网络层,利用TCP协议的缺陷实施攻击.这类攻击方法主要包括:SYN洪水攻击、DNS查询洪水攻击等.
(1)SYN洪水攻击
SYN洪水攻击是黑客通过利用TCP协议的工作原理对目标主机采取的攻击活动.在互联网中,任何两个实体建立TCP连接都需要双方进行三次数据包的交换,称之为“三次握手”.而黑客正是利用了这一过程中的漏洞,通过伪造数据包中的源IP地址,将带有伪造源IP地址并含有SYN标志位的数据包发送给服务器端,服务器端会向伪造IP地址发送请求确认信息,但是该IP地址将不会做出回应,而服务器端则会继续尝试几次直至响应超时后丢弃此连接.黑客会发送大量的伪造源IP地址的数据包给服务器,而服务器会因SYN半连接请求占满队列而无法为正常的用户提供服务.
(2)DNS查询洪水攻击
DNS查询洪水攻击是针对于互联网域名查询系统的原理所产生的一种攻击方式.DNS服务器在接收到客户端的查询请求之后,首先会在本地服务器上查找对应的域名信息,如果未找到,服务器会将该请求转发至上级域名服务器进行递归查询.黑客可以利用大量的傀儡机同时给域名服务器发送大量的域名查询请求,当单位时间内的解析请求超过一定数量时,就会造成域名服务器解析超时甚至瘫痪.
2.2 基于应用层的DDoS攻击
近年来,随着网络技术的飞速发展,各种网络应用软件和Web应用系统铺天盖地,传统的针对的网络层的攻击已经越来越少,取而代之的是针对应用层的攻击.由于应用层协议的多样化和复杂性,因此针对于应用层攻击所产生的破坏力远大于针对网络层的攻击,针对应用层的DDoS攻击主要有CC攻击.
CC(Challenge Collapsar)攻击,译为挑战黑洞攻击.CC攻击往往针对于基于数据库的Web应用系统.黑客通过控制代理服务器或者大量在线的“肉鸡”,伪装成指向目标服务器的合理请求,实现单用户或多用户同时多线程的动态页面的访问,此类攻击以应用层信息流为攻击方式,此方式必须以真实的IP地址建立正常的TCP连接为前提.由于所提交的HTTP请求往往可以导致服务器执行查询等一系列复杂的动作,所以会耗费服务器大量的系统资源用于数据库调用.
3 DDoS的防御方法
3.1 针对于网络层的DDoS防御方法
(1)SYN洪水攻击的防御方法
防御SYN洪水攻击的方法可以通过在服务器操作系统中加固TCP/IP协议堆栈实现.以Windows Server 2003为例,在运行栏输入“Regedit”命令,打开注册表编辑器.找到 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceTcpipParameters项.第一步:启用系统SYN攻击防护功能,创建一个名为SynAttackProtect的REG_DWORD数值项,并设置为十六进制数1.第二步:设定触发SYN洪水攻击保护时的TCP连接请求的阈值,创建一个名为TCPMax-PortsExhausted的REG_DWORD数值项,并设置为十六进制数5(有效值0~65535).第三步:限制同时打开的TCP半连接数,创建一个名为TCPMaxHalfOpen的REG_DWORD数值项,并设置为十六进制数500(有效值100~65535).第四步:缩短TCP半连接的超时时间,创建一个名为TCPMaxHalfOpenRetried的REG_DWORD数值项,并设置为十六进制数400(有效值 80~65535).
(2)DNS查询洪水攻击的防御方法
建立基于DNS解析服务器群集的负载均衡系统是一种解决针对DNS查询洪水攻击的有效方法.可以将用户请求分配到DNS解析服务器群集中具有不同IP的主机上,一方面可以增加攻击者的成本,另一方面可以方便网络管理员分析这种“过多”的DNS请求以查找攻击者,然后配置相应的防火墙策略以大大减少服务器资源耗尽的风险.但是,此方法成本较高,适用于大型网络.而对于小型网络而言,通常只有一台DNS服务器,投入大量资金构建群集系统显然是不可能的,因此快速查找到异常对于网络管理员来说非常重要.DNS Flood Detector是一种基于Libcap模块的第三方软件,该软件工作在非混杂模式下,通过监听网络中的DNS的流量请求信息来判断DNS服务器是否正在遭受查询洪水攻击,适用于 Unix、Linux、Mac OS、FreeBSD 等操作系统.
DNS Flood Detector的用法如下:
例如:当需要以前台模式输出每秒查询超过10次记录的详细信息,可执行以下命令:./dns_flood_detector-v-v-b-t10
运行结果:
[17:15:57] source[192.168.1.46]-0 qps tcp:24 qps udp[8 qps A][16 qps PTR]
[17:15:57] source [10.0.24.3] -0 qps tcp:15 qps udp[15 qps A]
[17:16:07] source [192.168.1.46] -0 qps tcp:24 qps udp[8 qps A][16 qps PTR]
[17:16:07] source [10.0.24.3] -0 qps tcp:15 qps udp[14 qps A]
[17:16:17] source [192.168.1.46] -0 qps tcp:23 qps udp[7 qps A][15 qps PTR]
通过分析运行结果,网络管理员可以方便的查找到攻击者的源IP地址、端口号、PTR(指针)和MX(邮件交换)记录等详细信息,并据此设置相应的防护策略.
3.2 针对于应用层的DDoS防御方法
由于通过防火墙技术来防御CC攻击的方法主要局限于检测单个IP地址的并发数来进行判断,但是如果存在大量的IP地址,而每个IP地址的连接数相对较少的情况下,这种方法反而并不有效,所以,从根本上防御CC攻击的方法主要是通过网页代码来实现,可以通过限制客户端访问的最大线程数来防御,以ASP代码示例如下:
Dim IP_Client,TimeOut,Interval,Thread_Max,Brow_Client
TimeOut=600'设置访问超时时间
Interval=1'最短刷新时间
Thread_Max=10'客户端最大线程数
IP_Client=Request.ServerVariables("REMOTE_ADDR")'获取客户端IP
Brow_Client=Replace(Request.ServerVariables("HTTP_USER_AGENT"),vbCrLf,"")
'获取客户端浏览器版本
Application.Lock
If IsEmpty(Application(IP_Client))Then '当客户端第一次访问时,为该客户创建一
个包括IP地址、浏览器版本及详细URL地址的Application变量
Application(IP_Client)="0"& vbCrLf&Now&
vbCrLf&_
Brow_Client& vbCrLf&GetDetailUrl()
Else
C_arr=Split(Application(IP_Client),vbCrLf)'建立访问临界值数组
If Int(C_arr(0))>=Thread_Max Then'判断客户端是否被封
If DateDiff("S",C_arr(2),Now)> =Int(C_arr(0))Then'判断是否需要解封
C_arr(0)="0"
C_arr(2)=Now
Else
C_arr(0)=Int(C_arr(0))+1'继续延长客户端被封时间
SendBanMessage()
End If
Else
If DateDiff("S",C_arr(2),Now)< =Interval Then'判断访问间隔
C_arr(0)=Int(C_arr(0))+1'临界值增1
Else
If Int(C_arr(0))<1 Then'处理数组为负的情况
C_arr(0)=0
Else
C_arr(0)=Int(C_arr(0))-1 '临界值减1
End If
End If
C_arr(2)=Now'置为最近访问时间
End If
End If
Function SendBanMessage()'定义函数客户端IP被封时弹出提示信息
Response.Clear
Dim RemainTime
RemainTime=C_arr(0)-DateDiff("S",C_arr(2),Now)'客户端解禁时间% >
你的访问频率过快!<br><br>
你的IP地址将于 <%=RemainTime% >秒之后解封!<%
Response.End
End Function
4 结束语
以上介绍的几种防御方法可以有效的缓解各种常见的DDoS攻击影响,而DDoS攻击的最终目的是要耗尽服务器的网络和硬件资源,因此,从这个角度上来讲,哪怕有足够多的正常访问请求也同样可以造成服务器的“拒绝服务”的情况出现.所以,从根本上解决拒绝服务攻击,还需要做好以下几点工作:
(1)保证服务器有足够的网络带宽.比如,服务器的现有带宽为1M~10M的就很难抵御由百兆网络或千兆网络发起的攻击.
(2)适时升级服务器硬件.服务器的CPU和内存资源都是DDOS攻击的主要消耗目标,如果要有效的抵抗每秒100万个SYN数据包,就必须至少配备2.4 GHz的至强双核处理器和1 G的内存.因此在资金条件允许的情况下,请尽量增加CPU和内存.
(3)采用较新的服务器操作系统.新推出的服务器操作系统通常具有较高的安全性和增强型的网络服务功能,并预置了许多安全策略,有利于抵抗各种攻击.
(4)及时打补丁修复系统漏洞.必须及时修复系统漏洞,以免服务器漏洞被黑客利用,以使自身沦为傀儡机,成为攻击别人的帮凶.
(5)提前做好针对性预防工作.比如,针对SYN洪水攻击,可以在服务器安装完成后就开始加固TCP堆栈;而针对CC攻击,可以在网页设计阶段就加入防止CC攻击程序.
(6)准确判断攻击方式.发生攻击时,应通过软件抓取数据包进行分析,根据不同的攻击方式采取不同的解决方法.
(7)保留详细系统日志,方便追查元凶.
[1] 丁黄望.DDOS攻击主动防御机制的设计[J].福建电脑,2012(9):36-42.
[2] 王鹏.互联网防御DOS/DDOS攻击策略研究[J].邮电设计技术,2012(10):23-28.
[3] 张永铮.DDoS攻击检测和控制方法[J].软件学报,2012(8):19-24.
[4] 熊俊.应用层DDOS攻击检测技术研究[J].信息安全与技术,2012(9):32-34.
[5] 厉斌.网络监控与有效防御DDoS攻击的研究[J].信息网络安全,2013(10):42-46.
[6] 谢逸.非平稳动态行为模型及其在DDoS检测中的应用[J].小型微型计算机系统,2013(9):21-24.
[7] 么利中.DDOS攻击手段及其防护研究[J].科技创新与应用,2013(31):32-35.
[8] 辛忆培.DDoS攻击的检测算法研究[J].信息安全与技术,2013(9):31-34.