admin管理员组

文章数量:1531657

PowerShell:配置Windows防火墙

防火墙控制流量。他们使用状态检查之类的技术来建立与其他网络的连接。在本文中,我将介绍如何使用Windows PowerShell配置基于主机的Windows防火墙。

从Windows XP SP2开始,默认情况下,每个Windows操作系统都启用内置的基于主机的防火墙。这意味着每个Windows系统管理员和开发人员都必须熟悉它。但是,我了解到在实践中通常并非如此。可能是因为图形界面或缺乏兴趣。谁知道。在许多环境中,防火墙甚至被停用。在本文中,我将展示如何使用PowerShell配置Windows防火墙。您可以建立的基础知识。

 

图形用户界面

首先,我必须承认我不是Windows防火墙图形界面的忠实拥护者。键入wf.msc。oder搜索系统设置以打开Windows防火墙。谁想到了这些防火墙规则名称?这确实令人沮丧,但是没有出路。

 

网络安全模块

在Windows PowerShell中,可以在NetSecurity模块中找到所有防火墙命令。

Get-Command -Module NetSecurity | Format-List Name

 

 

启用和禁用Windows防火墙

这将我带到我们的第一个PowerShell Cmdlet:Set-NetFirewallProfile。它使您可以启用和禁用基于主机的防火墙。

Set-NetFirewallProfile -All -Enabled false

 

Set-NetFirewallProfile -All -Enabled true

对于我们中间的cmd粉丝来说,netsh仍然活着。

netsh advfirewall set allprofiles state off

 

创建新的防火墙规则

好吧,如果您对预先配置的规则不满意,请添加自己的规则。使用New-NetFirewallRule cmdlet。这是一个如何阻止所有传入的HTTP流量的示例。

New-NetFirewallRule -Name "Block HTTP" -DisplayName "Block HTTP" -Enabled 1 -Direction Inbound -Action Block -LocalPort 80 -Protocol TCP

 

这使我们转到下一个命令:Get-NetFirewallRule。让我们搜索先前配置的规则。

Get-NetFirewallRule -Name *Block* | Select Name,Enabled,Direction,Action,PrimaryStatus

 

有关New-NetFirewallRule的更多信息,请访问:https ://docs.microsoft/zh-cn/powershell/module/netsecurity/new-netfirewallrule ? view = win10-ps 

有关Get-NetFirewallRule的更多信息,请访问:https ://docs.microsoft/zh-cn/powershell/module/netsecurity/get-netfirewallrule ? view = win10-ps 

定义范围

假设我们只想限制对一台计算机的HTTP访问。不要问我为什么,但这是这部分的场景。因此,client01应该是唯一可以通过HTTP到达dc01的计算机。

现在让我们更改范围。我的意思是:

 

为了完成这项工作,我必须更改规则以允许。然后,我仅将HTTP访问限制为client01。

Set-NetFirewallRule -DisplayName "Block HTTP" -Action Allow

现在,我将禁用Windows Server Role Web服务器随附的默认HTTP规则。如果我不这样做,我的后续测试将无法进行。

 

Set-NetFirewallRule -DisplayName "World Wide Web Services (HTTP Traffic-In)" -Enabled false

这意味着我的规则是计算机上唯一的HTTP规则。现在我们更改范围。

Set-NetFirewallRule -Name "Block HTTP" -RemoteAddress 192.168.0.102

 

让我们快速检查一下。在192.168.0.102上我得到了True。在192.168.0.19上我得到了False。这样可行!

 

 

Windows防火墙远程管理

如果您的计算机共享相同的Active Directory域,则可以简单地远程配置Windows防火墙设置。确保在客户端系统上启用了远程管理。要启用它,请输入winrm qc或通过组策略配置WinRM。在Windows Server Systems上,无需采取进一步措施。有关通过组策略启用WinRM的更多信息,请参见:  组策略:为Windows客户端操作系统(Windows 10,Windows 8,Windows 7)启用WinRM。

让我们继续前进。我已登录DC01,并想检查client01是否启用了防火墙。为此,请输入

Invoke-Command -ComputerName client01 {Get-NetFirewallProfile -All | Select Name,Enabled}

 

这看起来不错。在所有配置文件中均已启用。

在这里,您可以找到一条命令来测试所有服务器系统的所有防火墙:

Test-FirewallAllServer:查询所有Windows服务器上的防火墙状态

结论

我希望我能给一个很好的概述。有关Windows防火墙的更多信息,请参见:

https://technet.microsoft/zh-CN/library/hh831755(v=ws.11).aspx

 

本文标签: 防火墙powershellWindows