Гид по технологиям

Управление брандмауэром Windows через PowerShell (NetSecurity)

• 7 min read • Инфраструктура • Обновлено 22 Nov 2025
PowerShell: брандмауэр Windows — NetSecurity
PowerShell: брандмауэр Windows — NetSecurity

Логотип PowerShell

Быстрые ссылки

  • Загрузка модуля NetSecurity
  • Просмотр существующих правил брандмауэра
  • Создание нового правила
  • Изменение существующего правила
  • Удаление правила
  • Дополнительные возможности и команды
  • Практические советы и чек-листы
  • Заключение

Windows содержит мощный, но при этом доступный для автоматизации брандмауэр. С помощью PowerShell (современная рекомендованная версия — PowerShell 7, но большинство команд доступны и в Windows PowerShell) вы можете управлять политиками брандмауэра централизованно и в скриптах. Эта статья переведена и адаптирована для русскоязычных ИТ‑специалистов: вы найдёте команды, практические рекомендации, сценарии применения и контрольные списки.

Важно: модуль NetSecurity работает только на Windows. Для Linux существуют эквиваленты командной строки, например:

UFW

или

IPTables

(эти примеры просто показывают альтернативы — синтаксис и поведение отличаются).

Загрузка модуля NetSecurity

Модуль NetSecurity встроен в Windows и предоставляет набор командлетов для работы с брандмауэром (просмотр, создание, изменение, удаление правил, профили, глобальные настройки и др.). Чтобы начать работу, загрузите модуль:

Import-Module -Name 'NetSecurity'

Если модуль уже загружен, командлет выполнится без ошибок. В средах с ограничениями исполнения скриптов убедитесь, что политика ExecutionPolicy и привилегии пользователя позволяют импортировать модуль и выполнять нужные изменения.

Просмотр существующих правил брандмауэра

Командлет Get-NetFirewallRule показывает существующие правила. По умолчанию правил много, поэтому для демонстрации выводим первые 10 записей:

Get-NetFirewallRule | Select-Object DisplayName, Enabled, Direction, Action -First 10

Замечание: в примере выше внутри блока кода присутствует HTML‑фрагмент — это сохранённый снимок экрана примера вывода. Для детального просмотра свойств выполните:

Get-NetFirewallRule | Select-Object * -First 1

Это покажет все доступные свойства объекта правила: Name, DisplayName, Enabled, Direction (Inbound/Outbound), Action (Allow/Block), Profile (Domain/Private/Public), RemoteAddress, LocalPort, Protocol и многие другие.

Снимок экрана: пример списка правил брандмауэра

Ключевые термины в одну строку:

  • Direction — направление трафика (Inbound — входящий, Outbound — исходящий).
  • Action — действие (Allow — разрешить, Block — блокировать).
  • Profile — профиль сети (Domain/Private/Public).

Создание нового правила

Основной командлет — New-NetFirewallRule. Ниже показан минимальный набор свойств, который часто достаточно заполнить:

  • DisplayName — удобочитаемое имя правила.
  • Direction — Inbound или Outbound.
  • Action — Allow или Block.
  • RemoteAddress / LocalAddress — адреса или диапазоны.
  • LocalPort / RemotePort — порты или диапазоны.
  • Protocol — TCP/UDP/Any.

Простой пример с использованием хэштейбла параметров (удобно для скриптов):

$Params = @{ "DisplayName" = 'Block WINS' "Direction" = 'Inbound' "Action" = 'Block' "RemoteAddress" = 'WINS' }

New-NetFirewallRule @Params

Примечание: если параметр Name не задан, системе присваивается случайный GUID, а DisplayName остаётся читаемым именем для человека. Для автоматизации рекомендуется явно задавать Name, чтобы потом можно было ссылаться на правило по устойчивому идентификатору.

Расширенный пример: разрешить вход на порт 8443 только с подсети 10.0.0.0/24:

New-NetFirewallRule -DisplayName "Allow App 8443 from 10-net" -Direction Inbound -Action Allow -LocalPort 8443 -Protocol TCP -RemoteAddress 10.0.0.0/24 -Profile Private,Domain

Изменение существующего правила

