windows防火墙可通过端口规则限制指定ip访问smb共享:新建入站规则,协议选tcp、端口445,作用域设为允许的ip或网段,并禁用系统默认smb规则;同时需收紧共享权限、ntfs权限并禁用guest账户。
windows 本身不提供“共享文件夹设置里直接填允许的ip”这种图形化选项,但可以通过防火墙规则精准控制——只让指定 ip 访问 smb(445端口),从而实现基于 ip 的访问限制。这是最稳定、最通用、无需第三方工具的方案。
用 Windows 防火墙限制指定 IP 访问共享文件夹
核心逻辑:SMB 协议走 TCP 445 端口,所有共享访问都依赖此端口。只要防火墙只放行你信任的 IP 对 445 端口的入站连接,其他设备就无法建立共享会话,哪怕知道路径、有账号也无法登录。
- 按 Win+R 输入 wf.msc,打开“高级安全 Windows Defender 防火墙”
- 左侧选“入站规则”,右侧点“新建规则…”
- 规则类型选“端口”,下一步 → 协议选“TCP”,特定本地端口填 445
- 操作选“允许连接”,下一步 → 配置文件勾选“域”和“专用”(不要勾“公用”)
- 作用域 → “远程 IP 地址”选“下列 IP 地址”,点击“添加…” → 输入你要允许的单个 IP(如 192.168.1.105)或整个网段(如 192.168.1.0/24)
- 名称填“Allow_SMB_From_Trusted_IP”,完成
- 找到系统自带的规则“文件和打印机共享 (SMB-In)”,右键→“禁用”(避免它覆盖你的精细规则)
配套必须做的权限加固
仅靠防火墙还不够,需同步收紧共享与 NTFS 权限,防止绕过或内部误操作:
- 共享权限(右键文件夹→属性→共享→高级共享→权限):删掉 Everyone、Guest,只添加明确授权的用户或组,权限设为“读取”或“更改”
- NTFS 权限(属性→安全→编辑):点击“高级”→“禁用继承”→“转换为显式权限”→删掉 Users、Authenticated Users、Everyone 等宽泛组,只加内部用户或安全组,并分配最小必要权限(如“读取和执行”+“列出文件夹内容”+“读取”)
- 确认来宾账户已禁用:计算机管理→本地用户和组→用户→右键 Guest→勾选“账户已禁用”
验证是否生效
测试前确保所有设置已保存并重启 Server 服务(Win+R → services.msc → 找到“Server” → 右键“重新启动”):
- 从被允许的 IP 设备上,Win+R 输入 \目标IP共享名,应能正常弹出登录框并访问
- 从其他 IP 设备尝试相同操作,应直接提示“找不到网络路径”或“拒绝访问”,不会弹登录框
- 在目标机上用 netstat -ano | findstr :445 查看监听状态,再用另一台机器 telnet 目标IP 445 测试端口连通性(未放行的 IP 应超时)
常见失效原因与修正
如果限制后仍能被访问,大概率是以下某一项没落实:
- 防火墙规则作用域选错了配置文件(比如勾了“公用”,而当前网络类型是“专用”)
- 没禁用系统默认的 SMB 入站规则,导致它优先匹配并放行
- 网络类型被设为“公用”,此时 Windows 默认关闭网络发现和文件共享,但防火墙规则可能不生效
- 目标机开了多个网卡(如同时连 Wi-Fi 和有线),规则只绑定了某一个接口的 IP,需检查实际通信走的是哪个 IP
- 用了 IPv6 地址访问,而规则只限制了 IPv4 —— 建议在防火墙规则中同时配置 IPv4 和 IPv6 作用域,或干脆在网络适配器中禁用 IPv6











