我正在构建仅限白名单的 Windows 防火墙设置。
我在 VMWare Workstation Pro 17 上安装了 Windows 10,以便进行实验。
我已禁用所有:
netsh advfirewall set allprofiles firewallpolicy blockinbound,blockoutbound
netsh advfirewall firewall set rule all new enable=no
并启用了一些:
netsh advfirewall firewall set rule name="File and Printer Sharing (Echo Request - ICMPv4-In)" new enable=yes
netsh advfirewall firewall set rule name="Remote Desktop - User Mode (TCP-In)" new enable=yes
netsh advfirewall firewall set rule name="Core Networking - DNS (UDP-Out)" new enable=yes
netsh advfirewall firewall set rule name="Core Networking - Dynamic Host Configuration Protocol (DHCP-Out)" new enable=yes
netsh advfirewall firewall set rule name="File and Printer Sharing (SMB-Out)" new enable=yes
我无法让 DNS 工作。使用标准防火墙,我可以通过名称或 IP ping 我的主机。当我限制防火墙时,我只能使用 IP。
有人会认为这只是启用现有规则之一的问题。其实启用所有现有规则也很容易。但这不会有什么不同。(而且有很多 DNS、SMB、NB 等规则。)
如果我想像这样 ping 我的 Windows 主机,有人知道我应该在防火墙中启用或添加什么吗:
ping my-VMware-host
如今,TCP 53也推荐用于 DNS。如果 UDP 数据包传输出现问题,则可以使用它进行后备,并用于某些类型的查询。我相信 MSFT 正在将 TCP 转为 DNS 查询的默认协议(UDP 仍然可用),但我不知道这是否真的如此,也不知道哪些操作系统版本可能会受到影响。
阻止所有出站流量的做法并不常见。我建议启用核心网络组中适用于所有/任何配置文件的所有入站和出站规则(即,如果您的计算机未加入域,则不包括“域”配置文件的核心网络规则)。
这些规则不适用于应用程序/服务访问,而更适用于流量状态等。您可以使用以下 Powershell 识别它们:
如果启用 TCP 53 不能解决 DNS 问题,我强烈建议启用上述功能,看看是否有帮助。如果有帮助,那么从那里删除不需要的规则应该很容易。
另外,如果您不想费心使用数据包捕获工具进行故障排除,您可以启用“丢弃的数据包”文本日志 - 日志的默认位置是
%systemroot%\system32\LogFiles\Firewall\pfirewall.log
。启用它的说明(包括使用netsh advfirewall
命令)位于Microsoft 站点上。