◆杨玉兰
(江苏联合职业技术学院徐州医药分院基础教学部 江苏 221116)
DDoS攻击行为特征分析及防御方法探究
◆杨玉兰
(江苏联合职业技术学院徐州医药分院基础教学部 江苏 221116)
DDoS攻击主要有大流量攻击型和资源耗尽型两大类,大流量攻击型以SYN Flood攻击和UDP/ICMP Flood攻击为代表,资源耗尽型以HTTP GET攻击和DNS Query攻击为典型代表。每种攻击行为都有其各自的特征和攻击原理,深入分析其行为特征和攻击原理,有针对性地采取正确有效系统的措施进行防御。
分布式拒绝服务攻击;傀儡计算机;远程计算机;特征分析;防御
DDoS攻击即分布式拒绝服务攻击,是黑客通过远程控制大量分散在不同地域的“肉鸡”(傀儡计算机)同时向远程计算机(受害者)发送大量貌似合法的数据包,导致网络阻塞或资源耗尽从而拒绝服务的攻击行为,阻止了合法的计算机用户正常的网络资源的使用,严重威胁着网络安全。
DDoS攻击主要有两种类型,一种是大流量攻击型,通过发送大量攻击包阻塞网络带宽,正常的用户数据包无法到达主机;另外一种就是资源耗尽攻击型,通过发送大量的攻击包耗尽主机的内存或CPU等资源,使其无法响应正常的用户服务请求。
1.1 大流量攻击型
大流量攻击不仅是使基础网络堵塞、带宽占满,无法保证正常的用户流量通过,还会使得基础网络的安全设备、服务器主机等的CPU也因为超负荷而挂死,无法继续提供服务。典型的大流量攻击型有两种:一种是有状态协议报文攻击型,以SYN Flood为代表;另一种就是无状态协议报文攻击,以UDP/ICMP Flood为代表。
(1)有状态协议报文攻击型
SYN Flood攻击者精通TCP/IP协议的三次握手机制。服务器如果收不到第三次握手信号,就会等待一段时间,过期才会放弃。但是每台设备的TCP/IP连接预留的内存缓冲区有限,等待响应的ACK数量就有限,该内存缓冲区一旦被占满,就不会再响应后续的请求,即拒绝服务。攻击者通过控制大量分散的“肉鸡”(傀儡计算机)同时向受害机发送SYN报文,但不发送响应确认报文即第三次握手,导致受害机因收不到响应报文而保持等待,因这种等待太多(FLOOD)而导致服务器的连接内存缓冲区瞬间爆满而阻塞,拒绝服务。
(2)无状态协议报文攻击型
UDP是用户数据报协议,提供面向事务的信息传送服务,用于处理数据,不提供协调的握手机制,无法保证报文安全完整到达,是一种无连接状态不可靠的通道传输协议,主要用来支持计算机间进行数据传输的网络应用,如网络游戏、语音视频聊天、下载工具等。攻击者只要伪造大量IP地址和小字节的UDP报文或控制“肉机”针对具体的应用服务器及其端口进行发送冲击,就会使得目标服务器一直处于繁忙状态,无法响应处理正常的UDP数据。
ICMP是网络控制消息协议,用于主机与路由器间的控制消息传送,比如Ping命令、Tracert命令等。主机对这些命令的处理是要有一定时间的,而且对数据包的大小也有限制,不能超过64KB。ICMP攻击手段多样,一种是攻击者向目标主机发起“ICMP风暴”攻击,即大量连续长时间地向主机发送ICMP数据报,主机的CPU就会被耗尽瘫痪,无法响应正常的ICMP报文。第二种是攻击者向目标主机大量发送超过64KB的ICMP报文,主机就会因无法分配内存而导致内存缓冲区崩溃死机。第三种是攻击者仿造一个合法的IP,利用路由器具有向许多计算机同时广播请求的功能,控制大量的路由器同时广播请求受害者主机作出回答请求,导致网络中所有计算机都对此ICMP作出回答而使得网络阻塞瘫痪。
1.2 应用资源耗尽型攻击
针对应用层资源的攻击以HTTP GET攻击和DNS Query攻击为典型代表,此类攻击不依大规模流量取胜,而是用小流量攻击来耗尽受害者主机的应用资源导致拒绝服务。
1.2.1 HTTP GET攻击
浏览器中HTTP访问服务器资源默认的都是以GET提交,主机在资源数据库中查询信息要有一定的时间,大型数据库的查询时间就更长。攻击者可以很容易地和受害机服务器建立正常的连接并不断向其高频率发送合法的HTTP GET请求,进行账户的注册、数据的查询、刷新等合法操作来消耗服务器的资源,导致服务器忙于响应这些请求而消耗100%的CPU,无法响应其它的服务请求。或者用代理服务器以低慢连接形式如“slow header”、“slow post”等占用大量服务器资源导致资源耗尽。
1.2.2 DNS Query攻击
DNS子服务器和DNS根服务器中建立了域名和IP地址的映射表,并负责解析查询(Query)。一次简单的DNS Query只需在本地域名子服务器上就能完成,复杂或陌生的域名查询,则会在本地域名子服务器、根服务器、其它域名服务器不断地进行递归查询,会消耗大量的CPU 资源。DNS Query攻击就是仿制大量的IP地址或控制大量的肉机发起大量的DNS Query请求,使DNS服务器的资源被100%消耗,无法响应正常的域名查询。或者发送非法的DNS Query报文,引起域名服务器不断进行递归查查询导致DNS服务器系统瘫痪,用小流量达到攻击的目的。
掌握了常见DDoS攻击行为的原理及特征,就可以针对不同的入侵行为,采取正确有效系统的措施进行针对性的防御。
2.1 有状态协议报文攻击的防御
防火墙处于服务器和客户机之间,起到保护内部网络的作用,可以防御SYN Flood攻击。根据对防火墙的不同设置,可分为SYN网关、被动式SYN网关和SYN中继三种防护方式。
SYN网关式是让防火墙起到SYN网关的作用。防火墙不仅向服务器转发客户端的SYN包,向客户端转发服务器的ACK包,还要向服务器返回一个以客户端身份发出的ACK包,即替客户机完成TCP协议的第三次握手,使半连接变为连接。若客户端真的发回有数据的ACK包,防火墙就转发给服务器,反之就丢弃。
被动式SYN网关式是让防火墙起到SYN网关作用的同时,大大减小防火墙的SYN请求超时时间参数,让防火墙提前判定客户端ACK超时,给服务器发送RST包,删除等候队列中的半连接,释放缓存空间。
SYN中继式是让防火墙不向服务器转发客户端的SYN包,而是做登记后代替服务器给客户端返回ACK包完成二次握手,如果收到客户端返回的第三次握手ACK包,防火墙才向服务器发送连接SYN。防火墙在客户端和服务器端起到中继器的作用,过滤掉半连接,预防攻击。
2.2 无状态协议报文攻击的防御
UDP协议是无连接的,无法探测来源。最简单的防御方法就是用防火墙的限流,限制UDP报文在一定的带宽范围。基本做法有:基于目的IP地址的限流、基于目的安全区域的限流和 基于会话的限流。限流方式以简单的超量就丢弃的粗暴方法可以缓解带宽的压力,但对正常的需求也直接抛弃了。黑客的攻击包内容大都相同或相似,专业的防火墙具有指纹学习功能,可以对相同或相似的攻击包进行判定过滤。
对于ICMP协议攻击的防御,一种方法是限定ICMP数据包占用带宽,即使发生攻击,对网络的影响也有限。第二种方法是在系统中设置ICMP数据包的过滤,一般是拒绝所有的ICMP包。第三种方法是设置防火墙,启动“ICMP过滤”功能,防止被“PING”。
2.3 HTTP GET攻击的防御
对于频繁发送合法的用于查询获取资源信息的HTTP GET攻击,有主动防御和被动防御两种方式。主动防御式是根据实际情况,限定每个IP可以建立的最大连接数和每秒可以建立的连接数。被动防御式一是在发现攻击时通过脚本列举所有的连接,筛选出其中连接数最大的IP地址,将其封杀,禁止其访问。采取、屏蔽请求等方法。二是根据攻击发起时的请求包基本相同而且有异于正常,所以在发生攻击时可以快速查看日志、分析其请求的特征,对于特征相同的连接将其屏蔽,拒绝访问。
而对于“low and slow”式的攻击,其连接数量少、特征正常,则可以对Apache 进行优化处理,一方面通过mod_reqtimeout为header 和 body设置合适的发送频率和发送时间,另一方面通过设置mod_qos的多个参数来控制客户端最大的IP数以及每个IP的最大连接数等,还可以通过 MaxClients增加最大的连接数。当然,也可以额外安装mod_security模块,给网页应用再提供一个外部安全层,如检测某个IP每分钟的连接数,超过则全部丢弃等,可以有效的抵御攻击。
2.4 DNS Query攻击的防御
DNS Query攻击首先是一种UDP攻击,故可以采取限流,但最佳的办法就是利用防火墙的指纹学习功能,根据域名IP的指纹学习结果主动回应,既减轻服务器的查询负担,又提高查询速度。对于骤然发生的巨量低频度的域名解析请求,可以果断封杀此IP地址,同时降低发起域名解析请求较低的IP地址的响应优先级。也可以设置防火墙限定每个IP地址每秒钟域名解析请求的次数。
每种DDoS攻击都有其独特的特征和攻击原理,只要深入分析把握,破解和防御DDoS攻击并非难事。但是,道高一尺,魔高一丈,不断涌现的新的DDoS攻击或变种,还需要专业技术人员继续分析,不断提供新的软件、硬件及方法来防御或破解。
[1]杜晔,张大伟.网络攻防技术教程(第2版) [M].武汉:武汉大学出版社,2012.
[2]张娅婷.DDoS防御技术综述[J].长沙铁道学院学报(社会科学版),2007.
[3]池水明.DDoS攻击防御技术研究[J].信息网络安全,2012.