【网络协议安全】任务13:ACL访问控制列表

目录

一、概念

1、前言

2、应用场景

3、ACL分类

基于ACL标识方法的划分

基于对IPv4和IPv6支持情况的划分

基于ACL规则定义方式的划分

4、ACL的基本原理

ACL的组成

ACL的匹配机制

5、ACL常用匹配原则

6、ACL常用的匹配项 

生效时间段

IP承载的协议类型

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

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

VLAN编号及其掩码

TCP/UDP端口号

TCP标志信息

IP分片信息

7、ACL的生效时间段

产生背景

生效时间段模式

二、ACL配置

1.1示例拓扑图

1.2交换机配置 

1.3路由器配置

1.4结果验证

 三、总结

CSDN 原创主页:不羁https://blog.csdn.net/2303_76492156?type=blog 


本文概念部分参考了华为社区技术专家的分享,配置内容则基于个人学习与实践经验整理而成,希望能为网络通信安全领域的新手同行提供参考价值。

一、概念

1、前言

企业网络中的设备进行通信时,需要保障数据传输的安全可靠和网络的性能稳定。

访问控制列表ACL(Access Control List)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。

ACL本质上是一种报文过滤器,规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。

ACL可以定义一系列不同的规则,设备根据这些规则对数据包进行分类,并针对不同类型的报文进行不同的处理,从而可以实现对网络访问行为的控制、限制网络流量、提高网络性能、防止网络攻击等等。

2、应用场景

1、限制指定网段的主机可以访问互联网

2、限制指定网段的主机可以访问内网资源

  • 某企业为保证财务数据安全,禁止研发部门访问财务服务器,但总裁办公室不受限制。实现方式:

    在Interface 1的入方向上部署ACL,禁止研发部门访问财务服务器的报文通过。Interface 2上无需部署ACL,总裁办公室访问财务服务器的报文默认允许通过。

  • 保护企业内网环境安全,防止Internet病毒入侵。实现方式:

    在Interface 3的入方向上部署ACL,将病毒经常使用的端口予以封堵。

 ACL可以通过定义规则来允许或拒绝流量的通过。

ACL可以根据需求来定义过滤的条件以及匹配条件后所执行的动作。

3、ACL分类

基于ACL标识方法的划分

划分如下:

  • 数字型ACL:传统的ACL标识方法。创建ACL时,指定一个唯一的数字标识该ACL。

  • 命名型ACL:通过名称代替编号来标识ACL。

用户在创建ACL时可以为其指定编号,不同的编号对应不同类型的ACL,如表1-1所示。同时,为了便于记忆和识别,用户还可以创建命名型ACL,即在创建ACL时为其设置名称。命名型ACL,也可以是“名称 数字”的形式,即在定义命名型ACL时,同时指定ACL编号。如果不指定编号,系统则会自动为其分配一个数字型ACL的编号。

说明:

命名型ACL一旦创建成功,便不允许用户再修改其名称。如果删除ACL名称,则表示删除整个ACL。

仅基本ACL与基本ACL6,以及高级ACL与高级ACL6,可以使用相同的ACL名称;其他类型ACL之间,不能使用相同的ACL名称。

命名型ACL一旦创建成功,便不允许用户再修改其名称。如果删除ACL名称,则表示删除整个ACL。

仅基本ACL与基本ACL6,以及高级ACL与高级ACL6,可以使用相同的ACL名称;其他类型ACL之间,不能使用相同的ACL名称。

基于对IPv4和IPv6支持情况的划分

划分如下:

  • ACL4:通常直接叫做“ACL”,特指仅支持过滤IPv4报文的ACL。

  • ACL6:又叫做“IPv6 ACL”,特指仅支持过滤IPv6报文的ACL。

以上两种ACL,以及既支持过滤IPv4报文又支持过滤IPv6报文的ACL,统一称做“ACL”。各类型ACL对IPv4和IPv6的支持情况,如表所示。

基于ACL规则定义方式的划分

如表所示,基于ACL规则定义方式的划分如下。

基于ACL规则定义方式的ACL分类:

分类

适用的IP版本

规则定义描述

编号范围

基本ACL

IPv4

仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则。

2000~2999

高级ACL

IPv4

既可使用IPv4报文的源IP地址,也可使用目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口、UDP源/目的端口号、生效时间段等来定义规则。

3000~3999

二层ACL

IPv4&IPv6

使用报文的以太网帧头信息来定义规则,如根据源MAC(Media Access Control)地址、目的MAC地址、二层协议类型等。

4000~4999

用户自定义ACL

IPv4&IPv6

使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则,即以报文头为基准,指定从报文的第几个字节开始与字符串掩码进行“与”操作,并将提取出的字符串与用户自定义的字符串进行比较,从而过滤出相匹配的报文。

