分布式拒绝服务(DDOS)攻击及防范研究(2)
3、攻击策略及防范
目前,随着多种DDoS攻击工具如TFN、TFN2K、Stacheldraht、Trinoo等的广泛传播,所面临DDoS攻击的风险更是急剧增长[2]。所以,如何有效的防御DDoS攻击成为当前一个亟待解决的问题。下面,本文针对这几种常用的攻击工具给出具体的防范措施。
3.1 TFN(Tribe Flood Network)攻击及防范
TFN是德国著名黑客Mixter编写的,与Trinoo相似,都是在互联网的大量UNIX系统中开发和测试的。它由客户端程序和守护程序组成,通过绑定到TCP端口的Root Shell控制,实施ICMP Flood,SYN Flood,UDP Flood等多种拒绝服务的分布式网络攻击。
TFN客户端、主控端和代理端主机相互间通信时使用IC-MP Echo和Icmp EchoReply数据包。针对TFN攻击的基本特性可采用如下抵御策略:
◆ 发动TFN时,攻击者要访问Master程序并向它发送一个或多个目标IP地址,然后Master程序与所有代理程序通信,指示它们发动攻击。Master程序与代理程序之间的通信使用ICMP回音/应答信息包,实际要执行的指示以二进制形式包含在16位ID域中。ICMP使信息包协议过滤成为可能,通过配置路由器或入侵检测系统,不允许所有的ICMP回音或回音/应答信息包进入网络就可以达到挫败TFN代理的目的,但是这样会影响所有使用这些功能的Internet程序,如Ping。Master程序读取一个IP地址列表,其中包含代理程序的位置。这个列表可能使用如“Blowfish”的加密程序进行加密,如果没有加密,就可以从这个列表方便地识别出代理信息。
◆ 用于发现系统上TFN代理程序的是程序td,发现系统上Master程序的是程序TFN。代理并不查看ICMP回音/应答信息包来自哪里,因此使用伪装ICMP信息包冲刷掉这些过程是可能的[9]。
3.2 TFN2k攻击及防范
TFN2k代表TFN 2000版,是Mixter编写的TFN后续版本。这个新的DDoS工具已在原有的基础上大大前进了一步,它也是由两部分组成,即客户端程序和在代理端主机上的守护进程。客户端向守护进程发送攻击指定的目标主机列表,代理端守护进程据此对目标进行拒绝服务攻击。由一个客户端程序控制的多个代理端主机,能够在攻击过程中相互协同,保证攻击的连续性。客户端程序和代理端的网络通信是经过加密的,还可能混杂许多虚假数据包。整个TFN2k网络可能使用不同的TCP,UDP或ICMP包进行通信,而且客户端还能伪造其IP地址。所有这些特性都使发展防御TFN2k攻击的策略和技术非常困难或效率低下。
TFN2k非常隐蔽,这些手段使得它很难被检测到。因为没有端口号,所以很难探测,即使在正常的基础上使用端口扫描程序也无法探测到用户的系统正被用作TFN2k服务器[10]。目前仍没有能有效防御TFN2k拒绝服务攻击的方法,最有效的策略是防止网络资源被用作客户端或代理端。
根据TFN2k的基本特性,可采用的预防手段有以下几种:
◆ 只使用应用代理型防火墙,这能够有效地阻止所有的TFN2k通信。但只使用应用代理服务器通常是不切实际的,因此只能尽可能地使用最少的非代理服务。
◆ 禁止不必要的ICMP,TCP和UDP通信,特别是对于ICMP数据,可只允许ICMP类型3(Destination Unreachable,目标不可到达)数据包通过。如果不能禁止ICMP协议,那就禁止主动提供或所有的ICMP EchoReply包。
◆ 禁止不在允许端口列表中的所有UDP和TCP包。
◆ 配置防火墙过滤所有可能的伪造数据包。
◆ 对系统进行补丁和安全配置,以防止攻击者入侵并安装TFN2k。