当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell:配置 Windows 防火墙

作者:精品下载站 日期:2024-12-14 07:23:46 浏览:13 分类:玩电脑

PowerShell:配置 Windows 防火墙


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

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

[玩转系统] PowerShell:配置 Windows 防火墙

图形用户界面

首先,我必须承认我并不是 Windows 防火墙图形界面的忠实粉丝。键入 wf.msc 或搜索系统设置以打开 Windows 防火墙。谁想出了这些防火墙规则名称?确实很无奈,但是又没有办法。

[玩转系统] PowerShell:配置 Windows 防火墙

网络安全模块

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

Get-Command -Module NetSecurity | Format-List Name

[玩转系统] PowerShell:配置 Windows 防火墙

启用和禁用 Windows 防火墙

这让我想到了我们的第一个 PowerShell Cmdlet:Set-NetFirewallProfile。它使您能够启用和禁用基于主机的防火墙。

Set-NetFirewallProfile -All -Enabled false

[玩转系统] PowerShell:配置 Windows 防火墙

Set-NetFirewallProfile -All -Enabled true

对于我们当中的 cmd 粉丝来说,是的 netsh 还活着。

netsh advfirewall set allprofiles state off

[玩转系统] PowerShell:配置 Windows 防火墙

创建新的防火墙规则

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

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

[玩转系统] PowerShell:配置 Windows 防火墙

这将我们带到下一个命令:Get-NetFirewallRule。让我们搜索一下之前配置的规则。

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

[玩转系统] PowerShell:配置 Windows 防火墙

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

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

定义范围

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

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

[玩转系统] PowerShell:配置 Windows 防火墙

为了使这项工作正常进行,我必须更改我的规则以允许。然后我将 HTTP 访问限制为仅 client01。

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

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

[玩转系统] PowerShell:配置 Windows 防火墙

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

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

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

[玩转系统] PowerShell:配置 Windows 防火墙

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

[玩转系统] PowerShell:配置 Windows 防火墙

[玩转系统] PowerShell:配置 Windows 防火墙

Windows 防火墙远程管理

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

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

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

[玩转系统] PowerShell:配置 Windows 防火墙

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

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

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

结论

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

https://technet.microsoft.com/en-us/library/hh831755(v=ws.11).aspx

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