凌峰创科服务平台

Windows服务器防火墙如何正确配置?

  1. 什么是 Windows 防火墙?
  2. 为什么必须启用和管理防火墙?
  3. 如何管理 Windows 防火墙?(图形界面和命令行)
  4. 核心概念:入站规则 vs. 出站规则
  5. 最佳实践和建议
  6. 常见问题与故障排除

什么是 Windows 防火墙?

Windows 防火墙(Windows Defender Firewall with Advanced Security)是 Windows 操作系统自带的一款有状态防火墙,它位于你的服务器和外部网络(如互联网或内部局域网)之间,像一个安全守卫,检查所有进出服务器的网络数据包。

Windows服务器防火墙如何正确配置?-图1
(图片来源网络,侵删)
  • 有状态:这意味着防火墙会跟踪网络连接的状态,如果一个出站连接被服务器上的程序发起,那么相关的入站响应数据包通常会被允许通过,即使没有明确的入站规则。
  • 核心功能:根据你预先定义的规则,决定允许哪些数据包通过,阻止哪些,这些规则可以基于多种条件,
    • 程序或服务:允许或阻止某个特定的应用程序(如 nginx.exe)或系统服务(如 Web 服务)。
    • 端口和协议:允许或阻止特定的 TCP/UDP 端口(如 80 端口用于 HTTP, 443 端口用于 HTTPS)。
    • IP 地址:只允许来自特定 IP 地址或 IP 地址范围(如公司内网 IP)的连接。
    • 配置文件:根据网络连接类型(域、专用、公用)应用不同的规则集。

为什么必须启用和管理防火墙?

对于任何暴露在公共网络或不受信任网络中的服务器来说,启用防火墙是最基本、最重要的安全措施之一。

  • 防止未授权访问:默认情况下,防火墙会阻止所有未经授权的入站连接,这可以防止黑客自动扫描并尝试利用服务器上开放的端口和漏洞。
  • 减少攻击面:通过只开放业务必需的端口(如 Web 服务的 80/443,数据库的特定端口),你可以大大减少服务器暴露给潜在攻击者的“攻击面”。
  • 保护系统服务:许多 Windows 系统服务(如文件共享、远程管理)都有对应的网络端口,防火墙可以保护这些服务,防止它们被滥用。
  • 满足合规性要求:几乎所有的安全合规性标准(如 PCI DSS, ISO 27001, GDPR)都强制要求网络边界设备(包括服务器自身)必须配置防火墙。

一句话总结:防火墙是你的服务器安全的第一道,也是最重要的一道防线。


如何管理 Windows 防火墙?

管理防火墙主要有两种方式:图形用户界面 和命令行。

A. 图形界面管理

这是最直观的方式,适合初学者和进行简单的规则配置。

Windows服务器防火墙如何正确配置?-图2
(图片来源网络,侵删)
  1. 打开防火墙管理器

    • Win + R 键,输入 wf.msc 并回车。
    • 或者通过服务器管理器 -> “工具” -> “高级安全 Windows Defender 防火墙”。
  2. 管理入站/出站规则

    • 在左侧面板,你可以选择“入站规则”或“出站规则”。
    • 创建新规则:在右侧操作面板点击“新建规则...”,会启动一个向导,引导你选择规则类型(端口、程序等)、设置动作(允许/阻止)、配置配置文件(域、专用、公用)和名称。
    • 编辑现有规则:在规则列表中右键点击某个规则,可以修改其属性,如启用/禁用、修改作用域(IP 地址)、修改用户等。
  3. 查看当前配置文件状态

    • 在主界面的右侧,可以快速切换“域配置文件”、“专用配置文件”和“公用配置文件”。
    • 你可以清晰地看到每个配置文件的防火墙状态(已启用/已禁用)以及“入站连接”和“出站连接”的默认行为(默认是阻止所有入站,允许所有出站)。

B. 命令行管理

