目录
一、概念
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规则定义方式的划分如下。
分类 | 适用的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,就像用域名代替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中编号最小的规则开始查找。
-
-
如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)。
-
如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)。
-
如果未匹配上规则,则继续查找下一条规则,以此循环。如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配。
从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”。
-
匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则。
不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”。
-
不匹配(未命中规则):指不存在ACL,或ACL中无规则,再或者在ACL中遍历了所有规则都没有找到符合匹配条件的规则。
以上三种情况,都叫做“不匹配”。
5、ACL常用匹配原则
配置ACL规则时,可以遵循以下原则:
-
如果配置的ACL规则存在包含关系,应注意严格条件的规则编号需要排序靠前,宽松条件的规则编号需要排序靠后,避免报文因命中宽松条件的规则而停止往下继续匹配,从而使其无法命中严格条件的规则。
-
根据各业务模块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默认动作 | permit所有报文 | deny所有报文 | permit少部分报文,deny大部分报文 | deny少部分报文,permit大部分报文 |
---|---|---|---|---|
permit | 无需应用ACL | 配置rule deny | 需先配置rule permit xxx,再配置rule deny xxxx或rule deny 说明:以上原则适用于报文过滤的情形。当ACL应用于流策略中进行流量监管或者流量统计时,如果仅希望对指定的报文进行限速或统计,则只需配置rule permit xxx。 | 只需配置rule deny xxx,无需再配置rule permit xxxx或rule permit 说明:如果配置rule permit并在流策略中应用ACL,且该流策略的流行为behavior配置为deny,则设备会拒绝所有报文通过,导致全部业务中断。 |
deny |
|
| 只需配置rule permit xxx,无需再配置rule deny xxxx或rule deny | 需先配置rule deny xxx,再配置rule permit xxxx或rule 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地址通配符掩码 | 确定的地址范围 |
---|---|---|
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地址通配符掩码 | 确定的地址范围 |
---|---|---|
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范围 |
---|---|---|
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端口号及其对应的服务名称如下表所示。
端口号 | 字符串 | 协议 | 说明 |
---|---|---|---|
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 |
端口号 | 字符串 | 协议 | 说明 |
---|---|---|---|
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连接。
-
类型一:配置指定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报文通过
-
类型二:配置指定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的处理方式如表所示。
规则包含的匹配项 | 非分片报文 | 首片分片报文 | 非首片分片报文 |
---|---|---|---|
三层信息(如源/目的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:有多种表达方式。
-
Mon、Tue、Wed、Thu、Fri、Sat、Sun中的一个或者几个的组合,也可以用数字表达,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/1的acl表
#配置子接口
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(访问控制列表)是网络安全的重要组成部分,用于控制数据包的流入流出。以下是其配置核心点的总结:
-
分类:标准 ACL(基于源 IP 过滤,编号 1-99)和扩展 ACL(基于源 / 目的 IP、端口、协议过滤,编号 100-199)。
-
配置步骤:
- 创建 ACL:
acl number [id] [match-order config|auto]
- 添加规则:
rule [permit|deny] [source/destination/port/protocol]
- 应用到接口:
traffic-filter [inbound|outbound] acl [id]
- 创建 ACL:
-
规则顺序:按配置顺序匹配,默认隐含
deny any
结尾,需注意规则优先级。 -
注意事项:避免冗余规则,谨慎使用
permit any
,定期审计优化。 -
验证命令:
display acl [id]
查看规则,display traffic-filter applied-record
检查应用情况。
合理配置 ACL 可有效保护网络资源,需结合网络拓扑和安全需求制定策略。
---------------E-----------N-------------D---------------