5000~5999

用户ACL

IPv4

既可使用IPv4报文的源IP地址,也可使用目的IP地址、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。

6000~6031

基本ACL6

IPv6

可使用IPv6报文的源IPv6地址、分片信息和生效时间段来定义规则。

2000~2999

高级ACL6

IPv6

可以使用IPv6报文的源IPv6地址目的IPv6地址、IPv6协议类型、ICMPv6类型、TCP源/目的端口、UDP源/目的端口号、生效时间段等来定义规则。

3000~3999

4、ACL的基本原理

ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。

ACL的组成

一条ACL的结构组成,如图所示。

ACL的结构组成:

ACL编号:用于标识ACL,表明该ACL是数字型ACL。

根据ACL规则功能的不同,ACL被划分为基本ACL、高级ACL、二层ACL和用户ACL这几种类型,每类ACL编号的取值范围不同。关于每类ACL编号的详细介绍,请参见ACL的分类

除了可以通过ACL编号标识ACL,设备还支持通过名称来标识ACL,就像用域名代替IP地址一样,更加方便记忆。这种ACL,称为命名型ACL。

命名型ACL实际上是“名字+数字”的形式,可以在定义命名型ACL时同时指定ACL编号。如果不指定编号,则由系统自动分配。例如,下面就是一个既有名字“deny-telnet-login”又有编号“3998”的ACL。

#                                                                               
acl name deny-telnet-login 3998                                                 
rule 0 deny tcp source 10.152.0.0 0.0.63.255 destination 10.64.0.97 0 destination-port eq telnet                                                               
rule 5 deny tcp source 10.242.128.0 0.0.127.255 destination 10.64.0.97 0 destination-port eq telnet                                                            
#         
  • 规则:即描述报文匹配条件的判断语句。

  • 规则编号:用于标识ACL规则。可以自行配置规则编号,也可以由系统自动分配。

    ACL规则的编号范围是0~4294967294,所有规则均按照规则编号从小到大进行排序。所以,如上图中的rule 5排在首位,而规则编号最大的rule 4294967294排在末位。系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配。

  • 动作:包括permit/deny两种动作,表示允许/拒绝。

  • 匹配项:ACL定义了极其丰富的匹配项。除了图1-2中的源地址和生效时间段,ACL还支持很多其他规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。关于每种匹配项的详细介绍,请参见ACL常用匹配项

ACL的匹配机制

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

ACL的匹配机制:

首先系统会查找设备上是否配置了ACL。

  • 如果ACL不存在,则返回ACL匹配结果为:不匹配。

  • 如果ACL存在,则查找设备是否配置了ACL规则。

    • 如果规则不存在,则返回ACL匹配结果为:不匹配。

    • 如果规则存在,则系统会从ACL中编号最小的规则开始查找。

  • 如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)。

  • 如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)。

  • 如果未匹配上规则,则继续查找下一条规则,以此循环。如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配。

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

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

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

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

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

5、ACL常用匹配原则

配置ACL规则时,可以遵循以下原则:

  1. 如果配置的ACL规则存在包含关系,应注意严格条件的规则编号需要排序靠前,宽松条件的规则编号需要排序靠后,避免报文因命中宽松条件的规则而停止往下继续匹配,从而使其无法命中严格条件的规则。

  2. 根据各业务模块ACL默认动作的不同,ACL的配置原则也不同。例如,在默认动作为permit的业务模块中,如果只希望deny部分IP地址的报文,只需配置具体IP地址的deny规则,结尾无需添加任意IP地址的permit规则;而默认动作为deny的业务模块恰与其相反。详细的ACL常用配置原则,如表所示。

说明: 

以下rule的表达方式仅是示意形式,实际配置方法请参考各类ACL规则的命令行格式。

  • rule permit xxx/rule permit xxxx:表示允许指定的报文通过,xxx/xxxx表示指定报文的标识,可以是源IP地址、源MAC地址、生效时间段等。xxxx表示的范围与xxx表示的范围是包含关系,例如xxx是某一个IP地址,xxxx可以是该IP地址所在的网段地址或any(表示任意IP地址);再如xxx是周六的某一个时段,xxxx可以是双休日全天时间或一周七天全部时间。

  • rule deny xxx/rule deny xxxx:表示拒绝指定的报文通过。

  • rule permit:表示允许所有报文通过。

  • rule deny:表示拒绝所有报文通过。

