0×1.思科路由密码安全浅析
对路由器最直接有效的攻击手段就是获取管理密码(vty密码和特权密码等),保护路由器密码安全的方法包括:
设置一个复杂的密码:一个强密码应该具有的特点是"包含数字、包含大写字母、包含小写字母、包含特殊符号";不要在密码中使用生日格式如:19901203;不要在密码中使用英文字典中最常用的单词如:hello等;不要在密码中包含电话号码、区号、手机号等。因为这些东西能很容易的放入坏人暴力猜解的字典中进行组合,最后就能获得你的密码。对配置文件中的密码实行加密:在全局配置模式下输入这条命令"service password-encryption"能够对所有密码进行加密,虽然这种加密可以破解,但至少增加了一道防线。特权密码的设置:创建特权密码应该使用"enable secret"而不是"enable password"。设置密码最小长度:在全局配置模式下输入"security passwords min-length 12",可以将密码的最小长度设置成12位。密码存放:不要将密码随便的记录在一台不安全的计算机的文本文件里;如果你将密码写在纸上,在密码更改以前不要随便将这张纸丢进垃圾桶,因为坏人可以从垃圾桶翻出很多敏感信息,其中就包括你的密码,或者你习惯的编码方式。
0×2.如何限制远程访问
可以使用ACL来设置仅允许管理员的IP登录这台设备的VTY终端:
01
R1>
en
02
R1#
conf
t
03
/启用路由密码加密,会将所有配置中的明文密码都加密存放/
04
R1(config)#service
password
-encryption
05
06
/设置密码最小长度是12/
07
R1(config)#security passwords min-length 12
08
09
/如果密码长度不够将不会配置成功/
10
R1(config)#
enable
secret
123
11
% Password too short - must be at least 12 characters. Password configuration failed
12
R1(config)#
enable
secret
www.qingsword.com
13
14
/*
15
- 使用ACL允许192.168.1.200访问,这里演示使用了一个简单ACL,
16
- 如果使用其他网管软件管理路由,可以使用复杂ACL允许管理IP和软件相应的端口。
17
*/
18
R1(config)#
access-list
1
permit
192.168.1.200
19
R1(config)#line
vty
0 4
20
R1(config-line)#
password
ccna
21
/因为前面设置了密码最小长度是12个字符,所以这里报错了。/
22
% Password too short - must be at least 12 characters. Password configuration failed
23
R1(config-line)#
password
www.qingsword.com
24
R1(config-line)#
access-class
1 in /将ACL 1应用于VTY/
25
R1(config-line)#
login
26
R1(config-line)#
end
这样设置后,VTY 0-4号线路就只有IP是192.168.1.200这个用户可以连上了。
0×3.如何使用SSH代替Telnet
Telnet使用明文的方式传输密码,在Internet上使用明文传输密码是非常不安全的,可以通过SSH(Secure Shell)远程登录和管理路由,SSH传输的时候使用RSA加密,就算数据包被捕获,也是RSA加密后的数据包。
下面在GNS3中来做一下这个实验,设备连线与IP地址如下图(图1)所示,在R1上配置允许ssh连接的vty线路:
R1配置:
01
Router>
en
02
Router#
conf
t
03
04
/一定要改变路由默认的名称并且配置一个域名,用来生成密钥/
05
Router(config)#
host
R1
06
R1(config)#
ip
domain name www.qingsword.com
07
08
/生成
rsa
非对称密钥,可以看到输出中
key
的名字就是我们上面配置的路由名称和域名的组合/
09
R1(config)#
crypto
key
generate
rsa
10
The name for the keys will be: R1.www.qingsword.com
11
Choose the size of the
key
modulus in the range of 360 to 2048 for your
12
General Purpose Keys. Choosing a
key
modulus greater than 512 may take
13
a few minutes.
14
15
/*
16
- 输入密钥长度,直接回车则使用默认长度,
17
- 长度可以是360到2048。
18
*/
19
How many bits in the modulus [512]:
20
% Generating 512 bit RSA keys, keys will be non-exportable...[OK]
21
22
/配置本地的用户名和密码用于
ssh
验证登陆/
23
R1(config)#
username
qingsword
password
www.qingsword.com
24
25
/配置
vty
线路0~4/
26
R1(config)#line
vty
0 4
27
/仅允许
ssh
登陆/
28
R1(config-line)#
transport
input
ssh
29
/使用本地创建的用户密码验证/
30
R1(config-line)#
login
local
31
R1(config-line)#
exit
32
33
/*
ssh
选项,连接
ssh
后30秒未操作则超时*/
34
R1(config)#
ip
ssh
time-out 30
35
/允许三次密码错误尝试/
36
R1(config)#
ip
ssh
authentication
-retries 3
37
38
/配置特权密码/
39
R1(config)#
enable
secret
www.qingsword.com
40
41
/配置接口IP/
42
R1(config)#
int
s 0/0
43
R1(config-if)#
ip
add
12.1.1.1 255.255.255.0
44
R1(config-if)#
no
shut
45
R1(config-if)#
end
R2配置:
01
R2(config)#
int
s 0/0
02
R2(config-if)#
ip
add
12.1.1.2 255.255.255.0
03
R2(config-if)#
no
shu
04
R2(config-if)#
end
05
06
/完成后确保R2可以
ping
通R1,然后在R2上使用
ssh
命令登陆R1,-l参数后面是R1上创建的用户名/
07
R2#
ssh
-l qingsword 12.1.1.1
08
Password: www.qingsword.com
09
R1>/登陆成功/
10
11
/大家可以尝试下R2上telnet连接R1,如果配置无误此时telnet是无法连接的/
0×4.如何记录日志
通常使用Console端口对路由进行配置时,可以看到来自路由的监控提示消息,比如开启或关闭一个端口就会出现相应的提示,但是通过VTY远程登录的时候却看不到这些提示,也看不到Debug命令的输出,这是因为虚拟终端默认情况下是关闭监控的,可以使用下面的命令来打开监控:
01
/接着上面的实验,在R2
ssh
登陆R1后,在R1上创建一个回环接口/
02
R2#
ssh
-l qingsword 12.1.1.1
03
Password: www.qingsword.com
04
R1>
en
05
Password: www.qingsword.com
06
R1#
conf
t
07
R1(config)#
int
lo
0
08
/切换到R1的控制台,控制台中出现了下面这种新接口启用的输出,但是在
ssh
或telnet登陆窗口却看不到这样的输出/
09
*Mar 1 00:21:00.599: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
10
11
/在
ssh
登陆窗口,使用下面的命令打开远程登录窗口的监控提示/
12
R1(config)#
exit
13
R1#
terminal
monitor
14
% Console already monitors
15
16
/再次创建一个回环接口,这一次
ssh
窗口也出现了提示/
17
R1#
conf
t
18
R1(config)#
int
lo
1
19
*Mar 1 00:23:55.303: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to up
20
21
/关闭远程终端监控功能/
22
R1(config)#
end
23
R1#
terminal
no
monitor
下面是一些和日志记录有关的命令,仅供参考:
01
/关闭日志记录/
02
R1(config)#
no
logging
on
03
04
/开启日志记录/
05
R1(config)#
logging
on
06
07
/设置日志记录缓存,后面的7是最高级别,记录所有信息/
08
R1(config)#
logging
buffered 7
09
10
/给记录的debug消息添加时间戳,单位精确到毫秒/
11
R1(config)#service timestamps debug datetime msec
12
13
/给记录的log消息添加时间戳,单位精确到毫秒/
14
R1(config)#service timestamps log datetime msec
15
R1(config)#
end
16
17
/显示本地缓存中的日志信息/
18
R1#
show
logging
路由缓存的空间是有限的,一般的做法是配置一台日志服务器,将路由和交换机的日志信息发送到服务器上,这样可以避免路由重启或者其他原因导致日志信息的丢失。
0×5.如何禁用思科路由不必要的服务和端口
可以使用下面这条命令来手动或者自动的配置路由,禁用一些不必要的服务和端口:
1
/不带参数,进入交互配置模式,根据提示设置即可/
2
Router#auto secure
3
4
/还有一种简便模式,非交互式,使用的是思科推荐的安全配置(除非你知道自己在做什么,否则不要随意在真实环境中配置下面的语句)/
5
R1#auto secure
no
-interact