可通过windows防火墙入站规则精确控制ip访问特定服务,需确认服务端口(如sql server 1433、rdp 3389、iis 80/443),新建基于端口和ip作用域的专用规则,注意优先级与实测验证。
可以通过 windows 防火墙的入站规则,精确控制哪些 ip 或网络能访问特定服务(如 sql server、rdp、iis 等),而无需修改服务本身配置或安装额外软件。
明确目标服务的监听端口和协议
防火墙规则基于端口和协议生效,不是基于服务名称。需先确认服务实际使用的端口:
- SQL Server 默认实例通常监听 TCP 1433;命名实例可能使用动态端口,建议在 SQL Server 配置管理器中设为固定端口
- RDP 默认使用 TCP 3389,可修改注册表更改,但需同步更新防火墙规则
- IIS 的 HTTP/HTTPS 分别对应 TCP 80/443;若部署了其他端口(如 8080),规则须匹配该端口
- 用 netstat -ano | findstr :端口号 或 Get-NetTCPConnection -LocalPort 端口号(PowerShell)验证监听状态
创建专用入站规则限制访问来源
避免直接修改“远程桌面”或“文件和打印机共享”等系统预置规则,应新建规则以保障可维护性:
- 打开“高级安全 Windows Defender 防火墙”,点击“入站规则” → “新建规则”
- 选择“端口”,输入目标 TCP/UDP 端口(支持单个端口、端口范围如 5000-5100,或多个逗号分隔端口)
- 在“作用域”页中,“远程 IP 地址”选择“下列 IP 地址”,添加允许的客户端 IP 或子网(如 192.168.1.0/24、10.5.20.100)
- 操作选“允许连接”,配置文件按需勾选(域、专用、公用),名称建议含服务名+用途(如“SQL-仅运维网段”)
优先级与冲突处理
规则按自上而下顺序匹配,首个匹配项生效。若已有通用“允许所有”的高优先级规则,新限制规则将无效:
- 新建规则默认排在底部,但可通过右键规则 → “属性” → “常规”页勾选“应用此规则前先启用”确保启用状态
- 如需更高优先级,可在 PowerShell 中用 Set-NetFirewallRule -Name "规则名" -PolicyStore ActiveStore 后,配合 Get-NetFirewallRule | Sort-Object -Property DisplayGroup, Priority 查看顺序
- 临时调试时,可禁用其他干扰规则(如“Core Networking”组下的宽松规则),验证后再恢复
验证与日常维护
规则生效后必须实测,且定期审查以防权限扩散:
- 从被允许的 IP 使用 telnet 或 Test-NetConnection 测试端口连通性:Test-NetConnection 192.168.1.10 -Port 1433
- 从被拒绝的 IP 尝试连接,应超时或被重置;可用 Wireshark 或 netsh advfirewall monitor show firewall 查看实时丢包日志(需提前启用防火墙日志)
- 导出规则备份:Export-NetFirewallRule -Path "C:\fw-rules.xml";批量更新时可用 Import-NetFirewallRule
- 服务端口变更、网络结构调整后,同步更新对应规则,避免“规则失活”导致误放行











