windows不支持且严禁将smb共享暴露于公网,防护需分层实施:确保公网连接设为“公用网络”并关闭相关共享功能;通过组策略强化身份验证与匿名访问限制;用防火墙仅阻止公网接口的139/445端口;进阶可注册表绑定server服务监听地址。
windows 本身不支持“通过公网网络访问共享文件夹”这一操作,也不建议将 smb 共享直接暴露在公网。所谓“限制通过公网网络访问共享文件夹”,本质是阻止公网流量到达本地共享服务,而非在共享设置里做区分。真正的防护必须分层实现:禁用公网侧的发现与响应、关闭非必要端口、剥离公网接口的共享能力。
关闭公网网络位置的共享功能
Windows 会根据网络类型(专用 / 公用)自动应用不同策略。关键一步是确保你的公网连接(如宽带拨号、4G/5G 网卡、或连接到开放 Wi-Fi 的网卡)被识别为“公用网络”——系统默认会在此类网络中禁用网络发现和文件共享。
- 右键任务栏网络图标 → “打开网络和 Internet 设置” → “属性” → 查看并确认“网络配置文件类型”为公用
- 若显示为“专用”,手动点击“将其更改为公用网络”
- 进入“控制面板 > 网络和 Internet > 网络和共享中心 > 高级共享设置”,展开“公用”配置区,确认以下全部关闭:
✓ 网络发现
✓ 文件和打印机共享
✓ 公共文件夹共享
从组策略禁用公网接口的 SMB 响应
即使网络设为“公用”,SMB 服务(如 Server 服务)仍可能监听所有 IP 地址。需强制其只绑定内网网卡:
- 按 Win + R 输入
gpedit.msc打开组策略编辑器 - 导航至:
计算机配置 → 管理模板 → 网络 → Lanman 工作站 - 双击“启用不安全的来宾登录” → 设为已禁用(防止弱身份验证绕过)
- 再导航至:
计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 安全选项 - 找到并双击:
网络访问:限制对命名管道和共享的匿名访问 → 设为已启用
网络访问:本地帐户的共享和安全模型 → 设为经典
网络安全:LAN 管理器身份验证级别 → 设为发送 NTLMv2 响应
通过防火墙彻底封堵公网入站 SMB 流量
这是最直接有效的手段。SMB 主要使用 TCP 139(NetBIOS Session)、TCP 445(原生 SMB),必须禁止这些端口从公网接口接收连接:
- 打开“Windows Defender 防火墙 > 高级安全”(
wf.msc) - 在“入站规则”中,新建规则 → 选择“端口” → 下一步 → 选“TCP”,输入“139,445” → 下一步 → 选“阻止连接” → 下一步
- 在“配置文件”页,仅勾选公用(确保专用/域网络不受影响)
- 在“名称”页输入如“Block SMB on Public Network”,保存
- 额外检查是否已有规则允许“文件和打印机共享(SMB-In)”,右键该规则 → 属性 → “作用域”页 → 在“远程 IP 地址”中删除“任何 IP 地址”,改为仅允许内网子网(如 192.168.1.0/24、10.0.0.0/8)
停用或绑定 SMB 服务监听地址(进阶)
若你使用的是 Windows Pro/Enterprise,可通过注册表限制 Server 服务只响应指定网卡:
- 运行
regedit,定位到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters - 新建 多字符串值,命名为
BindTo - 双击编辑,填入你仅希望提供共享的内网网卡 IPv4 地址(例如:
192.168.1.100),每行一个;留空则监听全部 - 重启 Server 服务(命令提示符管理员运行:
net stop server && net start server)











