ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Windows Server

Как открыть и закрыть порт в брандмауэре Windows (GUI и PowerShell)

7 шагов 14 мин чтения 3 просмотров 0
Содержание

Если сайт, база данных, игровой сервер или ваше приложение на Windows VPS недоступны извне, чаще всего причина в том, что порт закрыт в брандмауэре Windows. В этой инструкции для Windows Server 2016/2019/2022 показано, как открыть и закрыть порт в брандмауэре Windows через графический интерфейс и PowerShell (New-NetFirewallRule / Remove-NetFirewallRule), ограничить доступ по IP, разрешить ping, проверить прослушивание порта и протестировать его снаружи.

Шаг 1: Открыть порт в брандмауэре Windows через GUI

Подключитесь по RDP, нажмите Win+R и выполните команду ниже — откроется «Монитор брандмауэра Защитника Windows в режиме повышенной безопасности». Выберите «Правила для входящих подключений» → «Создать правило» → «Для порта» → TCP или UDP и укажите порты (например, 8080 или 80,443) → «Разрешить подключение» → отметьте все профили → задайте понятное имя.

wf.msc
Исходящий трафик по умолчанию разрешён, поэтому обычно достаточно входящих правил. Давайте правилам понятные имена, например «Allow TCP 8080 - API», чтобы потом легко найти их и закрыть порт.

Шаг 2: Открыть порт командой PowerShell New-NetFirewallRule

В PowerShell от имени администратора порт открывается одной командой — удобно для скриптов и массового развёртывания. Параметр -LocalPort принимает один порт, список через запятую или диапазон, -Protocol — TCP или UDP.

# Allow inbound TCP 8080 (all profiles)
New-NetFirewallRule -DisplayName "Allow TCP 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow -Profile Any

# Several ports / a range, and UDP
New-NetFirewallRule -DisplayName "Allow Web 80,443" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Allow
New-NetFirewallRule -DisplayName "Allow UDP 27015-27020" -Direction Inbound -Protocol UDP -LocalPort 27015-27020 -Action Allow

Шаг 3: Открыть порт только для определённых IP-адресов

Порты баз данных (1433, 3306) и служб управления не стоит открывать всему интернету. Укажите доверенные IP или подсети в -RemoteAddress — остальные подключения будут отброшены политикой по умолчанию. Список источников потом меняется через Set-NetFirewallRule без пересоздания правила.

# Only allow SQL Server 1433 from your office IP and one subnet
New-NetFirewallRule -DisplayName "MSSQL from office" -Direction Inbound -Protocol TCP -LocalPort 1433 -RemoteAddress 203.0.113.10,198.51.100.0/24 -Action Allow

# Change the source list of an existing rule later
Set-NetFirewallRule -DisplayName "MSSQL from office" -RemoteAddress 203.0.113.10,203.0.113.20

Шаг 4: Закрыть порт в брандмауэре Windows (отключение или Remove-NetFirewallRule)

Закрыть порт можно тремя способами: временно отключить правило, удалить его через Remove-NetFirewallRule или создать явное правило блокировки. Правило блокировки в брандмауэре Windows всегда важнее разрешающего, поэтому это самый надёжный вариант.

# List the rules you created
Get-NetFirewallRule -Direction Inbound | Where-Object DisplayName -like "Allow*" | Format-Table DisplayName,Enabled,Action

# Temporarily disable, or delete permanently
Disable-NetFirewallRule -DisplayName "Allow TCP 8080"
Remove-NetFirewallRule -DisplayName "Allow TCP 8080"

# Explicitly block a port (Block rules win over Allow rules)
New-NetFirewallRule -DisplayName "Block TCP 445" -Direction Inbound -Protocol TCP -LocalPort 445 -Action Block
Не удаляйте и не блокируйте правило удалённого рабочего стола (порт 3389 или ваш нестандартный порт RDP) — сессия сразу оборвётся, и вы потеряете доступ.

Шаг 5: Разрешить ping (ICMP) в Windows Server

По умолчанию Windows Server не отвечает на ping. На работу сайтов это не влияет, но системы мониторинга могут считать сервер недоступным. Правила ниже разрешают только эхо-запросы, остальные типы ICMP остаются закрытыми.

# Allow ping (ICMPv4 Echo Request) and ICMPv6 echo
New-NetFirewallRule -DisplayName "Allow ICMPv4 Ping" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -Action Allow
New-NetFirewallRule -DisplayName "Allow ICMPv6 Ping" -Direction Inbound -Protocol ICMPv6 -IcmpType 128 -Action Allow

# Same with the classic netsh syntax
netsh advfirewall firewall add rule name="Allow ICMPv4 Ping" dir=in action=allow protocol=icmpv4:8,any

Шаг 6: Проверить, слушает ли программа порт

Открытый в брандмауэре порт бесполезен, если на нём никто не слушает. Проверьте адрес прослушивания и PID через netstat или Get-NetTCPConnection. Если адрес 127.0.0.1, приложение принимает только локальные подключения — измените в его настройках адрес на 0.0.0.0 или внешний IP сервера.

netstat -ano | findstr :8080

Get-NetTCPConnection -State Listen -LocalPort 8080 | Select-Object LocalAddress,LocalPort,OwningProcess
Get-Process -Id (Get-NetTCPConnection -State Listen -LocalPort 8080).OwningProcess

Шаг 7: Проверить открытый порт снаружи

Тестируйте только с другого компьютера: проверка на самом сервере идёт в обход брандмауэра. Результат TcpTestSucceeded : True или «succeeded» от nc означает, что порт доступен.

# From another Windows machine
Test-NetConnection 203.0.113.50 -Port 8080

# From a Linux / macOS machine
nc -zv 203.0.113.50 8080
ping 203.0.113.50

Частые вопросы

Правило добавлено, но порт всё равно закрыт. Почему?

Проверьте, что программа слушает порт (шаг 6) и не привязана к 127.0.0.1, нет ли правила блокировки на тот же порт, правильный ли протокол (TCP или UDP) и не фильтрует ли порт ваша локальная сеть. Дополнительные проверки — в инструкции «Нет сети в Windows».

Можно просто отключить брандмауэр Windows?

Не рекомендуем: SMB, RPC и другие системные службы окажутся открыты для сканеров. Оставьте брандмауэр включённым и открывайте только нужные порты.

Нужно ли правило брандмауэра после смены порта RDP?

Да. Сначала разрешите новый порт, затем перезапустите службу удалённых рабочих столов. Подробнее — в инструкции «Смена порта RDP в Windows».

Если проблема не решена, создайте тикет — техподдержка IMIDC работает 24/7. Укажите IP сервера, версию ОС, выполненные команды и приложите скриншот ошибки, чтобы мы быстрее нашли причину.

Помог ли вам данный ответ?

Похожие руководства