以下rule的表达方式仅是示意形式,实际配置方法请参考各类ACL规则的命令行格式。

  • rule permit xxx/rule permit xxxx:表示允许指定的报文通过,xxx/xxxx表示指定报文的标识,可以是源IP地址、源MAC地址、生效时间段等。xxxx表示的范围与xxx表示的范围是包含关系,例如xxx是某一个IP地址,xxxx可以是该IP地址所在的网段地址或any(表示任意IP地址);再如xxx是周六的某一个时段,xxxx可以是双休日全天时间或一周七天全部时间。

  • rule deny xxx/rule deny xxxx:表示拒绝指定的报文通过。

  • rule permit:表示允许所有报文通过。

  • rule deny:表示拒绝所有报文通过。

表 ACL的常用配置原则:

业务模块的ACL默认动作

permit所有报文

deny所有报文

permit少部分报文,deny大部分报文

deny少部分报文,permit大部分报文

permit

无需应用ACL

配置rule deny

需先配置rule permit xxx,再配置rule deny xxxxrule deny

说明:

以上原则适用于报文过滤的情形。当ACL应用于流策略中进行流量监管或者流量统计时,如果仅希望对指定的报文进行限速或统计,则只需配置rule permit xxx

只需配置rule deny xxx,无需再配置rule permit xxxxrule permit

说明:

如果配置rule permit并在流策略中应用ACL,且该流策略的流行为behavior配置为deny,则设备会拒绝所有报文通过,导致全部业务中断。

deny

  • 路由和组播模块:需配置rule permit
  • 其他模块:无需应用ACL
  • 路由和组播模块:无需应用ACL
  • 其他模块:需配置rule deny

只需配置rule permit xxx,无需再配置rule deny xxxxrule deny

需先配置rule deny xxx,再配置rule permit xxxxrule permit

举例:

  • 例1:在流策略中应用ACL,使设备对192.168.1.0/24网段的报文进行过滤,拒绝192.168.1.2和192.168.1.3主机地址的报文通过,允许192.168.1.0/24网段的其他地址的报文通过。

    流策略的ACL默认动作为permit,该例属于“deny少部分报文,permit大部分报文”的情况,所以只需配置rule deny xxx

    #
    acl number 2000
    rule 5 deny source 192.168.1.2 0
    rule 10 deny source 192.168.1.3 0
    #
  • 例2:在流策略中应用ACL,使设备对192.168.1.0/24网段的报文进行过滤,允许192.168.1.2和192.168.1.3主机地址的报文通过,拒绝192.168.1.0/24网段的其他地址的报文通过。

    流策略的ACL默认动作为permit,该例属于“permit少部分报文,deny大部分报文”的情况,所以需先配置rule permit xxx,再配置rule deny xxxx

    #
    acl number 2000
    rule 5 permit source 192.168.1.2 0
    rule 10 permit source 192.168.1.3 0
    rule 15 deny source 192.168.1.0 0.0.0.255
    #
  • 例3:在Telnet中应用ACL,仅允许管理员主机(IP地址为172.16.105.2)能够Telnet登录设备,其他用户不允许Telnet登录。

    Telnet的ACL默认动作为deny,该例属于“permit少部分报文,deny大部分报文”的情况,所以只需配置rule permit xxx

    #
    acl number 2000
    rule 5 permit source 172.16.105.2 0
    #    
  • 例4:在Telnet中应用ACL,不允许某两台主机(IP地址为172.16.105.3和172.16.105.4)Telnet登录设备,其他用户均允许Telnet登录。

    Telnet的ACL默认动作为deny,该例属于“deny少部分报文,permit大部分报文”的情况,所以需先配置rule deny xxx,再配置rule permit

    #
    acl number 2000
    rule 5 deny source 172.16.105.3 0
    rule 10 deny source 172.16.105.4 0
    rule 15 permit
    #    
  • 例5:在FTP中应用ACL,不允许用户在周六的00:00~8:00期间访问FTP服务器,允许用户在其他任意时间访问FTP服务器。

    FTP的ACL默认动作为deny,该例属于“deny少部分报文,permit大部分报文”的情况,所以需先配置rule deny xxx,再配置rule permit xxxx

    #
    time-range t1 00:00 to 08:00 Sat
    time-range t2 00:00 to 23:59 daily
    #
    acl number 2000
    rule 5 deny time-range t1
    rule 10 permit time-range t2
    #

6、ACL常用的匹配项 

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

生效时间段

格式:time-range time-name

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

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报文通过

源/目的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网段的地址,则允许该报文通过。下表 展示了该例的地址范围计算过程。

表 通配符掩码示例:

项目

十进制等价值

二进制等价值

参照地址

192.168.1.0

11000000.10101000.00000001.00000000

通配符掩码

0.0.0.255

00000000.00000000.00000000.11111111

确定的地址范围

192.168.1.*

*表示0~255之间的整数

11000000.10101000.00000001.xxxxxxxx

x既可以是0,也可以是1

更多的IP地址与通配符掩码共同确定的地址范围示例,详见下表。

表 IP地址与通配符掩码共同确定的地址范围:

IP地址

IP地址通配符掩码

确定的地址范围

0.0.0.0

255.255.255.255

任意IP地址

172.18.0.0

0.0.255.255

172.18.0.0/16网段的IP地址

172.18.5.2

0.0.0.0

仅172.18.5.2这一个主机地址

172.18.8.0

0.0.0.7

172.18.8.0/29网段的IP地址

172.18.8.8

0.0.0.7

172.18.8.8/29网段的IP地址

10.1.2.0

0.0.254.255(通配符掩码中的1和0不连续)

10.1.0.0/24~10.1.254.0/24网段之间且第三个字节为偶数的IP地址,如10.1.0.0/24、10.1.2.0/24、10.1.4.0/24、10.1.6.0/24等。

源/目的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地址的每一位。

MAC地址与通配符掩码共同确定的地址范围示例,如表所示。

表 MAC地址与通配符掩码共同确定的地址范围:

MAC地址

MAC地址通配符掩码

确定的地址范围

00e0-fc01-0101

0000-0000-0000

任意MAC地址

00e0-fc01-0101

ffff-ffff-ffff

仅00e0-fc01-0101这一个MAC地址

00e0-fc01-0101

ffff-ffff-0000

00e0-fc01-0000~00e0-fc01-ffff

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编号的每一位。

VLAN编号与掩码共同确定的VLAN范围示例,如表所示。

表 VLAN编号及其掩码共同确定的VLAN范围:

VLAN编号

VLAN掩码

确定的VLAN范围

10

0x000

任意VLAN

10

0xFFF

仅VLAN 10

10

0xFF0

VLAN 1~VLAN 10

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替代。

常见TCP和UDP端口号及其对应的服务名称如下表所示。

常见TCP和UDP端口号及其对应的服务名称如下表所示。

表 常见TCP端口号及对应的字符串:

端口号

字符串

协议

说明

7

echo

Echo

Echo服务

9

discard

Discard

用于连接测试的空服务

13

daytime

Daytime

给请求主机发送日期和时间

19

CHARgen

Character generator

字符生成服务;发送无止境的字符流

20

ftp-data

FTP data connections

FTP数据端口

21

ftp

File Transfer Protocol(FTP)

文件传输协议(FTP)端口

23

telnet

Telnet

Telnet服务

25

smtp

Simple Mail Transport Protocol (SMTP)

简单邮件传输协议

37

time

Time

时间协议

43

whois

Nickname(WHOIS)

目录服务

49

tacacs

TAC Access Control System (TACACS)

用于基于TCP/IP验证和访问的访问控制系统(TACACS登录主机协议)

53

domain

Domain Name Service (DNS)

域名服务

70

gopher

Gopher

信息检索协议(互联网文档搜寻和检索)

79

finger

Finger

用于用户联系信息的Finger服务,查询远程主机在线用户等信息

80

www

World Wide Web (HTTP)

用于万维网(WWW)服务的超文本传输协议(HTTP),用于网页浏览

101

hostname

NIC hostname server

NIC机器上的主机名服务

109

pop2

Post Office Protocol v2

邮件协议-版本2

110

pop3

Post Office Protocol v3

邮件协议-版本3

111

sunrpc

Sun Remote Procedure Call (RPC)

SUN公司的远程过程调用(RPC)协议,用于远程命令执行,被网络文件系统(NFS)使用

119

nntp

Network News Transport Protocol (NNTP)

网络新闻传输协议,承载USENET通信

179

bgp

Border Gateway Protocol (BGP)

边界网关协议

194

irc

Internet Relay Chat (IRC)

互联网中继聊天(多线交谈协议)

512

exec

Exec (rsh)

用于对远程执行的进程进行验证

513

login

Login (rlogin)

远程登录

514

cmd

Remote commands

远程命令,不必登录的远程shell(rshell)和远程复制(rcp)

515

lpd

Printer service

打印机(lpr)假脱机

517

talk

Talk

远程对话服务和客户

540

uucp

Unix-to-Unix Copy Program

Unix到Unix复制服务

543

klogin

Kerberos login

Kerberos版本5(v5)远程登录

544

kshell

Kerberos shell

Kerberos版本5(v5)远程shell

表 常见UDP端口号及对应的字符串:

端口号

字符串

协议

说明

7

echo

Echo

Echo服务

9

discard

Discard

用于连接测试的空服务

37

time

Time

时间协议

42

nameserver

Host Name Server

主机名服务

53

