← К вики

Брандмауэр 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)

  1. Нажмите Win+R, введите wf.msc, нажмите Enter — откроется «Брандмауэр Windows в режиме повышенной безопасности».
  2. В левой панели выберите «Правила для входящих подключений».
  3. В правой панели нажмите «Создать правило».
  4. Тип правила — «Порт» → «Далее».
  5. Выберите протокол TCP и укажите порт (например, 80) → «Далее».
  6. Действие — «Разрешить подключение» → «Далее».
  7. Оставьте все три профиля отмеченными (Домен, Частный, Публичный) → «Далее».
  8. Введите имя правила (например, 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.

Полезные ссылки

Следующие статьи

Сейчас работают только те cookie, без которых сайт не откроется. Разрешите ещё аналитические — будем видеть, где интерфейс мешает, и чинить это.