第10章:基础过滤工具技术文档
第10章:基础过滤工具技术文档
比如ACL,实现最简单的“看门”功能,谁能进谁不能进。
第10章 基础过滤工具
概述
在网络工程中,过滤工具是网络安全和数据流控制的核心组件。本章将详细介绍三种基础过滤工具:访问控制列表(ACL)、高级访问控制列表(Advanced ACL)以及前缀列表(Prefix List)。这些工具广泛应用于路由选择、流量过滤、网络安全策略实施等场景,是构建安全、可管理网络环境的基础。
10.1 配置基本的访问控制列表
访问控制列表(Access Control List,简称ACL)是一种基于包过滤的流控技术,通过定义一系列匹配条件,决定网络数据包的转发或丢弃。
10.1.1 ACL基本概念
ACL的作用:
-
流量过滤:控制数据包的转发或丢弃
-
网络安全:限制非法访问,防止网络攻击
-
流量识别:为QoS、策略路由等应用提供流量分类
-
网络管理:控制管理平面访问权限
ACL的分类:
-
基本ACL:基于源IP地址匹配(2000-2999)
-
高级ACL:基于源IP、目的IP、协议类型、端口号等(3000-3999)
-
二层ACL:基于MAC地址、以太网类型等(4000-4999)
-
用户自定义ACL:基于包头部任意位置(5000-5999)
ACL的匹配原则:
-
顺序匹配:按规则编号从小到大依次匹配
-
首次匹配:命中第一条规则后立即停止匹配
-
默认拒绝:未明确允许的流量默认被拒绝(implicit deny)
10.1.2 基本ACL配置示例
基本ACL主要用于基于源IP地址的过滤,配置简单,应用广泛。
|
Bash rule 5 permit source 192.168.1.0 0.0.0.255# 允许192.168.1.0/24网段 rule 10 permit source 10.1.0.0 0.0.255.255# 允许10.1.0.0/16网段 rule 15 deny source 192.168.2.0 0.0.0.255# 拒绝192.168.2.0/24网段 rule 20 deny source 172.16.0.0 0.0.255.255# 拒绝172.16.0.0/16网段 rule 100 permit source any# 允许其他所有(可选) ip address 192.168.1.1 255.255.255.0 traffic-filter inbound acl 2000 ip address 203.0.113.1 255.255.255.0 traffic-filter outbound acl 2000 |
配置说明:
-
acl basic 2000:创建编号为2000的基本ACL
-
rule 5:规则编号5,编号决定匹配顺序
-
permit source 192.168.1.0 0.0.0.255:允许源IP为192.168.1.0/24的数据包
-
0.0.0.255:通配符掩码,0表示精确匹配,1表示忽略
-
traffic-filter inbound acl 2000:在入方向应用ACL 2000
10.1.3 ACL通配符掩码详解
通配符掩码(Wildcard Mask)是ACL中的重要概念,与子网掩码相反:
-
0:需要精确匹配的比特位
-
1:忽略不检查的比特位
常见通配符掩码示例:
|
Bash |
10.1.4 基本ACL应用场景
场景1:控制远程管理访问
|
Bash rule 5 permit source 10.1.1.100 0.0.0.0# 管理员PC rule 10 permit source 10.1.1.50 0.0.0.0# 备份管理员PC rule 15 deny source any# 拒绝其他所有 acl 2100 inbound authentication-mode aaa |
场景2:隔离部门网络
|
Bash rule 5 permit source 192.168.10.0 0.0.0.255# 财务部网段 rule 5 permit source 192.168.20.0 0.0.0.255# 研发部网段 ip address 192.168.10.1 255.255.255.0 traffic-filter outbound acl 2200 ip address 192.168.20.1 255.255.255.0 traffic-filter outbound acl 2201 |
场景3:防止IP地址欺骗
|
Bash # 拒绝源地址是内部地址的外部流量 rule 5 deny source 192.168.0.0 0.0.255.255# 内部地址段 rule 10 deny source 10.0.0.0 0.255.255.255# 私有地址段 rule 15 deny source 172.16.0.0 0.15.255.255# 私有地址段 rule 20 permit source any ip address 203.0.113.10 255.255.255.0 traffic-filter inbound acl 2300 |
10.1.5 ACL配置最佳实践
1. 规则的顺序规划:
|
Bash rule 5 deny source 192.168.1.100 0.0.0.0# 首先拒绝特定攻击IP rule 10 permit source 192.168.1.0 0.0.0.255# 然后允许部门网段 rule 15 permit source 10.1.0.0 0.0.255.255# 允许其他部门网段 rule 20 deny source any# 最后拒绝其他所有 |
2. 使用描述提高可读性:
|
Bash rule 5 permit source 192.168.10.0 0.0.0.255 description “Allow Finance Dept” rule 10 permit source 192.168.20.0 0.0.0.255 description “Allow HR Dept” rule 15 deny source 192.168.30.0 0.0.0.255 description “Block Test Dept” rule 20 permit source any description “Allow others for debugging” |
3. 定期审查和清理:
|
Bash undo rule 15# 删除规则15 |
10.2 配置高级的访问控制列表
高级ACL(3000-3999)提供了更精细的流量控制能力,可以基于源IP、目的IP、协议类型、端口号等多个条件进行匹配。
10.2.1 高级ACL特性
高级ACL支持的条件:
-
三层信息:源IP地址、目的IP地址
-
四层信息:协议类型(TCP/UDP/ICMP等)
-
端口号:源端口、目的端口(支持范围匹配)
-
TCP标志位:ACK、SYN、FIN、RST等
-
时间范围:基于时间段的访问控制
-
报文优先级:匹配DSCP/IP优先级
高级ACL的语法格式:
|
Bash |
10.2.2 TCP/UDP协议过滤配置
TCP协议过滤示例:
|
Bash # 允许内部网络访问外部Web服务器(HTTP) rule 5 permit tcp source 192.168.0.0 0.0.255.255 destination 203.0.113.50 0
# 允许内部网络访问外部Web服务器(HTTPS) rule 10 permit tcp source 192.168.0.0 0.0.255.255 destination 203.0.113.50 0 # 允许外部访问内部Web服务器 rule 15 permit tcp source any destination 192.168.1.100 0
# 拒绝其他TCP流量 rule 20 deny tcp traffic-filter inbound acl 3100 |
UDP协议过滤示例:
|
Bash # 允许内部主机访问DNS服务器 rule 5 permit udp source 192.168.1.0 0.0.0.255 destination 8.8.8.8 0 rule 10 permit udp source 192.168.1.0 0.0.0.255 destination 192.168.1.10 0
# 允许DNS响应报文返回 rule 15 permit udp destination 192.168.1.0 0.0.0.255 source-port eq 53 |
10.2.3 ICMP协议过滤配置
|
Bash # 允许内部Ping外部(回显请求) rule 5 permit icmp source 192.168.1.0 0.0.0.255 destination any
# 允许外部Ping特定服务器(监控用) rule 10 permit icmp source 203.0.113.100 0 destination 192.168.1.100 0 # 允许TTL过期消息(用于traceroute) rule 15 permit icmp source any destination any
# 允许目的不可达消息 rule 20 permit icmp source any destination any # 拒绝其他ICMP类型(如重定向) rule 25 deny icmp |
10.2.4 端口范围匹配
高级ACL支持多种端口匹配操作符:
|
Bash # eq: 等于特定端口 rule 5 permit tcp source any destination 192.168.1.100 0
# gt: 大于特定端口 rule 10 permit tcp source any destination 192.168.1.100 0 # lt: 小于特定端口 rule 15 permit tcp source any destination 192.168.1.100 0
# range: 端口范围 rule 20 permit tcp source 192.168.10.0 0.0.0.255 destination 192.168.1.200 0 |
10.2.5 状态检测与TCP会话控制
使用established参数控制TCP会话:
|
Bash # 允许已建立的TCP连接(ACK位为1) rule 5 permit tcp source any destination 192.168.1.0 0.0.0.255 established
# 允许内部发起新连接 rule 10 permit tcp source 192.168.1.0 0.0.0.255 destination any rule 15 permit tcp source 192.168.1.0 0.0.0.255 destination any # 拒绝外部发起的新连接(除特定服务外) rule 20 deny tcp destination 192.168.1.0 0.0.0.255 |
10.2.6 基于时间段的访问控制
|
Bash periodic Weekdays 09:00 to 18:00 periodic Saturday 09:00 to 12:00 periodic Weekdays 18:01 to 08:59 periodic Saturday 12:01 to 23:59 periodic Sunday 00:00 to 23:59 # 工作时间允许完全访问 rule 5 permit ip source 192.168.1.0 0.0.0.255 destination any
# 非工作时间限制访问 rule 10 permit tcp source 192.168.1.0 0.0.0.255 destination any rule 15 permit tcp source 192.168.1.0 0.0.0.255 destination any rule 20 permit udp source 192.168.1.0 0.0.0.255 destination 8.8.8.8 0 # 非工作时间拒绝其他所有 rule 25 deny ip time-range AFTER-HOURS description “Block other traffic after hours” |
10.2.7 高级ACL综合应用案例
企业防火墙策略配置:
|
Bash # === 内部用户出站访问 === # Web访问 rule 10 permit tcp source 192.168.0.0 0.0.255.255 destination any rule 15 permit tcp source 192.168.0.0 0.0.255.255 destination any
# 邮件访问 rule 20 permit tcp source 192.168.0.0 0.0.255.255 destination any rule 25 permit tcp source 192.168.0.0 0.0.255.255 destination any # DNS访问 rule 30 permit udp source 192.168.0.0 0.0.255.255 destination any
# === 外部访问内部服务 === # Web服务器 rule 40 permit tcp source any destination 203.0.113.100 0 rule 45 permit tcp source any destination 203.0.113.100 0
# 邮件服务器 rule 50 permit tcp source any destination 203.0.113.101 0 rule 55 permit tcp source any destination 203.0.113.101 0 # VPN访问 rule 60 permit udp source any destination 203.0.113.102 0 rule 65 permit udp source any destination 203.0.113.102 0
# === 安全防护规则 === # 防止端口扫描和攻击 rule 100 deny tcp source any destination any rule 105 deny tcp source any destination any rule 110 deny tcp source any destination any # 防止常见攻击 rule 120 deny tcp source any destination any rule 125 deny tcp source any destination any # 默认拒绝所有未明确允许的流量 rule 1000 deny ip description “Implicit deny” ip address 203.0.113.1 255.255.255.0 traffic-filter inbound acl 3800 traffic-filter outbound acl 3800 |
10.3 配置前缀列表
前缀列表(Prefix List)是一种用于路由过滤的高效工具,主要用于BGP路由选择、路由策略匹配等场景。与ACL相比,前缀列表专门为路由过滤设计,具有更直观的语法和更好的性能。
10.3.1 前缀列表基本概念
前缀列表的特点:
-
专门用于路由过滤:针对路由前缀进行匹配
-
支持CIDR表示法:使用前缀长度而不是通配符掩码
-
支持范围匹配:可以匹配特定范围内的前缀长度
-
顺序匹配:从上到下依次匹配,找到第一个匹配项即停止
-
高性能:专为路由过滤优化,处理速度比ACL更快
前缀列表的匹配要素:
-
IP前缀:要匹配的网络地址(如192.168.0.0)
-
前缀长度:精确匹配的前缀长度
-
范围匹配:ge(大于等于)、le(小于等于)操作符
10.3.2 基本前缀列表配置
|
Bash peer 203.0.113.2 as-number 200 peer 203.0.113.2 ip-prefix INTERNAL-ROUTES import# 入方向过滤 peer 203.0.113.2 ip-prefix INTERNAL-ROUTES export# 出方向过滤 |
10.3.3 前缀长度范围匹配
前缀列表的强大之处在于支持前缀长度范围匹配:
|
Bash |
10.3.4 前缀列表操作符详解
操作符语法:
|
Plaintext |
参数说明:
-
IP-PREFIX/LEN:要匹配的基础前缀和最小长度
-
ge GE-VALUE:大于等于的前缀长度(可选)
-
le LE-VALUE:小于等于的前缀长度(可选)
匹配逻辑:
-
首先检查IP地址是否在IP-PREFIX/LEN指定的网络范围内
-
如果指定了ge,检查前缀长度是否≥GE-VALUE
-
如果指定了le,检查前缀长度是否≤LE-VALUE
-
所有条件都满足时匹配成功
10.3.5 前缀列表应用场景
场景1:BGP路由过滤
|
Bash # 从客户A接收路由 peer 203.0.113.10 as-number 200 peer 203.0.113.10 ip-prefix CUSTOMER-A import
# 从客户B接收路由 peer 198.51.100.10 as-number 300 peer 198.51.100.10 ip-prefix CUSTOMER-B import |
场景2:防止路由泄露
|
Bash peer-group EBGP-PEERS |
场景3:路由汇总控制
|
Bash |
10.3.6 前缀列表与route-policy结合使用
|
Bash if-match ip-prefix IMPORTANT-PREFIXES apply local-preference 200# 设置高本地优先级 apply community 100:666# 添加社区属性 if-match ip-prefix BACKUP-PREFIXES apply local-preference 150 apply community 100:777 # 其他路由将被拒绝 peer 10.0.0.1 as-number 200 peer 10.0.0.1 route-policy IMPORTANT-ROUTES import |
10.3.7 前缀列表最佳实践
1. 合理使用deny规则:
|
Bash |
2. 使用描述提高可维护性:
|
Bash |
3. 定期审计和清理:
|
Bash |
10.3.8 前缀列表与ACL对比
|
特性 |
前缀列表 (Prefix List) |
访问控制列表 (ACL) |
|
主要用途 |
路由过滤 |
数据包过滤、路由过滤 |
|
匹配精度 |
基于CIDR前缀长度 |
基于通配符掩码 |
|
性能 |
针对路由优化,性能高 |
通用匹配,性能一般 |
|
语法复杂度 |
简单直观 |
相对复杂 |
|
范围匹配 |
支持ge/le操作符 |
支持通配符掩码 |
|
应用场景 |
BGP、路由策略、路由过滤 |
接口过滤、路由过滤、QoS |
|
灵活性 |
针对路由场景优化 |
更通用,功能更丰富 |
总结与最佳实践
1. 工具选择指南:
-
基本ACL:适用于简单的源IP地址过滤
-
高级ACL:适用于复杂的协议、端口、时间等多条件过滤
-
前缀列表:专门用于路由过滤,特别是BGP路由选择
2. 配置通用原则:
-
从具体到一般:具体规则在前,通用规则在后
-
最小权限原则:只允许必要的访问
-
明确拒绝:在列表末尾明确拒绝其他所有流量
-
使用描述:为每条规则添加描述,提高可维护性
-
定期审查:定期检查规则使用情况和效果
3. 性能优化建议:
-
将最常匹配的规则放在前面
-
避免过度复杂的通配符掩码
-
使用前缀列表替代ACL进行路由过滤
-
合并相似规则,减少规则数量
4. 测试与验证:
|
Bash |
基础过滤工具是网络安全和流量管理的基石。通过合理配置ACL和前缀列表,可以构建安全可靠、性能高效、易于管理的网络环境。在实际部署中,需要根据具体业务需求和网络架构,灵活选择和组合使用这些工具,并持续优化和维护配置策略。
夜雨聆风