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

Быстрые ссылки
- Загрузка модуля 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:
- Запустить скрипт, создать правило с Name = “svc-web-8443”.
- Запустить скрипт ещё раз — убедиться, что правил стало 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, веб‑сервисы, база данных) или шаблон документации для процессов изменения правил в вашей организации.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента