访问控制列表(ACL)是一种基于包过滤的
访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。访问控制列表被广泛地应用于
路由器和
三层交换机,借助于访问控制列表,可以有效地控制用户对网络的访问,从而最大程度地保障
网络安全。
简介
访问控制列表(Access Control Lists,ACL)是应用在
路由器接口的指令列表。这些指令列表用来告诉路由器哪些
数据包可以收、哪些数据包需要拒绝。至于数据包是被接收还是拒绝,可以由类似于源地址、目的地址、
端口号等的特定指示条件来决定。
访问控制列表具有许多作用,如限制网络流量、提高网络性能;通信流量的控制,例如ACL可以限定或简化路由更新信息的长度,从而限制通过路由器某一网段的通信流量;提供网络安全访问的基本手段;在路由器端口处决定哪种类型的通信流量被转发或被阻塞,例如,用户可以允许E-mail通信流量被路由,拒绝所有的 Telnet通信流量等。
访问控制列表从概念上来讲并不复杂,复杂的是对它的配置和使用,许多初学者往往在使用访问控制列表时出现错误。
功能
1)限制网络流量、提高网络性能。例如,ACL可以根据数据包的协议,指定这种类型的数据包具有更高的优先级,同等情况下可预先被网络设备处理。
2)提供对通信流量的控制手段。
3)提供网络访问的基本安全手段。
4)在网络设备接口处,决定哪种类型的通信流量被转发、哪种类型的通信流量被阻塞。
例如,用户可以允许E- mail通信流量被路由,拒绝所有的Telnet通信流量。例如,某部门要求只能使用WWW这个功能,就可以通过ACL实现;又例如,为了某部门的保密性,不允许其访问外网,也不允许外网访问它,就可以通过ACL实现。
工作原理
①当一个数据包进入一个端口,路由器检查这个数据包是否可路由。
如果是可以路由的,路由器检查这个端口是否有ACL控制进入数据包。
如果有,根据ACL中的条件指令,检查这个数据包。
如果数据包是被允许的,就查询路由表,决定数据包的目标端口。
②路由器检查目标端口是否存在ACL控制流出的数据包。
若不存在,这个数据包就直接发送到目标端口。
若存在,就再根据ACL进行取舍。然后在转发到目的端口。
总之,一入站数据包,由路由器处理器调入内存,读取数据包的包头信息,如目标IP地址,并搜索路由器的路由表,查看是否在路由表项中,如果有,则从路由表的选择接口转发(如果无,则丢弃该数据包),数据进入该接口的访问控制列表(如果无访问控制规则,直接转发),然后按条件进行筛选。
当ACL处理数据包时,一旦数据包与某条ACL语句匹配,则会跳过列表中剩余的其他语句,根据该条匹配的语句内容决定允许或者拒绝该数据包。如果数据包内容与ACL语句不匹配,那么将依次使用ACL列表中的下一条语句测试数据包。该匹配过程会一直继续,直到抵达列表末尾。最后一条隐含的语句适用于不满足之前任何条件的所有数据包。这条最后的测试条件与这些数据包匹配,通常会隐含拒绝一切数据包的指令。此时路由器不会让这些数据进入或送出接口,而是直接丢弃。最后这条语句通常称为隐式的“deny any”语句。由于该语句的存在,所以在ACL中应该至少包含一条permit语句,否则,默认情况下,ACL将阻止所有流量。
分类
标准IP访问列表
一个标准IP访问控制列表匹配IP包中的源地址或源地址中的一部分,可对匹配的包采取拒绝或允许两个操作。编号范围是从1到99的访问控制列表是标准IP访问控制列表。
扩展IP访问
扩展IP访问控制列表比标准IP访问控制列表具有更多的匹配项,包括协议类型、源地址、目的地址、
源端口、目的端口、建立连接的和IP优先级等。编号范围是从100到199的访问控制列表是扩展IP访问控制列表。
命名的IP访问
所谓命名的IP访问控制列表是以列表名代替列表编号来定义IP访问控制列表,同样包括标准和扩展两种列表,定义过滤的语句与编号方式中相似。
标准IPX访问
标准IPX访问控制列表的编号范围是800-899,它检查IPX源网络号和目的网络号,同样可以检查源地址和目的地址的节点号部分。
扩展IPX访问
扩展IPX访问控制列表在标准IPX访问控制列表的基础上,增加了对IPX报头中以下几个字段的检查,它们是协议类型、源Socket、目标Socket。扩展IPX访问控制列表的编号范围是900-999。
命名的IPX访问
与命名的IP访问控制列表一样,命名的IPX访问控制列表是使用列表名取代列表编号。从而方便定义和引用列表,同样有标准和扩展之分。
访问控制列表的使用
ACL的使用分为两步:
(1)创建访问控制列表ACL,根据实际需要设置对应的条件项;
(2)将ACL应用到路由器指定接口的指定方向(in/out)上。
在ACL的配置与使用中需要注意以下事项:
(1)ACL是自顶向下顺序进行处理,一旦匹配成功,就会进行处理,且不再比对以后的语句,所以ACL中语句的顺序很重要。应当将最严格的语句放在最上面,最不严格的语句放在底部。
(2)当所有语句没有匹配成功时,会丢弃分组。这也称为ACL隐性拒绝。
(3)每个接口在每个方向上,只能应用一个ACL。
(4)标准ACL应该部署在距离分组的目的网络近的位置,扩展ACL应该部署在距离分组发送者近的位置。
应用
ACL可以应用于多种场合,其中最为常见的应用情形如下:
1、过滤邻居设备间传递的路由信息。
2、控制交换访问,以此阻止非法访问设备的行为,如对 Console接口、 Telnet或SSH访问实施控制。
3、控制穿越网络设备的流量和网络访问。
4、通过限制对路由器上某些服务的访问来保护路由器,如HTTP、SNMP和NIP等。
5、为DDR和 IPSeC VPN定义感兴趣流。
6、能够以多种方式在IOS中实现QoS(服务质量)特性。
7、在其他安全技术中的扩展应用,如TCP拦截和IOS防火墙。