ACL规则

ACL规则各比特位中 0 表示 检查相应的位 1 表示 不检查相应的位 概括为一句话就是 检查 0 忽略 1

大家好,欢迎来到IT知识分享网。

ACL规则

一、概念

  • 访问控制列表ACL(Access Control List)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。
  • ACL本质上是一种报文过滤器,规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。

二、为什么要使用ACL

ACL作为一个过滤器,设备通过应用ACL来阻止和允许特定流量的流入和流出,如果没有它,任何流量都会自由流入和流出,使得网络容易受到攻击。

三、ACL的作用

  • 提供安全访问:企业重要服务器资源被随意访问,企业机密信息容易泄露,造成安全隐患。使用ACL可以指定用户访问特定的服务器、网络与服务,从而避免随意访问的情况。
  • 防止网络攻击:Internet病毒肆意侵略企业内网,内网环境的安全性堪忧。使用ACL可以封堵高危端口,从而达成为外网流量的阻塞。
  • 提高网络带宽利用率:网络带宽被各类业务随意挤占,服务质量要求最高的语音、视频业务的带宽得不到保障,造成用户体验差。使用ACL实现对网络流量的精确识别和控制,限制部分网络流量从而保障主要业务的质量。

四、ACL的组成

ACL的每一条规则都会允许或者阻止特定的流量,在定义一条合理的ACL规则之前,需要了解其基本组成。

  • ACL标识

    :使用数字或者名称来标识ACL。

    • 使用数字标识ACL:不同的类型的ACL使用不同的数字进行标识。
    • 使用名称标识ACL:可以使用字符来标识ACL,就像用域名代替IP地址一样,更加方便记忆。
  • 规则

    :即描述匹配条件的判断语句。

    • 规则编号:用于标识ACL规则,所有规则均按照规则编号从小到大进行排序。
    • 动作:包括permit/deny两种动作,表示设备对所匹配的数据包接受或者丢弃。
    • 匹配项:ACL定义了极其丰富的匹配项。包括生效时间段、IP协议(ICMP、TCP、UDP等)、源/目的地址以及相应的端口号(21、23、80等)。

五、ACL的分类

随着ACL技术的发展,其种类越来越丰富,根据其不同的规则和使用场景,常用的可分为以下几类:

1、基本ACL

基本ACL规则只包含源IP地址,对设备的CPU消耗较少,可用于简单的部署,但是使用场景有限,不能提供强大的安全保障。(2000-2999)

2、高级ACL

相较于基本ACL,高级ACL提供更高的扩展性,可以对流量进行更精细的匹配。通过配置高级ACL,可以阻止特定主机或者整个网段的源或者目标。除此之外,还可以使用协议信息(IP、ICMP、TCP、UDP)去过滤相应的流量。

(3000-3999)

3、二层ACL

在公司的内部网络中,想对特定的终端进行访问权限控制,这时就需要二层ACL。使用二层ACL,可以根据源MAC地址、目的MAC地址、802.1p优先级、二层协议类型等二层信息对流量进行管控。(4000-4999)

4、用户ACL

由于企业内部同部门的工作人员的终端不在同一个网段难以管理,需要将其纳入一个用户组,并对其用户组进行访问权限管理,这时候就需要用户ACL。用户ACL在高级ACL的基础上增加了用户组的配置项,可以实现对不同用户组的流量管控。(6000-6031)

在这里插入图片描述

六、ACL的匹配机制

  • 设备将报文与ACL规则进行匹配时,遵循“一旦命中即停止匹配”的机制

在这里插入图片描述
首先系统会查找设备上是否配置了ACL。

  • 如果ACL不存在,则返回ACL匹配结果为:不匹配。
  • 如果ACL存在,则查找设备是否配置了ACL规则。
    • 如果规则不存在,则返回ACL匹配结果为:不匹配。
    • 如果规则存在,则系统会从ACL中编号最小的规则开始查找。
  • 如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)。
  • 如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)。
  • 如果未匹配上规则,则继续查找下一条规则,以此循环。如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配。

