Брандмауэр Windows
Как открывать и закрывать порты через Windows Defender Firewall — через GUI и PowerShell.
Время: 10 мин · Сложность: ★☆☆☆☆
Подходит: ✓ Windows Server 2019 · ✓ Windows Server 2022
Краткое описание
Windows Defender Firewall управляет входящим и исходящим трафиком на уровне операционной системы. По умолчанию большинство портов закрыты — только RDP (3389) и несколько системных служб разрешены. Чтобы сделать сервис доступным снаружи, нужно создать правило для входящих подключений.
Когда пригодится
- Установили веб-сервер IIS или nginx и нужно открыть порты 80 и 443
- Запустили приложение на нестандартном порту (например, Node.js на 3000)
- Закрываете порт, который больше не нужен
Что понадобится
- RDP-подключение к серверу
- Права администратора
Пошаговая инструкция
Через GUI (wf.msc)
- Нажмите Win+R, введите
wf.msc, нажмите Enter — откроется «Брандмауэр Windows в режиме повышенной безопасности». - В левой панели выберите «Правила для входящих подключений».
- В правой панели нажмите «Создать правило».
- Тип правила — «Порт» → «Далее».
- Выберите протокол TCP и укажите порт (например,
80) → «Далее». - Действие — «Разрешить подключение» → «Далее».
- Оставьте все три профиля отмеченными (Домен, Частный, Публичный) → «Далее».
- Введите имя правила (например,
HTTP) → «Готово».
Правило появится в списке и сразу начнёт действовать — перезагрузка не нужна.
Через PowerShell (быстрее)
Откройте PowerShell с правами администратора — Win+X → «Windows PowerShell (администратор)».
Открыть порт 80 (HTTP):
New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
Открыть порт 443 (HTTPS):
New-NetFirewallRule -DisplayName "HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
Посмотреть все активные правила:
Get-NetFirewallRule | Where-Object {$_.Enabled -eq "True"} | Select-Object DisplayName,Direction,Action
Удалить правило по имени:
Remove-NetFirewallRule -DisplayName "HTTP"
Открыть диапазон портов (например, 8000–8100):
New-NetFirewallRule -DisplayName "App ports" -Direction Inbound -Protocol TCP -LocalPort 8000-8100 -Action Allow
Проверка результата
Проверьте доступность порта с самого сервера (если сервис уже запущен):
Test-NetConnection -ComputerName localhost -Port 80
Ожидаемый вывод при успехе:
TcpTestSucceeded : True
Если сервис ещё не запущен, TcpTestSucceeded будет False даже при правильном правиле — это нормально. Проверьте внешний доступ уже после запуска сервиса.
Посмотреть, какие процессы слушают порты:
netstat -ano | findstr LISTENING
Возможные ошибки
Правило создали, но порт всё равно недоступен снаружи
Две возможные причины:
- Сервис не запущен или слушает только
127.0.0.1, а не0.0.0.0. Проверьте командойnetstat -ano— в столбце «Локальный адрес» должен быть0.0.0.0:80, а не127.0.0.1:80. - Сетевой брандмауэр на стороне провайдера блокирует порт. Обратитесь в поддержку Cheesecake Cloud.
Правило исчезло после перезагрузки
Правила Defender Firewall сохраняются автоматически. Если правило пропало — убедитесь, что при создании не сняли галочку «Включено».
FAQ
Как посмотреть все открытые порты?
netstat -an
В столбце «Состояние» LISTENING означает, что порт открыт и процесс ждёт подключений.
Как заблокировать конкретный IP-адрес?
New-NetFirewallRule -DisplayName "Block IP" -Direction Inbound -RemoteAddress 1.2.3.4 -Action Block
Замените 1.2.3.4 на нужный IP.
Чем Inbound отличается от Outbound?
Inbound — правила для входящего трафика (кто может подключиться к серверу). Outbound — правила для исходящего трафика (куда сервер может подключаться сам). Для большинства задач меняют только Inbound.