1.什么是ACL?

访问控制列表(Access Control List,ACL) 是路由器和交换机接口的指令列表,用来控制端口进出的数据包。ACL适用于所有的被路由协议,如IP、IPX、AppleTalk等。这张表中包含了匹配关系、条件和查询语句,表只是一个框架结构,其目的是为了对某种访问进行控制。

2.ACL有什么用处?

ACL可以限制网络流量、提高网络性能。例如,ACL可以根据数据包的协议,指定数据包的优先级。

ACL提供对通信流量的控制手段。例如,ACL可以限定或简化路由更新信息的长度,从而限制通过路由器某一网段的通信流量。  

ACL是提供网络安全访问的基本手段。ACL允许主机A访问人力资源网络,而拒绝主机B访问。  

ACL可以在路由器端口处决定哪种类型的通信流量被转发或被阻塞。例如,用户可以允许E-mail通信流量被路由,拒绝所有的Telnet通信流量。 例如:某部门要求只能使用 WWW 这个功能,就可以通过ACL实现; 又例如,为了某部门的保密性,不允许其访问外网,也不允许外网访问它,就可以通过ACL实现。

3.ACL的3p规则

记住 3P 原则,您便记住了在路由器上应用 ACL 的一般规则。您可以为每种协议 (per protocol)、每个方向 (per direction)、每个接口 (per interface) 配置一个 ACL:  

每种协议一个 ACL: 要控制接口上的流量,必须为接口上启用的每种协议定义相应的 ACL。  

每个方向一个 ACL: 一个 ACL 只能控制接口上一个方向的流量。要控制入站流量和出站流量,必须分别定义两个 ACL。  

每个接口一个 ACL :一个 ACL 只能控制一个接口(例如快速以太网 0/0)上的流量。  

ACL 的编写可能相当复杂而且极具挑战性。每个接口上都可以针对多种协议和各个方向进行定义。示例中的路由器有两个接口配置了 IP、AppleTalk 和 IPX。该路由器可能需要 12 个不同的 ACL — 协议数 (3) 乘以方向数 (2),再乘以端口数 (2)。

4.ACL相关规范

(1)ACL的列表号指出了是哪种协议的ACL。各种协议有自己的ACL,而每个协议的ACL又分为标准ACL和扩展ACL。这些ACL是通过ACL列表号区别的。如果在使用一种访问ACL时用错了列表号,那么就会出错误。  

(2)一个ACL的配置是每协议、每接口、每方向的。路由器的一个接口上每一种协议可以配置进方向和出方向两个ACL。也就是说,如果路由器上启用了IP和IPX两种协议栈,那么路由器的一个接口上可以配置IP、IPX两种协议,每种协议进出两个方向,共四个ACL。  

(3)ACL的语句顺序决定了对数据包的控制顺序。在ACL中各描述语句的放置顺序是很重要的。当路由器决定某一数据包是被转发还是被阻塞时,会按照各项描述语句在ACL中的顺序,根据各描述语句的判断条件,对数据包进行检查,一旦找到了某一匹配条件就结束比较过程,不再检查以后的其他条件判断语句。  

(4)最有限制性的语句应该放在ACL语句的首行。把最有限制性的语句放在ACL语句的首行或者语句中靠近前面的位置上,把“全部允许”或者“全部拒绝”这样的语句放在末行或接近末行,可以防止出现诸如本该拒绝(放过)的数据包被放过(拒绝)的情况。  

(5)新的表项只能被添加到ACL的末尾,这意味着不可能改变已有访问控制列表的功能。如果必须改变,只有先删除已存在的ACL,然后创建一个新ACL,将新ACL应用到相应的接口上。  

(6)在将ACL应用到接口之前,一定要先建立ACL。首先在全局模式下建立ACL,然后把它应用在接口的出方向或进方向上。在接口上应用一个不存在的ACL是不可能的。  

(7)ACL语句不能被逐条的删除,只能一次性删除整个ACL。  

(8)在ACL的最后,有一条隐含的“全部拒绝”的命令,所以在 ACL里一定至少有一条“允许”的语句。  

(9)ACL只能过滤穿过路由器的数据流量,不能过滤由本路由器上发出的数据包。  

(10)在路由器选择进行以前,应用在接口进入方向的ACL起作用。

 

(11)在路由器选择决定以后,应用在接口离开方向的ACL起作用。

 

例:拒绝转发所有IP地址进与出方向的 、端口号为1434的UDP和端口号为4444的TCP数据包,下列正确的access-list配置是:

A)Router(config)#access-list 30 deny udp any any eq 1434
Router(config)#access-list 30 deny tcp any any eq 4444
Router(config)#access-list 30 permit ip any any