从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”。

  • 匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则。

    不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”。

  • 不匹配(未命中规则):指不存在ACL,或ACL中无规则,再或者在ACL中遍历了所有规则都没有找到符合匹配条件的规则。

    以上三种情况,都叫做“不匹配”。

七、ACL的匹配顺序

一条ACL可以由多条“deny | permit”语句组成,每一条语句描述一条规则,这些规则可能存在重复或矛盾的地方。例如,在一条ACL中先后配置以下两条规则:

rule deny ip destination 10.1.0.0 0.0.255.255 //表示拒绝目的IP地址为10.1.0.0/16网段地址的报文通过 rule permit ip destination 10.1.1.0 0.0.0.255 //表示允许目的IP地址为10.1.1.0/24网段地址的报文通过,该网段地址范围小于10.1.0.0/16网段范围 

其中,permit规则与deny规则是相互矛盾的。对于目的IP=10.1.1.1的报文,如果系统先将deny规则与其匹配,则该报文会被拒绝通过。相反,如果系统先将permit规则与其匹配,则该报文会得到允许通过。

因此,对于规则之间存在重复或矛盾的情形,报文的匹配结果与ACL的匹配顺序是息息相关的。

设备支持两种ACL匹配顺序:配置顺序(config模式)和自动排序(auto模式)。缺省的ACL匹配顺序是config模式。

1、配置顺序

配置顺序,即系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。

  • 如果配置规则时指定了规则编号,则规则编号越小,规则插入位置越靠前,该规则越先被匹配。
  • 如果配置规则时未指定规则编号,则由系统自动为其分配一个编号。该编号是一个大于当前ACL内最大规则编号且是步长整数倍的最小整数,因此该规则会被最后匹配。

2、自动排序

自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配。规则中定义的匹配项限制越严格,规则的精确度就越高,即优先级越高,系统越先匹配。各类ACL的“深度优先”顺序匹配原则如表1-2所示。

在这里插入图片描述

在自动排序的ACL中配置规则时,不允许自行指定规则编号。系统能自动识别出该规则在这条ACL中对应的优先级,并为其分配一个适当的规则编号。

例如,在auto模式的高级ACL 3001中,先后配置以下两条规则:

rule deny ip destination 10.1.0.0 0.0.255.255 //表示拒绝目的IP地址为10.1.0.0/16网段地址的报文通过 rule permit ip destination 10.1.1.0 0.0.0.255 //表示允许目的IP地址为10.1.1.0/24网段地址的报文通过,该网段地址范围小于10.1.0.0/16网段范围 

两条规则均没有带VPN实例,且协议范围、源IP地址范围相同,所以根据表1-2中高级ACL的深度优先匹配原则,接下来需要进一步比较规则的目的IP地址范围。由于permit规则指定的目的地址范围小于deny规则,所以permit规则的精确度更高,系统为其分配的规则编号更小。配置完上述两条规则后,ACL 3001的规则排序如下:

# acl number 3001 match-order auto rule 5 permit ip destination 10.1.1.0 0.0.0.255 rule 10 deny ip destination 10.1.0.0 0.0.255.255 # 

此时,如果再插入一条新的规则rule deny ip destination 10.1.1.1 0(目的IP地址范围是主机地址,优先级高于以上两条规则),则系统将按照规则的优先级关系,重新为各规则分配编号。插入新规则后,ACL 3001新的规则排序如下:

# acl number 3001 match-order auto rule 5 deny ip destination 10.1.1.1 0 rule 10 permit ip destination 10.1.1.0 0.0.0.255 rule 15 deny ip destination 10.1.0.0 0.0.255.255 # 

相比config模式的ACL,auto模式ACL的规则匹配顺序更为复杂,但是auto模式ACL有其独特的应用场景。例如,在网络部署初始阶段,为了保证网络安全性,管理员定义了较大的ACL匹配范围,用于丢弃不可信网段范围的所有IP报文。随着时间的推移,实际应用中需要允许这个大范围中某些特征的报文通过。此时,如果管理员采用的是auto模式,则只需要定义新的ACL规则,无需再考虑如何对这些规则进行排序避免报文被误丢弃。