Чтобы не удалять правило и не создавать его заново, используйте Set-NetFirewallRule. Он изменяет свойства существующих правил и может работать с несколькими объектами сразу.

Пример замены действия с Block на Allow по DisplayName:

$Params = @{  
"DisplayName"   = 'Block WINS'  
"Action"        = 'Allow'  
}  

Set-NetFirewallRule @Params  

Поиск и массовые операции. Set-NetFirewallRule принимает объекты из конвейера и такие параметры, как Name, DisplayName и Group/DisplayGroup. Это позволяет:

  • найти по Name (сильный идентификатор) — Name может быть строкой или массивом;
  • найти по DisplayName — удобнее для человека, но менее устойчиво;
  • найти по DisplayGroup — изменить сразу группу связанных правил.

Пример: включить сразу группу правил:

Get-NetFirewallRule -DisplayGroup "MyApp Rules" | Enable-NetFirewallRule

Удаление правила

Для удаления используется Remove-NetFirewallRule. По аналогии с другими командлетами, можно удалять по Name, DisplayName, по фильтрам или из конвейера.

Remove-NetFirewallRule -DisplayName "Block WINS"

Очень полезный параметр — WhatIf. Он показывает, что будет сделано, без реального удаления:

Remove-NetFirewallRule -DisplayName "Block WINS" -WhatIf

Пример массового удаления отключённых правил из определённого хранилища политики:

Remove-NetFirewallRule -Enabled 'False' -PolicyStore 'ad.local.test\firewall_gpo'

Осторожно: запуск Remove-NetFirewallRule без фильтров может удалить все локальные статические правила. Если у вас есть политика домена (GPO), учтите последствия: удаление локальных правил не отменяет правил, которые накладывает GPO на подключённые машины.

Дополнительные команды и функциональность

Модуль NetSecurity охватывает множество сценариев — ниже краткий список полезных команд и их назначение:

  • Copy-NetFirewallRule — копирует правило и связанные фильтры в то же или другое хранилище политики.
  • Disable-NetFirewallRule / Enable-NetFirewallRule — временно отключают/включают правила. Без параметров отключают/включают все правила — осторожно.
  • Get-NetFirewallProfile — показывает настройки профилей (Domain, Private, Public).
  • Set-NetFirewallProfile — устанавливает параметры для конкретного профиля.
  • Get-NetFirewallSetting / Set-NetFirewallSetting — просматривают и изменяют глобальные настройки брандмауэра (например, обход сертификатов, очереди пакетов и пр.).
  • Rename-NetFirewallRule — переименование правила, полезно если Name был GUID.
  • Show-NetFirewallRule — удобный вспомогательный командлет для форматированного вывода связанных объектов правила.

Модуль также включает обширную поддержку IPSec (политики, фильтры, правила для защищённых соединений). Полный набор команд можно просмотреть так:

Get-Command -Module NetSecurity

Практические рекомендации по безопасности

  • Всегда используйте WhatIf при массовых удалениях или изменениях, пока не уверены в фильтре.
  • Включайте логирование аудита брандмауэра на контрольных точках (особенно для публичных профилей).
  • В скриптах явно задавайте параметр Name для новых правил — это упрощает последующую идентификацию и создание idempotent‑скриптов.
  • Протестируйте изменения в тестовой среде, прежде чем применять в продакшн.
  • Документируйте изменения: храните исходные правила или снимки конфигурации перед массовыми изменениями.

Чек-листы и роли (кто что делает)

Администратор сети (Network Admin):

  • Проверить профиль брандмауэра для каждого типа сети (Domain/Private/Public).
  • Настроить правила доступа для серверных служб (RDP, HTTP, DB) с указанием источников.
  • Ввести процедуру ревью правил каждые N месяцев.

DevOps / Инженер развертывания:

  • Добавлять правила как часть deployment-скриптов с проверкой WhatIf.
  • Использовать явные Name для правил, соответствующие конвенции (например, svc-appname-environment).
  • Следить за портами и протоколами в CI/CD тестах.

Техподдержка (Helpdesk):

  • Временно отключать правило (Disable-NetFirewallRule) вместо удаления при отладке.
  • Вести запись времени и причины изменения правила.

Отказоустойчивость и сценарии, когда подход не работает

