1. 项目背景与需求分析
在企业网络运维中,内网安全防护是基础但至关重要的一环。最近在梳理某客户网络架构时,发现其核心交换机上存在大量高危端口开放的情况,包括135/139/445等常见漏洞端口。这些端口若被恶意利用,可能导致蠕虫传播、勒索软件感染等严重安全事故。通过配置华为交换机的访问控制列表(ACL),我们可以有效封禁这些高危端口,构建第一道安全防线。
华为交换机的ACL功能相比普通防火墙有以下优势:
- 部署在接入层,能实现更细粒度的端口级控制
- 基于硬件转发,对设备性能影响极小
- 支持丰富的匹配条件和动作组合
- 配置灵活,可随时调整策略
2. ACL基础概念解析
2.1 ACL类型选择
华为交换机支持多种ACL类型,针对端口封禁场景推荐使用:
- 高级ACL(3000-3999):可基于源/目的IP、协议类型、端口号等组合条件进行精确匹配
- 基本ACL(2000-2999):仅支持源IP匹配,不适合本场景
注意:部分老旧型号可能只支持基本ACL,需提前确认设备型号和软件版本
2.2 规则匹配机制
ACL规则采用"自上而下"的匹配顺序,关键特性包括:
- 默认存在隐含的deny any规则
- 规则编号间隔建议设置为5或10(如rule 5, rule 10)
- 匹配到第一条符合条件的规则后立即执行动作
3. 详细配置步骤
3.1 拓扑环境准备
假设网络拓扑如下:
code复制[内网PC] --- [华为S5700] --- [防火墙] --- Internet
需要保护的网段:192.168.1.0/24
3.2 配置高危端口封禁ACL
bash复制# 创建高级ACL 3001
acl number 3001
description Block_Dangerous_Ports
# 封禁TCP高危端口
rule 5 deny tcp destination-port eq 135
rule 10 deny tcp destination-port eq 139
rule 15 deny tcp destination-port eq 445
rule 20 deny tcp destination-port eq 3389
# 封禁UDP高危端口
rule 25 deny udp destination-port eq 135
rule 30 deny udp destination-port eq 137
rule 35 deny udp destination-port eq 138
rule 40 deny udp destination-port eq 445
# 放行其他流量(重要!)
rule 100 permit ip
3.3 应用ACL到接口
bash复制# 进入内网接口视图
interface GigabitEthernet0/0/1
# 在入方向应用ACL
traffic-filter inbound acl 3001
# 提交配置
commit
4. 关键配置解析
4.1 端口选择依据
封禁的端口清单基于微软安全公告:
- 135:RPC服务端口
- 137-139:NetBIOS服务
- 445:SMB文件共享
- 3389:远程桌面(如无远程管理需求)
4.2 规则设计要点
- deny规则在前:确保高危流量优先被拦截
- permit规则收尾:避免阻断正常业务流量
- TCP/UDP双协议:部分服务会同时使用两种协议
- 规则描述清晰:便于后期维护
5. 验证与排错
5.1 基础验证命令
bash复制# 查看ACL配置
display acl 3001
# 检查接口应用状态
display traffic-filter applied-record
# 测试端口连通性(从内网PC执行)
telnet 192.168.1.100 445 # 应无法连接
5.2 常见问题处理
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| ACL未生效 | 未正确应用接口 | 检查traffic-filter绑定 |
| 业务中断 | permit规则缺失 | 确认ACL最后有permit ip |
| 部分阻断 | 协议类型不全 | 补充UDP/TCP双规则 |
6. 进阶优化建议
6.1 基于时间的ACL
对于需要临时开放的场景:
bash复制# 创建时间段
time-range WORKTIME 08:00 to 18:00 working-day
# 在规则中引用
rule 50 deny tcp destination-port eq 3389 time-range WORKTIME
6.2 日志记录配置
bash复制# 启用ACL日志
rule 5 deny tcp destination-port eq 135 logging
rule 10 deny tcp destination-port eq 139 logging
# 查看日志
display logbuffer
6.3 批量管理技巧
使用Python脚本通过SSH批量配置:
python复制import paramiko
def config_acl(ip, username, password):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, username=username, password=password)
commands = [
'system-view',
'acl number 3001',
'rule 5 deny tcp destination-port eq 135',
# 添加更多规则...
'interface GigabitEthernet0/0/1',
'traffic-filter inbound acl 3001',
'commit'
]
for cmd in commands:
stdin, stdout, stderr = ssh.exec_command(cmd)
print(stdout.read().decode())
ssh.close()
7. 安全加固延伸措施
-
结合端口安全:限制接口MAC学习数量
bash复制interface GigabitEthernet0/0/1 port-security enable port-security max-mac-num 2 -
启用DHCP Snooping:防止非法DHCP服务器
bash复制dhcp snooping enable interface GigabitEthernet0/0/1 dhcp snooping enable -
配置风暴控制:抑制广播风暴
bash复制interface GigabitEthernet0/0/1 broadcast-suppression 50 # 限制广播流量为50%
在实际部署中,建议先在小范围测试ACL规则,确认不影响业务后再全网推广。对于关键业务系统,可先配置logging观察一段时间,确认无异常访问后再启用阻断策略。