Как управлять правилами брандмауэра Windows с помощью PowerShell
Windows содержит надежный, но простой в использовании расширенный брандмауэр, и с помощью PowerShell 7 мы можем легко настроить брандмауэр из командной строки. В этой статье рассматриваются общие команды, используемые в брандмауэре Windows, и где их можно использовать.
Модуль NetSecurity хорошо документирован. Имейте в виду, что эта статья относится только к операционной системе Windows. Для других операционных систем существуют другие инструменты командной строки, которые можно использовать для выполнения функций того же типа, например UFW
или IPTables
в Linux.
Загрузка модуля NetSecurity
Модуль NetSecurity
, встроенный и предлагаемый Microsoft, содержит все функции, необходимые для добавления, удаления и изменения правил брандмауэра. Чтобы загрузить модуль, просто импортируйте модуль, как показано ниже.
Import-Module -Name 'NetSecurity'
Список существующих правил брандмауэра
Командлет Get-NetFirewallRule
покажет все существующие правила брандмауэра. По умолчанию их много, поэтому для демонстрации мы выводим первые 10.
Get-NetFirewallRule
возвращает множество свойств. Хотя выше мы перечислили только свойства, запуск Get-NetFirewallRule | Select-Object * -First 1
, перечислит все доступные.
Создайте новое правило брандмауэра
Существует много разных способов создать новое правило брандмауэра, но для этого используется команда [Net-NewFirewallRule](
. Основные свойства, которые необходимо заполнить:
DisplayName
– понятное имя правила брандмауэра.Направление
— следует ли блокировать трафик, выходящий из компьютераИсходящий
или входящий в компьютерВходящий
Действие
— какое действие предпринять, если правило соблюдается,Разрешить
илиБлокировать
$Params=@{ \DisplayName\=Блокировать WINS \Direction\=Входящее \Action\=Блокировать \RemoteAddress\=WINS
New-NetFirewallRule @Params
Если параметр Name
не используется, используется случайный GUID. DisplayName
может быть удобочитаемым для человека, но сам Name
назначает случайный идентификатор GUID.
Изменить существующее правило брандмауэра
Что делать, если мы хотим изменить существующее правило, не удаляя его и не воссоздавая полностью. Для этого мы должны запустить Set-NetFirewallRule
, что позволит нам изменить правило брандмауэра по мере необходимости.
$Params = @{
"DisplayName" = 'Block WINS'
"Action" = 'Allow'
}
Set-NetFirewallRule @Params
Другие полезные возможности, которыми обладает Set-NetFirewallRule
, — это возможность работать с несколькими правилами одновременно. Это можно сделать, найдя правила по одному из трех параметров.
Имя
Это значение по умолчанию, и если имена заданы через конвейер или массив строк, каждое действие будет выполнено.DisplayName
ПодобноName
, несколько конвейерных объектов или массив строк изменяют эти правила соответствующим образом.DisplayGroup
илиGroup
Если правила сгруппированы вместе, все эти сгруппированные правила могут применяться одновременно.
Удаление существующего правила брандмауэра
Наконец, мы хотели бы удалить существующее правило, поскольку оно может больше не понадобиться. Для этого выполните команду Remove-NetFirewallRule
. При этом часто имеет смысл использовать параметр WhatIf
, чтобы убедиться, что правило нужно удалить.
Remove-NetFirewallRule -DisplayName "Block WINS"
Важно отметить, что Remove-NetFirewallRule
может удалить сразу несколько правил. Пример такого типа функциональности приведен ниже. Приведенное ниже правило удалит все отключенные правила, содержащиеся в политике firewall_gpo
в домене ad.local.test
.
Remove-NetFirewallRule -Enabled 'False' -PolicyStore 'ad.local.test\firewall_gpo'
Полезной, но потенциально опасной командой является запуск Remove-NetFirewallFule
, который удаляет все созданные статические правила локального брандмауэра. Если у вас есть объект групповой политики домена, который определяет правила брандмауэра, это удалит все, что может конфликтовать с определенными правилами этого объекта групповой политики.
Дополнительный функционал
В модуле NetSecurity
доступно множество других команд. Хотя мы не рассматриваем их все здесь, несколько примечательных команд показаны ниже, чтобы продемонстрировать, насколько обширен модуль.
Copy-NetFirewallRule
Эта команда скопирует существующее правило брандмауэра и все связанные фильтры в то же или другое хранилище политик.Disable-NetFirewallRule
Это отключит ранее включенное правило брандмауэра. Правило по-прежнему будет существовать, но не будет активно изменять какие-либо сетевые данные. Если вы запустите эту команду без каких-либо параметров, она отключит все активные правила на целевом компьютере. Рекомендуется всегда запускать эту команду с параметромWhatIf
, если не используется конкретное правило или набор правил.Enable-NetFirewallRule
Как иDisable-NetFirewallRule
, эта команда активирует ранее отключенное правило или набор правил. Если эта команда запущена без каких-либо параметров, она активирует все ранее отключенные правила. Рекомендуется всегда запускать эту команду с параметромWhatIf
, если не используется конкретное правило или набор правил.Get-NetFirewallProfile
Эта команда показывает текущие настроенные параметры для указанного профиля, напримерДомен
,Частный
илиОбщедоступные
профили.Get-NetFirewallSetting
Глобальные настройки брандмауэра можно получить с помощью командыGet-NetFirewallSetting
. Эти настройки включают такие параметры, как параметры сертификата, очередь пакетов или списки авторизации.Rename-NetFirewallRule
Чтобы переименовать существующее правило брандмауэра, используйте командуRename-NetFirewallRule
. Это полезно, если правило было создано без указанного имени, поэтому в качестве имени используется случайный идентификатор GUID, и желательно, чтобы ему было присвоено удобочитаемое имя.Set-NetFirewallProfile
Чтобы установить определенные параметры для отдельных профилей, используйте командуSet-NetFirewallProfile
. Это позволяет каждому профилю иметь отдельные настройки.Set-NetFirewallSetting
Эта команда настраивает поведение глобального брандмауэра, которое применяется независимо от используемого сетевого профиля.Show-NetFirewallRule
Эта вспомогательная команда покажет правила брандмауэра и связанные с ними объекты в отформатированном списке.
В модуле содержится обширная функциональность IPSec. Перечисленные выше команды работают со стандартными настройками брандмауэра Windows.
Заключение
Существует множество доступных команд для управления брандмауэром Windows. В этой статье затронуты лишь некоторые из них, в частности наиболее важные команды для быстрого просмотра, создания, изменения и удаления правил брандмауэра. Даже сложные настройки брандмауэра можно выполнить строго через командную строку с помощью модуля PowerShell NetSecurity
!