ACl访问控制列表(AccessControlList,ACL)是路由器和交换机接口的指令列表,用来控制端口进出的数据包。ACL适用于所有的被路由协议,如IP、IPX、AppleTalk等。信息点间通信和内外网络的通信都是企业网络中必不可少的业务需求,为了保证内网的安全性,需要通过安全策略来保障非授权用户只能访问特定的网络资源,从而达到对访问进行控制的目的。简而言之,ACL可以过滤网络中的流量,是控制访问的一种网络技术手段。配置ACL后,可以限制网络流量,允许特定设备访问,指定转发特定端口数据包等。如可以配置ACL,禁止局域网内的设备访问外部公共网络,或者只能使用FTP服务。ACL既可以在路由器上配置,也可以在具有ACL功能的业务软件上进行配置。ACL是物联网中保障系统安全性的重要技术,在设备硬件层安全基础上,通过对在软件层面对设备间通信进行访问控制,使用可编程方法指定访问规则,防止非法设备破坏系统安全,非法获取系统数据。作用ACL可以限制网络流量、提高网络性能。例如,ACL可以根据数据包的协议,指定数据包的优先级。ACL提供对通信流量的控制手段。例如,ACL可以限定或简化路由更新信息的长度,从而限制通过路由器某一网段的通信流量。ACL是提供网络安全访问的基本手段。ACL允许主机A访问人力资源网络,而拒绝主机B访问。ACL可以在路由器端口处决定哪种类型的通信流量被转发或被阻塞。例如,用户可以允许E-mail通信流量被路由,拒绝所有的Telnet通信流量。例如:某部门要求只能使用这个功能,就可以通过ACL实现;又例如,为了某部门的保密性,不允许其访问外网,也不允许外网访问它,就可以通过ACL实现。3P原则记住3P原则,您便记住了在路由器上应用ACL的一般规则。您可以为每种协议(perprotocol)、每个方向(perdirection)、每个接口(perinterface)配置一个ACL:每种协议一个ACL:要控制接口上的流量,必须为接口上启用的每种协议定义相应的ACL。每个方向一个ACL:一个ACL只能控制接口上一个方向的流量。要控制入站流量和出站流量,必须分别定义两个ACL。每个接口一个ACL:一个ACL只能控制一个接口(例如快速以太网0/0)上的流量。ACL的编写可能相当复杂而且极具挑战性。每个接口上都可以针对多种协议和各个方向进行定义。示例中的路由器有两个接口配置了IP、AppleTalk和IPX。该路由器可能需要12个不同的ACL—协议数(3)乘以方向数(2),再乘以端口数执行过程一个端口执行哪条ACL,这需要按照列表中的条件语句执行顺序来判断。如果一个数据包的报头跟表中某个条件判断语句相匹配,那么后面的语句就将被忽略,不再进行检查。数据包只有在跟第一个判断条件不匹配时,它才被交给ACL中的下一个条件判断语句进行比较。如果匹配(假设为允许发送),则不管是第一条还是最后一条语句,数据都会立即发送到目的接口。如果所有的ACL判断语句都检测完毕,仍没有匹配的语句出口,则该数据包将视为被拒绝而被丢弃。这里要注意,ACL不能对本路由器产生的数据包进行控制。如果设备使用了TCAM,比如auteU3052交换机,那么所有的ACL是并行执行的。举例来说,如果一个端口设定了多条ACL规则,并不是逐条匹配,而是一次执行所有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起作用。华为配置方法[AR1]acl3000创建高级访问列表3000[AR1-acl-adv-3000]rule5denytcpsource192.168.1.00.0.0.255destination172.16.10.10.0.0.0destination-porteq21阻止192.168.1.0网段访问172.16.10.1主机的21端口[AR1-acl-adv-3000]rule10denytcpsource192.168.2.00.0.0.255destination172.16.10.20.0.0.0阻止192.168.2.0网段访问172.16.10.2的主机[AR1-acl-adv-3000]rule15permitip允许所有的ip流量通过[AR1-acl-adv-3000]q[AR1]intg2/0/2[AR1-GigabitEthernet2/0/2]traffic-filteroutboundacl3000将acl3000应用到GigabitEthernet2/0/2出接口上[AR1-GigabitEthernet2/0/2]q[AR1]displaytraffic-filterapplied-record[AR1]disacl3000思科配置方法Router(config)#access-list100denytcp192.168.1.10.0.0.255192.168.5.20.0.0.0eq80禁止192.168.1.0网段访问192.168.5.2主机的80端口Router(config)#access-list100denytcp192.168.1.10.0.0.255192.168.4.20.0.0.255禁止192.168.1.0网段访问192.168.4.0网段Router(config)#access-list100Permittcpanyany允许所有的TCP流量通过Router(config)#intg0/0Router(config-if)#ipaccess-group100in将编号为100的访问列表应用到g0/0的进接口上