Windows禁用445端口
Windows应急响应:一键禁用高危端口应对0day病毒
🚨 紧急预警
今天到公司发现多台电脑感染了利用SMB漏洞传播的0day病毒。该病毒通过445端口(SMB服务)以及135-139端口(NetBIOS)在局域网内快速扩散。本文提供的脚本可一键禁用高危端口,阻断病毒传播途径,为后续查杀争取时间。
🦠 一、病毒背景:为何要关闭这些端口?
本次感染的0day病毒利用的是Windows系统的SMB(Server Message Block)服务漏洞,通过以下端口进行传播:
| 端口 | 相关服务 | 风险说明 |
|---|---|---|
| 445/tcp | SMB(Server Message Block) | 文件共享、打印机共享等。历史上WannaCry勒索病毒就是通过445端口传播 |
| 135/tcp | RPC(Remote Procedure Call) | 远程过程调用服务,常用于分布式应用通信 |
| 137-139/tcp/udp | NetBIOS | 旧版Windows网络邻居服务,存在多种安全漏洞 |
💡 应急响应原则:在无法立即打补丁的情况下,先断网、再封端口、后查杀是最有效的应急处置流程。本脚本实现了第二步——封端口。
📜 二、一键禁用高危端口脚本
将以下内容保存为 disable_smb_ports.bat,右键以管理员身份运行(Windows 7测试通过,适用于Windows 7/8/10/2008/2012)。
@echo off title Windows应急响应 - 禁用高危端口脚本 echo [1/6] 正在禁用SMB服务(注册表配置)... reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NetBT\Parameters" /v SMBDeviceEnabled /t REG_DWORD /d 0 /f echo [2/6] 正在停止Server服务(强制)... net stop Server /y echo [3/6] 禁用Server服务开机自启... sc config "LanmanServer" start= disabled echo [4/6] 确保Windows防火墙服务已启动... net start sharedaccess net start "Windows Firewall" sc config "MpsSvc" start= auto echo [5/6] 添加防火墙规则:禁止TCP端口445,135-139入站... netsh advfirewall firewall add rule name="deny445_tcp" protocol=TCP dir=in localport=445,135-139 action=block echo [6/6] 添加防火墙规则:禁止UDP端口445,135-139入站... netsh advfirewall firewall add rule name="deny445_udp" protocol=UDP dir=in localport=445,135-139 action=block echo ============================================ echo 高危端口已禁用!请检查以下内容: echo 1. Server服务状态应为"已停止" echo 2. 防火墙规则已添加(可在wf.msc中查看) echo 3. 建议重启电脑确认配置生效 echo ============================================ pause
🔍 三、脚本逐行详解
3.1 禁用SMB服务
# 修改注册表禁用SMB设备
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NetBT\Parameters" /v SMBDeviceEnabled /t REG_DWORD /d 0 /f
参数说明:
/v SMBDeviceEnabled :键值名称,控制SMB设备是否启用
/t REG_DWORD :数据类型为DWORD(32位整数)
/d 0 :设置为0表示禁用(1为启用)
/f :强制覆盖,不提示确认
3.2 停止并禁用Server服务
# 停止Server服务(/y 自动回答"是") net stop Server /y # 禁用Server服务开机自启(LanmanServer是Server服务的内部名称) sc config "LanmanServer" start= disabled # ⚠️ 注意:sc命令中 "start= disabled" 的等号后面必须有一个空格!
为什么要禁用Server服务? Server服务(LanmanServer)是Windows文件共享的核心服务,它依赖于SMB协议。禁用此服务可以彻底关闭文件共享功能,即使防火墙规则被意外修改,也能提供双重保护。
3.3 确保防火墙服务运行
# Windows防火墙相关服务 net start sharedaccess # Windows Firewall/Internet Connection Sharing (ICS) net start "Windows Firewall" # Windows Firewall服务 sc config "MpsSvc" start= auto # 设置Windows Firewall服务为自动启动 # 不同Windows版本的服务名称差异: # Windows 7: 服务名为 "MpsSvc" # Windows 10/11: 服务名为 "MpsSvc"(相同) # Windows 2008/2012: 可能略有差异,但MpsSvc通用
3.4 添加防火墙规则
# 禁止TCP端口入站 netsh advfirewall firewall add rule name="deny445_tcp" protocol=TCP dir=in localport=445,135-139 action=block # 禁止UDP端口入站(防止基于UDP的漏洞利用) netsh advfirewall firewall add rule name="deny445_udp" protocol=UDP dir=in localport=445,135-139 action=block 参数说明: name :规则名称(可自定义,建议见名知意) protocol :协议类型(TCP/UDP) dir :方向(in入站/out出站) localport :本地端口(多个端口用逗号分隔,范围用-连接) action :动作(allow允许/block阻止)
✅ 四、执行后验证方法
脚本执行完毕后,建议通过以下方法验证端口是否已成功禁用:
4.1 检查服务状态
# 查看Server服务状态 sc query LanmanServer # 期望输出:STATE 应为 1 STOPPED # SERVICE_NAME: LanmanServer # STATE : 1 STOPPED
4.2 检查防火墙规则
# 查看已添加的防火墙规则 netsh advfirewall firewall show rule name="deny445_tcp" # 或使用图形界面 运行 wf.msc → 入站规则 → 找到 "deny445_tcp" 和 "deny445_udp"
4.3 端口连通性测试
# 从另一台机器测试端口是否可达 telnet 目标IP 445 # 如果显示"连接失败"或超时,说明端口已关闭 # 或使用端口扫描工具 nmap -p 445,135-139 目标IP
⚠️ 五、重要注意事项
🔴 1. 管理员权限
所有操作都需要以管理员身份运行命令提示符。直接双击运行bat文件默认是普通权限,会导致部分命令失败。
正确执行方式: 右键点击 disable_smb_ports.bat → 选择"以管理员身份运行"
🔴 2. 业务影响评估
禁用这些端口会影响以下功能,请提前告知相关人员:
- 文件共享:无法访问网络共享文件夹
- 打印机共享:网络打印机可能无法使用
- 远程协助:部分远程管理功能受限
- 域控通信:如果机器加入域,可能影响与域控的通信
🔴 3. 恢复方法
如果病毒已清除或需要恢复文件共享,可执行以下命令:
# 启用Server服务 sc config "LanmanServer" start= auto net start Server # 删除防火墙规则 netsh advfirewall firewall delete rule name="deny445_tcp" netsh advfirewall firewall delete rule name="deny445_udp" # 恢复SMB注册表配置 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NetBT\Parameters" /v SMBDeviceEnabled /t REG_DWORD /d 1 /f
🔴 4. 不同Windows版本的兼容性
| Windows版本 | 测试结果 | 注意事项 |
|---|---|---|
| Windows 7 | ✅ 通过 | 脚本主要测试版本 |
| Windows 8/8.1 | ✅ 兼容 | 防火墙服务名一致 |
| Windows 10 | ✅ 兼容 | 部分版本需确认MpsSvc服务存在 |
| Windows 11 | ✅ 兼容 | 同上 |
| Windows Server 2008/2012 | ✅ 兼容 | 可能需关闭"增强的安全配置" |
| Windows XP | ⚠️ 部分兼容 | netsh命令语法不同,需单独适配 |
📚 六、扩展阅读:应急响应完整流程
禁用端口只是应急响应的一个环节。完整的病毒应急处置流程建议如下:
- 断网隔离:立即拔掉网线或断开WiFi,防止病毒扩散
- 封禁端口:执行本脚本禁用高危端口
- 查杀病毒:使用杀毒软件全盘扫描(如360、火绒、卡巴斯基等)
- 打补丁:安装微软官方安全补丁,根治漏洞
- 数据恢复:如有文件被加密,尝试从备份恢复
- 溯源分析:查看日志,确定感染源和感染时间
📝 七、总结
面对突发的大规模病毒感染,快速响应比完美更重要。本文提供的脚本可以在几分钟内阻断病毒的传播途径,为企业争取宝贵的处置时间。但请记住,封端口只是临时措施,最终还是要通过安装补丁、升级系统来彻底解决安全问题。
建议将此脚本保存在U盘或内部服务器,以备不时之需。
—— 应急响应笔记,希望对遇到同样问题的朋友有帮助。欢迎收藏转发~
无耻的求一下赞助


浙公网安备 33010602011771号