Cisco路由器在路由行业中占有非常重要的地位,同时用户群也很多,了解一些Cisco路由器安全配置还是非常重要的。目前大多数的企事业单位和部门连Internet网,通常都是一台路由器与ISP连结实现。
这台路由器就是沟通外部Internet和内部网络的桥梁,如果这台路由器能够合理进行安全设置,那么就可以对内部的网络提供一定安全性或对已有的安全多了一层屏障。现在大多数的路由器都是Cisco公司的产品或与其功能近似,本文在这里就针对Cisco路由器安全配置进行管理。考虑到路由器的作用和位置,路由器配置的好坏不仅影响本身的安全也影响整个网络的安全。目前路由器(以Cisco为例)本身也都带有一定的安全功能,如访问列表、加密等,但是在缺省配置时,这些功能大多数都是关闭的。需要进行手工配置。怎样的配置才能最大的满足安全的需要,且不降低网络的性能?本文从以下几个部分分别加以说明:
Cisco路由器安全配置. 口令管理
口令是路由器是用来防止对于路由器的非授权访问的主要手段,是路由器本身安全的一部分。最好的口令处理方法是将这些口令保存在TACACS+或RADIUS认证服务器上。但是几乎每一个路由器都要有一个本地配置口令进行权限访问。如何维护这部分的安全?
1. 使用enable secret
enable secret 命令用于设定具有管理员权限的口令。并且如果没有enable secret,则当一个口令是为控制台TTY设置的,这个口令也能用于远程访问。这种情况是不希望的。还有一点就是老的系统采用的是enable password,虽然功能相似,但是enable password采用的加密算法比较弱。
2. 使用service password-encryption
这条命令用于对存储在配置文件中的所有口令和类似数据(如CHAP)进行加密。避免当配置文件被不怀好意者看见,从而获得这些数据的明文。但是service password-encrypation的加密算法是一个简单的维吉尼亚加密,很容易被破译。这主要是针对enable password命令设置的口令。而enable secret命令采用的是MD5算法,这种算法很难进行破译的。但是这种MD5算法对于字典式攻击还是没有办法。所以不要以为加密了就可以放心了,最好的方法就是选择一个长的口令字,避免配置文件被外界得到。且设定enable secret和service password-encryption。
Cisco路由器安全配置. 控制交互式访问
任何人登录到路由器上都能够显示一些重要的配置信息。一个攻击者可以将路由器作为攻击的中转站。所以需要正确控制路由器的登录访问。尽管大部分的登录访问缺省都是禁止的。但是有一些例外,如直连的控制台终端等。
控制台端口具有特殊的权限。特别注意的是,当路由器重启动的开始几秒如果发送一个Break信号到控制台端口,则利用口令恢复程式可以很容易控制整个系统。这样如果一个攻击者尽管他没有正常的访问权限,但是具有系统重启(切断电源或系统崩溃)和访问控制端口(通过直连终端、Modem、终端服务器)的能力就可以控制整个系统。所以必须保证所有连结控制端口的访问的安全性。
除了通过控制台登录路由器外还有很多的方法,根据配置和操作系统版本的不同,可以支持如Telnet、rlogin、Ssh以及非基于IP的网络协议如LAT、MOP、X.29和V.120等或者Modem拨号。所有这些都涉及到TTY,本地的异步终端和拨号Modem用标准的"TTYs"。远地的网络连结不管采用什么协议都是虚拟的TTYs,即"VTYs"。要控制路由器的访问,最好就是控制这些TTYs或VTYs,加上一些认证或利用login、no password命令禁止访问。
1.控制TTY
缺省的情况下一个远端用户可以连结到一个TTY,称为"反向Telnet",允许远端用户和连接到这个TTY上的终端或Modem进行交互。但是这些特征允许一个远端用户连接到一个本地的异步终端口或一个拨入的Modem端口,从而构造一个假的登录过程来偷盗口令或其他的非法活动。所以最好禁止这项功能,可以采用transport input none设置任何异步或Modem不接收来自网络用户的连结。如果可能,不要用相同的Modem拨入和拨出,且禁止反向Telnet拨入。
2.控制VTY
为了保证安全,任何VTY应该仅允许指定的协议建立连结。利用transport input命令。如一个VTY只支持Telnet服务,可以如下设置transport input telnet。如果路由器操作系统支持SSH,最好只支持这个协议,避免使用明文传送的Telnet服务。如下设置:transport input ssh。也可以利用ip access-class限制访问VTY的ip地址范围。
因为VTYs的数目有一定的限制,当所有的VTYs用完了,就不能再建立远程的网络连结了。这就有可能被利用进行Dos(拒绝服务攻击)。这里攻击者不必登录进入,只要建立连结,到login提示符下就可以,消耗到所有的VTYs。对于这种攻击的一个好的防御方法就是利用ip access-class命令限制最后一个VTYs的访问地址,只向特定管理工作站打开。而其他的VTYs不限制,从而既保证了灵活性,也保证关键的管理工作不被影响。另一个方法是利用exec-timeout命令,配置VTY的超时。避免一个空闲的任务一直占用VTY。类似的也可以用service tcp-keepalives-in 保证Tcp建立的入连结是活动的,从而避免恶意的攻击或远端系统的意外崩溃导致的资源独占。更好的保护VTY的方法是关闭所有非基于IP的访问,且使用IPSec加密所有的远端与路由器的连结。
Cisco路由器安全配置.路由安全
控制直接广播
一个IP直接广播是一个目的地为某个子网的广播地址的数据包,但是这个发送主机的不与这个目的子网直接相连。所以这个数据包被路由器当作普通包转发直到目的子网,然后被转换为链路层广播。由于Ip地址结构的特性,只有直接连接到这个子网的路由器能够识别一个直接广播包。针对这个功能,目前存在一种攻击称为"smurf",攻击者通过不断的发送一个源地址为非法地址的直接广播包到攻击的子网。从而导致子网的所有主机向这个非法地址发送响应,最终导致目的网络的广播风暴。
对于这种攻击可以在Cisco路由器安全配置上的no ip directed-broadcast,但是这种直接广播包,要被这个接口转换成链路层的广播而不是抛弃,所以为了更好防止攻击,最好在将所有可能连接到目的子网的路由器都配置no ip directed-broadcast。
防止路由攻击
源路由攻击一种常用攻击方法,因为一些老的Ip实现在处理源路由包时存在问题,所以可能导致这些机器崩溃,所以最好在路由器上关闭源路由。用命令no ip source-route。Icmp 重定向攻击也是一种常用的路由攻击方法。攻击者通过发送错误的重定向信息给末端主机,从而导致末端主机的错误路由。这种攻击可以通过在边界路由器上设定过滤所有icmp重定向数据来实现。但是这只能阻止外部的攻击者,如果攻击者和目的主机在同一个网段则没有办法。
当路由器采用动态协议时,攻击者可以伪造路由包,破坏路由器的路由表。为了防止这种攻击可以利用访问列表(distribute-list in)限定正确路由信息的范围。并且如果可能则采用认证机制。如Rip 2或ospf支持认证等。