电脑技术学习

Cisco路由器防止分布式拒绝服务攻击

dn001

到目前为止,进行DDoS攻击的防御还是比较困难的。首先,这种攻击的特点是它利用了TCP/IP协议的漏洞,除非你不用TCP/IP,才有可能完全抵御住DDoS攻击。一位资深的安全专家给了个形象的比喻:DDoS就好象有1,000个人同时给你家里打电话,这时候你的朋友还打得进来吗?

不过即使它难于防范,也不是说我们就应该逆来顺受,实际上防止DDoS并不是绝对不可行的事情。对Cisco路由器我们可以首先在路由器上打开CEF功能(Cisco EXPress Forwarding)、使用Unicast RPF (Unicast Reverse Path Forwarding),然后利用访问控制列表(ACL)过滤并设置SYN数据包流量速率或通过升级版本过低的ISO、为路由器建立log server等措施来建立安全防范。具体的使用方法是:

1、使用 ip verfy unicast reverse-path 网络接口命令
  这个功能检查每一个经过路由器的数据包。在路由器的CEF(Cisco Express Forwarding)表该数据包所到达网络接口的所有路由项中,假如没有该数据包源IP地址的路由,路由器将丢弃该数据包。例如,路由器接收到一个源IP地址为1.2.3.4的数据包,假如 CEF路由表中没有为IP地址1.2.3.4提供任何路由(即反向数据包传输时所需的路由),则路由器会丢弃它。
  单一地址反向传输路径转发(Unicast Reverse Path Forwarding)在ISP(局端)实现阻止SMURF攻击和其它基于IP地址伪装的攻击。这能够保护网络和客户免受来自互联网其它地方的侵扰。使用Unicast RPF 需要打开路由器的"CEF swithing"或"CEF distributed switching"选项。不需要将输入接口配置为CEF交换(switching)。只要该路由器打开了CEF功能,所有独立的网络接口都可以配置为其它交换(switching)模式。RPF(反向传输路径转发)属于在一个网络接口或子接口上激活的输入端功能,处理路由器接收的数据包。
  在路由器上打开CEF功能是非常重要的,因为RPF必须依靠CEF。Unicast RPF包含在支持CEF的Cisco IOS 12.0 及以上版本中,但不支持Cisco IOS 11.2或11.3版本。

2、使用访问控制列表(ACL)过滤RFC 1918中列出的所有地址
  参考以下例子:
  interface xy
  ip Access-group 101 in
  access-list 101 deny ip 10.0.0.0 0.255.255.255 any
  access-list 101 deny ip 192.168.0.0 0.0.255.255 any
  access-list 101 deny ip 172.16.0.0 0.15.255.255 any
  access-list 101 permit ip any any

3、参照RFC 2267,使用访问控制列表(ACL)过滤进出报文
  参考以下例子:
  {ISP中心} -- ISP端边界路由器 -- 客户端边界路由器 -- {客户端网络}
  ISP端边界路由器应该只接受源地址属于客户端网络的通信,而客户端网络则应该只接受源地址未被客户端网络过滤的通信。以下是ISP端边界路由器的访问控制列表(ACL)例子:
  access-list 190 permit ip {客户端网络} {客户端网络掩码} any

  access-list 190 deny ip any any [log]
  interface {内部网络接口} {网络接口号}
  ip access-group 190 in
  以下是客户端边界路由器的ACL例子:
  access-list 187 deny ip {客户端网络} {客户端网络掩码} any
  access-list 187 permit ip any any
  access-list 188 permit ip {客户端网络} {客户端网络掩码} any
  access-list 188 deny ip any any
  interface {外部网络接口} {网络接口号}
  ip access-group 187 in
  ip access-group 188 out
  假如打开了CEF功能,通过使用单一地址反向路径转发(Unicast RPF),能够充分地缩短访问控制列表(ACL)的长度以提高路由器性能。为了支持Unicast RPF,只需在路由器完全打开CEF;打开这个功能的网络接口并不需要是CEF交换接口。

4、使用CAR(Control Access Rate)限制ICMP数据包流量速率
  参考以下例子:
  interface xy
  rate-limit output access-group 2020 3000000 512000 786000 conform-action
  transmit exceed-action drop
  access-list 2020 permit icmp any any echo-reply

5、设置SYN数据包流量速率
  interface {int}
  rate-limit output access-group 153 45000000 100000 100000 conform-action
  transmit exceed-action drop
  rate-limit output access-group 152 1000000 100000 100000 conform-action
  transmit exceed-action drop
  access-list 152 permit tcp any host eq www
  access-list 153 permit tcp any host eq www established
  在实现应用中需要进行必要的修改,替换:
  45000000为最大连接带宽
  1000000为SYN flood流量速率的30%到50%之间的数值。
  burst normal(正常突变)和 burst max(最大突变)两个速率为正确的数值。
  注重,假如突变速率设置超过30%,可能会丢失许多合法的SYN数据包。使用"show interfaces rate-limit"命令查看该网络接口的正常和过度速率,能够帮助确定合适的突变速率。这个SYN速率限制数值设置标准是保证正常通信的基础上尽可能地小。
  警告:一般推荐在网络正常工作时测量SYN数据包流量速率,以此基准数值加以调整。必须在进行测量时确保网络的正常工作以避免出现较大误差。
  另外,建议考虑在可能成为SYN攻击的主机上安装IP Filter等IP过滤工具包。


6、搜集证据并联系网络安全部门或机构
  假如可能,捕捉攻击数据包用于分析。建议使用SUN工作站或Linux等高速计算机捕捉数据包。常用的数据包捕捉工具包括TCPDump和snoop等。基本语法为:
  tcpdump -i interface -s 1500 -w capture_file
  snoop -d interface -o capture_file -s 1500
  本例中假定MTU大小为1500。假如MTU大于1500,则需要修改相应参数。将这些捕捉的数据包和日志作为证据提供给有关网络安全部门或机构。

为了防止利用IP Spoofing手段假冒源地址进行的DoS攻击对整个网络造成的冲击。主要配置在边缘路由设备(即直接与终端用户网络互连的路由设备)上,根据用户网段规划添加源路由检查。

针对不同DDOS攻击的端口进行过滤,在实施时必须探测到DDOS攻击的端口。
! The TRINOO DDoS system
Router(Config)# access-list 113 deny tcp any any eq 27665 log
Router(Config)# access-list 113 deny udp any any eq 31335 log
Router(Config)# access-list 113 deny udp any any eq 27444 log
! The Stacheldtraht DDoS system
Router(Config)# access-list 113 deny tcp any any eq 16660 log
Router(Config)# access-list 113 deny tcp any any eq 65000 log
! The TrinityV3 System
Router(Config)# access-list 113 deny tcp any any eq 33270 log
Router(Config)# access-list 113 deny tcp any any eq 39168 log
! The SubSeven DDoS system and some Variants
Router(Config)# access-list 113 deny tcp any any range 6711 6712 log
Router(Config)# access-list 113 deny tcp any any eq 6776 log
Router(Config)# access-list 113 deny tcp any any eq 6669 log
Router(Config)# access-list 113 deny tcp any any eq 2222 log
Router(Config)# access-list 113 deny tcp any any eq 7000 log
Router(Config)# interface eth 0/2
Router(Config-if)# ip access-group 113 in

DDOS是利用TCP协议的漏洞, 目前没有什么有效的手段防护,笔者认为最有效的方法就是拼资源, 其次可以加个firewall。DDOS多是有目的的攻击, 是很难防护的,基本上,路由器防范DoS攻击的能力还是很弱的,尽管我们在路由器上采取了适当措施,以上配置不建议在核心和汇聚层设备上实行。碰到问题时一种快速的手段, 就是利用2分法, 快速的查出它的来源地址, 然后封掉它。

因此,防止各种DoS攻击是非常必要的。用户需要注重的是,以上介绍的几种方法,对付不同类型的DoS攻击的能力是不同的,对路由器CPU和内存资源的占用也有很大差别,在实际环境中,用户需要根据自身情况和路由器的性能来选择使用适当的方式。