本帖最后由 霸王龙小分队 于 2017-7-3 17:57 编辑
动态访问列表 动态ACL,也被称为lock-and-key ACL,在1996年作为选项引入思科IOS。动态ACL仅支持IP流量。动态ACL依赖于telnet连接,用户telnet路由器,并验证通过,此时telnet自动断开,并动态产生一条临时ACL语句。当一段时间内,无该语句相关流量通过,临时的ACL语句消失。
动态访问表是对传统访问表的一种重要功能增强。我们从动态访问表的名称就可以看出,动态访问表是能够创建动态访问表项的访问表。传统的标准访问表和扩展的访问表不能创建动态访问表项。一旦在传统访问表中加入了一个表项,除非手工删除,该表项将一直产生作用。而在动态访问表中,读者可以根据用户认证过程来创建特定的、临时的访问表。
用户一般通过提供用户名和口令,就能够开启一个到路由器telnet会话。也可以配置路由器,让其只需要口令,而不需要用户名;但我们并不推荐这样做。在用户被认证之后,路由器关闭telnet会话,并将一个动态访问表项置于某个访问表中,以允许源地址为认证用户工作站地址的报文通过。这样,用户可以在安全边界上配置访问表,只允许那些能够通过用户认证的工作站才能发送向内的报文。
这种方式所带来的好处是很明显的。在传统的访问表中,如果处于路由器不可信任端的用户需要访问内部的资源,就必须永久性地在访问表中开启一个突破口,以允许这些用户的工作站上的报文进入可信任网络。这些在访问表中的永久性的突破口给黑客发送报文进入安全边界,并达到内部网络提供了机会。这种情况可以通过只允许特定的可信I P源地址的报文进入内部,解决部分问题。但是,假设用户不是使用静态的I P地址呢?则上述的方法就不起作用了。例如,用户可以通过Internet服务提供者(Internet Service Provider,ISP)拨号进入Internet。一般情况下,家庭用户每次拨入I S P时,其I P地址都是不同的,所以,如果不在安全边界上开启一个很大的突破口的话,就不能够允许来自这些用户的报文通过,而如果这样做,又给黑客们提供了可乘之机。在这种情况下使用动态访问表,能够比使用传统I P访问表提供更高的安全级别。
前面讲过,动态访问表是一种新型的访问表。事实上确实如此,但是动态访问表的语法与传统访问表项的格式非常相似,这些知识在前面的章节中也介绍过。动态访问表项的语法
如下所示:
Access-list dynamic [timeout] [permit|deny] any
其中第一项与传统的扩展访问表的格式相同,其号码介于100~199之间。第二个参数<name>是动态访问表项的字符串名称。[timeout]参数是可选的。如果使用了timeout参数,则指定了动态表项的超时绝对时间。< protocol>参数可以是任何传统的TCP/IP协议,如IP、TCP、UDP、ICMP等等。其源IP地址总是使用认证主机的IP地址来替换,所以我们在动态表项中定义的源地址总是应该使用关键字any。目的IP(destination IP)和目的屏蔽 (destination mask)与传统的扩展访问表格式相同。对于目的I P地址,最安全的方式是指定单个子网,或者甚至为单个主机。因为我们在每个访问表中不能指定多个动态访问表项,所以在protocol中一般设置为IP或者TCP。
例1:
定义动态ACL条目
QM_IOSFW(config)#access-list 101 permit tcp any host 12.12.12.2 eq telnet
允许外部任何地址访问该路由的telnet
QM_IOSFW(config)#access-list 101 dynamic dyacl permit ip any any
动态产生后的ACL
在line vty下应用autocommand
QM_IOSFW(config)#line vty 0 4
QM_IOSFW(config-line)#login local (这里可以结合AAA或本地认证)
QM_IOSFW(config-line)#autocommand access-enable host timeout 5
(红字为隐藏命令,直接敲)
在接口下调用ACL(一定要调用,否则不生效)
QM_IOSFW(config)#int F0/0
QM_IOSFW(config-if)#ip access-group 101 in
此时show ip access-list查看下ACL条目:
QM_IOSFW#show ip access-lists
Extended IP access list 101
10 permit tcp any host 12.12.12.2 eq telnet
20 Dynamic dyacl permit ip any any
没有任何动态条目产生,我们在外部telnet触发下看看:
QM_R1#telnet 12.12.12.2 /source-interface loopback 0
Trying 12.12.12.2 … Open
User Access Verification
Username: cisco
Password:
[Connection to 12.12.12.2 closed by foreign host]
telnet成功后会断开telnet连接
QM_IOSFW#show ip access-lists
Extended IP access list 101
10 permit tcp any host 12.12.12.2 eq telnet (72 matches)
20 Dynamic dyacl permit ip any any
permit ip host 1.1.1.1 any (5 matches) (time left 296)
网关路由上就会产生一条动态的ACL。
以上是最基本的动态ACL,下面对动态ACL的一些优化做阐述:
优化一:
此时如果管理员需要远程管理IOSFW这台路由器,却发现每次telnet登陆都会被断开,因为telnet会话在认证之后,很快就会被关闭,这将导致管理员不能通过telnet管理其路由器。解决这个问题可以通过在某些vty端口下面使用rotary命令。
QM_IOSFW(config)#line vty 5
QM_IOSFW(config-line)#login local
QM_IOSFW(config-line)#rotary 1 (telnet时,使用端口号为3000+1)
测试:
R1#telnet 12.12.12.2 3001
Trying 12.12.12.2, 3001 … Open
User Access Verification
Username: cisco
Password:
QM_IOSFW>
注意一:有时可能直接telnet 3001端口不成功,此时可以先telnet 23,创建动态ACL后在做3001的telnet管理。
注意二:登陆上以后,调试完毕尽快推出会话,如果没有推出,并且没有流量通过动态ACL,5分钟后,动态ACL消失,那么管理员的
telnet会话窗口就会卡死在line下,无法退出。
优化二:
可以结合时间ACL,更好的控制外网对IOSFW的访问,比如该动态ACL只可以
晚上8点~12点使用,此时可以结合time-range.
QM_IOSFW(config)#time-range Access
QM_IOSFW(config-time-range)#periodic daily 20:00 to 23:59
QM_IOSFW(config)#access-list 101 permit tcp any host 12.12.12.2 eq telnet time-range Access
此时只有在晚上8:00和12:00之间才可以对IOSFW做telnet触发,从而间接的保护了内网的访问时间。
优化三:
结合AAA对username和password管理,此处略!关于AAA验证问题,请参考我写的ACS配置指南。
优化四:
全局模式下保护外网用户对IOSFW的telnet访问,这样可以防止DOS的攻击。
QM_IOSFW(config)#login block-for 1 attempts 3 within 10
1秒内只可以telnet一次,验证失败三次后必须停留10秒才可以telnet。
QM_IOSFW(config)#login on-failure log
产生登陆失败日志。
QM_IOSFW(config)#login on-success log
产生登陆成功日志。
|