动态ACL是对传统ACL的一种应用扩展;动态ACL要求某些非安全区域的主机访问受保护网络资源之前,首先经过身份验证,然后,它自动创建动态访问控制项来允许访问会话的传入;传统的标准访问控制列表和扩展的访问控制列表不能做到这一点。现在需要理解的是动态ACL的工作过程,如下图10.19所示:
第一步:客户机如果需要访问服务器192.168.2.2,如果在路由器上实施了动态ACL的配置,那么客户机将首先偿试telnet到配置了动态ACL的路由器R1,此时,Telnet进程会要求客户端主机输入用户名与密码,事实上,动态ACL正是使用这个用户输入的用户名和密码完成对远程主机的身份验证,注意:这里的Telnet只是一种假像,其实真正的目的是在于身份验证。
第二步:当完成身份验证后,如果用户合法,那么配置动态ACL的路由器会添加一条临时的允许访问内部网络某项服务器的ACL语句,这条语句的生效时间是有限制的,以用户配置的生效时间来作做为这条语句的生效时间。
第三步:此时,切断Telnet会话,客户端开始正式访问服务器192.168.2.2上的相关服务,直到配置的超时时间到期前都成功的获得访问。
第四步:当允许的最长连接时间到期时,被增加的临时ACL条目被删除。
在什么情况下使用动态ACL?
传统ACL主要作用是控制访问行为,但是在很多情况下使用传统的ACL并不是最佳方案,比如:网络边界路由器面对广泛安全来源时,传统的ACL就显得非常力不从心了,所谓广泛的安全来源发生在这样一种情况下:网络边界路由器只允许某些特点的访问来源,进入安全区域访问服务器,但是访问来源可能是通过拨号的形式来连接Internet,而通常拨号形式的Internet接入,每次所获得的IP地址都不同,在这种情况下,如何使用传统的ACL,可能您每次都要重新书写ACL的语句,因为控制来源的IP地址随时都会变化,或者您需要输写相当冗长的ACL列表,当然你可以使用一条any语句来替代这些广泛来源的不同IP地址,但是,这无疑增大了安全隐患,为黑客提供了非法访问的机会。所以,在这种情况下动态ACL是一种可取的方案,因为在增加临时ACL语句(允许访问)之前,对访问来源进行了身份验证。
演示:动态ACL的配置
演示目标:
n演示动态ACL的配置。
n演示动态ACL和Telnet同时使用的案例。
演示环境:使用如上图 10.19描述动态ACL工作原理的环境。
演示背景:在路由器R1上配置动态ACL,对客户机访问服务器的行为进行身份认证,如果身份合法,则允许客户机访问服务器,反之,则不能。然后,要求再为路由器R1配置动态ACL后,要求同时可以通过Telnet路由器R1执行网络管理,这就提出一个问题:动态ACL使用Telnet形式来完成身份验证,路由器R1需要被真正的Telnet执行远程管理时,怎么办?
演示步骤:
第一步:在路由器R1上配置动态ACL,并将其应用到相关的接口上,具体配置如下:
关于动态ACL的配置:
R1(config)#usernameccna password good * 配置要验证的用户名与密码。
R1(config)#usernameccna autocommand access-enable host timeout 10
* 为ccna用户配置动态ACL的空闲超时时间为10分钟,也就是指示如果动态ACL插入临时条目后,10分钟没有匹配流量的情况下,该临时条目将被删除;host关键字指示,动态ACL插入的临时条目只对激活身份验证的主机生效,如果没有host关键字,一旦某一台主机认证成功激活后,其它主机就不需要再做认证,就可以访问资源,这样存在安全隐患的。
R1(config)#access-list101 permit tcp any host 192.168.3.1 eq telnet
* 配置扩展ACL允许任何源IP地址telnet路由器R1(192.168.3.1),这是必须的,因为动态ACL的生存是使用Telnet的形式完成身份验证,所以必须允许Telnet协议。
R1(config)#access-list101 dynamic ccna timeout 120 permit ip any host 192.168.2.2
* 配置动态ACL的具体内容,动态ACL是在扩展ACL101的基础上构造起来的,所以它使用扩展ACL101所使用的ACL号码,以关键字dynamic申明这是一条名为ccna的动态ACL,该语句中的timeout指示动态ACL的绝对超时时间,所谓绝对超时时间,指示当这个时间到期时,无论有无匹配的数据,临时条目都将被删除,用户必须重新进行认证;permit ip any host 192.168.2.2指示动态ACL对用户认证成功后,插入临时条目的具体内容,这里的内容是认证成功后允许任何源IP地址访问目标主机192.168.2.2。
R1(config)#line vty0 4 * 进入Vty 0、1、2、3、5的线路配置模式。
R1(config-line)#loginlocal * 使用本地安全数据库完成Telnet登陆认证。
R1(config)#interfacee1/0 * 进入路由器R1的外部接口E1/0接口模式。
R1(config-if)#ipaccess-group 101 in * 在R1的E1/0接口的入方向上应用ACL101。
第二步:完成上述配置后,现在来体会动态ACL的效果,并验证动态ACL是否生效,首先到路由器R1上执行show access-lists查看现有的ACL条目,可以发现如下图 10.20所示,目前验证未被激活,所以在显示的结果中,只有一条先前所配置的传统扩展ACL条目和动态ACL的申明语句,暂时没明被插入的临时ACL语句。
在完成上述配置后,此时,到路由器R1上再次使用show access-lists查看ACL的语句,如下图10.24所示,现在可以看到出现了临时ACL语句,并且有4个与该语句匹配的数据包,以及空闲倒计时。
第三步:在完成上述过程后,现在提出一个问题:路由器为了实现动态ACL的功能使用Telnet形式来完成身份验证,当动态ACL要集成正常的telnet时该怎么办?出就是说在路由器R1上要同时使用动态ACL与正常Telnet的解决方案,具体的配置如下:
配置动态ACL与正常的Telnet集成:
R1(config)#line vty0 4
R1(config-line)#nologin local * 取消在vty0到4的线路模式下的认证配置。
R1(config)#line vty0 3 * 进入vty0、1、2、3线路模式。
R1(config-line)#loginlocal * 使用本地安全数据库完成身份验证。
注意:现在的配置中,没有完全使用vty的所有线路,一般情况下路由器有5条vty线路0、1、2、3、4;现在只使用了0-3的线路来用作动态ACL;余下4号线路供给正常的telnet使用。
R1(config)#line vty4 * 进入Vty 4号线路模式。
R1(config-line)#login * 进行登陆验证。
R1(config-line)#passwordccna * 配置telnet登陆的密码。
R1(config-line)#rotary1 * 将telnet的端口移向端口3001。
R1(config)#enablepassword ccna * 配置Enable的密码。
R1(config)#access-list101 permit tcp any host 192.168.3.1 eq 3001
* 注意,此时必须在ACL列表101中增加一条允许telnet 3001的语句,否则正常的telnet将无法完成,因为它会被ACL最后的隐式拒绝语句Deny掉。
现在,在主机就可以同时使用动态ACL的身份验证和正常的Telnet远程管理,可以在主机的CMD提示符下执行如下指令:
C:\>telnet192.168.3.1 * 这是动态ACL的身份验证,完成后会立即切断Telnet会话。
C:\>telnet 192.168.3.1 3001 * 这是正常的telnet管理,不会切断telnet会话。
本文转自 kingsir827 51CTO博客,原文链接:http://blog.51cto.com/7658423/1323467,如需转载请自行联系原作者