业务访问控制-ACL与包过滤
ACL的定义及应用场景
-
ACL(Access Control List,访问控制列表)是用来实现数据包识别功能的;
-
ACL可以应用于诸多场景:
- 包过滤功能:对数据包进行放通或过滤操作。
- NAT(Network Address Translation,网络地址转换)
- 按需拨号
- Qos流分类ACL:只对数据包进行匹配,或者说对数据包进行流量分类。
- 路由过滤ACL:对路由进行方向或过滤操作。
- 路由策略ACL:只对路由进行匹配。
ACL包过滤的工作原理
网络访问控制需求
- 网络访问控制需求
- 要求192.168.1.192 - 255 不能访问192.168.2.128 - 255.
ACL包过滤基本原理
- ACL包过滤
- 第一步ACL:每条ACL都由若干条ACL规则条目组成。
- ACL规则条目:由1个匹配条件和执行动词(permit或deny)组成。
- 第二步ACL包过滤:讲ACL绑定到设备接口上,进行数据包过滤。
- 匹配permit规则条目的允许放行。
- 匹配deny规则条目的拒绝通过。
- 第一步ACL:每条ACL都由若干条ACL规则条目组成。
- 设备接口的入方向和出方向
- 入方向(in):数据包进入设备的方向。
- 出方向(out):数据包离开设备的方向。
- 两个方向都可以绑定ACL对数据包进行过滤。
- 包过滤ACL绑定:每个接口的每个方向只能绑定1条ACL
一条ACL可以包含很多条规则条目,在Cisco设备,隐含规则条目会拒绝所有,即没有配置任何ACL规则条目的情况下。在华为和华三的设备没有限制。
思科ACL包过滤基本原理
- 思科ACL包过滤原理
- 思科IP转发流程
- 入处理执行in方向ACL包过滤
- 出处理执行out方向ACL包过滤
入方向处理
出方向处理
华为/H3C ACL包过滤基本原理
- 华为华三ACL包过滤基本原理
- 华为华三IP转发流程
- 入处理执行in方向ACL包过滤
- 出处理执行out方向ACL包过滤
ACL的分类及应用
ACL规则条目组成——序号/名字+字段匹配
- 利用数字序号标识访问控制列表
- 可以给访问控制列表指定名称,便于维护
ACL规则条目组成——序号/名字+执行动作+字段匹配
IP数据包字段匹配方法:
- 数据包中的各个字段
- 数据包中的各个字段都可以进行匹配
- 常用匹配五元组:源IP、目标IP、协议、源端口、目标端口
-
数据包中的IP地址字段匹配
-
匹配字段
- 匹配源IP
- 匹配目标IP
- 同时匹配源IP和目标IP
-
匹配方法
- IP地址 通配符
- 通配符32位,按位通配,位为0表示这位不能变,位为1表示这位可变。
- IP地址 通配符
-
匹配案列1
- 匹配:192.168.1.1 - 192.168.1.254
- 答案:192.168.1.0 0.0.0.255
-
匹配案列2
- 匹配:192.168.2.128 - 192.168.2.254
- 答案:192.168.2.128 0.0.0.127
-
匹配案列3
- 匹配:192.168.1.192
- 答案:192.168.1.192 0.0.0.0
- 可以简写为:host 192.168.1.192
-
匹配案列4
- 匹配:所有IP地址
- 答案:0.0.0.0 255.255.255.255
- 可以简写为:any
-
匹配案列5
- 匹配:所有偶数IP地址
- 答案:192.168.1.1 0.0.0.254
-
匹配案列6
- 所有奇数IP地址
- 答案:192.168.1.0 0.0.0.254
-
-
TCP/UDP包中的端口字段匹配
-
匹配字段
- 匹配源端口
- 匹配目标端口
- 同时匹配源端口和目标端口
-
匹配方法
-
端口范围操作符、端口号
操作符 全称 含义 示例作用 eq
equal 匹配“等于”某个端口号 eq 80
:表示 HTTP 服务neq
not equal 匹配“不等于”某个端口号 neq 23
:除 Telnet 以外的服务gt
greater 匹配“大于”某个端口号 gt 1023
:过滤高位端口lt
less 匹配“小于”某个端口号 lt 1024
:匹配常用低端口(0-1023)range
范围 匹配“在两个端口之间”的端口 range 20 21
:FTP数据和控制端口
-
-
匹配案例1
- 匹配:DNS端口
- 答案:eq 53
-
匹配案列2
- 匹配:DHCP服务器端口
- 答案:eq 67
-
匹配案例3
- 匹配:DHCP客户端端口
- 答案:eq 68
-
匹配案列4
- 匹配:80 - 123端口
- 答案:range 80 123
-
匹配案例5
- 匹配:1024及以上的端口
- 答案:gt 1023
-
匹配案例6
- 匹配:1024及以下的端口
- 答案:lt 1024
-
ACL分类
命名ACL
- 标准ACL与扩展ACL的缺陷(序号)
- 对任意一条ACL规则条目的删除、修改、插入都需要先删除整个ACL,然后重新配置。
-
命名ACL
-
按序号顺序匹配,可按序号增加、删除、修改、插入规则条目。
-
Cisco设备,如果省略序号,默认开始序号10,默认步长为10。
-
标准命名ACL
-
扩展命名ACL
-
-
命名ACL应用案例
- 可按序号增加、删除、修改、插入规则条目。
ACL高级应用
基于时间ACL配置案例
- 需求:上班时间(9:00 - 18:00)不允许员工的主机(172.16.1.0/24)访问Internet,下班时间可以访问Internet上的Web服务。
自反ACL
- 单向访问控制需求
- 只允许内网访问外网,不允许外网访问内网
-
自反ACL
- reeflect name1:
- 根据流出的数据流动自动产生回程需要的源目反向的ACL规则条目
- evaluate1 name1
- 调用自动产生的ACL
- reeflect name1:
典型ACL包过滤案例
标准ACL
- 标准ACL应用案例一
- 只有192.168.1.0-254、192.168.2.0-191能访问192.168.3.0网段。
- 不允许10.0.0.0/8访问本路由器的网段
- 标准ACL应用案例二
- 只有192.168.3.1-254才能Telnet到RT1。
扩展ACL
- 扩展ACL应用案例一
- 要求192.168.1.192 - 255不能访问192.168.2.128 - 255
- 扩展ACL应用案例二
- 192.168.1.0网段自动获取IP导致,且只能访问192.168.x.x
放置位总结:**标准靠目标,扩展靠源头;ACL要绑接口,PC是无能手。**即标准ACL放在靠近目标PC的那边的路由器上,因为标准ACL只能看源IP,放在太前面,容易误封。扩展ACL要放在靠近源目标的那边的路由器上,因为扩展ACL能精确的识别IP、各种协议等,放在前面可以节省宽带资源。
交换机IP ACL
- 思科交换机IP ACL
✅ 一、ACL包过滤回顾(核心知识)
🔹 ACL(Access Control List)访问控制列表
是一种**基于规则对数据包进行匹配与控制(放行/拒绝)**的技术,应用于:
- 包过滤(最常见)
- 路由策略、NAT、防火墙等
- QoS分类、按需拨号等
🔹 ACL匹配原则
- 自上而下按顺序匹配
- 一旦匹配成功就不再继续往下匹配
- 若没有匹配任何规则,则默认拒绝(Cisco)或看平台默认策略(华为默认放行)
✅ 二、ACL匹配结构
每条ACL规则 = 执行动作 + 匹配条件
例如:
access-list 101 permit tcp any any eq 80
表示:允许任何人访问目的端口为80(HTTP)的主机
✅ 三、ACL端口匹配方式(核心知识点)
ACL在过滤 TCP 或 UDP 协议 时,可以匹配源端口或目的端口。这时就要用到你提到的端口范围操作符:
操作符 | 含义 | 示例 | 作用 |
---|---|---|---|
eq | 等于 | eq 80 | 匹配特定端口(如HTTP) |
neq | 不等于 | neq 23 | 除了该端口之外的都匹配 |
gt | 大于 | gt 1023 | 高端口匹配 |
lt | 小于 | lt 1024 | 匹配常见系统端口(如FTP、DNS) |
range | 范围(含头尾) | range 20 21 | 匹配一段连续的端口(如FTP) |
✅ 四、常见端口匹配案例
场景 | 命令 |
---|---|
匹配 DNS 服务 | eq 53 |
匹配 DHCP 服务器端口 | eq 67 |
匹配 DHCP 客户端端口 | eq 68 |
匹配 Web 服务 | eq 80 |
匹配 HTTPS 服务 | eq 443 |
匹配 FTP 控制端口 | eq 21 |
匹配 FTP 数据端口 | eq 20 |
匹配 80–123 之间的服务 | range 80 123 |
匹配 1024及以上端口 | gt 1023 |
匹配 1024以下端口 | lt 1024 |
✅ 五、完整ACL配置示例(Cisco)
🎯 示例1:允许访问HTTP和HTTPS,禁止其他访问
access-list 110 permit tcp any any eq 80
access-list 110 permit tcp any any eq 443
access-list 110 deny ip any any
interface f0/0
ip access-group 110 in
🎯 示例2:仅允许FTP服务端口范围
access-list 120 permit tcp any any range 20 21
access-list 120 deny ip any any
✅ 六、补充注意事项
- ACL分类:
- 标准ACL:只过滤源IP
- 扩展ACL:支持源IP + 目的IP + 协议 + 端口号(最常用于端口匹配)
- 接口方向绑定:
in
:进接口方向(数据进入设备时)out
:出接口方向(数据从设备出去时)
- 一个接口一个方向只能绑定一条ACL
- 端口匹配只能用于 TCP / UDP 协议,不能用于 ICMP、GRE 等非端口协议。
✅ 七、额外练习(你可以尝试写写)
❓问题1:
只允许 192.168.1.0/24 访问 DNS 服务?
✅ 答案:
access-list 150 permit udp 192.168.1.0 0.0.0.255 any eq 53
❓问题2:
禁止任意主机 telnet 到本设备(23端口)?
✅ 答案:
access-list 160 deny tcp any any eq 23
命令解释:
✅ 示例1:允许访问 HTTP 和 HTTPS,禁止其他访问
access-list 110 permit tcp any any eq 80
access-list 110 permit tcp any any eq 443
access-list 110 deny ip any any
interface f0/0
ip access-group 110 in
🔍 第1行:
access-list 110 permit tcp any any eq 80
📖 解释:
access-list 110
:定义一条编号为110的 扩展ACL(扩展ACL编号是100–199或2000–2699)permit
:表示 允许 匹配的流量通过tcp
:只作用于 TCP协议any any
:- 第一个
any
:表示任何源IP地址 - 第二个
any
:表示任何目标IP地址
- 第一个
eq 80
:表示 目标端口等于80(即 HTTP 服务)
✅ 结果:
允许所有主机访问任意主机的 HTTP 服务
🔍 第2行:
access-list 110 permit tcp any any eq 443
📖 解释:
- 跟上面结构一样,只是目标端口变为
eq 443
,即 HTTPS(加密网页服务)
✅ 结果:
允许所有主机访问任意主机的 HTTPS 服务
🔍 第3行:
access-list 110 deny ip any any
📖 解释:
deny
:拒绝匹配的流量ip
:表示匹配所有 IP 协议(包含 TCP、UDP、ICMP 等)any any
:任意源IP → 任意目标IP
✅ 结果:
拒绝所有非 HTTP/HTTPS 的 IP 流量(如 FTP、Telnet、DNS 等)
⚠️ 注意:这一条也起到了“兜底”的作用,拦截其它未明确放行的流量。
🔍 第4、5行:
interface f0/0
ip access-group 110 in
📖 解释:
interface f0/0
:进入接口配置模式,表示在 f0/0 接口上应用ACLip access-group 110 in
:- 表示将 ACL 编号 110 绑定到该接口
- 方向是
in
(表示进入接口的数据包要被检查)
🧠 总体结果:
- 接口 f0/0 接收到的数据包中:
- 如果是 TCP 且目标端口是 80 或 443 → 放行
- 否则(所有其它服务/协议)→ 拒绝
✅ 示例2:只允许FTP(控制+数据端口)
access-list 120 permit tcp any any range 20 21
access-list 120 deny ip any any
🔍 第1行:
access-list 120 permit tcp any any range 20 21
📖 解释:
permit tcp
:允许 TCP 协议流量any any
:任意源IP、任意目标IPrange 20 21
:目的端口号在 20~21 范围内(包含20和21)
📌 说明:
- 端口20是 FTP 数据端口
- 端口21是 FTP 控制端口
✅ 结果:
允许所有主机访问 FTP 服务(仅 FTP)
🔍 第2行:
access-list 120 deny ip any any
拒绝除 FTP 以外的所有 IP 流量
✅ 示例3:只允许 192.168.1.0/24 使用 DNS 服务
access-list 150 permit udp 192.168.1.0 0.0.0.255 any eq 53
🔍 解释:
permit udp
:允许 UDP 协议流量192.168.1.0 0.0.0.255
:源IP范围是192.168.1.0 ~ 192.168.1.255
any
:目标IP可以是任意eq 53
:目标端口为 53(DNS服务)
✅ 结果:
只允许 192.168.1.X 的主机访问 DNS 服务(UDP 53端口)