预配置说明R1、R2与R3之间123.0.0.0/24,R3与R4之间34.0.0.0/24,主机位与路由器的编号一致。
第零步:R3的基本配置
R3: username r1 password r1 username r1 autocommand access-enable timeout 1(这里还有一个host命令,后面讲) //配置R1的用户名与密码 //当用户R1使用r1登录后,自动执行“红色”命令后弹出 line vty 0 4 login local |
第一步:在R1上测试R3与R4的链接
在R1上进行测试 R1#r3 Translating "r3" Trying r3 (123.0.0.3)... Open User Access Verification Username: R1#r4 Translating "r4" Trying r4 (34.0.0.4)... Open User Access Verification Username: //正常,R2上一样,但接下来的测试在R1上进行,R2在R1成功认证后,做为未知第三方来做测试。(未知第三方知道了R4的登录用户名与密码或者不知道用户名与密码,它可以TCP的半卡链接,但他在苦苦等待R3的流量放行) |
第二步:在R3上配置ACL使用R1可以访问R3,但不可以访问R4,并测试
access-list 100 permit icmp any any access-list 100 permit tcp any host 123.0.0.3 eq telnet R3(config)#int f2/0 R3(config-if)#ip access-group 100 in
R1#ping r3
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 123.0.0.3, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 92/110/140 ms R1#ping r4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 34.0.0.4, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 84/106/140 ms R1#r3 Translating "r3" Trying r3 (123.0.0.3)... Open User Access Verification Username: R1#r4 Translating "r4" Trying r4 (34.0.0.4)... % Destination unreachable; gateway or host down //以上现象说明配置无误 |
第三步:配置dynamic ACL,使得你的配置的ACL如下
access-list 100 permit icmp any any access-list 100 permit tcp any host 123.0.0.3 eq telnet access-list 100 dynamic STARSHOMES timeout 2 permit tcp any host 34.0.0.4 eq telnet //前2行ACL在第二步可以看到 第3行则为配置的动态ACL,命令的含义是:当R1使用用户名r1认证后放行访问R4的流量,这里timeout 2为绝对时间,即没有流量通过时,2分钟后会删除动态生成的条目(以下有底纹的条目) |
第四步:测试R1是否可以telnet R4
R1#r4 Translating "r4" Trying r4 (34.0.0.4)... % Destination unreachable; gateway or host down //仍然如此,登录不了
R2#r4 Translating "r4" Trying r4 (34.0.0.4)... % Destination unreachable; gateway or host down //特别注意:做为未知第三方也访问不了
R3#sh ip access 100 Extended IP access list 100 10 permit icmp any any (15 matches) 20 permit tcp any host 123.0.0.3 eq telnet (26 matches) 30 Dynamic STARSHOMES permit tcp any host 34.0.0.4 eq telnet //R3的动态ACL没有任何变化 |
第五步:R1使用R2提供的用户名与密码作为认证密钥,通过后产生一条动态的ACL来放行去往R4的流量
R1#r3 Translating "r3" Trying r3 (123.0.0.3)... Open
User Access Verification
Username: r1 Password: [Connection to r3 closed by foreign host] //认证通过后,被弹出
R1#r4 Translating "r4" Trying r4 (34.0.0.4)... Open
User Access Verification
Username: r1 Password: R4# //可以正常登录,但我们看看R3到底干了什么事情。
R3#sh ip access 100 Extended IP access list 100 10 permit icmp any any (15 matches) 20 permit tcp any host 123.0.0.3 eq telnet (86 matches) 30 Dynamic STARSHOMES permit tcp any host 34.0.0.4 eq telnet permit tcp any host 34.0.0.4 eq telnet //R3上的dynamic ACL增加了一条ACL,动态的允许到达R4的TCP 23流量(此条目会在无流量的情况下消失)
备注:本实验到这里就结束了。接下来,讲一些安全特性 |
第六步:看看R2能不能登录
R2#r4 Translating "r4" Trying r4 (34.0.0.4)... Open
User Access Verification
Username: r1 Password: R4# //正是因为上面的any,允许了R2(或者更多的未知第三方)的流量。 |
第七步:能不能使any变成一个特定的IP地址
R3: username r1 autocommand access-enable timeout 1 username r1 autocommand access-enable host timeout 1
以下的话来自china.bub.com 注意,在使用autocommand命令时要使用host参数。如果不使用host参数,动态表项就不会替换动态表项中认证主机的源IP地址,这样,就会允许任何主机都能通过动态表项,我们也就不能达到使用动态访问表的目的。读者在配置autocommand表项时千万不要忘记了使用host参数,这一点十分重要。 |
第八步:测试R1认证后,R2是否在不认证的情况下还能登录R3(如果要认证可以在R3上给R2建立不同的帐户)
R1#r3 Translating "r3" Trying r3 (123.0.0.3)... Open
User Access Verification
Username: r1 Password: % Login invalid
Username: r1 Password: [Connection to r3 closed by foreign host] R1#r4 Translating "r4" Trying r4 (34.0.0.4)... Open
User Access Verification
Username: //正常,R1在提供用户名与密码后,R3放行来来自R1的流量
R2#r4 Translating "r4" Trying r4 (34.0.0.4)... % Destination unreachable; gateway or host down
R2# //R2不行了,为什么呢?我们来看看R3做了什么事情 R3(config)#do sh ip access Extended IP access list 100 10 permit icmp any any (15 matches) 20 permit tcp any host 123.0.0.3 eq telnet (154 matches) 30 Dynamic STARSHOMES permit tcp any host 34.0.0.4 eq telnet permit tcp host 123.0.0.1 host 34.0.0.4 eq telnet (10 matches) (time left 57) //看看只认证了R1,要使得R2也能telnet R4,做法重复上面的命令,使得在R3上 R3#sh ip access-lists Extended IP access list 100 10 permit icmp any any (15 matches) 20 permit tcp any host 123.0.0.3 eq telnet (238 matches) 30 Dynamic STARSHOMES permit tcp any host 34.0.0.4 eq telnet permit tcp host 123.0.0.1 host 34.0.0.4 eq telnet (8 matches) (time left 57) permit tcp host 123.0.0.2 host 34.0.0.4 eq telnet (8 matches) (time left 36) |
小小备注:这里有两个时间,说明一下
access-list 100 dynamic STARSHOMES timeout 2 permit tcp any host 34.0.0.4 eq telnet
username r1 autocommand access-enable host timeout 1
第1个:为绝对时间,在没有流量的情况下2分钟分删除该动态表项,也可以不要timeout 2,那么该条目在重启前不会删除
第2个:为相对时间,在有流量的情况下,会递减(在R1 telnet到R4后没有进行任何操作)到0后再过1分钟后删除。这时R1运往R4的telnet流量会丢失
就R1来说,会卡在R4上,等R1与R4会话超时后R1会断开链路或者Ctrl+Shift+6强制断开