分类:
2012-08-17 15:34:38
Lock-and-Key是一种的。用户一般通过提供用户名和口令,就能够开启一个到路由器的 telnet会话。在用户被认证之后,路由器自动关闭telnet会话,并将一个访问表项置于某个访问表中,以允许源地址为认证用户工作站地的报文通 过。这样就可以在安全边界上配置访问表,只允许那些能够通过用户认证的工作站的报文通过路由器。
在传统的访问表中,如果处于路由器不可信任端的用户需要访问内部的资源,就必须永久性地在访问表中开启一个突破口,以允许这些用户的工作站上的报文进入可 信任网络。这些在访问表中的永久性的突破口给黑客发送报文进入安全边界,并达到内部网络提供了机会。而这种动态ACL就解决了这种问题。注意,Lock- and-Key并不能解决IP Spoof问题,这也是所有类型ACL的通病。
拓扑图如上:
IP编址如下
R1:loopback0 1.1.1.1/24
S0 :192.168.12.0/24
R2: S0:192.168.12.2/24
loopback0:2.2.2.2/24
E0:192.168.23.2/24
R3: E0 192.168.23.3/24
loopback0:3.3.3.3/24
要求:配置Lock-and-Key,使得R3通过了R2的验证 之后才能访问R1的loopback0口
R2配置如下(只显示关键配置):
username cisco password 0 cisco //配置用户名和密码以提供本地验证
interface Serial1/1
ip address 192.168.23.2 255.255.255.0
ip access-group 100 in //将ACL应用于接口
serial restart-delay 0
no dce-terminal-timing-enable
access-list 100 permit tcp host 2.2.2.2 eq telnet //允许任何源telnet到R2上以便进行认证
access-list 100 dynamic CISCO timeout 30 permit ip any any
//定义一个动态ACL,在Lock-and-Key被触发之前,这条ACL将被忽略。这里的timeout是绝对超时时间,也就是说不管有没有相匹配的
流量通过,30分钟后会话都将被关闭,与之生成的相应的ACL将被删除。建议配置绝对记时器值或者空闲计时器值,否则,动态表项就不会被删除,除非重新启
动路由器。如果同时使用了绝对计时器和空闲计时器,则空闲时间应该比绝对时间小。
line con 0
exec-timeout 0 0
logging synchronous
line aux 0
line vty 0 4
login local //启用本地验证
autocommand access-enable host timeout 20
//应用临时ACL。如果不使用host参数,动态表项就不会替换动态表项中认证主机的源I
P地址,这样,就会允许任何主机都能通过动态表项。这里的timeout是空闲时间,如果20分钟内没有相应的流量通过,则删除该动态ACL。另外,这一
步也可以在全局配置模式下针对单独的帐号来配置:username cisco autocommand access-enable host
timeout 20
line vty 5 1276
login local
autocommand access-enable host timeout 20
在R2上sh access-list:
R2#sh access-lists
Extended IP access list 100
10 permit tcp any host 2.2.2.2 eq telnet (477 matches)
20 Dynamic CISCO permit ip any any
R3上ping1.1.1.1(R1的环回口):
R3#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5)
然后在R3上telnetR2:
R3#telnet 2.2.2.2
Trying 2.2.2.2 ... Open
再次查看R2的ACL:
R2#sh access-lists
Extended IP access list 100
10 permit tcp any host 2.2.2.2 eq telnet (546 matches)
20 Dynamic CCIE permit ip any any
permit ip host 192.168.23.3 any
在R3上再次ping1.1.1.1:
R3#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/53/140 ms
在R3上用R3的loopback0作为源地址ping1.1.1.1:
R3#ping 1.1.1.1 sou l0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 3.3.3.3
U.U.U
Success rate is 0 percent (0/5)
若要删除动态ACL可用如下命令:
clear access-template [access-list-number | name] [dynamic-name] [source] [destination]
比如要删除上例生成的动态ACL:
clear access-template 100 CISCO host 192.168.23.3 any
Lock-and-Key虽然有众多好处,但是它也有一个缺点:所有达到的telnet会话都会 被路由器认为是要开启一个动态访问表项。因为telnet会话在认证之后,很快就会被关闭,这将导致管理员不能通过telnet管理其路由器。
解决这个问题可以通过在某些vty端口下面使用rotary 1命令。rotary 1命令使得通常的telnet在3001端口上访问路由器
R2进行修改后的配置如下(只给出发生变化的配置):
access-list 100 permit tcp any host 2.2.2.2 eq telnet
access-list 100 permit tcp any host 2.2.2.2 eq 3001 //因为端口发生了改变,所以需要增加一条ACL
access-list 100 dynamic CISCO timeout 30 permit ip any any
line con 0
exec-timeout 0 0
logging synchronous
line aux 0
line vty 0 4
login local
autocommand access-enable host timeout 20
line vty 5 1000
login local
autocommand access-enable host timeout 20
line vty 1001 1276
line vty 1001 1276
password 123456
login
rotary 1 //对vty线路1001--1276修改端口为3001,用来管理设备
这时要通过telnet管理设备需在目标IP之后指定端口号:
R3#telnet 2.2.2.2 3001
Trying 2.2.2.2, 3001 ... Open
User Access Verification
Password:
R2>