Брандмауэр Windows 11 настраивается двумя штатными средствами: командлетами NetFirewall* из модуля NetSecurity в PowerShell и утилитой netsh advfirewall. PowerShell возвращает объекты, поэтому правила удобно фильтровать, передавать по конвейеру и генерировать пакетно. netsh работает в cmd, не требует знаний PowerShell и подходит для одиночных правок.
Короткий ответ по выбору инструмента: новые скрипты и автоматизацию пишите на PowerShell, разовые команды на чужой машине выполняйте через netsh. Минимальный рабочий пример создания правила: New-NetFirewallRule -DisplayName 'Test Rule' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80.
Обе консоли запускайте от имени администратора. Без повышенных прав запрос на изменение политики вернёт ошибку доступа, а при запуске появится системное окно UAC.
Быстрый старт: первые команды для управления брандмауэром Windows 11
Откройте терминал с повышенными правами: Win + X, далее «Терминал (Администратор)» или «Windows PowerShell (Администратор)» в зависимости от сборки. Проверьте состояние профилей:
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction, DefaultOutboundAction
Вывод содержит три строки: Domain, Private, Public. Поле Enabled показывает, включён ли профиль, EnableFirewall = True означает активную фильтрацию трафика.
Создайте тестовое правило для входящего TCP-порта 80:
New-NetFirewallRule -DisplayName 'Test Rule' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80
Проверьте результат и удалите правило:
Get-NetFirewallRule -DisplayName 'Test Rule' | Select-Object DisplayName, Direction, Action, Enabled, Profile Remove-NetFirewallRule -DisplayName 'Test Rule'
Те же операции через netsh в cmd или PowerShell:
netsh advfirewall show allprofiles netsh advfirewall firewall add rule name="Test Rule" dir=in action=allow protocol=TCP localport=80 netsh advfirewall firewall delete rule name="Test Rule"
Перезагрузка не нужна: правила начинают действовать сразу после выполнения команды. Два ограничения стоит учитывать с первого шага. Команда netsh advfirewall firewall add rule не проверяет дубликаты, и повторный запуск создаст второе правило с тем же именем. Консоль без прав администратора вернёт сообщение об отказе доступа вместо применения настройки.
Создание, изменение и удаление правил брандмауэра через PowerShell
Модуль NetSecurity даёт четыре командлета, которые закрывают весь жизненный цикл правила: New-NetFirewallRule, Get-NetFirewallRule, Set-NetFirewallRule, Remove-NetFirewallRule. Набор параметров у них общий.
| Параметр | Что задаёт | Типичные значения |
|---|---|---|
| -DisplayName | Имя правила, которое видно в оснастке wf.msc | Любая строка |
| -Name | Уникальный идентификатор правила | Строка, латиница без пробелов |
| -Direction | Направление трафика | Inbound, Outbound |
| -Action | Действие | Allow, Block, NotConfigured |
| -Protocol | Протокол | TCP, UDP, ICMPv4, ICMPv6, Any |
| -LocalPort / -RemotePort | Порты получателя и источника | 80, 3389, диапазон '8000-8100' |
| -LocalAddress / -RemoteAddress | IP-адреса и подсети | 10.0.0.0/8, LocalSubnet, Any |
| -Program | Путь к исполняемому файлу | 'C:\Tools\app.exe' |
| -Service | Служба, для которой действует правило | W3SVC, TermService |
| -Profile | Сетевой профиль | Domain, Private, Public, Any |
| -Enabled | Активность правила сразу после создания | True, False |
DisplayName не уникален: два правила с одинаковым именем - штатная ситуация, каждому Windows присвоит собственный -Name. Если управляете правилами из скриптов, задавайте -Name вручную, тогда переименование в GUI не сломает автоматику.
Примеры New-NetFirewallRule для типовых сценариев
Разрешить входящие подключения к веб-серверу на порту 8080 только из локальной сети, для доменного и частного профилей:
New-NetFirewallRule -DisplayName 'Web Server 8080' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8080 -RemoteAddress LocalSubnet -Profile Domain,Private
Заблокировать исходящие соединения конкретного приложения:
New-NetFirewallRule -DisplayName 'Block App Outbound' -Direction Outbound -Action Block -Program 'C:\Tools\app.exe'
Запрещающее правило имеет приоритет над разрешающим, если трафик попадает под оба. Этот приём используют, чтобы отсечь телеметрию или сетевую активность утилиты, не отключая её полностью.
Включить ответ на ICMP echo request для диагностики доступности:
New-NetFirewallRule -DisplayName 'Allow ICMPv4 Echo' -Direction Inbound -Action Allow -Protocol ICMPv4 -IcmpType 8 -RemoteAddress LocalSubnet
Создать набор правил под одной группой, чтобы позже управлять ими одной командой:
New-NetFirewallRule -DisplayName 'MyApp - HTTP' -Group 'MyApp' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80 New-NetFirewallRule -DisplayName 'MyApp - HTTPS' -Group 'MyApp' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 443
Параметр -Enabled False создаёт правило в отключённом состоянии: удобно, когда конфигурацию готовят заранее, а включают по регламенту работ.
Изменение существующих правил: Set-NetFirewallRule
Set-NetFirewallRule меняет параметры правила без удаления и повторного создания. Смена разрешённой подсети и порта:
Set-NetFirewallRule -DisplayName 'Web Server 8080' -RemoteAddress 10.0.0.0/8 Set-NetFirewallRule -DisplayName 'Web Server 8080' -LocalPort 8081
Включение и отключение правила, в том числе массово по шаблону имени:
Set-NetFirewallRule -DisplayName 'Web Server 8080' -Enabled False Get-NetFirewallRule -DisplayName 'MyApp*' | Set-NetFirewallRule -Enabled False
Для быстрых операций есть отдельные командлеты Enable-NetFirewallRule и Disable-NetFirewallRule. Ограничение: направление трафика (-Direction) после создания правила не меняется. Чтобы развернуть входящее правило в исходящее, удалите его и создайте заново. Менять приходится и фильтр, который не поддерживается в Set-NetFirewallRule: проверьте нужный параметр через Get-Help Set-NetFirewallRule -Full.
Удаление правил: Remove-NetFirewallRule и меры предосторожности
Удаление по имени, по группе и предварительный просмотр результата:
Remove-NetFirewallRule -DisplayName 'Web Server 8080'
Get-NetFirewallRule -Group 'MyApp' | Remove-NetFirewallRule
Get-NetFirewallRule -DisplayName 'Test*' | ForEach-Object { Remove-NetFirewallRule -Name $_.Name -WhatIf }
Remove-NetFirewallRule без параметров удаляет все правила брандмауэра. На машине, которой вы управляете по RDP или WinRM, это может отрезать доступ, поэтому перед массовыми операциями сохраните конфигурацию. Ключ -WhatIf показывает, какие правила попадут под удаление, и выполняется без изменений. Перезагрузка после удаления правила не требуется.
Управление профилями брандмауэра Windows 11 через PowerShell
Windows 11 использует три профиля: Domain (когда доступен контроллер домена), Private и Public. Активный профиль определяется типом сети у каждого сетевого интерфейса, а правило без параметра -Profile применяется ко всем трём.
Get-NetFirewallProfile | Format-Table Name, Enabled, DefaultInboundAction, DefaultOutboundAction Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True Set-NetFirewallProfile -Profile Public -DefaultInboundAction Block -DefaultOutboundAction Allow
Политики по умолчанию определяют судьбу трафика, который не попал ни под одно правило. Значение DefaultOutboundAction Block полностью блокирует исходящие соединения, включая DNS и центр обновлений Windows, поэтому включайте его только вместе с полным набором разрешающих правил и на изолированной машине. Отключение всех профилей одной командой Set-NetFirewallProfile -Profile Any -Enabled False оставляет систему без фильтрации.
Логирование помогает разобрать, почему соединение не проходит:
Set-NetFirewallProfile -Profile Public -LogBlocked True -LogAllowed True -LogFileName '%systemroot%\system32\LogFiles\Firewall\pfirewall.log' -LogMaxSizeKilobytes 8192
Файл pfirewall.log пишется в текстовом формате и разбирается как обычный лог. Если правила не применяются вовсе, проверьте состояние службы: Get-Service mpssvc. Остановленная служба брандмауэра означает отсутствие фильтрации независимо от содержимого политики.
Аналоги в netsh: netsh advfirewall set allprofiles state on и netsh advfirewall set publicprofile firewallpolicy blockinbound,allowoutbound. Разбор профилей, правил и диагностики на практике собран в отдельном материале о настройке брандмауэра Windows: правила, профили и диагностика.
Использование netsh advfirewall для управления брандмауэром
netsh advfirewall входит в состав Windows 11 и работает из cmd, PowerShell и сценариев .bat. Команды делятся на три группы: состояние профилей, работа с правилами, экспорт и импорт конфигурации.
netsh advfirewall show allprofiles netsh advfirewall set allprofiles state on netsh advfirewall set allprofiles state off netsh advfirewall show publicprofile firewallpolicy
Синтаксис netsh advfirewall firewall add rule
В netsh параметры записываются без дефиса, значения передаются через знак равенства, а строки со пробелами берутся в двойные кавычки.
| Параметр | Назначение | Значения |
|---|---|---|
| name | Имя правила | Строка в кавычках |
| dir | Направление | in, out |
| action | Действие | allow, block, bypass |
| protocol | Протокол | tcp, udp, icmpv4, icmpv6, any |
| localport, remoteport | Порты | 80, 3389, 8000-8100 |
| localip, remoteip | Адреса и подсети | 192.168.1.0/24, anys |
| program | Путь к приложению | Полный путь, при пробелах - в кавычках |
| service | Служба | Имя службы |
| profile | Профиль | domain, private, public, any |
| enable | Состояние правила | yes, no |
Разрешить RDP только из административной подсети и включить ответ на ping:
netsh advfirewall firewall add rule name="Allow RDP" dir=in action=allow protocol=TCP localport=3389 remoteip=192.168.1.0/24 netsh advfirewall firewall add rule name="Allow Ping" protocol=icmpv4:8,any dir=in action=allow
Удаление и изменение правил через netsh
Удаление по имени выполняется командой netsh advfirewall firewall delete rule name="Rule". Если правил с таким именем несколько, удалятся все. Конструкция netsh advfirewall firewall delete rule name=all стирает весь набор правил брандмауэра - это необратимая операция без предварительного экспорта.
Изменение существующего правила выполняется через set rule, и список доступных для правки полей уже, чем при создании:
netsh advfirewall firewall set rule name="Allow RDP" new remoteip=10.0.0.0/8 netsh advfirewall firewall set rule group="MyApp" new enable=no
netsh не возвращает объекты, поэтому фильтровать правила по параметрам через него неудобно: вывод приходится разбирать текстом. Для сложной логики и массовых операций используйте PowerShell, а netsh оставьте для быстрых правок и сред, где PowerShell ограничен. Формально netsh advfirewall остаётся поддерживаемым инструментом, но для новых сценариев документация Microsoft рекомендует командлеты NetFirewall*.
Экспорт и импорт политик безопасности брандмауэра
Резервная копия конфигурации снимается одной командой и занимает секунды:
netsh advfirewall export "C:\backup\fw-2026-09-22.wfw" netsh advfirewall import "C:\backup\fw-2026-09-22.wfw"
Файл .wfw хранит правила, настройки профилей и параметры логирования. Импорт заменяет текущую конфигурацию целиком, а не дополняет её, поэтому перед импортом всегда делайте экспорт рабочего состояния. Откат к прежней политике выполняется тем же импортом ранее сохранённого файла. Логику безопасного отката изменений и причины, по которым защита может молчать при включённых профилях, разбирает материал о включении, отключении и настройке файрвола Windows 10 и 11.
Через PowerShell резервную копию текущей конфигурации можно снять командлетом Export-NetFirewallPolicy с параметром -Path: How to Reset Firewall Settings in Windows Defender | NinjaOne.
Export-NetFirewallPolicy -Path 'C:\backup\fw.wfw'
Созданный файл резервной копии затем используется для восстановления пользовательских правил. Обратите внимание: в этом руководстве подтверждён только вариант с параметром -Path. Существование отдельного командлета Import-NetFirewallPolicy и параметров -PolicyStore ActiveStore и -FileName в доступных источниках не подтверждено, поэтому перед использованием в сценарии проверьте фактический синтаксис на целевой системе командой Get-Command Export-NetFirewallPolicy и Get-Help Export-NetFirewallPolicy -Full. Рабочая последовательность выглядит так: экспорт, серия изменений, проверка правил через Get-NetFirewallRule -PolicyStore ActiveStore, при неудаче - восстановление из копии.
Автоматизация типовых задач: готовые скрипты PowerShell
Массовое создание правил из CSV-файла. Колонки Name, Direction, Action, Protocol, LocalPort, Profile:
Import-Csv C:\scripts\firewall-rules.csv | ForEach-Object {
New-NetFirewallRule -DisplayName $_.Name -Direction $_.Direction -Action $_.Action `
-Protocol $_.Protocol -LocalPort $_.LocalPort -Profile $_.Profile -Group 'BulkImport'
}
Блокировка списка IP-адресов из текстового файла, по одному адресу в строке:
$ips = Get-Content C:\scripts\blocklist.txt
foreach ($ip in $ips) {
New-NetFirewallRule -DisplayName "Block $ip" -Direction Inbound -Action Block -RemoteAddress $ip -Group 'Blocklist'
}
Скрипт с логированием и обработкой ошибок, который безопаснее однострочника для продакшена:
Start-Transcript -Path C:\scripts\firewall-change.log -Append
foreach ($port in 80, 443) {
try {
New-NetFirewallRule -DisplayName "Web $port" -Direction Inbound -Action Allow -Protocol TCP -LocalPort $port -Profile Domain,Private -ErrorAction Stop
} catch {
Add-Content -Path C:\scripts\firewall-errors.log -Value $_.Exception.Message
}
}
Stop-Transcript
Переключение профиля по расписанию через Планировщик заданий: создайте задачу от имени SYSTEM с триггером по времени и действием powershell.exe -NoProfile -Command "Set-NetFirewallProfile -Profile Public -Enabled False". Для возврата защиты в обратном порядке создайте вторую задачу. Такой приём снижает уровень фильтрации на окно регламентных работ, но оставлять его без второй задачи не стоит.
Если правила нужно раздать на парк машин, сценарий на каждой из них не обязателен: создайте настройки на стенде и распространите их групповой политикой. Порядок работы с GPO и проверкой результата описан в материале о настройке брандмауэра Windows: правила, профили и диагностика. Любой скрипт сначала прогоняйте на тестовой машине: разные выпуски Windows 11 отличаются набором предустановленных правил, и результат на стенде может отличаться от продакшена.
Проверка совместимости и подводные камни
Командлеты NetFirewall* относятся к модулю NetSecurity. Точный перечень поддерживаемых выпусков Windows и версий модуля в доступных источниках не подтверждён, поэтому перед развёртыванием на парке машин проверяйте наличие нужных командлетов на целевой сборке командой Get-Command -Module NetSecurity. Отличаются не столько команды, сколько предустановленные политики и набор правил, поэтому итоговую конфигурацию проверяйте на целевой сборке. Сверяйтесь с официальной документацией Microsoft Learn по командлетам NetFirewallRule и netsh advfirewall, если параметр ведёт себя иначе, чем описано здесь.
Права доступа. Изменение политики возможно только из консоли администратора. Типовые сообщения об отказе: Access is denied и Requested operation requires elevation. Чтение состояния профилей и списка правил обычно доступно и без повышения прав.
Версия PowerShell. В Windows PowerShell 5.1 модуль NetSecurity подключается напрямую. В PowerShell 7 и новее модули, ориентированные на Windows PowerShell 5.1, могут загружаться через слой совместимости Windows с помощью параметра -UseWindowsPowerShell командлета Import-Module, например Import-Module ActiveDirectory -UseWindowsPowerShell (How to Use Import-Module in PowerShell? - SharePoint Diary). При этом модуль NetSecurity не находится в PowerShell Core автоматически, поэтому его приходится подключать через слой совместимости или устанавливать отдельно, и часть параметров может отрабатывать иначе (How to find or install missing Commands in PowerShell Core (pwsh)?). Для массовых операций быстрее и предсказуемее запускать скрипт в Windows PowerShell 5.1.
Групповые политики. Доменные GPO применяются поверх локальных настроек и перекрывают их. Проверить источник действующей конфигурации можно так:
Get-NetFirewallProfile -PolicyStore ActiveStore | Select-Object Name, Enabled, PolicyStore Get-NetFirewallRule -PolicyStore ActiveStore -DisplayName 'Web Server 8080' | Select-Object DisplayName, PolicyStore
Значение PolicyStore в выводе ActiveStore означает итоговую политику. Если локальное правило создано, но не влияет на трафик, ищите конфликтующее GPO или правило с тем же портом и действием Block.
Сторонние средства защиты. Антивирусы сторонних производителей могут переводить Microsoft Defender Antivirus в пассивный режим: на Windows 10 и 11 это происходит автоматически при установке стороннего антивируса, а на Windows Server 2019 и выше пассивный режим настраивается вручную (Configure Defender AV / Next-generation protection). В пассивном режиме Defender продолжает получать обновления, включая обновления аналитики безопасности и антивирусного движка (Coexistence of Microsoft Defender for Business with Third-Party Antivirus Solutions). Для брандмауэра это означает, что фильтрацией может управлять сторонний продукт, а команды PowerShell изменяют правила, которые не применяются к трафику. Признаки: профили показывают Enabled = True, а соединения проходят без учёта новых правил. Проверьте, какой продукт зарегистрирован в центре безопасности Windows, прежде чем искать ошибку в собственных правилах.
Конфликты при импорте. Импорт .wfw с другой машины приносит правила с именами и путями к приложениям, которых на новом хосте нет. Пути к программам останутся нерабочими, а правила, привязанные к домену, будут вести себя иначе вне домена. Перед импортом на незнакомую конфигурацию сделайте резервную копию текущей и сравните список правил через Compare-Object между выгрузками до и после.
PowerShell или netsh: что выбрать для управления брандмауэром
| Критерий | PowerShell | netsh advfirewall |
|---|---|---|
| Модель работы | Объекты, конвейер, фильтрация | Текстовый вывод, разбор строками |
| Сложные сценарии | Циклы, CSV, обработка ошибок | Ограничены конструкциями cmd |
| Совместимость | Требуется модуль NetSecurity | Широко доступен в выпусках Windows |
| Читаемость | Именованные параметры | Параметры без дефисов, значения через = |
| Рекомендация вендора | Основной инструмент для новых задач | Поддерживается, для новых сценариев не рекомендуется |
Эквивалентность команд видна на простом примере. В PowerShell:
New-NetFirewallRule -DisplayName 'Allow RDP' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3389 -RemoteAddress 192.168.1.0/24
То же самое через netsh:
netsh advfirewall firewall add rule name="Allow RDP" dir=in action=allow protocol=TCP localport=3389 remoteip=192.168.1.0/24
Практическое правило: netsh выбирайте, когда нужно быстро выполнить одну команду в cmd, зайти на сервер без PowerShell или включить настройку в существующий .bat. PowerShell берите для скриптов, массовых операций, импорта списков из файлов и там, где результат нужно проверять программно.
Начните с проверки текущего состояния: Get-NetFirewallProfile и netsh advfirewall show allprofiles. Сразу после этого снимите резервную копию через netsh advfirewall export, и только затем переходите к правкам правил. Так откат займёт одну команду, а не час ручного восстановления доступа.