dns

Domain Name Service (DNS)

域名服务

65

tacacs-ds

TACACS-Database Service

TACACS数据库服务

67

bootps

Bootstrap Protocol Server

引导程序协议(BOOTP)服务端,DHCP服务使用

68

bootpc

Bootstrap Protocol Client

引导程序协议(BOOTP)客户端,DHCP客户使用

69

tftp

Trivial File Transfer Protocol (TFTP)

小文件传输协议

90

dnsix

DNSIX Security Attribute Token Map

DNSIX安全属性标记图

111

sunrpc

SUN Remote Procedure Call (SUN RPC)

SUN公司的远程过程调用(RPC)协议,用于远程命令执行,被网络文件系统(NFS)使用

123

ntp

Network Time Protocol (NTP)

网络时间协议,蠕虫病毒会利用

137

netbios-ns

NETBIOS Name Service

NETBIOS名称服务

138

netbios-dgm

NETBIOS Datagram Service

NETBIOS数据报服务

139

netbios-ssn

NETBIOS Session Service

NETBIOS会话服务

161

snmp

SNMP

简单网络管理协议

162

snmptrap

SNMPTRAP

SNMP陷阱

177

xdmcp

X Display Manager Control Protocol (XDMCP)

X显示管理器控制协议

434

mobilip-ag

MobileIP-Agent

移动IP代理

435

mobilip-mn

MobileIP-MN

移动IP管理

512

biff

Mail notify

异步邮件,可用来通知用户有邮件到达

513

who

Who

登录的用户列表

514

syslog

Syslog

UNIX系统日志服务

517

talk

Talk

远程对话服务器和客户端

520

rip

Routing Information Protocol

RIP路由协议

TCP标志信息

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

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

TCP报文头有6个标志位:

  • URG(100000):标识紧急指针有效

  • 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连接。

  • 类型一:配置指定ackrst参数的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报文通过     
  • 类型二:配置指定established参数的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报文通过    

IP分片信息

格式:none-first-fragment

基本ACL和高级ACL支持基于IP分片信息过滤报文。

IP分片除了首片报文外,还有后续分片报文,又叫做非首片分片报文。仅首片分片报文携带四层信息(如TCP/UDP端口号等),后续分片报文均不携带。网络设备收到分片报文后,会判断其是否是最后一个分片报文。如果不是,则为其分配内存空间,以便于最后一个分片报文到达后完成重组。黑客可以利用这一点,向接收方设备发起分片报文攻击,始终不向接收方发送最后一个分片报文,使得接收方的内存得不到及时释放(接收方会启动一个分片重组的定时器,在定时器超时前如果无法完成重组,将向发送方发送ICMP重组超时差错报文;如果定时器超时后仍未完成重组,则丢弃已存储的分片报文)。在分片报文发送数量很多并且发送速度很快的情况下,接收方的内存很容易被占满,从而导致接收方没有足够的内存资源处理其他正常的业务。

为了解决这个问题,可以配置指定none-first-fragment匹配项的ACL规则来阻塞非首片分片报文,从而达到防范分片报文攻击的目的。

针对非分片报文、首片分片报文、非首片分片报文这三类报文,ACL的处理方式如表所示。

表 ACL对IP分片报文的处理方式:

规则包含的匹配项

非分片报文

首片分片报文

非首片分片报文

三层信息(如源/目的IP地址)

三层信息匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配

三层信息匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配

三层信息匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配

三层信息 + 四层信息(如TCP/UDP端口号)

三层和四层信息都匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配

三层和四层信息都匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配

不匹配,转下一条规则进行匹配

三层信息 + none-first-fragment

不匹配,转下一条规则进行匹配

不匹配,转下一条规则进行匹配

三层信息匹配上,则返回匹配结果(permit/deny);未匹配上,则转下一条规则进行匹配

例如,ACL 3012中存在以下规则:

#                                    
acl number 3012                                                                  rule 5 deny tcp destination 192.168.2.2 0 none-first-fragment                   rule 10 permit tcp destination 192.168.2.2 0 destination-port eq www            rule 15 deny ip                                                                 
#  
  • 该报文是非分片报文或首片分片报文时:如果该报文的目的端口号是80(www对应的端口号是80),则报文与rule 10匹配,报文被允许通过;如果该报文的目的端口号不是80,则报文与rule 15匹配,报文被拒绝通过。

  • 该报文是非首片分片报文时:该报文与rule 5匹配,报文被拒绝通过。

7、ACL的生效时间段

产生背景

