ACL协议:核心概念与配置要点解析
ACL协议
在H3C网络设备(交换机、路由器、防火墙等)中,ACL(Access Control List,访问控制列表) 是一个核心的流量过滤和控制机制。
-
核心目的:
- 流量过滤:控制哪些流量可以通过接口(入站/出站方向)。
- 安全策略:实施基本的安全策略,阻止非授权访问(如防火墙策略的基础)。
- 流量识别:为其他需要识别特定流量的功能(如QoS策略路由、NAT、VPN、路由过滤、策略路由)提供匹配依据。
- 用户接入控制:结合身份认证(如802.1X、Portal),限制用户访问权限
-
主要类型:
- 基本ACL(Basic ACL):
- 序号为:2000~2999
- 只根据报文的源IP地址信息制定规则
- 高级ACL(Advanced ACL):
- 序号为:3000 ~ 3999
- 根据报文的源IP地址、目的IP地址、IP协议类型(TCP/UDP/ICMP/OSPF等)、源端口号、目的端口号、TCP标志位、ICMP类型/代码、IP优先级/DSCP、分片信息的特性等三、四层信息制定规则
- 二层ACL(Layer 2 ACL / Ethernet Frame ACL):
- 序号为:4000 ~ 4999。
- 根据报文的源MAC地址、目的MAC地址、以太网帧类型(如0x0800-IPv4, 0x86DD-IPv6)、802.1p优先级、VLAN ID等二层信息制定规则
- 基本ACL(Basic ACL):
-
设置过滤规则
- 包过滤功能默认开启
- 设置包过滤的默认过滤方式
- 系统默认的过滤方式是permit,即允许未匹配上的ACL规则的报文通过
- 可以配置包过滤的缺省动作为deny
- packet-filter default deny
-
匹配规则和动作:
- 规则(Rule):每条ACL规则包含:
- 匹配条件:根据ACL类型定义(如源IP、目的端口等)。
- 动作(Action):
permit
(允许) 或deny
(拒绝)。 - 规则ID:可手动指定或自动生成。H3C设备规则ID越小优先级越高。
- 规则匹配顺序:
- 配置顺序(config):按照用户配置规则的先后顺序进行匹配。这是默认的方式。
- 自动深度优先(auto / depth-first):设备自动按照规则的“深度”(条件描述的精确程度)排序,条件越具体(如指定了端口号)的规则优先级越高。需要显式配置此模式。
- 匹配过程:数据包从上到下逐条匹配规则。一旦匹配到某条规则,则执行该规则的动作(
permit
或deny
),并停止后续规则的匹配。如果所有规则都不匹配,则执行该ACL的默认动作。
- 默认动作(Implicit Deny Any):任何ACL的末尾都隐含一条拒绝所有(deny any) 的规则。这意味着如果数据包没有匹配到任何显式配置的permit规则,它最终将被拒绝。这是安全性的重要保障。
- 规则(Rule):每条ACL规则包含:
-
应用方向(Application Direction):
- ACL只有被应用(apply) 到接口的特定方向上才会生效。
- 入方向(inbound):对进入该接口的数据包进行过滤。数据包到达接口后,先匹配入方向ACL,再查路由表决定转发。
- 出方向(outbound):对离开该接口的数据包进行过滤。数据包查完路由表确定从该接口转发出去之前,匹配出方向ACL。
- 选择合适的应用方向至关重要,直接影响过滤效果和效率。
-
配置基本ACL
-
**第一步:**设置访问控制列表序列号
-
acl basic acl-number
-
-
**第二步:**定义规则,允许或拒绝来自指定网络的数据包,并定义参数
-
rule [ RULE_ID ] { deny | permit } source { SRC_IP_ADDR SRC_WILDCARD | any } [ time-range TIME_NAME ] [ logging ] [ description TEXT ]
-
-
-
配置高级ACL
-
**第一步:**设置访问控制列表序列号
-
acl advanced acl-number
-
-
**第二步:**定义规则,其规则在基本访问列表的基础上增加了目的地址、协议号、端口以及操作符等信息
-
rule [ RULE_ID ] { deny | permit } PROTOCOL [ rule-specific-criteria ] [ time-range TIME_NAME ] [ logging ] [ description TEXT ]
-
-
-
配置二层ACL
-
**第一步:**设置访问控制列表序列号
-
acl mac acl-number
-
-
**第二步:**配置规则,规则上主要为源MAC、目的MAC以及COS值等信息
-
rule [ RULE_ID ] { deny | permit } [ rule-specific-criteria ] [ time-range TIME_NAME ] [ logging ] [ description TEXT ]
-
-
-
重要注意事项:
- 规则顺序:理解配置顺序和自动深度优先的区别,确保规则按预期优先级匹配。
- 隐式拒绝:务必牢记ACL末尾隐含的
deny any
。如果想让某些流量通过,必须有显式的permit
规则匹配它。 - 应用方向:正确选择
inbound
或outbound
是ACL生效的关键。 - 作用范围:基本ACL通常建议应用在靠近目的地址的位置(避免意外阻断合法源);高级ACL通常建议应用在靠近源地址的位置(尽早丢弃非法流量,节省带宽和设备资源)。
- 性能影响:复杂的ACL或大量ACL规则会增加设备处理负担,可能影响转发性能。优化规则设计。
- 测试验证:配置ACL后务必进行充分测试,确保其按预期允许和拒绝流量。使用
display packet-filter statistics
等命令查看匹配计数辅助调试。
实验:
一、实验拓扑
二、实验需求
-
按照图示配置IP地址
-
实现全网互通
-
在SERVER上配置开启TELNET和FTP服务
-
配置ACL实现如下效果
(1)192.168.1.0/24 网段不允许访问 192.168.2.0/24 网段
(2)PC1 可以访问 SERVER 的 TELNET 服务,但不能访问 FTP 服务
(3)PC2 可以访问 SERVER 的 FTP 服务,但不能访问 TELNET 服务
(4)PC3 可以访问 SERVER 的 TELNET 服务和 FTP 服务,但 ping 不通SERVER
三、实验步骤
-
按照图示配置IP地址,略
-
实现全网互通,略
-
在SERVER上配置开启TELNET和FTP服务,略
-
配置ACL
- 192.168.1.0/24 网段不允许访问 192.168.2.0/24 网段
[R2]acl basic 2000 [R2-acl-ipv4-basic-2000]rule deny source 192.168.1.0 0.0.0.255 [R2-acl-ipv4-basic-2000]dis th # acl basic 2000rule 0 deny source 192.168.1.0 0.0.0.255 # return [R2-acl-ipv4-basic-2000]qu [R2]int g0/2 [R2-GigabitEthernet0/2]packet-filter 2000 outbound [R2-GigabitEthernet0/2]qu [R2]
- PC1 可以访问 SERVER 的 TELNET 服务,但不能访问 FTP 服务
- PC2 可以访问 SERVER 的 FTP 服务,但不能访问 TELNET 服务
[R1]acl advanced 3000 [R1-acl-ipv4-adv-3000]rule deny tcp source 192.168.1.1 0 destination-port range 20 21 [R1-acl-ipv4-adv-3000]rule deny tcp source 192.168.1.2 0 destination-port eq 23 [R1]int g0/1 [R1-GigabitEthernet0/1]packet-filter 3000 inbound
- PC3 可以访问 SERVER 的 TELNET 服务和 FTP 服务,但无法 ping 通SERVER
[R2]acl advanced 3000 [R2-acl-ipv4-adv-3000]rule deny icmp source 192.168.2.3 0 destination 192.168.3. 1 0 [R2-GigabitEthernet0/2]packet-filter 3000 outbound
-
测试
- PC1 和 PC2 都无法 Ping 通 PC3
<PC1>ping 192.168.2.3 Ping 192.168.2.3 (192.168.2.3): 56 data bytes, press CTRL+C to break Request time out Request time out Request time out Request time out Request time out--- Ping statistics for 192.168.2.3 ---
<PC2>ping 192.168.2.3 Ping 192.168.2.3 (192.168.2.3): 56 data bytes, press CTRL+C to break Request time out Request time out Request time out Request time out Request time out--- Ping statistics for 192.168.2.3 ---
- PC1 可以连接 SERVER1 的 TELNET,但不能连接 FTP
<PC1>telnet 192.168.3.1 Trying 192.168.3.1 ... Press CTRL+K to abort Connected to 192.168.3.1 ...****************************************************************************** * Copyright (c) 2004-2021 New H3C Technologies Co., Ltd. All rights reserved.* * Without the owner's prior written consent, * * no decompiling or reverse-engineering shall be allowed. * ******************************************************************************Login: wiltjer Password: <SERVER>
<PC1>ftp 192.168.3.1 Press CTRL+C to abort. ftp: connect: Connection timed out ftp>
- PC2 可以连接 SERVER1的 FTP,但不能连接 TELNE
<PC2>ftp 192.168.3.1 Press CTRL+C to abort. Connected to 192.168.3.1 (192.168.3.1). 220 FTP service ready. User (192.168.3.1:(none)): wiltjer 331 Password required for wiltjer. Password: 230 User logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp>
<PC2>telnet 192.168.3.1 Trying 192.168.3.1 ... Press CTRL+K to abort Connected to 192.168.3.1 ... Failed to connect to the remote host!
- PC3 可以访问 SERVER 的 TELNET 服务和 FTP 服务,但 ping 不通SERVER
<H3C>ping 192.168.3.1 Ping 192.168.3.1 (192.168.3.1): 56 data bytes, press CTRL+C to break Request time out Request time out Request time out Request time out Request time out--- Ping statistics for 192.168.3.1 ---
<H3C>telnet 192.168.3.1 Trying 192.168.3.1 ... Press CTRL+K to abort Connected to 192.168.3.1 ...****************************************************************************** * Copyright (c) 2004-2021 New H3C Technologies Co., Ltd. All rights reserved.* * Without the owner's prior written consent, * * no decompiling or reverse-engineering shall be allowed. * ******************************************************************************Login: wiltjer Password: <SERVER>
<H3C>ftp 192.168.3.1 Press CTRL+C to abort. Connected to 192.168.3.1 (192.168.3.1). 220 FTP service ready. User (192.168.3.1:(none)): wiltjer 331 Password required for wiltjer. Password: 230 User logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp>