Настройка брандмауэра Windows

Обзор

В статье показана настройка Windows Defender Firewall (ранее Windows Firewall) на Windows Server. Рассматриваются проектирование профилей (Domain, Private, Public), оптимизация правил входящих/исходящих соединений, сбор и анализ журналов, а также централизованное управление через GPO и скрипты для практической эксплуатации.

Обозначения переменных

Переменная Пример Описание
<<SERVER_NAME>> SRV-CORE01 Имя целевого сервера
<<LOG_PATH>> C:\FirewallLogs\pfirewall.log Путь к файлу журнала брандмауэра
<<OU_NAME>> Servers Имя OU

Шаг 1: Понимание профилей и план применения

Windows Defender Firewall использует три профиля:

Профиль Назначение Типичная среда
Domain Сети, входящие в Active Directory Корпоративная LAN, VPN
Private Доверенная изолированная сеть Тестовые/закрытые сети
Public Недоверенная сеть Публичный Wi-Fi, лаборатории/VM

Каждый профиль настраивается отдельно и автоматически переключается по идентификатору сети.

Команда проверки:

# Состояние профилей и их политики по умолчанию
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction, DefaultOutboundAction

Шаг 2: Базовые политики (поведение по умолчанию)

По умолчанию Windows Defender Firewall блокирует вход и разрешает выход.
Оставьте так или при необходимости введите явный контроль исходящих соединений.

# Явная установка политики по умолчанию
Set-NetFirewallProfile -Profile Domain,Private,Public `
  -DefaultInboundAction Block `
  -DefaultOutboundAction Allow `
  -NotifyOnListen True

Примечание. В средах с повышенными требованиями безопасности используйте -DefaultOutboundAction Block и разрешайте только необходимые исходящие потоки (например, DNS, NTP, WSUS) — «белый список».


Шаг 3: Управление правилами брандмауэра

Список и фильтрация правил

# Все правила
Get-NetFirewallRule

# Поиск правил по имени (содержит "RDP")
Get-NetFirewallRule | Where-Object DisplayName -Like "*RDP*"

# Только включённые правила
Get-NetFirewallRule | Where-Object Enabled -eq "True"

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

# Разрешить входящий RDP (TCP/3389) только для профиля Domain
New-NetFirewallRule -DisplayName "Allow RDP (Domain)" `
  -Direction Inbound -Protocol TCP -LocalPort 3389 `
  -Action Allow -Profile Domain

# Разрешить исходящий NTP (UDP/123)
New-NetFirewallRule -DisplayName "Allow NTP Outbound" `
  -Direction Outbound -Protocol UDP -LocalPort 123 `
  -Action Allow -Profile Domain,Private,Public

Параметры и допустимые значения

Пункт Параметр Пример Допустимые значения / формат
Направление -Direction Inbound / Outbound Inbound, Outbound
Действие -Action Allow / Block Allow, Block
Протокол -Protocol TCP / UDP / ICMPv4 / ICMPv6 / Any Как указано; ICMP детализируется -IcmpType
Локальный порт -LocalPort 80 / 1024-2048 / 80,443,8080 Один порт, диапазон, CSV-список
Удалённый порт -RemotePort 53 / 1000-2000 / 53,67,68 Один порт, диапазон, CSV-список
Удалённый адрес -RemoteAddress 192.168.1.1 / 192.168.0.0/24 / Any IP, CIDR, диапазон, CSV, Any
Локальный адрес -LocalAddress 10.0.0.1 / 10.0.0.0/16 / Any IP, CIDR, диапазон, CSV, спец. ключи, Any
Программа -Program C:\Program Files\App\App.exe Полный путь к исполнимому файлу
Служба -Service W32Time Имя службы Windows
Профиль -Profile Domain,Private Комбинация Domain, Private, Public
Тип интерфейса -InterfaceType Ethernet / Wireless / RemoteAccess Поддерживаемые типы

Пример: разрешить HTTP только с доверенного IP

New-NetFirewallRule -DisplayName "Allow HTTP from Trusted IP" `
  -Direction Inbound -Protocol TCP -LocalPort 80 `
  -RemoteAddress 192.168.1.100 `
  -Action Allow -Profile Domain,Private

Пример: исходящее правило для конкретной программы

New-NetFirewallRule -DisplayName "Allow Outbound for App.exe" `
  -Direction Outbound -Program "C:\Program Files\App\App.exe" `
  -Action Allow -Profile Domain,Private,Public

Пример: вход для конкретной службы

New-NetFirewallRule -DisplayName "Allow Service XYZ Inbound" `
  -Direction Inbound -Service "W32Time" `
  -Action Allow -Profile Domain,Private

