在 By-Hoster VPS 上,您的机器前方没有网络防火墙:过滤完全在 Windows 中进行。您在 Windows Defender 防火墙中允许的一切都可以从互联网访问,而您拒绝的一切都会被阻止。这很简单,但也没有任何安全网:一条范围过宽的规则会把服务暴露给全世界。
修改防火墙之前的黄金法则是什么?
在拥有其他访问方式之前,切勿删除或禁用允许远程桌面(3389 端口)的规则。如果您切断了自己的 RDP,唯一剩下的入口就是客户中心的救援控制台。在修改防火墙之前,请先记住它的位置。
如何在我的 Windows VPS 上开放入站端口?
在 Windows Defender Firewall with Advanced Security(wf.msc)中,创建一条类型为 端口 的新入站规则,并允许连接。
- 打开「开始」菜单,启动 Windows Defender Firewall with Advanced Security(
wf.msc)。 - 在左侧栏中选择 Inbound Rules。
- 在右侧点击 New Rule…。
- 选择 端口,然后点击 Next。
- 根据您的应用选择 TCP 或 UDP,输入端口号(例如
443)并确认。 - 选择 Allow the connection。
- 勾选相应的配置文件。在服务器上,活动配置文件通常为 Public:请保持勾选。
- 为规则设置一个明确的名称,例如
HTTPS - public website,然后完成。
没有清晰名称的规则在六个月后就会变得难以理解。请描述服务,而不是端口。
如何将端口限制为仅我的 IP 地址可访问?
在规则属性的 Scope 选项卡中,于 Remote IP address 部分选择 These IP addresses,然后添加您的地址。
向全世界开放管理端口,最终只会每天收到成千上万次的登录尝试。对于数据库、管理面板或任何不面向公众的服务:
- 打开已创建规则的属性。
- 进入 Scope 选项卡的 Remote IP address 部分。
- 选择 These IP addresses,并添加您的公网地址或您公司的地址段。
- 确认。
如果您的互联网连接没有固定地址,则每当地址变化时都需要更新此限制:与大幅减少的干扰流量相比,这点麻烦完全值得。
如何确认端口确实可以访问?
使用 Get-NetTCPConnection 检查监听状态,使用 Get-NetFirewallRule 检查规则,然后使用 Test-NetConnection 从外部检查访问。
按以下顺序进行三项检查,可以区分防火墙问题与应用问题。
在服务器上,使用 PowerShell 检查是否有程序在监听:
Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort
如果您的端口没有出现,说明应用未启动:这与防火墙无关。
仍然在服务器上,列出您的活动规则:
Get-NetFirewallRule -Enabled True -Direction Inbound | Select-Object DisplayName, Action
在您的电脑上,从外部测试访问:
Test-NetConnection -ComputerName IP_ADDRESS -Port 443
显示 TcpTestSucceeded : True 即表示端口在整条路径上都是畅通的。
防火墙最常见的错误有哪些?
五个典型错误:开放了出站而非入站端口、混淆 TCP 与 UDP、忘记网络配置文件、「为了测试」而禁用防火墙,以及暴露未更新的应用。
- 开放了出站端口而不是入站端口。出站流量默认是允许的;让服务可被访问的是入站规则。
- 混淆 TCP 与 UDP。监听 UDP 的服务永远不会响应 TCP 规则。
- 忘记网络配置文件。仅应用于 Domain 配置文件的规则对独立服务器没有任何作用。
- 「为了测试」而完全禁用防火墙。如果测试成功,您就会让一台毫无防护的机器暴露在互联网上,而且很容易忘记恢复。请添加一条临时规则,测试完成后再将其删除。
- 发布未更新的应用。防火墙无法防范您刚刚暴露的服务中存在的漏洞。
开放端口之后应该做什么?
列出您开放的端口及其原因。删除不再需要的规则:被遗忘的规则就是被遗忘的门。客户中心的 图表选项卡可以帮助您在开放端口后发现异常流量。