在最新版本的 Windows 防火墙中,例如包含在 Windows Server 2008 R2 中,您可以阻止传入连接并将此规则仅应用于一组用户(规则属性中的用户选项卡)。
为什么这对于出站连接规则是不可能的,如何实现?我需要一个软件解决方案来阻止特定用户和其他人的所有互联网访问,我希望通过 Windows 防火墙实现这一点。
我正在尝试在 Server 2008 R2 上配置 Windows 防火墙以阻止除我添加到规则列表的流量之外的所有内容。
我看到有三个政策 - 公共/私人/域。我一直在对每个设置进行相同的更改,尽管我只有一个 NIC 并为其分配了域策略。
在域策略属性中,我将入站连接设置为“阻止(默认)”,但这仍然让 ICMP 通过。我将其更改为“阻止所有连接”并创建了一个入站规则,允许来自所有三个配置文件的 ICMP,适用于所有接口上的所有程序,但这使得防火墙丢弃 ICMP 流量,即使我为它创建了一个允许规则。
根据此文档,允许规则应该优先于默认规则。我想设置我的默认规则来阻止所有流量,并且只允许某些具有允许规则的流量。
我创建了两个自定义允许规则:
将入站连接策略设置为阻止所有连接并启用上述允许规则后,它仍会阻止我的远程 ping。
如何配置 Windows 防火墙来执行此操作?
更新 - 事实证明我使用了错误的 GUI(令人尴尬)。我没有使用管理工具中的 GUI,而是使用组策略编辑器中的 GUI(碰巧看起来相同)。防火墙上已经设置了我在组策略编辑器中看不到的规则。这些规则在我没有意识到的情况下生效,这引起了我的困惑。为了做我想做的事,我只需要将策略设置为“阻止(默认)”(当然是使用正确的工具)。删除所有预先存在的规则(我在组策略编辑器中没有看到)后,我只能通过创建特定的允许规则来允许我想要的流量。
我正在为我工作的小公司重新配置和保护服务器。我们使用它与 Autodesk Vault 一起存储设计文件和其他数据。它在附近服务器提供商的 VPS 上运行。
我这样做的原因是我们的服务器提供商已经通知我们,他们收到关于我们的服务器在互联网上行为不当的投诉,表明它在某种程度上受到了损害。除此之外,我们没有发现任何问题。服务器最初是在我来公司之前设置的,我找不到有关其配置的任何文档。它还运行 Windows Server 2012,所以我决定重新开始使用运行 Windows Server 2019 的新 VPS。这是我第一次使用 Windows 作为服务器操作系统,但我有一些管理 Ubuntu 服务器的经验。
查看旧服务器上的事件查看器,有无数次“4625 审核失败”登录尝试到服务器,但也有不少成功登录不是来自我或我们的组织。4624 审计成功示例:
An account was successfully logged on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Type: 3
Impersonation Level: Impersonation
New Logon:
Security ID: ANONYMOUS LOGON
Account Name: ANONYMOUS LOGON
Account Domain: NT AUTHORITY
Logon ID: 0x9ABEAB7
Logon GUID: {00000000-0000-0000-0000-000000000000}
Process Information:
Process ID: 0x0
Process Name: -
Network Information:
Workstation Name: …Run Code Online (Sandbox Code Playgroud) 我一直试图通过只允许来自一个 IP 地址的 RDP 流量来保护 RDP 到新的 Windows 2008R2 服务器(使用 Windows 防火墙)。
在“计算机”选项卡下,当服务器设置为仅允许安全连接时,我似乎只能允许用户或计算机身份验证。
因此,我转到“常规”选项卡并在“操作”下设置为“如果连接是安全的,则允许连接”。那时我被拒之门外,无法通过 RDP 重新连接并且必须重建(这是一个 Rackspace 云服务器,很容易完成)。
我哪里错了?我没有对我的本地工作站做任何事情(我假设我必须这样做),因为我在 RDP 客户端中找不到任何关于加密连接的更改。
有谁知道是否可以在确定不允许数据包时配置 Windows 防火墙的行为?
默认情况下,它会以静默方式丢弃数据包,并且不会通知源发生了这种情况,从而导致在连接超时之前可能会在源处等待很长时间。对于给定的 TCP 连接,我想将 RST 数据包发送到已被禁止的传入 SYN 数据包,而不是默默地丢弃它。
我的一个 2K3 机器可以做到这一点,但我的 XP SP3 机器却没有。我的 XP SP3 笔记本电脑也曾经这样做过,但我的 Win7 笔记本电脑没有。
出现这种情况的原因是我经常需要通过 telnet 连接到几个基于 Linux 的内部机器(他们没有,我也不能安装,SSH),他们会在提供用户名之前尝试使用 ident 来识别我/密码提示。当我从 2K3 服务器连接时,提示是即时的,因为传入的 ident 数据包被主动阻止,但在我的 XP 机器上,我必须等待大约 20 秒,因为远程主机没有收到阻塞通知。这不是安全问题 - 一切都是本地的,绝不会暴露在互联网上,我在这些本地机器和 WAN 之间有 2 个防火墙。
我已经在这个主题上做了一些相当多的谷歌搜索,我找到的最接近这种行为的参考是这篇技术网文章,但它似乎直接与我在我的一个盒子上获得所需行为的事实相矛盾。它还不包含有关如何配置此类行为的信息,尽管在字里行间阅读我认为这是 TCP/IP 堆栈的功能,而不是 Windows 防火墙本身-似乎 TCP/IP 堆栈(NAT 驱动程序)要求防火墙是否允许数据包,然后自己处理操作。
在你问之前,不,2K3 盒子上绝对没有安装 3rd 方防火墙软件 - 我的旧笔记本电脑上也没有 - 它是/只是 Windows 防火墙。配置界面与我用来编写此问题的 XP 框的配置界面相同。我完全知道这很可能涉及使用注册表设置,但我不知道从哪里开始......
众所周知,RDP for Windows 中不断出现新的安全漏洞。我已经搜索并阅读了有关此问题以及可能的修复程序/解决方案的信息。
令我惊讶的是,没有人提到将 Windows 防火墙中的 ip-scope 限制为一种可能的修复方法(以便只有您的 ip 可以连接到机器)。我想这是因为出于某种原因,这不是一个好的解决方案(我不是专家)。
所以我的问题是,这个解决方案有什么问题?
我有一个作为服务运行并包含一个 FTP 客户端的应用程序。它需要连接到仅支持 Active FTP 的 FTP 服务器。当我尝试获取文件列表或下载文件时,Windows 防火墙正在断开来自 FTP 服务器的传入连接。(我不相信我们在 Windows XP 或 Windows Vista 中遇到过这个问题。)
主动 FTP 是一种协议,它要求服务器在客户端指定的端口上打开与客户端的连接。( http://slacksite.com/other/ftp.html )
我知道我可以在 Windows 防火墙中打开一个大的端口范围并强制我的 FTP 客户端只使用这些端口,但我猜想 Windows 防火墙会原生支持 Active FTP。
是否需要进行一些设置才能让 Windows 防火墙自动检测活动 FTP 并根据需要打开必要的端口?我可以以编程方式更改该设置吗?
谢谢。
我正在服务器 2012 环境中进行一些 POC 测试,在初始防火墙配置期间,当我真的更愿意编写脚本时,我发现自己反复进入 GUI。我四处搜索,但找不到任何关于 3.0 中新的 powershell 命令的信息,也没有通过 WMI 找到任何信息。
有什么我遗漏的或者这仍然主要是面向 GUI 的任务吗?
我知道以下cmd可以启用文件和打印共享防火墙规则:
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes
Run Code Online (Sandbox Code Playgroud)
但它会为所有配置文件打开文件和打印共享。
我只想为私人配置文件启用它,即当 Windows PC/笔记本电脑连接到家庭或工作网络时。我特别尽量避免为连接到公共网络的笔记本电脑打开它。理想情况下,应为公共网络关闭网络发现。
我试过了
netsh advfirewall firewall set rule group=”File and Printer Sharing” profile=private new enable=Yes
Run Code Online (Sandbox Code Playgroud)
并且“配置文件”开关被拒绝。那么如何有选择地应用防火墙规则呢?
任何输入都非常感谢..
我对 Windows 服务器中防火墙 cmdlet 的文档有点困惑。我正在尝试将远程和本地 ip 的地址列表从一个规则复制到另一个规则。我可以使用
Get-NetFirewallRule -DisplayName "MSSQL" | Get-NetFirewallAddressFilter
Run Code Online (Sandbox Code Playgroud)
现在我试图为这样的另一个规则设置它:
Set-NetFirewallAddressFilter -DisplayName "FTP Server (FTP Traffic-In)" | Get-NetFirewallRule -DisplayName "MSSQL" | Get-NetFirewallAddressFilter
Run Code Online (Sandbox Code Playgroud)
这显然是错误的,因为我立即收到一条错误消息,说Set-NetFirewallAddressFilter没有参数“Displayname”
当我使用Set-NetFirewallRule它时,但我不能使用完整的对象,而只能单独使用本地和远程地址。你能帮忙吗?
更新
我现在尝试运行这样的东西:
Set-NetFirewallRule -DisplayName "Test" -RemoteAddress |
Get-NetFirewallRule -DisplayName "MSSQL" | Get-NetFirewallAddressFilter | ft Remote
Run Code Online (Sandbox Code Playgroud)
这不起作用: Set-NetFirewallRule :地址无效。地址可以指定为 IP 地址、范围或子网。
又卡住了……
windows-firewall ×10
firewall ×2
networking ×2
powershell ×2
rdp ×2
ftp ×1
https ×1
ntlm ×1
security ×1
windows ×1
windows-7 ×1
wmi ×1