- Обзор
- Обозначения переменных
- Шаг 1: Понимание профилей и план применения
- Шаг 2: Базовые политики (поведение по умолчанию)
- Шаг 3: Управление правилами брандмауэра
- Шаг 4: Сбор журналов и аудит
- Шаг 5: Централизованное управление через GPO
- Шаг 6: Периодическая проверка и устранение неполадок
- Итоги
Обзор
В статье показана настройка 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
-
Создать или получить GPO
$gpo = New-GPO -Name "Firewall-Policy-Domain"Для редактирования существующего:
Get-GPO -Name "<ИМЯ_GPO>". -
Задать значения через реестр 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 и харденинга.