九、ACL的常用匹配项

设备支持的ACL匹配项种类非常丰富,其中最常用的匹配项包括以下几种。

1、生效时间段

格式:time-range time-name

所有ACL均支持根据生效时间段过滤报文。关于生效时间段的详细介绍,请参见ACL的生效时间段。

2、IP承载的协议类型

格式:protocol-number | icmp | tcp | udp | gre | igmp | ip | ipinip | ospf

高级ACL支持基于协议类型过滤报文。常用的协议类型包括:ICMP(协议号1)、TCP(协议号6)、UDP(协议号17)、GRE(协议号47)、IGMP(协议号2)、IP(指任何IP层协议)、IPinIP(协议号4)、OSPF(协议号89)。协议号的取值可以是1~255。

例如,当设备某个接口下的用户存在大量的攻击者时,如果希望能够禁止这个接口下的所有用户接入网络,则可以通过指定协议类型为IP来屏蔽这些用户的IP流量来达到目的。配置如下:

rule deny ip //表示拒绝IP报文通过 

再如,设备上打开透明防火墙功能后,在缺省情况下,透明防火墙会在域间丢弃所有入域间的报文,包括业务报文和协议报文。如果希望像OSPF这样的动态路由协议报文能正常通过防火墙,保证路由互通,这时,通过指定协议类型为OSPF即可解决问题。

rule permit ospf //表示允许OSPF报文通过 

3、源/目的IP地址及其通配符掩码

源IP地址及其通配符掩码格式:source { source-address source-wildcard | any }

目的IP地址及其通配符掩码格式:destination { destination-address destination-wildcard | any }

基本ACL支持根据源IP地址过滤报文,高级ACL不仅支持源IP地址,还支持根据目的IP地址过滤报文。

将源/目的IP地址定义为规则匹配项时,需要在源/目的IP地址字段后面同时指定通配符掩码,用来与源/目的IP地址字段共同确定一个地址范围。

IP地址通配符掩码与IP地址的反向子网掩码类似,也是一个32比特位的数字字符串,用于指示IP地址中的哪些位将被检查。各比特位中,“0”表示“检查相应的位”,“1”表示“不检查相应的位”,概括为一句话就是“检查0,忽略1”。但与IP地址子网掩码不同的是,子网掩码中的“0”和“1”要求必须连续,而通配符掩码中的“0”和“1”可以不连续。

通配符掩码可以为0,相当于0.0.0.0,表示源/目的地址为主机地址;也可以为255.255.255.255,表示任意IP地址,相当于指定any参数。

举一个IP地址通配符掩码的示例,当希望来自192.168.1.0/24网段的所有IP报文都能够通过,可以配置如下规则:

rule 5 permit ip source 192.168.1.0 0.0.0.255 

规则中的通配符掩码为0.0.0.255,表示只需检查IP地址的前三组二进制八位数对应的比特位。因此,如果报文源IP地址的前24个比特位与参照地址的前24个比特位(192.168.1)相同,即报文的源IP地址是192.168.1.0/24网段的地址,则允许该报文通过。

在这里插入图片描述

=在这里插入图片描述

4、源/目的MAC地址及其通配符掩码

源MAC地址及其通配符掩码格式:source-mac source-mac-address [ source-mac-mask ]

目的地址及其通配符掩码格式:destination-mac dest-mac-address [ dest-mac-mask ]

仅二层ACL支持基于源/目的MAC地址过滤报文。

将源/目的MAC地址定义为规则匹配项时,可以在源/目的MAC地址字段后面同时指定通配符掩码,用来与源/目的MAC地址字段共同确定一个地址范围。

MAC地址通配符掩码的格式与MAC地址相同,采用十六进制数表示,共六个字节(48位),用于指示MAC地址中的哪些位将被检查。与IP地址通配符掩码不同的是,MAC地址通配符掩码各比特位中,1表示“检查相应的位”,0表示“不检查相应的位”。如果不指定通配符掩码,则默认掩码为ffff-ffff-ffff,表示检查MAC地址的每一位。