B)Router(config)#access-list 130 deny udp any any eq 1434
Router(config)#access:list 130 deny tcp any any eq 4444 .
Router(config)#access-list 130 permit ip any any

C)Router(config)#access-list 110 deny any any udp eq 1434
Router(config)#access-list 110 deny any any tcp eq 4444
Router(config)#access-list 110 permit ip any any

D)Router(config)#access-list 150 deny udp eq 1434 any any
Router(config)#access-list 150 deny tcp eq 4444 any any
Router(config)廿access-list 150 permit ip any any

参考答案:B 答案解释:ACL(访问控制列表)有很多种,平时我们用到的就是基于IP地址ACL。ACL简单划分为两种,一种是标准的ACL,定义标准的ACL的列表编号为1~99,而另外一种扩展的ACL,列表编号为100~199。上面的需求是使用扩展的ACL才能完成。130编号属于扩展ACL,而30属于标准的ACL列表编号。 另外解释: 标准ACL,编号1~99,定义基于源IP地址访问权限。 扩展ACL,编号100~199,定义基于源IP地址、目的IP地址、目的协议、目的端口号的访问权限。 那么下面: access-list 130 deny udp any any eq 1434 //拒绝任何源、目的地址的UDP协议1434端口访问 access:list 130 deny tcp any any eq 4444 . //拒绝任何源、目的地址的TCP协议4444端口访问 access-list 130 permit ip any any //允许其他所有通讯。 A。答案:ACL编号错误。应该为扩展ACL的编号。 B。答案正确。 C。ACL语句格式错误! D。ACL语句格式错误!

5.access-list

控制访问列表有两种:标准的控制访问列表和扩展的控制访问列表。 •标准 检查源地址 通常允许、拒绝的是完整的协议 能够对源地址进行过滤,是一种简单,直接的数据控制手段 •扩展 检查源地址和目的地址 通常允许、拒绝的是某个特定的协议 除了基于数据包源地址的过滤以外,还能够对协议,目的地址,端口号进行网络流量过滤。当然,配置也更复杂

控制访问列表的一般用法:

•限制对网络的FTP访问

•禁止一个子网到另一个子网的访问

•允许规定主机Telnet访问路由器 如:不允许指定的主机TELNET访问 访问列表的配置指南:

•访问列表的编号指明了使用何种协议的访问列表

•每个端口、每个方向、每条协议只能对应于一条访问列表

•访问列表的内容决定了数据的控制顺序

•具有严格限制条件的语句应放在访问列表所有语句的最上面

•在访问列表的最后有一条隐含声明:deny any-每一条正确的访问列表都至少应该有一条允许语句

•先创建访问列表,然后应用到端口上

访问列表不能过滤由路由器自己产生的数据

标准访问列表的一般配置举例:

Router# 
Router#configure terminal 
Router(config)# 
Router(config)#access-list 1 permit 172.16.2.0 0.0.0.255 

配置的访问列表是允许来自网络172.16.2.0的流量

Router#configure terminal 
Router(config)# 
Router(config)#access-list 2 deny 172.16.3.0 0.0.0.255 
Router(config)#access-list 2 permit any 
Router(config)#int s0 
Router(config-if)#ip access-group 2 out 
Router(config-if)#

禁止来自网络172.16.3.0的流量!!!

扩展访问列表的一般配置举例:

access-list 101 deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 21 
access-list 101 deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 20 
access-list 101 permit ip any any 
(implicit deny all) 
access-list 101 deny ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255) 

拒绝子网172.16.4.0 的数据使用路由器e0口ftp到子网172.16.3.0

允许其它数据

access-list 101 deny tcp 172.16.4.0 0.0.0.255 any eq 23 
access-list 101 permit ip any any 
(implicit deny all) 

拒绝子网 172.16.4.0 内的主机使用路由器的端口建立Telnet会话

允许其它数据

我们来比较一下标准的和扩展的异同:

标准:

基于源地址

允许和拒绝完整的

TCP/IP协议

编号范围 1-99和1300-1999

扩展:

基于源地址和目标地址

指定TCP/IP的特定协议 和端口号 编号范围 100-199和2000-2699 我们指定特定的主机时一般用通配符掩码指明,下面我举几个例子: 例如 172.30.16.29 0.0.0.0 检查所有的地址位 可以简写为 host (host 172.30.16.29) 所有主机: 0.0.0.0 255.255.255.255 可以用 any 简写

下面举一个简单的例子:

R#conf t
R(config)# access-list 101 deny tcp 192.168.2.0 0.0.0.255 any eq telnet      // 禁用从192.168.2.0来的telnet连接
R(config)# interface fastethernet 0/0
<p> R(config-if)# ip access-group 101 out

至此,就成功配置了。最后别忘了wr保存一下哦。

标准的ACL用例

---- 标准型IP访问列表的格式如下:      