ACL定义了丰富的匹配项,可以满足大部分的报文过滤需求。但需求是不断变化发展的,新的需求总是不断涌现。例如,某公司要求,在上班时间只允许员工浏览与工作相关的几个网站,下班或周末时间才可以访问其他互联网网站;再如,在每天20:00~22:00的网络流量的高峰期,为防止P2P、下载类业务占用大量带宽对其他数据业务的正常使用造成影响,需要对P2P、下载类业务的带宽进行限制。

基于时间的ACL过滤就是用来解决上述问题的。管理员可以根据网络访问行为的要求和网络的拥塞情况,配置一个或多个ACL生效时间段,然后在ACL规则中引用该时间段,从而实现在不同的时间段设置不同的策略,达到网络优化的目的。

生效时间段模式

在ACL规则中引用的生效时间段存在两种模式:

  • 第一种模式——周期时间段:以星期为参数来定义时间范围,表示规则以一周为周期(如每周一的8至12点)循环生效。

    格式:time-range time-name start-time to end-time { days } &<1-7>

    • time-name:时间段名称,以英文字母开头的字符串。
    • start-time to end-time:开始时间和结束时间。格式为[小时:分钟] to [小时:分钟]。
    • days:有多种表达方式。
      • MonTueWedThuFriSatSun中的一个或者几个的组合,也可以用数字表达,0表示星期日,1表示星期一,……6表示星期六。

      • working-day:从星期一到星期五,五天。

      • daily:包括一周七天。

      • off-day:包括星期六和星期日,两天。

  • 第二种模式——绝对时间段:从某年某月某日的某一时间开始,到某年某月某日的某一时间结束,表示规则在这段时间范围内生效。

    格式:time-range time-name from time1 date1 [ to time2 date2 ]

    • time-name:时间段名称,以英文字母开头的字符串。
    • time1/time2:格式为[小时:分钟]。
    • date1/date2:格式为[YYYY/MM/DD],表示年/月/日。

可以使用同一名称(time-name)配置内容不同的多条时间段,配置的各周期时间段之间以及各绝对时间段之间的交集将成为最终生效的时间范围。

例如,在ACL 2001中引用了时间段“test”,“test”包含了三个生效时间段:

#   
time-range test 8:00 to 18:00 working-day  
time-range test 14:00 to 18:00 off-day  
time-range test from 00:00 2014/01/01 to 23:59 2014/12/31  
#   
acl number 2001                                                                  rule 5 permit time-range test 
  • 第一个时间段,表示在周一到周五每天8:00到18:00生效,这是一个周期时间段。
  • 第二个时间段,表示在周六、周日下午14:00到18:00生效,这是一个周期时间段。
  • 第三个时间段,表示从2014年1月1日00:00起到2014年12月31日23:59生效,这是一个绝对时间段。

时间段“test”最终描述的时间范围为:2014年的周一到周五每天8:00到18:00以及周六和周日下午14:00到18:00。

二、ACL配置

1.1示例拓扑图

配置要求:vlan2和vlan3在交换机内隔离,仅允许192.168.0.2访问server网段10.10.1.1

1.2交换机配置 

1、交换机创建vlan 2 3 ,配置vlanif,给接口设置vlan

sys
vlan batch 2 to 3
int vlanif 2
ip address 192.168.0.1 255.255.255.0
int vlanif 3
ip address 192.168.1.1 255.255.255 0int g0/0/1
port link-type access
port default vlan 2    #仅允许vlan2 两个vlan不互通int g0/0/2
port link-type access
port default vlan 3    #仅允许vlan3

2、交换机trunk模式连接路由器

int g0/0/24
port link-type trunk
quit
int g0/0/24
port trunk allow-pass vlan 2 3

1.3路由器配置

1、路由器配置ACL基本配置2000,给网段192.168.0.0/24设置permit,给192.168.1.0/24设置deny

acl 2000
rule 5 permit source 192.168.0.0 0.0.0.255   #规则5 放行192.168.0.0/24
rule 10 deny source 192.168.1.0 0.0.0.255   #规则10 拒绝192.168.1.0/24
rule 30 permit source 10.10.1.0 0.0.0.255   #规则30 放行10.10.1.0/24
dis this#
acl number 2000
rule 5 permit source 192.168.0.0 0.0.0.255   
rule 10 deny source 192.168.1.0 0.0.0.255   
rule 30 permit source 10.10.1.0 0.0.0.255 
#return

 2、配置g0/0/0的子接口连接路由器,配置g0/0/1acl

#配置子接口
int g0/0/0.2   #配置子接口1 划分 vlan 2
dot1q termination vid 2
ip address 192.168.0.1 255.255.255.0
int g0/0/0.3   #配置子接口2 划分 vlan 3
dot1q termination vid 3
ip address 192.168.1.1 255.255.255.0#配置g0/0/1的acl
int g0/0/1
traffic-filter inbound ac 2000
ip address 10.10.1.1 255.255.255.0
dis this

