- 什么是 Windows 防火墙?
- 为什么必须启用和管理防火墙?
- 如何管理 Windows 防火墙?(图形界面和命令行)
- 核心概念:入站规则 vs. 出站规则
- 最佳实践和建议
- 常见问题与故障排除
什么是 Windows 防火墙?
Windows 防火墙(Windows Defender Firewall with Advanced Security)是 Windows 操作系统自带的一款有状态防火墙,它位于你的服务器和外部网络(如互联网或内部局域网)之间,像一个安全守卫,检查所有进出服务器的网络数据包。

- 有状态:这意味着防火墙会跟踪网络连接的状态,如果一个出站连接被服务器上的程序发起,那么相关的入站响应数据包通常会被允许通过,即使没有明确的入站规则。
- 核心功能:根据你预先定义的规则,决定允许哪些数据包通过,阻止哪些,这些规则可以基于多种条件,
- 程序或服务:允许或阻止某个特定的应用程序(如
nginx.exe)或系统服务(如 Web 服务)。 - 端口和协议:允许或阻止特定的 TCP/UDP 端口(如 80 端口用于 HTTP, 443 端口用于 HTTPS)。
- IP 地址:只允许来自特定 IP 地址或 IP 地址范围(如公司内网 IP)的连接。
- 配置文件:根据网络连接类型(域、专用、公用)应用不同的规则集。
- 程序或服务:允许或阻止某个特定的应用程序(如
为什么必须启用和管理防火墙?
对于任何暴露在公共网络或不受信任网络中的服务器来说,启用防火墙是最基本、最重要的安全措施之一。
- 防止未授权访问:默认情况下,防火墙会阻止所有未经授权的入站连接,这可以防止黑客自动扫描并尝试利用服务器上开放的端口和漏洞。
- 减少攻击面:通过只开放业务必需的端口(如 Web 服务的 80/443,数据库的特定端口),你可以大大减少服务器暴露给潜在攻击者的“攻击面”。
- 保护系统服务:许多 Windows 系统服务(如文件共享、远程管理)都有对应的网络端口,防火墙可以保护这些服务,防止它们被滥用。
- 满足合规性要求:几乎所有的安全合规性标准(如 PCI DSS, ISO 27001, GDPR)都强制要求网络边界设备(包括服务器自身)必须配置防火墙。
一句话总结:防火墙是你的服务器安全的第一道,也是最重要的一道防线。
如何管理 Windows 防火墙?
管理防火墙主要有两种方式:图形用户界面 和命令行。
A. 图形界面管理
这是最直观的方式,适合初学者和进行简单的规则配置。

-
打开防火墙管理器:
- 按
Win + R键,输入wf.msc并回车。 - 或者通过服务器管理器 -> “工具” -> “高级安全 Windows Defender 防火墙”。
- 按
-
管理入站/出站规则:
- 在左侧面板,你可以选择“入站规则”或“出站规则”。
- 创建新规则:在右侧操作面板点击“新建规则...”,会启动一个向导,引导你选择规则类型(端口、程序等)、设置动作(允许/阻止)、配置配置文件(域、专用、公用)和名称。
- 编辑现有规则:在规则列表中右键点击某个规则,可以修改其属性,如启用/禁用、修改作用域(IP 地址)、修改用户等。
-
查看当前配置文件状态:
- 在主界面的右侧,可以快速切换“域配置文件”、“专用配置文件”和“公用配置文件”。
- 你可以清晰地看到每个配置文件的防火墙状态(已启用/已禁用)以及“入站连接”和“出站连接”的默认行为(默认是阻止所有入站,允许所有出站)。
B. 命令行管理
对于需要自动化、批量管理或远程管理的场景,命令行工具是首选。

-
netsh命令:这是最经典、功能最强大的防火墙命令行工具。-
查看防火墙状态:
netsh advfirewall show allprofiles
-
启用/禁用防火墙:
# 启用所有配置文件的防火墙 netsh advfirewall set allprofiles state on # 禁用公用配置文件的防火墙 netsh advfirewall set publicprofile state off
-
创建高级规则:
# 示例:允许来自特定IP(192.168.1.100)访问服务器的TCP 3389端口(RDP) netsh advfirewall firewall add rule name="Allow RDP from Admin PC" dir=in action=allow protocol=TCP localport=3389 remoteip=192.168.1.100
name: 规则名称dir: 方向 (in入站,out出站)action: 动作 (allow允许,block阻止)protocol: 协议 (TCP,UDP,ANY)localport: 本地端口remoteip: 远程IP地址
-
删除规则:
# 通过规则名称删除 netsh advfirewall firewall delete rule name="Allow RDP from Admin PC"
-
-
PowerShell 命令:从 Windows Server 2012 开始,PowerShell 提供了更现代、更易于理解的
NetSecurity模块 cmdlet。-
查看所有入站规则:
Get-NetFirewallRule -Direction Inbound
-
启用/禁用规则:
# 通过名称启用规则 Enable-NetFirewallRule -DisplayName "File and Printer Sharing (SMB-In)" # 通过名称禁用规则 Disable-NetFirewallRule -DisplayName "Allow RDP from Admin PC"
-
创建新规则:
# 示例:允许TCP 80端口入站 New-NetFirewallRule -DisplayName "Allow HTTP In" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
DisplayName: 规则显示名称- 其他参数与
netsh类似,但命名更清晰。
-
删除规则:
Remove-NetFirewallRule -DisplayName "Allow HTTP In"
-
核心概念:入站规则 vs. 出站规则
理解这两者的区别至关重要。
| 特性 | 入站规则 | 出站规则 |
|---|---|---|
| 作用 | 控制外部网络进入服务器的数据流。 | 控制服务器发送到外部网络的数据流。 |
| 默认策略 | 阻止所有,这是服务器的默认安全状态。 | 允许所有,除非有特定需求,否则通常不需要修改。 |
| 主要用途 | 安全控制,这是防火墙的核心功能,用于开放服务端口,阻止恶意访问。 | 内容过滤/审计,通常用于: 阻止服务器上的程序连接到恶意网站/服务器。 防止数据泄露(如阻止数据库服务器向未知IP发送数据)。 审计服务器主动发起的连接。 |
| 常见场景 |
|
|
最佳实践:将精力集中在配置入站规则上,只有在有特殊安全需求(如数据防泄露)时,才需要配置出站规则。
最佳实践和建议
- 始终启用防火墙:确保所有网络配置文件(域、专用、公用)的防火墙都处于“启用”状态。
- 遵循“最小权限原则”:只开放业务绝对必需的端口,如果一台服务器只做 Web 服务,那么除了 80/443 端口,其他所有端口都应该保持默认阻止状态。
- 使用具体的 IP 地址限制:如果可能,不要对全世界开放端口,只允许公司内网 IP 或特定的管理 IP 地址访问服务器的管理端口(如 3389, 22)。
- 命名规范清晰:为你的规则起一个有意义的名字,
Allow_HTTP_Port80_from_Internet,方便日后管理和排错。 - 禁用不必要的服务:在防火墙中阻止不需要的服务端口(如 Telnet 23, FTP 21),或者在系统层面直接禁用这些服务。
- 谨慎使用“允许任何连接”:在创建规则时,尽量指定具体的 IP 地址范围或子网,而不是选择“任何 IP 地址 (任何 IPv4 或 IPv6)”。
- 定期审查规则:随着业务变化,旧的规则可能不再需要,定期清理不再使用的防火墙规则,保持规则的整洁和安全。
- 测试你的规则:在应用新规则前,尤其是在生产环境,确保你已经通过其他方式(如控制台访问)连接到服务器,以防新规则把你锁在外面。
常见问题与故障排除
问题:我无法访问服务器上的服务了!
- 原因:很可能是因为防火墙规则阻止了访问。
- 排查步骤:
- 临时禁用防火墙测试:在
wf.msc中,暂时禁用当前配置文件的防火墙,如果此时可以访问,则问题确定出在防火墙规则上。 - 检查规则顺序:在“入站规则”列表中,规则是按从上到下的顺序匹配的,找到阻止你访问的规则(通常是名称为“回显请求 - ICMPv4 入站”的规则被禁用,或者你自定义的某个阻止规则排在了允许规则上面),将其下移或禁用。
- 检查规则是否匹配:确认你的规则是否包含了正确的协议、端口和 IP 地址范围,你用
https://your-server-ip访问,但规则只允许了HTTP (80)端口,而不是HTTPS (443)。 - 检查配置文件:确认你的服务器当前连接的网络类型(域、专用、公用),并检查了对应的防火墙配置文件规则。
- 临时禁用防火墙测试:在
问题:我忘记了我的服务器的管理员密码,也无法通过 RDP 连接,防火墙规则只允许我的 IP。
- 这是最糟糕的情况! 这就是为什么在配置防火墙时,一定要保留一个紧急访问方案。
- 解决方案:
- 物理接触:如果你能接触到机房,直接操作物理机,通过控制台登录。
- 带外管理:如果你的服务器有带外管理卡(如 iDRAC, iLO),可以通过它获得一个独立的控制台连接。
- 启动到安全模式:重启服务器,进入安全模式,在安全模式下,某些第三方防火墙驱动可能不会加载,Windows 自带防火墙的规则也可能被绕过,让你有机会重置密码或修改规则。注意:此方法不一定在所有版本和所有情况下都有效。
希望这份详细的指南能帮助你全面了解和管理 Windows 服务器的防火墙!
