拒绝服务(DoS)攻击是目前黑客广泛使用的一种攻击手段,它通过独占网络资源、使其他主机不 能进行正常访问,从而导致宕机或网络瘫痪。
DoS攻击主要分为Smurf、SYN Flood和Fraggle三种,在Smurf攻击中,攻击者使用ICMP数据包阻塞服务器和其他网络资源;SYN Flood攻击使用数量巨大的TCP半连接来占用网络资源;Fraggle攻击与Smurf攻击原理类似,使用UDP echo请求而不是ICMP echo请求发起攻击。
尽管网络安全专家都在着力开发阻止DoS攻击的设备,但收效不大,因为DoS攻击利用了TCP协议本身的弱点。正确配置路由器能够有效防止DoS攻击。以Cisco路由器为例,Cisco路由器中的IOS软件具有许多防止DoS攻击的特性,保护路由器自身和内部网络的安全。
使用扩展访问列表
扩展访问列表是防止DoS攻击的有效工具。它既可以用来探测DoS攻击的类型,也可以阻止DoS攻击。Show ip Access-list命令能够显示每个扩展访问列表的匹配数据包,根据数据包的类型,用户就可以确定DoS攻击的种类。假如网络中出现了大量建立TCP连接的请求,这表明网络受到了SYN Flood攻击,这时用户就可以改变访问列表的配置,阻止DoS攻击。
使用QoS
使用服务质量优化(QoS)特征,如加权公平队列(WFQ)、承诺访问速率(CAR)、一般流量整形(GTS)以及定制队列(CQ)等,都可以有效阻止DoS攻击。需要注重的是,不同的QoS策略对付不同DoS攻击的效果是有差别的。例如,WFQ对付Ping Flood攻击要比防止SYN Flood攻击更有效,这是因为Ping Flood通常会在WFQ中表现为一个单独的传输队列,而SYN Flood攻击中的每一个数据包都会表现为一个单独的数据流。此外,人们可以利用CAR来限制ICMP数据包流量的速度,防止Smurf攻击,也可以用来限制SYN数据包的流量速度,防止SYN Flood攻击。使用QoS防止DoS攻击,需要用户弄清楚QoS以及DoS攻击的原理,这样才能针对DoS攻击的不同类型采取相应的防范措施。
使用单一地址逆向转发
逆向转发(RPF)是路由器的一个输入功能,该功能用来检查路由器接口所接收的每一个数据包。假如路由器接收到一个源IP地址为10.10.10.1的数据包,但是CEF(Cisco EXPress Forwarding)路由表中没有为该IP地址提供任何路由信息,路由器就会丢弃该数据包,因此逆向转发能够阻止Smurf攻击和其他基于IP地址伪装的攻击。
使用RPF功能需要将路由器设为快速转发模式(CEF switching),并且不能将启用RPF功能的接口配置为CEF交换。RPF在防止IP地址欺骗方面比访问列表具有优势,首先它能动态地接受动态和静态路由表中的变化;第二RPF所需要的操作维护较少;第三RPF作为一个反欺骗的工具,对路由器本身产生的性能冲击,要比使用访问列表小得多。
使用TCP拦截
Cisco在IOS 11.3版以后,引入了TCP拦截功能,这项功能可以有效防止SYN Flood攻击内部主机。
在TCP连接请求到达目标主机之前,TCP拦截通过拦截和验证来阻止这种攻击。TCP拦截可以在拦截和监视两种模式下工作。在拦截模式下,路由器拦截到达的TCP同步请求,并代表服务器建立与客户机的连接,假如连接成功,则代表客户机建立与服务器的连接,并将两个连接进行透明合并。在整个连接期间,路由器会一直拦截和发送数据包。对于非法的连接请求,路由器提供更为严格的对于half-open的超时限制,以防止自身的资源被SYN攻击耗尽。在监视模式下,路由器被动地观察流经路由器的连接请求,假如连接超过了所配置的建立时间,路由器就会关闭此连接。
在Cisco路由器上开启TCP拦截功能需要两个步骤:一是配置扩展访问列表,以确定需要保护的IP地址;二是开启TCP拦截。配置访问列表是为了定义需要进行TCP拦截的源地址和目的地址,保护内部目标主机或网络。在配置时,用户通常需要将源地址设为any,并且指定具体的目标网络或主机。假如不配置访问列表,路由器将会答应所有的请求经过。
使用基于内容的访问控制
基于内容的访问控制(CBAC)是对Cisco传统访问列表的扩展,它基于应用层会话信息,智能化地过滤TCP和UDP数据包,防止DoS攻击。
CBAC通过设置超时时限值和会话门限值来决定会话的维持时间以及何时删除半连接。对TCP而言,半连接是指一个没有完成三阶段握手过程的会话。对UDP而言,半连接是指路由器没有检测到返回流量的会话。
CBAC正是通过监视半连接的数量和产生的频率来防止洪水攻击。每当有不正常的半连接建立或者在短时间内出现大量半连接的时候,用户可以判定是遭受了洪水攻击。CBAC每分钟检测一次已经存在的半连接数量和试图建立连接的频率,当已经存在的半连接数量超过了门限值,路由器就会删除一些半连接,以保证新建立连接的需求,路由器持续删除半连接,直到存在的半连接数量低于另一个门限值;同样,当试图建立连接的频率超过门限值,路由器就会采取相同的措施,删除一部分连接请求,并持续到请求连接的数量低于另一个门限值。通过这种连续不断的监视和删除,CBAC可以有效防止SYN Flood和Fraggle攻击。
路由器是企业内部网络的第一道防护屏障,也是黑客攻击的一个重要目标,假如路由器很轻易被攻破,那么企业内部网络的安全也就无从谈起,因此在路由器上采取适当措施,防止各种DoS攻击是非常必要的。用户需要注重的是,以上介绍的几种方法,对付不同类型的DoS攻击的能力是不同的,对路由器CPU和内存资源的占用也有很大差别,在实际环境中,用户需要根据自身情况和路由器的性能来选择使用适当的方式。