Поиск по сайту:

Как управлять правилами брандмауэра 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!