在这里插入图片描述

5、VLAN编号及其掩码

外层VLAN及其掩码格式:vlan-id vlan-id [ vlan-id-mask ]

内层VLAN及其掩码格式:cvlan-id cvlan-id [ cvlan-id-mask ]

二层ACL支持基于外层VLAN或内层VLAN编号过滤报文。

将VLAN编号定义为规则匹配项时,可以在VLAN编号字段后面同时指定VLAN掩码,用来与VLAN编号字段共同确定一个VLAN范围。

VLAN掩码的格式是十六进制形式,取值范围是0x0~0xFFF。如果不指定VLAN掩码,则默认掩码为0xFFF,表示检查VLAN编号的每一位。

在这里插入图片描述

6、TCP/UDP端口号

源端口号格式:source-port { eq port | gt port | lt port | range port-start port-end }

目的端口号格式:destination-port { eq port | gt port | lt port | range port-start port-end }

在高级ACL中,当协议类型指定为TCP或UDP时,设备支持基于TCP/UDP的源/目的端口号过滤报文。

其中,TCP/UDP端口号的比较符含义如下:

  • eq port:指定等于源/目的端口。
  • gt port:指定大于源/目的端口。
  • lt port:指定小于源/目的端口。
  • range port-start port-end:指定源/目的端口的范围。port-start是端口范围的起始,port-end是端口范围的结束。

TCP/UDP端口号可以使用数字表示,也可以用字符串(助记符)表示。例如,rule deny tcp destination-port eq 80,可以用rule deny tcp destination-port eq www替代。

8、TCP标志信息

格式:tcp-flag { ack | established | fin | psh | rst | syn | urg }*

在高级ACL中,当协议类型指定为TCP时,设备支持基于TCP标志信息过滤报文。

TCP报文头有6个标志位:

  • URG():标识紧急指针有效
  • ACK(010000):标识确认序号有效
  • PSH(001000):标识接收方应该尽快将这个报文段上交给应用层
  • RST(000100):标识重建连接
  • SYN(000010):同步序号,用来发起一个连接
  • FIN(000001):标识发送方完成发送任务

TCP标志信息中的established,表示标志位为ACK(010000)或RST(000100)。

指定tcp-flag的ACL规则可以用来实现单向访问控制。假设,要求192.168.1.0/24网段用户可以主动访问192.168.2.0/24网段用户,但反过来192.168.2.0/24网段用户不能主动访问192.168.1.0/24。可通过在设备上连接192.168.2.0/24网段的接口入方向上,应用ACL规则来实现该需求。

由TCP建立连接和关闭连接的过程可知,只有在TCP中间连接过程的报文才会ACK=1或者RST=1。根据这个特点,配置如下两种ACL规则,允许TCP中间连接过程的报文通过,拒绝该网段的其他TCP报文通过,就可以限制192.168.2.0/24网段主动发起的TCP连接。

  • 类型一:配置指定ack和rst参数的ACL规则
    rule 5 permit tcp source 192.168.2.0 0.0.0.255 tcp-flag ack //允许ACK=1的TCP报文通过 rule 10 permit tcp source 192.168.2.0 0.0.0.255 tcp-flag rst //允许RST=1的TCP报文通过 rule 15 deny tcp source 192.168.2.0 0.0.0.255 //拒绝该网段的其他TCP报文通过 
  • 类型二:配置指定establishe参数的ACL规则
    rule permit tcp source 192.168.2.0 0.0.0.255 tcp-flag established // established表示ACK=1或者RST=1,表示允许TCP中间连接过程的报文通过 rule deny tcp source 192.168.2.0 0.0.0.255 //拒绝该网段的其他TCP报文通过 

68.2.0 0.0.0.255 //拒绝该网段的其他TCP报文通过

 - 类型二:配置指定establishe参数的ACL规则 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/144445.html

(0)
上一篇 2025-04-26 18:15
下一篇 2025-04-26 18:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信