1.4结果验证

路由器ACL表中有10.10.1.0有流量通过,并且只有192.168.0.2主机可以访问目标网段(注:此时10.10.1.2主机无法直接ping,概率是环境原因)

 三、总结

ACL(访问控制列表)是网络安全的重要组成部分,用于控制数据包的流入流出。以下是其配置核心点的总结:

  1. 分类:标准 ACL(基于源 IP 过滤,编号 1-99)和扩展 ACL(基于源 / 目的 IP、端口、协议过滤,编号 100-199)。

  2. 配置步骤

    • 创建 ACL:acl number [id] [match-order config|auto]
    • 添加规则:rule [permit|deny] [source/destination/port/protocol]
    • 应用到接口:traffic-filter [inbound|outbound] acl [id]
  3. 规则顺序:按配置顺序匹配,默认隐含deny any结尾,需注意规则优先级。

  4. 注意事项:避免冗余规则,谨慎使用permit any,定期审计优化。

  5. 验证命令display acl [id]查看规则,display traffic-filter applied-record检查应用情况。

合理配置 ACL 可有效保护网络资源,需结合网络拓扑和安全需求制定策略。


---------------E-----------N-------------D--------------- 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:
http://www.pswp.cn/pingmian/87738.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TensorFlow 安装使用教程

一、TensorFlow 简介 TensorFlow 是由 Google 开发的开源深度学习框架&#xff0c;支持数据流图计算&#xff0c;可运行于 CPU/GPU/TPU。它被广泛应用于语音识别、图像处理、自然语言处理等多个 AI 领域。 二、安装 TensorFlow 2.1 pip 安装&#xff08;默认 CPU 版本&#x…

腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE MySQL版)

数据库交付运维专家- 腾讯云TDSQL(MySQL版) 适合人群&#xff1a; 适合TDSQL(MySQL版)各组件扩缩容、运维、性能优化、故障解决、压力测试等数据库开发、运维、管理人员。 认证考试&#xff1a; 单选*40道多选*20道上机*20道 考试时长&#xff1a; 理论考试120分钟,上机考试…

webUI平替应用,安装简单,功能齐全

前言 在安装本地大模型后&#xff0c;我们都会为大模型安装一个用户界面&#xff0c;这样就可以实现语音输入&#xff0c;对话保存&#xff0c;微调&#xff0c;构建本地知识库等高阶功能。 目前最火的本地大模型UI&#xff0c;就是gihub上的webUI&#xff0c;但他不仅依赖较…

【Maven】Maven核心机制的 万字 深度解析

Maven核心机制的万字深度解析一、依赖管理机制全解&#xff08;工业级依赖治理方案&#xff09;1. 坐标体系的本质与设计哲学2. 依赖传递与仲裁算法的工程实现**冲突仲裁核心算法**企业级仲裁策略3. Scope作用域的类加载隔离原理4. 多级仓库体系架构设计二、构建生命周期底层原…

暑期前端训练day4

今天主要是有关周赛的&#xff0c;比赛的时候是用c写的并且是 ak了&#xff0c;但是就是想用js再复盘一下&#xff0c;也不能只是图一时之爽&#xff0c;如果是换在实际的场景里面我是不是只会用 c快速写出来。 最近也要从js逐渐转向ts&#xff0c;感觉Ts才是主旋律&#xff0c…

转Go学习笔记(2)进阶

前置&#xff1a;转Go学习笔记1语法入门 目录Golang进阶groutine协程并发概念梳理创建goroutine语法channel实现goroutine之间通信channel与range、selectGoModulesGo Modules与GOPATHGo Modules模式用Go Modules初始化项目修改模块的版本依赖关系Go Modules 版本号规范vendor …

无人机3控接力模式技术分析

一、运行方式 1. 接力控制流程 位置触发切换&#xff1a;飞控中心实时监测无人机位置&#xff0c;当进入预设的切换路线&#xff08;如靠近下一个机库或控制器覆盖范围&#xff09;时&#xff0c;触发切换流程。 控制权请求与验证&#xff1a; 当前控制器&#xff08…

Actor Critic对比PGValue-Based

目录 回顾一下policy gradient&#xff1a; QAC算法&#xff1a; A2C- advantage actor critic 问题&#xff1a; 1. 为什么要结合起来&#xff0c;能解决什么问题&#xff1f; 1. 策略梯度 (PG) 的优势与核心问题 2. 基于价值方法 (Value-Based) 的优势与局限性 3. 潜…

buuctf-re

