在 Windows 防火墙上创建入站规则拦截 TCP 445 端口是缓解永恒蓝(EternalBlue)漏洞利用的直接手段,适用于无法立即安装 MS17-010 补丁或需要纵深防御的场景。注意拦截该端口会导致局域网文件共享和打印机服务不可用,操作前需确认业务依赖。
先说结论:防火墙拦截是临时缓解措施,安装官方安全补丁才是根本修复方案。
- 先判断业务是否依赖 SMB 服务
- 优先安装 MS17-010 安全补丁
- 再验证端口连通性是否阻断
命令速用版
以管理员身份运行命令提示符,执行以下命令直接拦截 TCP 445 端口入站连接:
netsh advfirewall firewall add rule name="Block SMB 445" dir=in action=block protocol=TCP localport=445
若需同时拦截 UDP 445 及 NetBIOS 相关端口(137-139),需分别添加规则。
为什么会这样
永恒蓝漏洞利用的是 SMBv1 协议中的缓冲区溢出缺陷,TCP 445 端口是 SMB 服务在 Windows 上的主要通信渠道。
攻击者通过向该端口发送特制数据包获取系统权限。防火墙拦截切断了外部攻击路径,但无法修复系统内部代码缺陷,因此必须配合补丁使用。
分步处理
步骤 1:确认系统补丁状态
打开“设置”>“更新和安全”,检查是否已安装 2017 年 3 月及之后的安全更新。若已安装 MS17-010 补丁,防火墙规则作为纵深防御保留。
步骤 2:配置防火墙规则(图形界面)
1. 运行 wf.msc 打开高级安全 Windows 防火墙。
2. 点击“入站规则”>“新建规则”。
3. 选择“端口”>“下一步”> 选择"TCP"和“特定本地端口”,输入 445。
4. 选择“阻止连接”> 勾选所有配置文件(域、专用、公用)> 命名规则为"Block EternalBlue 445"。
步骤 3:配置防火墙规则(命令行)
若需批量部署,可使用以下命令:
netsh advfirewall firewall add rule name="Block SMB 445" dir=in action=block protocol=TCP localport=445
怎么验证是否生效
方法 1:本地端口监听检查
执行 netstat -ano | findstr :445。若显示 LISTENING,说明服务仍在运行,但防火墙应拦截外部连接。
方法 2:连通性测试
在另一台机器上执行 PowerShell 命令:Test-NetConnection -ComputerName <目标 IP> -Port 445。若结果显示 TcpTestSucceeded 为 False,说明拦截生效。
方法 3:防火墙规则状态
在防火墙界面确认新建规则前方框已勾选,且配置文件覆盖当前网络类型。
常见坑
- 业务中断风险:拦截 445 端口会导致文件共享、部分打印机共享及域内某些认证功能失效,生产环境需先评估。
- IPv6 配置遗漏:若网络启用 IPv6,需单独为 IPv6 协议添加拦截规则,否则攻击者可能通过 IPv6 绕过。
- 域控制器例外:域控制器依赖 SMB 进行复制和认证,盲目拦截可能导致域服务异常,需结合组策略细化范围。
常见问题
只配防火墙不装补丁可以吗?
不可以。防火墙仅阻断网络攻击路径,无法防止内网横向移动或物理接触攻击,必须安装 MS17-010 补丁。
拦截 445 端口会影响上网吗?
不会影响普通互联网浏览。445 端口主要用于局域网文件共享,大多数 ISP 已在网络侧封锁该端口。
还需要拦截 139 端口吗?
建议同时拦截。139 端口也涉及 NetBIOS 会话服务,可能被用于信息收集或辅助攻击,关闭可减少暴露面。
参考来源
- Microsoft Security Advisory MS17-010, "Security Update for Microsoft Windows SMB Server", March 14, 2017.
- CISA Alert AA17-088A, "Technical Alert: US-CERT Recommendations for Mitigating EternalBlue", March 2017.