五.路由安全 1.防止伪造: 伪造是攻击者经常使用的方法。通过路由器的配置可以在一定程度上防止伪造。通常是利用访问列表,限制通过的数据包的地址范围。但是有下面几点注重的。 A. 可以在网络的任何一点进行限制,但是最好在网络的边界路由器上进行,因为在网络内部是难于判定地址伪造的。 B. 最好对接口进入的数据进行访问控制(用ip access-group list in)。因为输出列表过滤只保护了位于路由器后的网络部分,而输入列表数据过滤还保护了路由器本身不受到外界的攻击。 C. 不仅对外部的端口进行访问控制,还要对内部的端口进行访问控制。因为可以防止来自内部的攻击行为。 下面是一个是一个访问列表的例子: ip access-list number deny icmp any any redirect 拒绝所有的Icmp 重定向 ip access-list number deny ip host 127.0.0.0 0.255.255.255 any 拒绝Loopback的数据包 ip access-list number deny ip 224.0.0.0 31.255.255.255 any 拒绝多目地址的数据包 除了访问列表的限制外,还可以利用路由器的RPF检查(ip verify unicast rpf)。这项功能主要用于检查进入接口的数据包的源地址,根据路由表判定是不是到达这个源地址的路由是不是也经过这个接口转发,假如不是则抛弃。这进一步保证了数据源的正确性。但是这种方式不适合非对称的路由,即A到B的路由与B到A的路由不相同。所以需要判定清楚路由器的具体配置。
2.控制直接广播 一个IP直接广播是一个目的地为某个子网的广播地址的数据包,但是这个发送主机的不与这个目的子网直接相连。所以这个数据包被路由器当作普通包转发直到目的子网,然后被转换为链路层广播。由于Ip地址结构的特性,只有直接连接到这个子网的路由器能够识别一个直接广播包。针对这个功能,目前存在一种攻击称为"smurf",攻击者通过不断的发送一个源地址为非法地址的直接广播包到攻击的子网。从而导致子网的所有主机向这个非法地址发送响应,最终导致目的网络的广播风暴。 对于这种攻击可以在路由器的接口上设置no ip directed-broadcast,但是这种直接广播包,要被这个接口转换成链路层的广播而不是抛弃,所以为了更好防止攻击,最好在将所有可能连接到目的子网的路由器都配置no ip directed-broadcast。
3. 防止路由攻击 源路由攻击一种常用攻击方法,因为一些老的Ip实现在处理源路由包时存在问题,所以可能导致这些机器崩溃,所以最好在路由器上关闭源路由。用命令no ip source-route。 Icmp 重定向攻击也是一种常用的路由攻击方法。攻击者通过发送错误的重定向信息给末端主机,从而导致末端主机的错误路由。这种攻击可以通过在边界路由器上设定过滤所有icmp重定向数据来实现。但是这只能阻止外部的攻击者,假如攻击者和目的主机在同一个网段则没有办法。 当路由器采用动态协议时,攻击者可以伪造路由包,破坏路由器的路由表。为了防止这种攻击可以利用访问列表(distribute-list in)限定正确路由信息的范围。并且假如可能则采用认证机制。如Rip 2或ospf支持认证等。
路由器通常都提供很多的服务如Finger、Telnet等,但是这些服务中一些能够被攻击者利用,所以最好禁止所有不需要的服务。 1.Cisco路由器提供一些基于TCP和UDP协议的小服务如:echo、chargen和discard。这些服务很少被使用,而且轻易被攻击者利用来越过包过滤机制。如echo服务,就可以被攻击者利用它发送数据包,似乎这些数据包来自路由器本身。所以最好禁止这些服务,可以利用no service tcp-small-servers 和 no service udp-small-servers命令来实现。 2.Finger、NTP、CDP: Finger服务可能被攻击者利用查找用户和口令攻击。NTP不是十分危险的,但是假如没有一个很好的认证,则会影响路由器正确时间,导致日志和其他任务出错。CDP可能被攻击者利用获得路由器的版本等信息,从而进行攻击。所以对于上面的几种服务假如没有十分必要的需求,最好禁止他们。可以用no service finger、no ntp enabel、no cdp running(或no cdp enable )实现。