Skip to content
VDS · Windows Server

Windows 防火墙:开放所需端口

如何为您的服务开放端口,按地址限制访问,并验证规则确实生效且不会让您失去对服务器的访问。

更新于 2026年8月23日

在装有 Windows Server 的 VDS 上,防火墙是您的服务与互联网之间唯一的过滤器:IPv4 地址是公网地址,机器前面没有任何外部防护。因此规则很简单:只有您主动开放的端口才会暴露在外。

当前开放了哪些端口

Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction
Get-NetFirewallRule -Enabled True -Direction Inbound |
  Where-Object Action -eq Allow |
  Get-NetFirewallPortFilter | Select-Object Protocol, LocalPort -Unique
Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess

最后一条命令显示所有正在监听的端口。只监听 127.0.0.1 的服务无论规则如何,都无法从外部访问。

开放端口

Web 服务器:

New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

仅允许受信任地址访问的自有服务:

New-NetFirewallRule -DisplayName "App 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 `
  -RemoteAddress 203.0.113.5,198.51.100.0/24 -Action Allow

如果应用程序使用动态端口,针对特定程序而非端口的规则更可靠:

New-NetFirewallRule -DisplayName "MyApp" -Direction Inbound -Program "C:\apps\myapp.exe" -Action Allow

删除和查看规则:

Remove-NetFirewallRule -DisplayName "App 8080"
Get-NetFirewallRule -DisplayName "App 8080" | Format-List

哪些端口应保持关闭

未经地址限制,绝不要对外暴露以下端口:

端口服务原因
3389RDP密码暴力破解在最初几小时内就会开始,参见 RDP 防护
1433MS SQL数据库不应从互联网访问,参见 MS SQL Server
5985、5986WinRM远程管理,仅限您自己的地址访问
445SMB大规模攻击的经典目标

如果您需要从自己的电脑访问数据库,不要开放 1433;而应在 RDP 会话内转发端口或搭建 VPN。

验证

端口在机器内部处于监听状态,并不意味着可以从外部访问。请从另一台主机检查:

nc -vz YOUR_ADDRESS 443
curl -I http://YOUR_ADDRESS

如果从外部显示为关闭,但 Get-NetTCPConnection 显示存在监听,那么问题出在规则或网络配置文件上:请确认规则创建在当前处于活动状态的配置文件中(通常是“公用网络”)。

常见错误

  • “为了调试”而完全禁用防火墙。 还没等您调试完,机器就会被扫描到。请改为创建一条带地址限制的临时规则。
  • 开放了端口却忘了应用程序。 许多服务默认只监听 localhost;这与规则无关。
  • 把自己锁在 RDP 之外。 遇到这种情况,请通过控制面板 /hosting/vds/m/<id> 中的“控制台”标签页,以“屏幕”模式登录,并在那里修改规则。
  • 在拒绝规则之上创建允许规则。 在 Windows 中,拒绝始终优先于允许——请查找具有相同端口的阻止规则。

每次更改后,建议保存一份配置快照:Get-NetFirewallRule -Enabled True | Export-Csv C:\fw.csv。这样当某个服务突然无响应时,您就能了解发生了什么变化。