对于需要自动化、批量管理或远程管理的场景,命令行工具是首选。

Windows服务器防火墙如何正确配置?-图3
(图片来源网络,侵删)
  1. 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"
  2. 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 端口。
  • 开放数据库服务器的 1433 (SQL) 端口。
  • 开放远程桌面的 3389 端口。
  • 允许特定IP进行Ping (ICMP)。
  • 阻止员工电脑访问社交媒体。
  • 防止服务器被植入后门程序并回连黑客。
  • 限制只能访问特定的外部API服务器。

最佳实践:将精力集中在配置入站规则上,只有在有特殊安全需求(如数据防泄露)时,才需要配置出站规则


最佳实践和建议

  1. 始终启用防火墙:确保所有网络配置文件(域、专用、公用)的防火墙都处于“启用”状态。
  2. 遵循“最小权限原则”:只开放业务绝对必需的端口,如果一台服务器只做 Web 服务,那么除了 80/443 端口,其他所有端口都应该保持默认阻止状态。
  3. 使用具体的 IP 地址限制:如果可能,不要对全世界开放端口,只允许公司内网 IP 或特定的管理 IP 地址访问服务器的管理端口(如 3389, 22)。
  4. 命名规范清晰:为你的规则起一个有意义的名字,Allow_HTTP_Port80_from_Internet,方便日后管理和排错。
  5. 禁用不必要的服务:在防火墙中阻止不需要的服务端口(如 Telnet 23, FTP 21),或者在系统层面直接禁用这些服务。
  6. 谨慎使用“允许任何连接”:在创建规则时,尽量指定具体的 IP 地址范围或子网,而不是选择“任何 IP 地址 (任何 IPv4 或 IPv6)”。
  7. 定期审查规则:随着业务变化,旧的规则可能不再需要,定期清理不再使用的防火墙规则,保持规则的整洁和安全。
  8. 测试你的规则:在应用新规则前,尤其是在生产环境,确保你已经通过其他方式(如控制台访问)连接到服务器,以防新规则把你锁在外面。

常见问题与故障排除

问题:我无法访问服务器上的服务了!

  • 原因:很可能是因为防火墙规则阻止了访问。
  • 排查步骤
    1. 临时禁用防火墙测试:在 wf.msc 中,暂时禁用当前配置文件的防火墙,如果此时可以访问,则问题确定出在防火墙规则上。
    2. 检查规则顺序:在“入站规则”列表中,规则是按从上到下的顺序匹配的,找到阻止你访问的规则(通常是名称为“回显请求 - ICMPv4 入站”的规则被禁用,或者你自定义的某个阻止规则排在了允许规则上面),将其下移禁用
    3. 检查规则是否匹配:确认你的规则是否包含了正确的协议、端口和 IP 地址范围,你用 https://your-server-ip 访问,但规则只允许了 HTTP (80) 端口,而不是 HTTPS (443)
    4. 检查配置文件:确认你的服务器当前连接的网络类型(域、专用、公用),并检查了对应的防火墙配置文件规则。

问题:我忘记了我的服务器的管理员密码,也无法通过 RDP 连接,防火墙规则只允许我的 IP。

  • 这是最糟糕的情况! 这就是为什么在配置防火墙时,一定要保留一个紧急访问方案
  • 解决方案
    1. 物理接触:如果你能接触到机房,直接操作物理机,通过控制台登录。
    2. 带外管理:如果你的服务器有带外管理卡(如 iDRAC, iLO),可以通过它获得一个独立的控制台连接。
    3. 启动到安全模式:重启服务器,进入安全模式,在安全模式下,某些第三方防火墙驱动可能不会加载,Windows 自带防火墙的规则也可能被绕过,让你有机会重置密码或修改规则。注意:此方法不一定在所有版本和所有情况下都有效。

希望这份详细的指南能帮助你全面了解和管理 Windows 服务器的防火墙!

分享:
扫描分享到社交APP
上一篇
下一篇