标题：动态ACL
动态ACL工作原理
用户一般通过提供用户名和口令，就能够开启一个到路由器的telnet会话。也可以配置路由器，让其只需要口令，而不需要用户名；但并不推荐这样做。在用户被认证之后，路由器会自动关闭telnet会话，并将一个动态访问表项置于某个访问表中，以允许源地址为认证用户工作站地址的报文通过。这样，我们可以在安全边界上配置访问表，只允许那些能够通过用户认证的工作站才能发送向内的报文。
动态访问表项是传统访问表项的一部分。动态访问表项被添加到访问表的适当位置上，我们还指定了其余的传统访问表项。然后将访问表应用到某个接口上。我们至少应该允许到达路由器的telnet通信报文，这样才能进行用户认证过程。如果不允许telnet连接，用户就不能在访问表中创建动态的访问表项。并一定要将telnet表项放置在动态表项的前面。只要准确地允许了去往路由器的向内的telnet连接，动态的访问表项就会根据需要被创建。
动态ACL带来的好处
在传统的访问表中，如果处于路由器不可信任端的用户需要访问内部的资源，就必须永久性地在访问表中开启一个突破口，以允许这些用户的工作站下的报文进入可信任网络。这些在访问表中的永久性的突破口给黑客发送报文进入安全边界，并达到内部网络提供了机会。这种情况可以通过只允许特定的可信IP源地址的报文进入内部，解决部分问题。但是，假设用户不是使用静态的IP地址呢？则上述的方法就不起作用了。
例如，用户可以通过Internet服务提供者（Internet Service Provider，ISP）拨号进入Internet。一般情况下，家庭用户每次拨入ISP时，其IP地址都是不同的，所以，如果不在安全边界上开启一个很大的突破口的话，就不能够允许来自这些用户的报文通过，而如果这样做，又给黑客们提供了可乘之机。在这种情况下使用动态访问表，能够比使用传统I P访问表提供更高的安全级别。
配置动态ACL
Router(config)# access-list access-list-number [dynamic dynamic-name [timeout minutes]] {deny |permit} protocol anydestination ip destination mask dynamic-name/指定动态ACL的名称，timeout指定绝对超时时间，单位是分钟
Router(config)# line vty line-number [ending-line-number]    /进入允许telnet的vtp进程下
Router(config-line)# login local    /基于本地定义的用户名和密码进行认证
Router(config-line)# login tacacs    /基于tacacs服务器进行认证
Router(config-line)# rotary 1    /如果一旦开启动态ACL，那么所有发起的telnet会话都会触发一个动态ACL表项，但是telnet会马上关闭，如果我们想要管理一台设备的话，就需要在另外一个vtp进程下面输入该命令，然后在telnet的时候地址后面打上3001。
例如：telnet：192.168.1.1 3001
Router(config-line)# password password    /只进行密码认证
Router(config-line)# autocommand access-enable [host] [timeout minutes]    /关键命令，输入该命令就是允许自动建立一个动态ACL，如果不加host，一旦一台主机认证成功以后，那么其他主机就不需要认证了，这样是不好的。timeout指定空闲超时时间，单位是分钟
Router(config)# username name password secret/指定认证时需要输入的用户名和密码
注意1：第一个timeout和第二个timeout的区别，第一个timeout是绝对超时时间，一般该时间需要大于第二个timeout——也就是空闲超时时 间，因为该时间是全局的。空闲超时时间是针对单独的一个表项的时间，如果该表现在指定的时间内没有流量通过，那么它就会超时，并且自动从ACL中删除。而一旦绝对超时时间是针对所有表项的，一旦它超时，所有会话都会被切断，及时有流量正在传输，如果还需要通信，就需要重新建立连接。
注意2：autocommand access-enable既可以在vty进程下面打，也可以在特权模式下打，所不同是是，特权模式下可以打？看到命令的详细解释，而vty下面看不到的。
动态ACL案例研究
案例1需求：为192.168.1.0网段上通过认证的用户提供上网服务，但只允许进行Web浏览和FTP访问。
username internet password cisco
interface ethernet 1
ip address 192.168.1.1 255.255.255.0
ip access-group 100 in
access-list 100 permit tcp any host 192.168.1.1 eq telnet
access-list 100 permit udp any any eq 53
access-list 100 permit tcp any any eq www established
access-list 100 permit tcp any any eq 21 established
access-list 100 dynamic internet timeout 180 permit ip any any log
line vty 0 2
login local
autocommand access-enable host timeout 10
line vty 3 4
login local
rotary 1
案例2需求：允许合法的外部用户连到198.78.46.12服务器，以进行telnet和FTP访问。阻塞从E0到E1的访问，以防止IP地址为198.78.46.12的服务器被击破而影响到内部主机。
username server password cisco
interface ethernet 0
ip address 198.78.46.1 255.255.255.0
ip access-group 101 in
interface serial 0
ip address 202.10.10.1 255.255.255.0
ip access-group 100 in!
access-list 100 permit tcp any host 202.10.10.1 eq telnet
access-list 100 permit tcp any host 198.78.46.12 eq gt 1023 -established
access-list 100 dynamic wolf timeout 180 permit ip any host 198.78.46.12 time-range my-time log
access-list 101 permit tcp any any established
access-list 101 deny ip any 198.78.46.0 0.0.0.255a
time-range my-timer
periodic weekdays 8:00 to 18:00
line vty 0 2
login local
autocommand access-enable host timeout 10
line vty 3 4
login local
rotary 1
案例3需求：为了统一管理用户，使用TACACS服务器进行认证，当认证服务器不可用时，使用本地用户数据库进行备份认证。
aaa new-model 
aaa authentication login default group tacacs+ local
aaa authorization exec default group tacacs+
username internet password cisco
interface ethernet 17
ip address 192.168.1.1 255.255.255.0
ip access-group 100 in
access-list 100 permit tcp any host 192.168.1.1 eq telnet
access-list 100 permit udp any any eq 53
access-list 100 permit tcp any any eq www established
access-list 100 permit tcp any any eq 21 established
access-list 100 dynamic internet timeout 180 permit ip any any log
tacacs-server host 198.78.46.13
tacacs-server key mykey
line vty 0 2
login authentication default
line vty 3 4
login local
rotary 1