在配置ACL的时候,要注意默认的是deny any。因此在一个端口如果配置多个ACL的时候要注意,如果第一条就已经把所有的给deny掉了,那么剩下的ACL也就没有意义了。因此在每个端口上都只能有一个入口ACL和出口ACL

 

 

#access-list 10 permit 172.16.0.3

#line vty 0 4

#access-class 10 in

控制Telnet到路由器上的IP

 

 

自反ACL

工作原理

  只含临时性条目,没有拒绝一切语句

  临时性条目的特点:

  1.总是允许语句;

  2.指定与最初的外出数据包相同的协议(TCP)

  3.指定与最初外出数据包相同的源地址和目的地址,但这两个地址的位置被互换;

  4.指定与最初外出数据包相同的源和目的端口号码(对TCP/UDP),但这两个地址的位置被互换;

  5.对于不含端口号码的协议,如ICMP IGMP,它会指定其他准则;

  6.入数据流将根据自反条目被评判,直到该条目过期被删除

 

配置:企业边界路由器:

  interface FastEthernet0/0

  ip address 23.0.0.1 255.255.255.0

  ip access-group ZIFAN-2 in

  !

  interface FastEthernet1/0

  ip address 12.0.0.2 255.255.255.0

  ip access-group ZIFAN in

  !

  ip access-list extended ZIFAN

permit ip host 12.0.0.1 any reflect LINK_IN //指定该条语句执行自反,自反列表的名字为LINK_IN

 

  ip access-list extended ZIFAN-2

  evaluate LINK_IN //计算并生成自反列表

  —————————————————————–

  说明1reflectevalute后面的对应名应该相同,此例中为LINK_IN

  说明2:自反ACL只能在命名的扩展ACL里定义

  —————————————————————–

  试验结果:

  router#sh access-lists

  Reflexive IP access list LINK_IN

  permit icmp host 23.0.0.2 host 12.0.0.1 (39 matches) (time left 289)

  Extended IP access list ZIFAN

  10 permit ip host 12.0.0.1 any reflect LINK_IN (188 matches)

  Extended IP access list ZIFAN-2

10 evaluate LINK_IN

 

 

 

可以使用ip reflexive time-out命令改变自反ACL超时时间。但是这个默认时间不能用于TCP,因为TCP通信报文,因为在接受到一个报文后,若检测到RST位被设置并且在5秒钟内检测到2FIN为,则TCP自反访问表表项会立即关闭。

 

自反ACL不适合通信中自动切换端口的程序,因为自反ACL只会生成相应目的端口置换成源端口的临时ACL(多通道程序只能用CBAC)

 

 

时间控制列表

time-range no-ip

 periodic daily 11:00 to 11:20

 periodic weekend 10:00 to 11:00

 

!

ip access-list extended Time_no_ip

 deny   ip any any time-range no-ip

 

!

 

ACL注释

#access-list 110 remark permit bob from salves only to finace

 

Established(已建立连接的)

这是针对TCP的专有配置,因为TCP是三次握手,而发起连接一端的第一个报文中是不带有ACK字段的,因此可以通过报文中是否含有ACK判断是那端发起连接,从而做到只允许一端访问。

 

主机A -------------------------------- 主机B

SYN: seq=x

------------------------------------------->

 

SYN: seq=y ACK=x+1

<-------------------------------------------

 

 

SYN: seq=x+1 ACK=y+1

-------------------------------------------->

 

上面的图示显示了TCP 建立连接的过程。可以看出:A 发给B 的第一个数据段中没有ACK 位,通过这点我们就可以判断A 在向B 发起连接。扩展ACL 中的established 可以根据数据段中是否设置了ACK 位来对分组进行过滤(没有ACK 位的不符合established 条件)。

注意:该方法只能控制基于TCP 的应用。 在VACL中也适用。

 

实例:Server0———F0/0— route —F0/1———server1

Route配置:

!

interface FastEthernet0/0

 ip address 192.168.0.1 255.255.255.0

!

interface FastEthernet0/1

 ip address 192.168.1.1 255.255.255.0

 ip access-group 101 in

!

access-list 101 deny tcp any eq www any established

access-list 101 permit ip any any

!

!

两个服务器都可以相互Ping通,因为ICMP是只封装在IP中的。

Server1可以访问Server0WWW服务器

Server0不可以访问Server1WWW服务器。

因为端口F0/1拒绝了所有已连接的TCP报文,即Server0发起的连接。

 

动态ACL

通过Telnet验证后激活的ACL

R1-------f0/0--R2--f1/0-------PC

R2配置

!

username config password 0 config

!

!

interface FastEthernet0/0

 ip address 192.168.1.2 255.255.255.0

!

interface FastEthernet1/0

 ip address 192.168.2.2 255.255.255.0

 ip access-group 101 in

!

!

access-list 101 permit tcp any any eq telnet

access-list 101 dynamic dy permit ip any any

!

!

control-plane

!

!

line vty 0 2  (通过正常登录,即:Telnet 192.168.2.2便会激活动态ACL,同

                  时退出登录)

 login local

autocommand  access-enable host timeout 20 (动态路由配置信息,而且没有提示,

属于line输入。关键命令,输入该命令就是允许自动建立一个动态ACL,如果不加host,一旦一台主机认证成功以后,那么其他主机就不需要认证了,这样是不好的。timeout指定空闲超时时间,单位是分钟)

 

line vty 3 4(如果需要登录到路由进行管理,Telnet 192.168.2.2 3001

<命令 rotary 1 实现的>

 login local

 rotary 1

!

!

End

 

PC(使用路由器代替)ping   R1 

R3#ping 192.168.1.1

 

U.U.U

Success rate is 0 percent (0/5)

 

R3#telnet 192.168.2.2

 

Username: config

Password:

[Connection to 192.168.2.2 closed by foreign host]

R3#ping 192.168.1.1 

 

!!!!!

 

R3#telnet 192.168.2.2 3001

Trying 192.168.2.2, 3001 ... Open

 

Username: config

Password:

 

R2>en

% No password set R2忘记配置特权密码了,呵呵)

R2>en

Password:

R2#

 

 

一个ACL中只能创建一个动态ACL,而软件也只会引用你创建的第一条动态ACL

删除临时动态ACLR2#clear access-template [access-list-number|name][dynamic-name][source]

 

 

 

CBAC

1、CBAC只能用于对TCPUDP报文的检测,而不用用于其他IP报文(如ICMP)的检测

2、以路由器作为源和目的地址的报文不被检测

3、CBAC不能准确的检测加密报文,因此要是配置加密后,唯一能够检测到的多通道应用程序是CBAC stream worksCU-SeeMe。如果需要使用加密功能,则应配置这类应用程序和普通的TCPUDP协议。

4、如果同时配置IPSecCBAC,那么只要CBAC路由器之IPsec隧道的末端,CBAC就能正确的检测通信报文。如果路由器不是其末端,则CBAC不能正确的检测报文,因为报文此时不包含TCPUDP头。