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命令语法不同,需单独适配

📚 六、扩展阅读:应急响应完整流程

禁用端口只是应急响应的一个环节。完整的病毒应急处置流程建议如下:

  1. 断网隔离:立即拔掉网线或断开WiFi,防止病毒扩散
  2. 封禁端口:执行本脚本禁用高危端口
  3. 查杀病毒:使用杀毒软件全盘扫描(如360、火绒、卡巴斯基等)
  4. 打补丁:安装微软官方安全补丁,根治漏洞
  5. 数据恢复:如有文件被加密,尝试从备份恢复
  6. 溯源分析:查看日志,确定感染源和感染时间

📝 七、总结

面对突发的大规模病毒感染,快速响应比完美更重要。本文提供的脚本可以在几分钟内阻断病毒的传播途径,为企业争取宝贵的处置时间。但请记住,封端口只是临时措施,最终还是要通过安装补丁、升级系统来彻底解决安全问题。

建议将此脚本保存在U盘或内部服务器,以备不时之需。


—— 应急响应笔记,希望对遇到同样问题的朋友有帮助。欢迎收藏转发~

无耻的求一下赞助

posted @ 2017-05-15 10:39  一起走过的路  阅读(683)  评论(0)    收藏  举报