Windows 防火墙中设置规则以拒绝所有流量,但允许特定 IP 通过

防火墙云解决方案提供商 - Windows Client Management | Microsoft Learn

Windows 防火墙规则 - Windows Security | Microsoft Learn

在 Windows 防火墙中设置规则以拒绝所有流量,但允许特定 IP 通过,可以通过以下步骤进行设置:

  1. 打开控制面板

    • 点击“开始”按钮,然后输入“控制面板”并按回车键。
  2. 打开 Windows Defender 防火墙

    • 在控制面板中,找到并点击“系统和安全” > “Windows Defender 防火墙”。
  3. 设置高级设置

    • 在左侧菜单中,点击“高级设置”。
  4. 配置出站规则

    • 在左侧菜单中,点击“出站规则”。
  5. 创建新规则

    • 在右侧的操作窗格中,点击“新建规则”。
  6. 选择规则类型和方向

    • 在“规则类型”下拉菜单中选择“程序”。
    • 在“方向”下拉菜单中选择“出站”。
  7. 配置规则

    • 在“程序”设置中,选择“此程序路径”并浏览找到要允许的程序(这里选择所有程序)。
    • 在“操作”下拉菜单中选择“允许连接”。
    • 在“配置文件”下拉菜单中选择要应用规则的配置文件(如“公共”、“私有”、“域”或“混合”)。
  8. 设置例外

    • 在“例外设置”中,选择“IP地址”和“子网掩码”。
    • 在“IP地址”框中输入允许的 IP 地址(例如 192.168.2.254),在“子网掩码”框中输入 255.255.255.255。
  9. 应用规则

    • 点击“完成”以保存新创建的规则。

请注意,如果想要拒绝所有流量,除了特定 IP,则不需要创建新的出站规则。Windows 防火墙默认会阻止所有出站连接,除非有特定的规则允许它们。

如果需要,你还可以为入站流量创建一个类似的规则,以允许特定 IP 的入站连接。

以上步骤可能会因 Windows 版本的不同而有所差异,但总体上应该类似。如果你在使用过程中遇到困难,可以查阅 Windows 防火墙的官方文档或寻求技术支持。


在 PowerShell 中,你可以使用 New-NetFirewallRule 命令来创建防火墙规则。以下是一个 PowerShell 脚本示例,它将创建一个规则,拒绝所有出站连接,但允许来自 IP 地址 192.168.2.254 的流量:

powershell
复制
# 设置允许的IP地址
$AllowedIP = "192.168.2.254"

# 创建防火墙规则,拒绝所有出站连接
New-NetFirewallRule -DisplayName "Deny All Outgoing" -Direction Outbound -Action Block -Protocol * -LocalPort * -RemoteIP $AllowedIP

# 允许特定IP的出站连接
New-NetFirewallRule -DisplayName "Allow Specific IP Outgoing" -Direction Outbound -Action Allow -Protocol * -LocalPort * -RemoteIP $AllowedIP

这个脚本将创建两个规则:

  1. Deny All Outgoing:拒绝所有出站连接。
  2. Allow Specific IP Outgoing:允许来自特定 IP 地址(192.168.2.254)的出站连接。

请确保在运行此脚本之前,你已经具有足够的权限来修改防火墙设置。你可能需要以管理员身份运行 PowerShell。

此外,请注意,这个脚本可能需要根据你的具体网络环境和需求进行调整。如果你想要拒绝所有流量,除了特定 IP,你可能需要考虑其他网络层的设置,比如在路由器上设置 ACL(访问控制列表)或使用其他网络管理工具来实现这一目标。


在 Windows 防火墙中,规则的顺序很重要。Deny 规则会优先于 Allow 规则执行。这意味着,如果你首先设置了拒绝所有流量的规则,那么即使你随后设置了允许特定流量的规则,这些流量也可能因为之前的 Deny 规则而被阻止。

为了确保特定流量能够通过,你需要确保 Allow 规则位于 Deny 规则之前。此外,你还需要确保 Allow 规则的 DisplayName 是唯一的,因为 DisplayName 用于标识规则,并且每个规则的 DisplayName 必须是唯一的。

以下是一个 PowerShell 脚本示例,它将创建一个规则,拒绝所有出站连接,但允许来自 IP 地址 192.168.2.254 的流量:

powershell
复制
# 设置允许的IP地址
$AllowedIP = "192.168.2.254"

# 创建允许特定IP的出站连接规则,并将其置于拒绝规则之前
New-NetFirewallRule -DisplayName "Allow Specific IP Outgoing" -Direction Outbound -Action Allow -Protocol * -LocalPort * -RemoteIP $AllowedIP | Set-NetFirewallRule -Priority 100

# 创建拒绝所有出站连接的规则,但优先级低于允许特定IP的规则
New-NetFirewallRule -DisplayName "Deny All Outgoing" -Direction Outbound -Action Block -Protocol * -LocalPort * -RemoteIP $AllowedIP | Set-NetFirewallRule -Priority 200

在这个脚本中,我们首先创建了一个 Allow 规则,并将其优先级设置为 100。然后,我们创建了一个 Deny 规则,但其优先级设置为 200,低于 Allow 规则。这样,即使所有其他出站流量都被拒绝,来自 192.168.2.254 的流量仍然会被允许。

请确保在运行此脚本之前,你已经具有足够的权限来修改防火墙设置。你可能需要以管理员身份运行 PowerShell。

此外,请注意,这个脚本可能需要根据你的具体网络环境和需求进行调整。如果你对网络设置不熟悉,建议咨询网络管理员或进行更深入的研究。


 

posted @ 2024-03-25 19:39  suv789  阅读(1723)  评论(0编辑  收藏  举报