Когда встроенный брандмауэр не решает задачу:

  • Нужна сетево-уровневая фильтрация (например, аппаратные фаерволы или Azure NSG). Тогда управление должно происходить через соответствующую платформу.
  • Требуется глубокий анализ трафика (IDS/IPS) — NetSecurity не выполняет инспекцию уровня приложений.
  • В распределённых средах используется централизованное управление (например, облачные политики), где локальные правила могут конфликтовать с глобальными политиками.

Альтернативы:

  • Для Linux: UFW, iptables/nftables.
  • Для корпоративного уровня: специализированные виртуальные/аппаратные фаерволы и платформы управления политиками сети.

Отладка и тесты (Критерии приёмки)

Примеры тестов перед принятием изменения:

  • После создания правила правило видно в Get-NetFirewallRule по Name/DisplayName.
  • При попытке подключиться из разрешённого источника соединение устанавливается; из запрещённого — блокируется.
  • Скрипт с Idempotence: повторный запуск скрипта не создаёт дубликатов и не меняет уже корректную конфигурацию.

Пример теста на Idempotence:

  1. Запустить скрипт, создать правило с Name = “svc-web-8443”.
  2. Запустить скрипт ещё раз — убедиться, что правил стало 1 (по идентификатору Name).

Справочник команд («шпаргалка»)

  • Просмотр правил: Get-NetFirewallRule
  • Просмотр свойств: Get-NetFirewallRule | Select-Object * -First 1
  • Создание: New-NetFirewallRule -DisplayName “…” -Direction Inbound -Action Allow -LocalPort 443
  • Изменение: Set-NetFirewallRule -DisplayName “…” -Action Block
  • Включение/отключение: Enable-NetFirewallRule / Disable-NetFirewallRule
  • Удаление: Remove-NetFirewallRule -DisplayName “…”
  • Профили: Get-NetFirewallProfile / Set-NetFirewallProfile

Mermaid-диаграмма принятия решения (приблизительный алгоритм):

flowchart TD
  A[Нужно правило?] -->|Да| B{Новый или существующий}
  B -->|Новый| C[New-NetFirewallRule]
  B -->|Существующий| D[Найти по Name/DisplayName/Group]
  D --> E[Set-NetFirewallRule или Enable/Disable]
  A -->|Нет — удалить?| F[Remove-NetFirewallRule -WhatIf]
  F --> G[Проверить журнал и применить]

Часто встречающиеся ошибки и рекомендации по устранению

  • «Нет прав» — запускать PowerShell от имени администратора или с учётной записью с достаточными правами.
  • Конфликт с GPO — проверьте PolicyStore и GPO, которые применяют правила на уровне домена.
  • Потеря доступа при удалении — всегда держите план восстановления и удаляйте правила поэтапно.

Краткое резюме

NetSecurity — мощный инструмент для управления брандмауэром Windows. Он позволяет автоматизировать создание, изменение и удаление правил, работать с профилями и глобальными настройками, а также интегрироваться в процессы CI/CD. Соблюдайте осторожность при массовых операциях и используйте WhatIf и резервные копии конфигураций.

Дополнительно: полезные термины (глоссарий в одну строку)

  • Name — внутренний идентификатор правила (часто GUID или явная строка).
  • DisplayName — человекочитаемое имя правила.
  • Profile — профиль сети: Domain, Private, Public.
  • Direction — направление трафика: Inbound/Outbound.
  • Action — действие: Allow/Block.

FAQ

Q: Как быстро просмотреть только активные правила?
A: Get-NetFirewallRule | Where-Object { $_.Enabled -eq ‘True’ }

Q: Как отменить массовое удаление при ошибке?
A: Если вы удалили локальные правила, восстановление зависит от наличия бэкапов; при наличии GPO правила, применяемые по домену, всплывут при следующей политике. Во избежание проблем используйте WhatIf и создавайте экспорт конфигурации заранее.

Q: Работает ли NetSecurity на Linux?
A: Нет, NetSecurity — модуль Windows. Для Linux используйте UFW, iptables или nftables.


Если нужно, могу подготовить готовые скрипты для конкретного набора правил (RDP, веб‑сервисы, база данных) или шаблон документации для процессов изменения правил в вашей организации.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро