ACL
访问控制列表(ACL)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。访问控制列表被广泛地应用于路由器和三层交换机。借助于访问控制列表,可以有效地控制用户对网络的访问,从而程度地保障网络安全。
定义
访问控制列表(ACL,Access Control Lists)是应用在路由器(或三层交换机)接口上的指令列表,用来告诉路由器哪些数据可以接收,哪些数据是需要被拒绝并丢弃。
ACL的定义是基于协议的,它适用于所有的路由协议,如IP、IPX等。它在路由器上读取数据包头中的信息,如源地址、目的地址、使用的协议、源端口、目的端口等,并根据预先定义好的规则对包进行过滤,从而达到对网络访问的、灵活控制。 [2]
访问控制列表由一系列包过滤规则组成,每条规则明确地定义对指定类型的数据进行的操作(允许、拒绝等),访问控制列表可关联作用于三层接口、VLAN,并且具有方向性。当设备收到一个需要进行访问控制列表处理的数据分组时,会按照访问控制列表的列表项自顶向下进行顺序处理。一旦找到匹配项,列表中的后续语句就不再处理,如果列表中没有匹配项,则此分组将会被丢弃 [1] 。目前主要有三种ACL:标准ACL、扩展ACL和命名ACL。
匹配过程
路由器接口的访问控制取决于应用在其上的ACL。数据在进(出)网络前,路由器会根据ACL对其进行匹配,匹配成功将对数据进行过滤或转发,匹配失败则丢弃数据。
ACL实质上是一系列带有自上而下逻辑顺序的判断语句。当数据到达路由器接口时,ACL首先将数据与第1条语句进行比较,如果符合当前条件将直接进入控制策略,后面的语句将被忽略不再检查;如果与条语句条件不符合,则将数据交给第2条语句进行比较,符合条件将直接进入控制策略,不符合条件则继续交给下一条语句。以此类推。如果数据到达后一条语句仍然不匹配,即所有判断语句条件都不符合,则拒绝并丢弃该数据。
应用规则编辑
1.“3P”原则
在路由器上应用ACL时,可以为每种协议(Per Protocol)、每个方向(Per Direction)
和每个接口(Per Interface)配置一个ACL,一般称为“3P原则”。
(1)一个ACL只能基于一种协议,因此每种协议都需要配置单独的ACL。
(2)经过路由器接口的数据有进(ln)和出(Out)两个方向,因此在接口上配置访问控制列表也有进(In)和出(Out)两个方向。每个接口可以配置进方向的ACL,也可以配置出方向的ACL,或者两者都配置,但是一个ACL只能控制一个方向。
(3)一个ACL只能控制一个接口上的数据流量,无法同时控制多个接口上的数据流量。
2.语句顺序决定了对数据的控制顺序
ACL的语句是一种自上而下的逻辑排列关系。数据匹配过程中是依次对语句进行比较,一旦匹配成功则按照当前语句控制策略处理,不再与之后的语句进行比较。因此,正
确的语句顺序才能得到所需的控制效果。
3.至少有一条允许(Permit)语句
所有ACL的后一条语句都是隐式拒绝语句,表示当所有语句都无法匹配时,将拒绝数据通过并自动丢弃数据,以防数据意外进入网络。因此,在写“拒绝(deny)”的ACL时,一定至少要有一条允许(Permit)语句,否则配置ACL的接口将拒绝任何数据通过,影响正常的网络通信。
4.有限制性的语句应该放在ACL的靠前位置
有限制性的语句放在ACL的靠前位置,可以首先过滤掉很多不符合条件的数据,节省后面语句的比较时间,从而提高路由器的工作效率。
作用编辑
访问控制列表的主要作用如下:
(1)拒绝、允许特定的数据流通过网络设备,如防止攻击、访问控制、节省带宽等;
(2)对特定的数据流、报文、路由条目等进行匹配和标识,以用于其他目的路由过滤,如QoS、Route-map等。
分类编辑
根据过滤字段(元素)可将访问控制列表分为以下两类:
(1)标准访问控制列表:只能根据数据包的源IP地址进行过滤;编号范围:1~99。
(2)扩展访问控制列表:可以根据协议、源/目的IP地址、源/目的端口号进行包过滤。编号范围:100~199。
根据访问控制列表的命名方式可将访问控制列表分为以下两类:
(1)编号访问控制列表:编号ACL在所有ACL中分配一个的号码。
(2)名称访问控制列表:名称ACL.在所有ACL分配一个的名称。名称ACL有利于让使用者通过ACL的名称了解此ACL的作用。更加有利于使用与维护。