中兴路由器配置ACL
其实,ACL是三个英文单词的缩写,全称叫Access Control List,翻译成中文叫做“访问控制列表”。从ACL的名字,我们可以看出其实ACL本身并不是一种数据通信的协议,它是一种对数据流进行管理和限制的方法。从它的名字,我们还可以看出,ACL是一种列表,也就是说是设备上面,ACL是以列表的形式出现。一种可以对报文进行管理和控制的列表。举个例子,ACL类似于在机场工作的海关工作人员。工作人
什么是ACL?
其实,ACL是三个英文单词的缩写,全称叫Access Control List,翻译成中文叫做“访问控制列表”。从ACL的名字,我们可以看出其实ACL本身并不是一种数据通信的协议,它是一种对数据流进行管理和限制的方法。从它的名字,我们还可以看出,ACL是一种列表,也就是说是设备上面,ACL是以列表的形式出现。一种可以对报文进行管理和控制的列表。举个例子,ACL类似于在机场工作的海关工作人员。工作人员要对出入境的游客进行安全检查,如果游客的身份合法,就允许通过,否则不允许通过。ACL和海关工作人员的工作方式是一样的,它要对出入的流量进行管理,当网络的流量匹配了ACL的规则之后,ACL可以允许流量通过,否则禁止流量通过。
-
当网络流量不断增长的时候,对经过路由器的数据流进行管理和限制的方法
-
基于数据包进行过滤
为什么我们需要ACL呢?
我们都知道网络的流量现在增长的非常快,当网络流量不断增长的时候,作为管理人员,肯定要对流量进行管理和控制,允许哪些流量通过,不允许哪些流量通过,要对流量进行分类。其中ACL就是一个很好的分类方法。另外我们知道,网络安全问题日益严峻,很多非法的和攻击性的流量涌入网络,势必对网络设备造成影响。这种情况我们就可以使用ACL对网络的非法流量进行限制和过滤,在很大程度上可以提高网络的安全性。
-
当网络接口增加时,管理IP流量
-
当报文经过路由器时,进行过滤(可用于防御网络攻击)
ACL可以使用在哪些场合?
ACL应用的场合非常广泛。举个例子,比如我们在进行路由器telnet访问的时候,我们就可以用ACL来限制某些用户的telnet访问,允许某些用户telnet访问。另外,在其它场合,例如QoS、NAT、和路由控制、数据控制等,我们都可以用ACL来进行报文、流量的分类。所以说,ACL的应用还是非常广泛的。
-
允许或禁止对路由器或来自路由器的telnet访问
-
QOS与队列技术
-
路由策略
-
数据速率限制
-
端口流镜像
-
NAT
ACL的配置流程:
ACL配置流程主要包含3部分,第一部分,我们定义一下触发条件;第二部分,我们定义报文匹配规则;第三部分,与端口或服务绑定。我们先看一下第一个“定义触发条件”,这个触发条件在ACL的配置中并不是必须的配置内容。定义触发条件有两种情况,第一种我们可以用“时间段”,另外一种情况,我们可以用“事件”,利用这些作为触发条件,但触发条件并不是必须要配置的。第二部分,定义报文匹配规则,这里简单介绍一下。ACL定义报文匹配规则一共有两部分,第一部分叫做“条件”,第二部分叫做“动作”。“条件”指的就是ACL当中人为设置的一些规则,“动作”就是一些action,即匹配了这些规则的报文,我们对它采取一些动作。其中“条件”中我们可以配置很多规则;“动作”主要有两种,第一个叫做“允许”,第二个叫做“禁止”。也就是说在网络中的流量,当匹配了ACL的“条件”的时候,我们要对它采取一些动作,这个动作或者是允许,或者是禁止。我们看一下ACL的处理流程。在这个图表中,当数据流进入设备的时候,我们首先根据数据包的一些特征进行判断,当然,这个地方我们要匹配一下ACL所定义的一些规则,如果匹配了这些规则之后,我们再看一下ACL设置的动作,这个例子中动作是“允许”,则数据流可以从出接口转发出去。如果动作是不允许的话,则数据流就会被丢弃。这个就是ACL最简单的一个工作流程。
ACL的分类
一、ACL的判别依据-五元组
标准ACL
-
仅以源IP地址作为过滤标准
-
只能粗略的限制某一大类协议,如IP协议
扩展 ACL
-
可以把源地址、目的地址、协议类型及端口号等作为过滤标准
-
可以精确的限制到某一种具体的协议
这个“五元组”其实是数据包中的5个元素。我们可以根据这5个元素,将他们作为ACL的判断依据。这5个元素都有哪些呢?第一个就是我们通常说的,源IP地址。另外,还有目的IP地址、协议号、源端口号和目的端口号。我们知道,这5个元素都出现在数据包的IP包头和传输层段头中,所以说,当报文经过路由器的时候,我们可以用ACL对报文进行检查,检查的内容就包括这个五元组。
在中兴设备上,通常我们把ACL分为两类。第一种叫做标准ACL。第二种叫扩展ACL。标准ACL非常简单,它的判断依据仅以源IP地址作为标准,也就是说,在标准ACL中,我们设置条件规则的时候,只能用IP数据包的源IP地址作为过滤标准。所以说,第一种标准ACL是非常粗略的。
第二种扩展ACL,就可以把源IP地址、目的IP地址、以及协议类型和端口号作为过滤标准。所以说扩展ACL的精确度要比标准ACL高很多。
二、ACL的分类及匹配依据
我们看一个抓到的包内容。通过抓包软件显示出的信息,我们可以看出哪些是标准ACL依照的依据,哪些是扩展ACL所依照的依据。首先我们看红色框所标出的source字段,这部分就是标准ACL所依据的源IP地址。我们看一下蓝色框所标出的部分,这里面包含很多内容,其中有协议,另外有源IP地址、目的IP地址、源端口号和目的端口号。这些都可以作为扩展ACL所依照的依据。
ACL的工作原理
这部分首先给大家举个例子,ACL配置在出接口的情况下,ACL是如何工作的。首先我们看一下,当数据包进入到路由器的时候,首先我们要去查找路由表,看这个数据包能否转发出去。如果找到相应的路由条目,接下来会找到出接口,然后将数据包发出去。如果没有找到路由,那么这个报文就会被丢弃掉。当选择好出接口的时候,因为我们前面提到,ACL可能在出接口上配置。假如我们配置了ACL,这个时候我们要做一个判断。如果没有ACL,转发如同在普通路由器的情况下,报文直接从出接口转发出去。如果有ACL,那会是什么情况呢?如图一:
当存在ACL的时候,报文不会简简单单的直接发送出去,而是进入ACL的模块,首先去匹配一下ACL配置的一些规则。如果匹配了ACL的规则,接下来我们要看一下ACL设置的一些动作,是否允许报文通过。如果允许报文通过,那这个报文就可以顺利的通过出接口转发出去。如图二
否则这个报文就会被丢弃掉。这个就是ACL的工作原理。这个地方,我们要注意一句话,如果没有ACL语句匹配的话,我们会丢弃数据包。为什么如此?如图三
ACL的规则
在讲述ACL的规则之前,我们先看一下ACL的匹配顺序。因为在前面我们讲到,ACL的内容包含两部分,第一部分是它的条件,第二部分是相应的动作。ACL的动作非常简单,只有两个选择,或者是拒绝,或者是允许。但ACL的条件里面的内容就很丰富。因为在ACL中我们可以配置若干条规则。那么ACL内部到底怎样工作的呢?首先我们看一下匹配顺序。当报文进入设备之后,如果设备的接口有配置ACL的话,那么首先这个报文要去匹配ACL的第一条规则。我们要根据报文的一些特征,比如说源IP地址、目的IP地址或者端口号等等信息去匹配ACL的规则。如果第一条规则匹配了,那么这个报文紧接着就会进入下一个步骤,我们会对这个报文进行处理,或者把它丢弃掉,或者把它转发到相应的目的接口。
如果第一条规则没有匹配,那么怎么办?我们会让报文匹配下一条规则。下一条规则工作方式和第一条是一样的,同样,数据包根据自己的特征去匹配ACL的规则。如果匹配了规则, 则报文或者被丢弃,或者报文被转发。这样,报文会对ACL的规则一条一条匹配(在找不到匹配的规则时候)。
有这样一种情况,如果这个报文任何一条ACL规则都没有能匹配,那么最后我们对这个报文如何处理呢?
我们可以看一下。在ACL的规则中,最后有一条隐含的规则,我称之为“丢弃全部”。也就是说,在报文进行ACL规则匹配的时候,如果每条规则都没有匹配到,那么最后报文会被直接丢弃掉。也就是说,最后ACL有一条“丢弃全部”的规则。
ACL的规则总结
-
按照由上到下的顺序执行,找到第一个匹配后即执行相应的操作(然后跳出ACL)
-
每条ACL的末尾隐含一条deny any 的规则
-
ACL可应用于某个具体的IP接口的出方向或入方向
-
ACL可应用于系统的某种特定的服务(如针对设备的TELNET)
-
在引用ACL之前,要首先创建好ACL
-
对于一个协议,一个接口的一个方向上同一时间内只能设置一个ACL
首先第一条。ACL在工作的时候,是按照由上到下的顺序执行。意思是说ACL的规则很多,当报文进行ACL匹配的时候,它首先去查找第一条规则。如果第一条规则匹配的话,报文会直接跳出ACL,否则它会逐个查找,直到找到一个匹配的规则,然后进行相应的处理,或者丢弃,或者允许转发。这里,我们思考一下,怎样配置ACL去实现我们的目的?其实这里并不是技术上的问题,只是说从逻辑上来讲,如何设计ACL的匹配规则来实现我们的目的。
第二条规则.每个ACL的最后都会有一条deny any的规则。当报文进行ACL匹配的时候,当所有的之前的规则全部都没有匹配到,那么最后这个报文会被丢弃。这是一个大家要注意的地方。另外我们看一下,因为前面我们讲到了,ACL的配置流程最后一步骤,我们要把ACL绑定到相应的服务或者接口,这个是非常重要的。很多人在进行ACL配置的时候,都会把最后一条忽略掉。但是我们要注意,如果最后一步骤我们没有设置的话,其实ACL在设备上是没有生效的。所以说最后我们一定要把ACL应用到一个接口或者一些服务。我们可以看一下,ACL可以应用到具体的IP接口,我们可以应用到出方向或者入方向。这两个方向是指数据流的流向。我们还可以把ACL应用到系统特定的服务,比如说telnet服务或者ssh服务。这个时候我们可以用ACL对特定的访问进行控制。
我们还要看一下,在引用ACL之前,首先我们要把ACL配置好。这样才可以把ACL应用到具体的接口或者具体的服务。这里也是ACL配置流程的一个顺序。
再看一下最后一条,非常重要,对于一个协议,一个接口,一个方向上,在一个时间点,我们只能设置一个ACL。很多朋友会问到,在很多设备上面,我们在进行ACL配置的时候,可不可以在一个接口上、一个方向上配置多个ACL呢?其实我们在这样操作的时候,后面配置的ACL会把前面配置的ACL进行覆盖。换句话说,在同一个方向同一个时间点内,只能设置一个ACL。这个也是我们要注意的一个地方。
ACL的配置
接下来我们看一个思考问题,如何放置ACL?我们在前面讲过,ACL分为两类,一个是标准ACL,另外一个是扩展ACL。那么,像这样一个网络,ACL应用放在一个什么位置呢?大家可以思考一下。我们有一个参考答案,大家可以看一下。对标准ACL,我们可以把它配置在距离目的网络最近的地方。这个只是一个经验之谈。我们在实际工作中,不一定按照这种方式。这个例子可以给大家参考一下。标准ACL,可以配置在距离目的网络最近的路由器上。那么对于扩展ACL,一般放在什么位置上呢?大家思考一下。我们这里也有一个参考答案。对于扩展ACL,我们一般可以把它配置在距离源网络最近的路由器上。为什么这样呢?其实扩展ACL匹配的精度很高,所以在距离源网络比较近的地方,进行扩展ACL的配置,可以对这个报文更精细地进行过滤。那么对于标准ACL,为什么我们把它放在距离目的网络最近的地方呢?这个就是因为在距离目的网络最近的地方,流量是很多的。不仅仅是从源网络过来的流量,还有从其它地方过来的流量。所以如果我们放置一个扩展ACL,是不合适的。这个时候,最合适的讲,放置一个标准ACL,我们可以粗略地根据这个报文的源IP地址对它进行过滤。这个例子中的答案只是一些经验之谈,大家可以参考一下。我们在实际工作中可以根据自己网络的情况进行灵活的ACL设置。
标准ACL放在离目的地最近的路由器上,扩展ACL放在离源最近的路由器上
一、编号标准。
标准 ACL:1~99,1000~1499
扩展 ACL:100~199,1500~1999
基本ACL:只对源IP地址进行匹配。
扩展ACL:对源IP地址、目的IP地址、IP协议类型、TCP源端口号、TCP目的端口号、UDP源端口号、UDP目的端口号、ICMP类型、ICMP Code、DSCP、ToS、Precedence进行匹配。
二、ACL的配置包括以下三个步骤,请依次进行配置:
-
配置时间段(可选)
-
定义访问控制列表
-
将访问控制列表应用到物理端口
(一)配置时间段
配置绝对时间段
定义时间段的起始和结束时间。
配置周期性时间段
定义周期的起始和结束时间。
(二)时间段配置实例
(三)标准ACL配置步骤
在基本ACL配置模式下使用语句rule <rule-no> {permit|deny} {<source> [<source-wildcard>]|any} [time-range <timerange-name>] 配置ACL,其中:
IP 标准ACL使用列表号 1 -99或1000-1499,缺省通配符为 0.0.0.0
“no access-list access-list-number” 删除整个ACL。
在接口配置模式下使用语句ip access-group <acl-number>{ in | out }将配置好的ACL应用在接口上,其中:
在接口上应用ACL,设置进入或外出方向
“no ip access-group access-list-number” 去掉接口上的ACL设置
(四)反掩码(通配符的作用)
-
0 代表对应位必须与前面的地址相应位一致
-
1 代表对应位可以是任意值
匹配特定主机地址:
具体主机:host 匹配一台主机ip
匹配任意地址:
-
0.0.0.0 255.255.255.255 意为接受所有地址
-
可简写为 any
如果想指定匹配所有地址可使用IP地址与通配符为 0.0.0.0 255.255.255.255,其中IP地址0.0.0.0代表所有网络地址,而通配符255.255.255.255代表不管数据包中的IP地址是什么都满足匹配条件。所以0.0.0.0 255.255.255.255 意为接受所有地址并且可简写为 any
匹配特定子网:
例如:指定特定地址范围 172.30.16.0/24 到 172.30.31.0/24
地址与通配符如下:172.30.16.0 0.0.15.255
对于特定子网网段范围的匹配,其计算方式与子网划分与子网掩码的计算类似但“0”与“1”的含义相反
(五)扩展ACL的配置
扩展ACL序列号: 100~199,1500~1999
运算符:lt(less than, 小于)gt(greater than, 大于)eq(equal, 等于)
使用命令rule <rule-no> {permit|deny} {<ip-number>|ip/icmp/tcp/udp} {<source> <source-wildcard>|any} {<dest> <dest-wildcard>|any} [{[precedence <pre-value>] [tos <tos-value>]}|dscp <dscp-value>] [time-range <timerange-name>] 配置扩展ACL
-
{ permit | deny }为关键字,必选项
-
Protocol为协议类型,包括:协议类型----协议类型包括Ip 、Udp、Tcp、Icmp
-
source source-wildcard为源地址及源地址掩码
-
destination destination-wildcard为目的地址及目的地址掩码
在接口配置模式下使用命令ZXR10 (config-if)#ip access-group <acl-number>{ in | out }将ACL应用到接口上。
ACL的应用
ACL配置实例:
Mail 服务器: 192.168.4.50
FTP 服务器: 192.168.4.60
VOD 服务器: 192.168.4.70
某公司有一台L3交换机,服务器和部门A、部门B的用户都连接到这台交换机上,并有以下规定:
部门A和部门B的用户在上班时间(9:00~17:00)不允许访问FTP服务器和VOD服务器,但可以随时访问Mail服务器。
内部用户可以通过代理192.168.3.100访问Internet,但不允许部门A的用户在上班时间访问Internet。
部门A和部门B的总经理(IP地址分别为192.168.1.100和192.168.2.100)可以随时访问Internet和所有服务器。
交换机配置:
ACL实用案例-使用ACL防止病毒攻击
常见的病毒都是利用系统的一些端口入侵系统的,只要禁用了这些端口就能有效地防范此类病毒。如蠕虫病毒通过入侵UDP1434端口。
查看 ACL
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)