← К вики

Брандмауэр 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, чтобы сайт работал, и — если разрешите — аналитику: видим, где людям неудобно, и чиним. Рекламных трекеров нет.