Пример: блокировать исходящий трафик по Wi-Fi

New-NetFirewallRule -DisplayName "Block Outbound on Wireless" `
  -Direction Outbound -InterfaceType Wireless `
  -Action Block -Profile Public

Изменение, включение/выключение и удаление правил

# Отключить правило
Disable-NetFirewallRule -DisplayName "Allow RDP (Domain)"

# Включить правило
Enable-NetFirewallRule -DisplayName "Allow RDP (Domain)"

# Изменить (например, ограничить профилями Domain и Private)
Set-NetFirewallRule -DisplayName "Allow RDP (Domain)" -Profile Domain,Private

# Удалить правило
Remove-NetFirewallRule -DisplayName "Allow RDP (Domain)"

Экспорт/импорт набора правил

# Экспорт политики брандмауэра
netsh advfirewall export "C:\Backup\FirewallPolicy.wfw"

# Импорт политики брандмауэра
netsh advfirewall import "C:\Backup\FirewallPolicy.wfw"

Шаг 4: Сбор журналов и аудит

Фиксируйте разрешённые/заблокированные соединения и отслеживайте аномалии.

# Логировать Allow и Block, максимум 32 МБ
Set-NetFirewallProfile -Profile Domain,Private,Public `
  -LogAllowed True -LogBlocked True `
  -LogFileName "<<LOG_PATH>>" -LogMaxSizeKilobytes 32767

Просмотр в реальном времени:

Get-Content "<<LOG_PATH>>" -Tail 20 -Wait

Важно. Включение LogAllowed=True увеличивает объём журналов. В проде имеет смысл активировать только для критичных профилей (например, Public) и настроить ротацию/архивацию. Лимит -LogMaxSizeKilobytes — 32767 КБ; значения выше приводят к ошибке.


Шаг 5: Централизованное управление через GPO

Настройки брандмауэра можно править и автоматизировать через GPO с помощью cmdlet-ов GroupPolicy.
Ключевые cmdlet-ы: Set-GPRegistryValue, Get-GPO, New-GPO, New-GPLink, Set-GPInheritance.

Создать GPO и применить параметры журнала для профиля Domain

  1. Создать или получить GPO

    $gpo = New-GPO -Name "Firewall-Policy-Domain"
    

    Для редактирования существующего: Get-GPO -Name "<ИМЯ_GPO>".

  2. Задать значения через реестр GPO

    # Включить логирование для профиля Domain
    Set-GPRegistryValue -Name $gpo.DisplayName `
      -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" `
      -ValueName "EnableLogging" -Type DWord -Value 1
    
    # Путь и размер журнала
    Set-GPRegistryValue -Name $gpo.DisplayName `
      -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\Logging" `
      -ValueName "LogFilePath" -Type String -Value "%systemroot%\system32\logfiles\firewall\pfirewall.log"
    
    Set-GPRegistryValue -Name $gpo.DisplayName `
      -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\Logging" `
      -ValueName "LogFileSize" -Type DWord -Value 32767
    

Настройки вступят в силу после привязки GPO к OU с помощью New-GPLink.

Привязать к OU (New-GPLink)

Передайте DN OU (или DN домена) в -Target.

Import-Module ActiveDirectory

$gpo = Get-GPO -Name "Firewall-Policy-Domain"

# Найти OU по имени и получить её DN
$ou = Get-ADOrganizationalUnit -LDAPFilter '(name=<<OU_NAME>>)' `
      -SearchBase (Get-ADDomain).DistinguishedName -SearchScope Subtree |
      Select-Object -First 1
$ouDn = $ou.DistinguishedName

# Привязать GPO к OU (включено; Enforced по необходимости)
New-GPLink -Name $gpo.DisplayName -Target $ouDn -LinkEnabled Yes -Enforced No

Требования. На админ-станции должны быть установлены модули ActiveDirectory и GroupPolicy (RSAT).


Шаг 6: Периодическая проверка и устранение неполадок

# Эффективно включённые правила
Get-NetFirewallRule | Where-Object {$_.Enabled -eq "True"} |
  Select-Object DisplayName, Direction, Action, Profile

# Проверка доступности порта
Test-NetConnection -ComputerName <<SERVER_NAME>> -Port 3389

Итоги

Windows Defender Firewall обеспечивает надёжную сетевую защиту на Windows Server. Комбинация явного контроля входящего/исходящего трафика, анализа журналов и централизованного/автоматизированного управления через GPO и PowerShell даёт прозрачность и безопасность, соответствующие требованиям zero trust и харденинга.