1.findKey 打开是C而且有点乱,所以找关键步骤有一个加密进去是不能反编译的,有花指令, 这里有重复的部分把下面的NOP掉,重新定义函数’p’ 之后分析逻辑, // positive sp value has been detected, the output may be wrong! int __userpurge sub_40191F<eax>(int a1&l…

RuoYi、Vue CLI 和 uni-app 结合构建跨端全家桶方案

将 RuoYi、Vue CLI 和 uni-app 结合构建跨端全家桶方案&#xff0c;可以实现一套代码管理后台系统&#xff08;PC&#xff09;和移动端应用&#xff08;H5/小程序/App&#xff09;。以下是整合思路和关键步骤&#xff1a; 技术栈分工 RuoYi&#xff1a;后端框架&#xff08;Spr…

二十九、windows系统安全---windows注册表安全配置

环境 windows server 2012 原理 注册表简介: 注册表&#xff08;Registry&#xff0c;繁体中文版Windows操作系统称之为登录档&#xff09;是Microsoft Windows中的一个重要的数据库&#xff0c;用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候&#…

Android 一帧绘制流程

Android 一帧绘制流程揭秘&#xff1a;主线程与 RenderThread 的双人舞 核心目标&#xff1a;60帧/秒的丝滑体验&#xff0c;意味着每帧必须在16.67ms内完成所有工作&#xff01; 想象一下屏幕刷新就像放映电影&#xff0c;一帧接一帧。Android系统为了播放这“电影”&#xff…

智能网盘检测软件,一键识别失效链接

软件介绍 今天为大家推荐一款由吾爱论坛大神开发的网盘链接检测工具&#xff0c;专为网络资源爱好者设计&#xff0c;可快速批量检测分享链接的有效性。 核心功能 这款工具能够智能识别各类网盘分享链接的有效状态&#xff0c;用户只需批量粘贴链接&#xff0c;软件便会自…

408第三季part2 - 计算机网络 - 应用层

理解 客户机不能直接通信&#xff0c;要通过服务器才行 P2P可以 先记个名字 看图记查询流程 然后迭代就是 主机到本地 本地先查根&#xff0c;然后返回&#xff0c;再查顶级&#xff0c;然后返回&#xff0c;再查权限 然后注意这里主机到本地都是递归查询&#xff0c;其他的…

Modern C++(七)类

7、类 7.1、类声明 前置声明&#xff1a;声明一个将稍后在此作用域定义的类类型。直到定义出现前&#xff0c;此类名具有不完整类型。当代码仅仅需要用到类的指针或引用时&#xff0c;就可以采用前置声明&#xff0c;无需包含完整的类定义。 前置声明有以下几个作用&#xf…

4-6WPS JS宏自定义函数变长参数函数(实例:自定义多功能数据统计函数)学习笔记

一、自定义函数:自定义多功能数据统计函数。示例1&#xff1a;function jia1(x,...arr){//自定义变长函数&#xff0c;X第一参数&#xff0c;...arr为变长参数可放入无数个参数&#xff0c;就像是数组return xWorksheetFunction.Sum(arr)//返回&#xff0c;X第一参数WorksheetF…

HDMI延长器 vs 分配器 vs KVM切换器 vs 矩阵:技术区别与应用场景

在音视频和计算机信号传输领域&#xff0c;延长器、分配器、切换器和矩阵是四种常见设备&#xff0c;它们的功能和应用场景有显著区别。以下是它们的核心差异对比&#xff1a; 1. 延长器&#xff08;Extender&#xff09; 功能&#xff1a; ▸ 将信号&#xff08;如HDMI、Displ…

从0到1解锁Element-Plus组件二次封装El-Dialog动态调用

技术难题初登场 家人们&#xff0c;最近在开发一个超复杂的后台管理系统项目&#xff0c;里面有各种数据展示、表单提交、权限控制等功能&#xff0c;在这个过程中&#xff0c;我频繁地使用到了element-plus组件库中的el-dialog组件 。它就像一个小弹窗&#xff0c;可以用来显示…

数据结构实验习题

codeblock F2是出控制台 1.1 /* by 1705 WYY */ #include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 #define YES 1 #define NO 0 #define OK 1 #define ERROR 0 #define SUCCESS 1 #define UNSUCCESS 0 #define OVERFLOW -2 #define UNDERF…

PyTorch 2.7深度技术解析:新一代深度学习框架的革命性演进

引言:站在AI基础设施变革的历史节点 在2025年这个充满变革的年份,PyTorch团队于4月23日正式发布了2.7.0版本,随后在6月4日推出了2.7.1补丁版本,标志着这个深度学习领域最具影响力的框架再次迎来了重大突破。这不仅仅是一次常规的版本更新,而是一次面向未来计算架构和AI应…