---- access-list[list number][permit|deny]][source address]   

---- [address-wildcard mask][log]

如果您想要指定一个特定的主机,可以增加一个通配符掩码0.0.0.0。例如,为了让来自IP地址为192.46.27.7的数据包通过,可以使用下列语句:      

---- Access-list 1 permit 192.46.27.7 0.0.0.0      

---- 在Cisco的访问列表中,用户除了使用上述的通配符掩码0.0.0.0来指定特定的主机外,还可以使用"host"这一关键字。例如,为了让来自IP地址为192.46.27.7的数据包通过,您可以使用下列语句:      

---- Access-list 1 permit host 192.46.27.7      

---- 除了可以利用关键字"host"来代表通配符掩码0.0.0.0外,关键字"any"可以作为源地址的缩写,并代表通配符掩码0.0.0.0 255.255.255.255。

---- 顺便讨论一下标准型IP访问列表的参数"log",它起日志的作用。一旦访问列表作用于某个接口,那么包括关键字"log"的语句将记录那些满足访问列表中"permit"和"deny"条件的数据包。第一个通过接口并且和访问列表语句匹配的数据包将立即产生一个日志信息。后续的数据包根据记录日志的方式,或者在控制台上显示日志,或者在内存中记录日志。通过Cisco IOS的控制台命令可以选择记录日志方式。

#access-list 1 permit 192.168.1.33 0.0.0.0 // 其中1表示ACL的序号, 匹配和允许来 自192.168.1.0的流量

#access-list 1 permit 192.168.1.0 0.0.0.255 // 匹配和允许来自192.168.1.0/24网段的流量, 注意这里使用的是反掩码, 0 表示比配, 1 表示任意

#access-list 1 deny 172.10.0.0 0.0.255.255 // 禁止172.10.0.0/16 网段的流量

#access-list 1 permit 0.0.0.0 255.255.255.255 // 允许所有的流量注意: 每一个access-list之后, 思科都会在你配置后加上一句 access-list 1 deny any any 即拒绝所有

例1:#access-list 1 permit 192.168.1.33 0.0.0.0 如果你只配置了上面这条命令, 那么在思科的路由器中, 表示抓取 192.168.1.33这条路由, 并拒绝这条路由之外的全部路由

例2:如果你想要拒绝一条路由, 放过所有的其他路由, 需要按照下面的方式配置#access-list 1 deny 192.168.1.33 0.0.0.0 #access-list 1 permit any any在来看看扩展的ACL#access-list 100 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 // 其中192.168.1.0 代表源IP, 192.168.2.0代表目的IP

在来看看扩展的ACL

---- access-list[list number][permit|deny]   

---- [protocol|protocol key word]   

---- [source address source-wildcard mask][source port]   

---- [destination address destination-wildcard mask]   

---- [destination port][log options]

#access-list 100 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 // 其中192.168.1.0 代表源IP, 192.168.2.0代表目的IP

access-list 101 permit tcp any host 192.78.46.8 eq www

access-list 101 permit ICMP any host 192.78.46.12 eq 8 扩展型IP访问列表还有一个特点,就是它支持以下关键字的操作符。在这2条语句中,第一条语句允许来自任何主机的TCP到达指定的IP地址为192.78.46.8的主机,只要数据包传输Web流量。其中可以用80取代www,因为Web流量通过端口80。第二条语句允许所有的Ping流量通过,而对于Ping,其ICMP回波请求信息属于ICMP类型8。

interface serial 0 ip access-group 101 in 定义了访问列表所应用的端口及方向(进方向)

6.ACL不足:

1.ACL的缺点: 无法精确抓取流量

案例: 存在两个网段 192.168.1.0/24 和 192.168.1.0/30,如果我们想要抓取192.168.1.0/24网段的流量, 但是放过192.168.1.0/30 是无法实现的。当网络号一致的时候, ACL只能将192.168.1.0/24 和 192.168.1.0/30 当做 192.168.1.0/24 全部抓取

解决方案 :使用前缀列表做精确抓取

2.ACL只能过滤穿过路由器的数据流量,不能过滤由本路由器上发出的数据包直连路由

7.ACL扩展:

随着网络技术的发展和用户要求的变化,从IOS 12.O开始,Cisco路由器新增加了一种基于时间的访问控制。通过它,可以根据一天中不通时间或者根据一周中的不通日期(也可以二者结合起来)控制网络数据包的转发,给网络人员的日常维护带来很大便利。

命令:absolute, periodic

 

参考链接:https://blog.csdn/heyuchang666/article/details/42679061

参考链接:https://blog.csdn/yahohi/article/details/6313957

参考链接:https://blog.csdn/fanxiaofanxiao/article/details/79835016

更多推荐

Cisco路由器acl的access-list命令使用详解