1、以前翻译的一篇文章,本来想用来骗点钱,现在看来只能用来骗点经验.目 录1 路由器访问安全 .31.1 物理安全 31.2 路由器的软件版本 31.3 Logins,Privileges,Passwords,and Accounts.31.4 远程访问 .41.5 认证,授权,和记帐 51.6 配置加载和维护的具体部署 52 路由器网络服务安全 .52.1 Typical Services,Required services,and Security Risks 52.2 如何关闭不需要的服务 62.3 关闭未使用的端口 102.4 配置举例 103 路由和路由协议 .113.1 路由普遍的隐患
2、 113.2 PROXY ARP AND LANS 113.3 路由表,静态路由,和路由协议 .123.4 关闭不必要的路由服务 .134 审计和管理 144.1 内容和机制 .144.2 配置登陆和时间服务 .154.3 SNMP 安全 185 访问列表 185.1 利用访问列表过滤访问路由器的数据包 185.2 利用访问列表过滤通过路由器的数据包 191 路由器访问安全1.1 物理安全网络设备,特别是路由器和交换机,应该安放在一个有限制的地方。如果有可能这个地方最好是只有这些设备的管理员才能进入。而且这个地方必须在 1 天 24 小时、1 星期 7天的安全管理之下,这种安全管理可以是大楼的
3、保卫或是电子门警。举例说明物理安全是整个路由器安全中非常关键的一个因素,系统管理员(或者攻击者)可以简单的利用一台电脑连接到路由器的 CONSOLE 端口,以修改 ENABLE SECRET密码。Step 1 使路由器不读 STARTUP-CONFIG(存在于 NVRAM 中)启动。Step 2 重启系统。Step 3 进入 Enable Mode(不需要任何密码)Step 4 修改密码,然后保存配置,并配置路由器使其正常方式启动。Step 5 重启系统。另一个重要原因是很多路由器包含了 flash memory 卡的插槽。如果攻击者能够物理接近路由器,他可以很轻松地安装或替换 flash m
4、emory 卡。假如系统管理员不是非常的仔细或足够的优秀,这样的攻击很难被检测到。最好的防卫就是要做到物理安全。另一个与物理安全相关的是物理操作环境。象很多的网络设备如路由器,对温度和湿度是非常敏感的,而且放置路由器的房间尽可能避免受到电磁的干扰。另外,所有的路由器应该由 UPS 来供电。1.2 路由器的软件版本Cisco 相当频繁发布新的 IOS 版本,对一个大型网络管理员来说,网络上所有路由器保持最新版本是一件非常困难的事。新的 IOS 版本修正了一些漏洞,而且有更高的安全特性。我们建议采用最新的“GD”版本的 IOS 软件。1.3 Logins,Privileges,Passwords,
5、and AccountsLogins最好要设置带有法律方面提示的登陆旗帜(Login Banner) ,法律方面的提示经常是包括类似“不得入侵”的警告。设置登陆旗帜的命令为:banner motd delimiter message delimiterVTYs and Remote Administration基本的远程管理路由器的方式是通过 Telnet 登陆。如果远程登陆是不必要的,那么就应该在路由器上把虚拟终端屏蔽掉。因为远程管理本身具有天然的不安全性,比如利用SNIFFER 就可以获得路由器的密码。屏蔽虚拟终端可以使用 transport input none 这条命令或利用访问列表,
6、如下所示:Hirun# config tEnter configuration commands, one per line. End with CNTL/Z.Hirun(config)# no access-list 90Hirun (config)# access-list 90 deny any logHirun (config)# line vty 0 4Hirun (config-line)# access-class 90 inHirun (config-line)# transport input noneHirun (config-line)# login localHirun
7、 (config-line)# exec-timeout 0 1Hirun (config-line)# no execHirun (config-line)# endHirunPrivilegesCisco IOS 提供了从 0 到 15 不同的 16 级安全级别。CISCO IOS 默认有两个预定义的安全级别,User EXEC 模式运行在级别 1,而 enable 模式运行在级别 15。在默认情况下,级别 1 只可以用极少数的的命令。从安全的角度来看,更高级别的命令路由器有更高的敏感性。以下的例子,说明了如何把级别 1 的命令迁移到级别 15,这样能更好的保护路由器。Hirun(conf
8、ig)# privilege exec level 15 connectHirun(config)# privilege exec level 15 telnetHirun(config)# privilege exec level 15 rloginHirun(config)# privilege exec level 15 show ip access-listsHirun(config)# privilege exec level 15 show access-listsHirun(config)# privilege exec level 15 show loggingPassword
9、s在 Cisco IOS 中有两种密码保护机制。类型 7 是 CISCO 自己定义的加密算法,是一种可逆的加密算法。类型 5 用的是 MD5 算法,是一种不可逆的加密算法。CISCO 推荐使用MD5 的加密算法。以下是我们密码设置方面的一些建议: enable secret 密码不要其它任何密码一样。 使用 service password-encryption 命令,使一些经过你屏幕的人看不到你的密码。 必须意识到以下的安全设置是不被 service password-encyption 所保护的: SNMP community strings RADIUS keys TACACS+ key
10、s 避免使用攻击字典里的词及姓名,电话号码和日期。 应包括以下的字符:小写字母、大写字母、数字和特殊字符 所有的密码至少有八位长1.4 远程访问The Auxiliary Port除非有必要把辅助端口作为备份或者远程访问用途,否则应该把辅助端口屏蔽掉。网络访问远程登陆使用的是 VTY。以下的例子说明了如何配置 VTY:Hirun(config)# access-list 99 permit 14.2.9.1 logHirun(config)# access-list 99 permit 14.2.6.6 logHirun(config)# access-list 99 deny any log
11、Hirun(config)# line vty 0 4Hirun(config-line)# access-class 99 inHirun(config-line)# exec-timeout 5 0Hirun(config-line)# login localHirun(config-line)# transport input telnetHirun(config-line)# execHirun(config-line)# endHirun#1.5 认证,授权,和记帐CISCO 在认证,授权,和记帐方面有新的特性,称之为 AAA,在以后的章节中会具体介绍。1.6 配置加载和维护的具体部
12、署路由器的配置加载和维护有两种基本的方法:在线编辑和离线编辑。它们都有自己的优缺点。在线编辑能够对命令的语法进行检查,但只能提供有限的注释。离线编辑刚好相反。离线编辑有几个安全方面的问题值得注意。首先,离线备份文件放置的系统必须安全,只有合法用户才能访问备份文件。其次,备份文件中的密码都是以明文方式存储的。最后,配置文件必须以安全的方式传输到路由器中。2 路由器网络服务安全2.1 Typical Services,Required services,and Security Risks下面的表格说明了在 Cisco IOS 11.2,11.3 和 12.0 下,与安全相关的服务及它们在默认情况
13、下是否开启。服务 描述 默认是否开启 建议Cisco Discovery Protocol (CDP)在 cisco 设备之间私有的二层协议ENABLED CDP 一般来说用不到,建议关闭TCP small servers 标准的 TCP 网络服务: 11.3:disabled 显式关闭ECHO,CHARGEN 等 11.2:enabled UDP small servers 标准的 UDP 网络服务:ECHO,DISCARD 等11.3:disabled11.2:enabled显式关闭Finger UNIX 用户查找服务,允许远程列出系统用户ENABLED 关闭HTTP server 有些
14、CISCO IOS 设备提供基于 HTTP 的管理默认情况下与设备的类型有关显式关闭,有必要开启的话,也必须设置严格的访问控制Bootp server 允许其它路由器从这台路由器启动的服务ENABLED 通常情况下不需要这个服务,会产生安全方面的漏洞,关闭。Configuration auto-loading路由器会尝试通过TFTP 加载配置DISABLED 在没有必要的情况下关闭这个服务IP source routing 允许包本身指定路由 ENABLED 对攻击者来说好的特性,关闭。Proxy ARP 路由器作为第 2 层地址解析的代理ENABLED 关闭这个服务除非路由器用作 LAN B
15、RIDGEIP directed broadcast 包可以对指定特定网段广播ENABLED 定向广播可以被攻击利用,关闭IP unreachable notifications如果发送者的目标地址不可达,路由器会通告ENABLED 对攻击破者来说,有助于了解网络拓朴,对非可信网络关闭。IP mask reply 路由器对 ICMP MASK REQUEST 作出响应DISABLED 对攻击破者来说,有助于了解网络拓朴,对非可信网络关闭。IP redirects 路由会对特定的包发送ICMP REDIRECT MESSAGEENABLED 对攻击破者来说,有助于了解网络拓朴,对非可信网络关闭。
16、NTP service 路由器可以作为其它设备的时间服务器DISABELD 显式关闭Simple Network Mgmt. Protocol路由器支持通过 SNMP过程查询和配置ENABLED 除非有必要,显式关闭Domain Name Service 路由器可用作域名解析服务器ENABLED 显式关闭或指定域名服务器2.2 如何关闭不需要的服务CDPHirun# config tEnter configuration commands, one per line. End with CNTL/Z.Hirun(config)# no cdp runHirun(config)# exitHir
17、un# show cdp% CDP is not enabledHirun#TCP and UDP Small ServersHirun# ! if connect success, then tcp-small-servers are runningHirun# connect 14.2.9.250 daytimeTrying 14.2.9.250, 13 . OpenMonday, April 3, 2000 11:48:39-EDTConnection to 14.2.9.250 closed by foreign hostHirun# config tEnter configurati
18、on commands, one per line. End with CNTL/Z.Hirun(config)# no service tcp-small-serversHirun(config)# no service udp-small-serversHirun(config)# exitHirun# connect 14.2.9.250 daytimeTrying 14.2.9.250, 13 .% Connection refused by remote hostHirun#Finger ServerHirun# connect 14.2.9.250 fingerTrying 14.
19、2.9.250, 79 . OpenWelcome to the HIRUN router.Line User Host(s) Idle Location130 vty 0 14.2.9.6 00:00:00 goldfish*131 vty 1 idle 00:00:00 HirunConnection to 14.2.9.250 closed by foreign hostHirun# config tEnter configuration commands, one per line. End withCNTL/Z.Hirun(config)# no ip fingerHirun(con
20、fig)# no service fingerHirun(config)# exitHirun# connect 14.2.9.250 fingerTrying 14.2.9.250, 79 .% Connection refused by remote hostHirun#HTTP ServerHirun# config tEnter configuration commands, one per line. End withCNTL/Z.Hirun(config)# no ip http serverHirun(config)# exitHirun# connect 14.2.9.250
21、wwwTrying 14.2.9.250, 80 .% Connection refused by remote hostHirun#Bootp ServerHirun# config tEnter configuration commands, one per line. End with CNTL/Z.Hirun(config)# no ip bootp serverHirun(config)# exitConfiguration Auto-LoadingHirun# config tEnter configuration commands, one per line. End with
22、CNTL/Z.Hirun(config)# no boot networkHirun(config)# no service configHirun(config)# exitHirun#IP Source RoutingHirun# config tEnter configuration commands, one per line. End with CNTL/Z.Hirun(config)# no ip source-routeHirun(config)# exitHirun#Proxy ARPHirun# config tEnter configuration commands, on
23、e per line. End with CNTL/Z.Hirun(config)# interface eth 0/0Hirun(config-if)# no ip proxy-arpHirun(config-if)# exitHirun(config)# interface eth 0/1Hirun(config-if)# no ip proxy-arpHirun(config-if)# exitHirun(config)# interface eth 0/2Hirun(config-if)# no ip proxy-arpHirun(config-if)# exitHirun(confi
24、g)# interface eth 0/3Hirun(config-if)# no ip proxy-arpHirun(config-if)# endHirun#IP Directed Broadcast在每个接口运行 no ip directed-broadcastIP Unreachables, Redirects, Mask RepliesHirun# config tEnter configuration commands, one per line. End with CNTL/Z.Hirun(config)# interface eth 0/0Hirun(config-if)# n
25、o ip unreachableHirun(config-if)# no ip redirectHirun(config-if)# no ip mask-replyHirun(config-if)# endHirun#NTP ServiceNorth# config tEnter configuration commands, one per line. End with CNTL/Z.North(config)# interface eth 0/0North(config-if)# ntp disableNorth(config-if)# exitNorth(config)# interfa
26、ce eth 1/0North(config-if)# ntp disableNorth(config-if)# endNorth#SNMP ServicesHirun# show running-configBuilding configuration.snmp-server community public ROsnmp-server community admin RW.Hirun#Hirun# config tEnter configuration commands, one per line. End with CNTL/Z.Hirun(config)# ! remove old c
27、ommunity stringsHirun(config)# no snmp-server community public ROHirun(config)# no snmp-server community admin RWHirun(config)# ! create a very restrictive access listHirun(config)# no access-list 70Hirun(config)# access-list 70 deny anyHirun(config)# ! make SNMP read-only and subject to access list
28、Hirun(config)# snmp-server community aqiytj1726540942 ro 70Hirun(config)# ! disable SNMP trap and system-shutdown featuresHirun(config)# no snmp-server enable trapsHirun(config)# no snmp-server system-shutdownHirun(config)# no snmp-server trap-authHirun(config)# ! disable the SNMP serviceHirun(confi
29、g)# no snmp-serverHirun(config)# endRouter Name and DNS Name Resolutionrouter# config tEnter configuration commands, one per line. End with CNTL/Z.router(config)# hostname HirunHirun(config)# ip name-server 14.1.1.2 14.2.9.1Hirun(config)#2.3 关闭未使用的端口建议关闭目前未使用的端口,使用以下的命令关闭:Hirun# config tEnter config
30、uration commands, one per line. End with CNTL/Z.Hirun(config)# interface eth0/3Hirun(config-if)# shutdownHirun(config-if)# end2.4 配置举例! - IP and network services Sectionno cdp runno ip source-routeno ip classlessno service tcp-small-servno service udp-small-servno ip fingerno service fingerno ip boo
31、tp serverno ip http serverno ip name-server! - Boot control sectionno boot networkno service config! - SNMP Section (for totally disabling SNMP)! set up totally restrictive access listno access-list 70access-list 70 deny any! make SNMP read-only and subject to access listsnmp-server community aqiytj
32、1726540942 ro 11! disable SNMP trap and system-shutdown featuresno snmp-server enable trapsno snmp-server system-shutdownno snmp-server trap-auth! turn off SNMP altogetherno snmp-server! - Per-interface services sectioninterface eth 0/0description Outside interface to 14.1.0.0/16 netno ip proxy-arpn
33、o ip directed-broadcastno ip unreachableno ip redirectntp disableexitinterface eth 0/1description Inside interface to 14.2.9.0/24 netno ip proxy-arpno ip directed-broadcastno ip unreachableno ip redirectntp disableexitinterface eth 0/2no ip proxy-arpshutdownno cdp enableexitinterface eth 0/3no ip pr
34、oxy-arpshutdownno cdp enableexit3 路由和路由协议3.1 路由普遍的隐患对网络管理员来说,路由安全是非常重要的事: 防止网络资源被非法访问 防止网络服务失败和中断有二种基本的方法来保证路由的合法性和完整性: 只使用静态路由只适合于小型网络,但不适合于大型网络 使用需要验证的路由更新需要验证的路由更新将确信路由更新来自合法的 IP 地址,非法的路由更新将被自动丢弃。3.2 PROXY ARP AND LANS和 ARP 一样, PROXY ARP 没有任何安全方面的保证,任何一个局域网络的用户能够更改该网段的 ARP 缓存。所以我们建议在路由器上禁止 PROXY
35、ARP。Hirun# config tEnter configuration commands, one per line. End with CNTL/Z.Hirun(config)# interface ethernet0/0Hirun(config-if)# no ip proxy-arpHirun(config-if)# exitHirun(config)# interface ethernet0/1Hirun(config-if)# no ip proxy-arpHirun(config-if)# endHirun#3.3 路由表,静态路由,和路由协议OSPF 验证OSPF 验证使用
36、两种验证方法,明文和 MD5,推荐使用 MD5 验证方法。OSPF MD5 验证North# config tEnter configuration commands, one per line. End with CNTL/Z.North(config)# router ospf 1North(config-router)# network 14.1.0.0 0.0.255.255 area 0North(config-router)# area 0 authentication message-digestNorth(config-router)# exitNorth(config)# i
37、nt eth0/1North(config-if)# ip ospf message-digest-key 1 md5 r0utes-4-allNorth(config-if)# endNorth#East# config tEnter configuration commands, one per line. End with CNTL/Z.East(config)# router ospf 1East(config-router)# area 0 authentication message-digestEast(config-router)# network 14.1.0.0 0.0.2
38、55.255 area 0East(config-router)# network 14.2.6.0 0.0.0.255 area 0East(config-router)# exitEast(config)# int eth0East(config-if)# ip ospf message-digest-key 1 md5 r0utes-4-allEast(config-if)# endEast#RIP 验证RIP 验证也使用两种验证方法,明文和 MD5,推荐使用 MD5 验证方法。RIP MD5 验证Hirun# config tEnter configuration commands,
39、one per line. End with CNTL/Z.Hirun(config)# key chain HIRUN-KEYCHAINHirun(config-keychain)# key 1Hirun(config-keychain-key)# key-string my-supersecret-keyHirun(config-keychain-key)# exitHirun(config-keychain)# key 2Hirun(config-keychain-key)# key-string my-othersecret-keyHirun(config-keychain-key)#
40、 endHirun#South# config tEnter configuration commands, one per line. End with CNTL/Z.South(config)# key chain SOUTH-KEYCHAINSouth(config-keychain)# key 1South(config-keychain-key)# key-string my-supersecret-keySouth(config-keychain-key)# exitSouth(config-keychain)# key 2South(config-keychain-key)# k
41、ey-string my-othersecret-keySouth(config-keychain-key)# endSouth#静态路由从理论上来说,配置静态路由是相当安全的,攻击者不能利用路由来攻击这个网络,但对于大型网络来说,网络管理员在每个路由器上手动配置路由是相当困难的。配置静态路由示例如下:Hirun# config tEnter configuration commands, one per line. End with CNTL/Z.Hirun(config)# ip route 14.2.6.0 255.255.255.0 14.1.1.20 120Hirun(config)
42、# endHirun#3.4 关闭不必要的路由服务Passive InterfacesPassive Interface 这条命令将阻止路由器在某个端品接收或发送路由更新信息:Router1# show config.interface ethernet0ip address 14.1.15.250 255.255.0.0!interface ethernet1ip address 14.2.13.150 255.255.0.0!interface ethernet2ip address 14.3.90.50 255.255.0.0!router ospf 1network 14.0.0.0
43、0.0.0.255 area 0passive-interface ethernet2.利用访问列表来过滤路由更新用 distribute-list 命令过滤路由更新:Hirun# config tEnter configuration commands, one per line. End with CNTL/Z.Hirun(config)# access-list 55 deny 14.2.10.0 0.0.0.255Hirun(config)# access-list 55 permit anyHirun(config)# endHirun#URPF 验证IOS 12.0 及以后的版本支
44、持 Unicast Reverse-Path Forwording Verification 功能,用来源 IP 地址的合法性:Hirun# config tHirun(config)# ip cefHirun(config)# interface eth 0/0Hirun(config-if)# ip verify unicast reverse-pathHirun(config-if)# exit4 审计和管理4.1 内容和机制 日志CISCO 路由器支持本地和远程的日志察看 时间精确的时间对审计和管理来说是非常重要的,CISCO 路由器支持标准的时间同步协议,NTP。 网络管理CISCO
45、 路由器支持标准的网络管理协议,SNMP 。 网络监视CISCO 路由器支持 RMON 协议,而 RMON 特性是建立在 SNMP 协议上的。 软件维护保持路由器上为新的软件版本是相当重要的,因为新的软件版本修正了一些安全漏洞。 调试和诊断CISCO IOS 提供一些命令来解决路由器的上的问题。4.2 配置登陆和时间服务日志概要建立日志的作用: 记录路由器的配置更改和路由器重启 记录一些非法的访问 记录网络和端口状态的变化有以下五种访问日志的途经:1 CONSOLE LOGGING日志信息可以发送到控制台2 TEMINAL LINE LOGGIN可以配置把日志信息传输给 TELNET 用户。3
46、 BUFFERED LOGGING可以配置把日志信息存储到路由器的缓存中。4 SYSLOG LOGGINGCISCO 路由器可以把日志信息传输到 SYSLOG 服务器,SYSLOG 服务器把日志信息以文件的形式保存起来。5 SNMP TRAP LOGGING对某些事件,CISCO 路由器可以以 SNMP TRAP 的形式发送。CISCO 路由器的日志信息的安全级别:LEVEL LEVEL NAME DESCRIPTION EXAMPLE0 Emergencies Router becoming unusable IOS could not load1 Alerts Immediate acti
47、on needed Temperature too high2 Critical Critical condition Unable to allocate memory3 Errors Error condition Invalid memory size4 Warnings Warning condition Crypto operation failed5 Notifications Normal but important eventInterface changed state, up Interface changed state, up or down6 Informationa
48、l Information message Packet denied by accesslist7 Debugging Debug message Appears only whendebugging is enabled以下的例子说明了在配置更改后,路由发出的日志信息:Mar 31 9:00:16 EST: %SYS-5-CONFIG_I: Configured from console by vty0 (14.2.9.6)配置 CONSOLE 和 BUFFERED 日志以下是配置 CONSOLE 日志的例子:Hirun# config tEnter configuration comma
49、nds, one per line. End with CNTL/ZHirun(config)# ! set console logging to level 5 (notify)Hirun(config)# logging console notificationHirun(config)# logging onHirun(config)# exit以下是配置 BUFFERED 日志的例子:Hirun# config tEnter configuration commands, one per line. End with CNTL/ZHirun(config)# ! Set a 16K log buffer at information levelHirun(config)# logging buffered 16000 informationHirun(config)# ! turn on time/date stamps in log messagesHirun(config)# service timestamp log date msec local show-timezoHirun(config)# exitHirun# show loggingSyslog logging