ACL技术原理浅析及实例
摘要:本文主要介绍了IP访问控制列表(ACL)技术,对ACL的工作原理和工作过程进行了深入阐述,并对目前主要ACL应用进行了分析,最后给出具体应用的配置实例(本文以Cisco路由器的IOS的ACL为例,主要给出标准和扩展的配置),并就ACL需要注意的相关问题给出具体建议。
一、引言
ACL是一种基于包过滤的流控制技术,在路由器中被广泛采用,它可以有效的在三层上控制网络用户对网络资源的访问,既可以具体到两台网络设备间的网络应用,也可以按照网段进行大范围的访问控制管理。通过实施ACL,可以有效的部署企业网络出网策略,也可以用来控制对局域网内部资源的访问能力,保障资源安全性,但会增加路由器开销,也会增加管理的复杂度和难度,是否采用ACL技术,是管理效益与网络安全之间的一个权衡。初期仅在路由器上支持ACL,近些年来已经扩展到三层交换机,部分二层交换机如2950之类也开始提供ACL的支持。
二、概述
1.ACL工作原理
ACL:Acess Control List,即访问控制列表。这张表中包含了匹配关系、条件和查询语句,ACL表只是一个框架结构,其目的是为了对某种访问进行控制,使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址、目的地址、源端口、目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。(注意:过滤的依据仅仅只是第三层和第四层包头中的部分信息,如无法识别到具体的人,无法识别到应用内部的权限级别等。因此,要和系统级及应用级的访问权限控制结合使用)
ACL中规定了两种操作,所有的应用都是围绕这两种操作来完成的:允许、拒绝。ACL主要用于对入站数据、出站数据、被路由器中继的数据进行控制。
2.ACL工作过程
(1)无论路由器上有没有ACL,接到数据包后,当数据进入某个入站口时,路由器首先对其进行检查,看其是否可路由,如果不可路由那么就丢弃,否则通过查路由选择表发现该路由的详细信息及对应的出接口:
(2)假设可路由,则找出要将其送出站的接口,此时路由器检查该出站口有没有被编入ACL,没有,则直接从该口送出。如果有ACL,骼由器将依照从上到下的顺序依次将该数据和ACL进行匹配,逐条执行,如果与其中某条ACL匹配,根据该ACL指定操作对数据进行相应处理(允许或拒绝),并停止继续查询;如果查到ACL的末尾也未找到匹配,则调用ACL最末尾的一条隐含语句deny any将该数据包丢弃;
(3)ACL有两种类型:入站ACL和出站ACL。上面的工作过程的解释是针对出站ACL,它是在数据包进入路由器并进行了路由选择找到了出接口后进行的匹配操作;而人站ACL是指当数据刚进入路由器接口时进行的匹配操作,减少了查表过程,但并不能说人站表省略了路由过程就认为它较之出站表更好,要依照实际情况。
三、主要ACL技术
访问控制列表大的划分可分为两类:标准访问控制列表和扩展访问控制列表,他们的命令都具有基本格式:Access—list access—list—nun—ber{permit/deny}match—condition
1.标准IP访问控制列表
一个标准IP访问控制列表匹配IP包中的源地址或源地址中的一部分,可对匹配的包采取拒绝或允许两个操作。编号范围是从1到99的访问控制列表是标准IP访问控制列表。
2.扩展IP访问控制列表
扩展IP访问控制列表比标准IP访问控制列表具有更多的匹配项,包括协议类型、源地址、目的地址、源端口、目的端口、建立连接的和IP优先级等。编号范围从100到199的访问控制列表是扩展IP访问控制列表。
3.命名的IP访问控制列表
所谓命名的IP访问控制列表是以列表名代替列表编号来定义IP访问控制列表,同样包括标准和扩展两种列表,定义过滤的语句与编号方式中相似。
实际依据具体需要而选用不同的控制列表。
四、配置ACL实例
总体思想是先在全局配置模式下设置ACL,后在接口配置模式下将ACL绑定到端口,越精确的表项越靠前,而越笼统的表项越靠后放置。
1.ACL标准控制列表配置实例:
要求网络192.168.10.0/24网段上的服务器资源禁止被192.168.20.0/24网段上的主机访问。
配置如下:
(1)准备工作:
假设网络基本配置(IP地址和路由)已经完成,但要在路由器RTA上做子接口。
RTA(config)#interface fastEthemet 0/0.1
RTA(config-subif)#encapsulation dotlq 10(在交换机SW上已划分VLAN 10,20)
RTA(config—subi0#ip address 192.168.10.1 255.255.255.128
RTA(config)#interface fastEthemet 0/0.2
RTA(config-subif)#encapsulation dotlq 20
RTA(config-subif)#ip address 192.168,t0.129 255.255.255.128
(2)ACL配置:
①确定未配置ACL之前的访问PC2访问PCI、BBS、Web畅通:
PC2 ping PCI、BBS、Web的IP地址;
②在路由器上RTA上做适当的ACL配置,确保PC2不能访问
RTA上192,168,10.0/24网段上的服务器资源,命令如下:
RTA(config)#access—list 10 deny 192.168.20.0 0.0.0.255——拒绝192.168,20.0网段
RTA(config)#access—list 10denyhost 192.168.20.110—拒绝192.168.
20.110这台具体的机器
RTA(config)#aceess—list 10 permit any一允许其他的IP访问(一个正确的ACL语句必然包含至少一条permit语句)
③ACL应用:将在RTA上做得ACL 10控制列表应用到Web和BBS服务器所在子网(192.168.10.0/25的后半个c)在路由器上对应的予接口F0/0.2上。
RTA(eonfig)#interface fastEthemet 0/0.2
RTA(config—subi0#ip access—group 10 out
④测试验证:PC2 ping PCI、BBS、Web,确定不能访问RTA上192.168,10.0124网段上的服务器资源(192.168.10.0/25的后半个C),而能访问PCI。
2.ACL扩展控制列表配置实例:
要求内网中192.168.20.140/25的用户不能访问www服务(即拓扑图中的BBS服务和Web服务)。
主要配置命令如下:
RTA(config)#access—list 100 deny tcp 192.168.20.140 0.0.0.127 any eq 80
RTA(config)#access-list 100 permit ip any any
RTA(config)#interface fastEthernet 0/0.2
RTA(config)#ip access-group 100 in
五、ACL相关问题
1.正确放置ACL:ACL通过过滤数据包并且丢弃不希望抵达目的地的数据包来控制通信流量。然而,网络能否有效地减少不必要的通信流量,这还要取决于网络管理员把ACL放置在哪个地方,标准ACL要尽量靠近目的端,扩展ACL要尽量靠近源端。
2.定义要完整:ACL的定义也是基于每一种协议的。如果路由器接口配置成为支持三种协议(IP、AppleTalk以及IPX)的情况,那么,用户必须定义三种ACL来分别控制这三种协议的数据包。
3.ACL命令中的in和out:这两个参数可以控制接口中不同方向的数据包,缺省为out。ACL在一个接口可以进行双向控制,两条命令执行的ACL表号可以不同,但在一个接口的一个方向上只能有一个ACL控制。
4.ACL的发展:在Cisco IOSll.2以后的版本中,可以使用名字命名的ACL;从IOS 12.0开始,Cisco路由器新增加了一种基于时间的ACL,可以根据不同时间来控制网络数据包的转发,对于编号访问表和名称访问表均适用;基于端口和VLAN的访问控制列表,可对交换机的具体对应端口或整个VLAN进行访问控制;带有Established的扩展访问列表允许内部用户访问外部网络,而拒绝外部网络访问内部网络,但established语句只支持TCP协议,还要设置相应的ACL语句将需要的UDP等传输打开。
六、结束语
在实施ACL的过程中,应当遵循最小特权原则(只给受控对象完成任务所必须的最小的权限)和默认丢弃原则(在CISCO路由交换设备中默认最后一句为ACL中加入了DENY ANY ANY,也就是丢弃所有不符合条件的数据包)。
访问控制列表ACL增加了在路由器接口上过滤数据包出入的灵活性,可以用来限制网络流量,也可以控制用户和设备对网络的使用,一般的路由器都提供了ACL功能,对于一些网络流量不是很大的场合,完全可以借助ACL使路由器实现防火墙的部分功能,但他不能完全的代替防火墙。当接收一个数据包时,ACL先检查访问控制列表,再执行相应的接受和拒绝的步骤,并不能像专业的防火墙那样作相应的数据包的分析。如果让ACL代替防火墙,会让路由器无法工作,ACL只是初级防范。