Проверяем профили и включаем брандмауэр
В Windows Firewall есть три профиля: Domain / Private / Public. На VPS чаще активен Public. Безопасная база — входящие: Block, исходящие: Allow.
GUI: «Windows Defender Firewall with Advanced Security» → корневой экран профилей.
PowerShell:
Get-NetFirewallProfile | Select Name,Enabled,DefaultInboundAction,DefaultOutboundAction
Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True
Делаем RDP безопасным (3389/TCP)
RDP нужен для администрирования Windows VPS, но открывать его «всем» нельзя. Схема проста: временно включаем штатные правила, создаем свое узкое правило по IP-источнику, затем отключаем «широкие».
GUI (мастер нового правила):
1. Inbound Rules → New Rule… → Port
2. TCP, Specific local ports: 3389
Allow the connection
После создания зайдите в Properties → Scope и укажите Remote IP addresses (ваш статический IP/подсеть VPN). Это ключ к безопасности.
PowerShell:
# При первом подключении: включим штатную группу
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
# Узкое правило только с вашего IP
New-NetFirewallRule -DisplayName "RDP inbound (admin IP only)" `
-Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow `
-RemoteAddress 203.0.113.50 -Profile Any
# После проверки — отключаем «широкие» правила RDP
Disable-NetFirewallRule -DisplayGroup "Remote Desktop"
Открываем только то, что реально нужно
IIS/HTTPS
New-NetFirewallRule -DisplayName "HTTP (80)" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS (443)" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
MS SQL (если используется)
New-NetFirewallRule -DisplayName "MSSQL (1433)" -Direction Inbound -Protocol TCP -LocalPort 1433 -Action Allow
(При доступе из ограниченных сетей — задавайте RemoteAddress и для этих правил.)
Включаем логи (это очень помогает при отладке)
Записываем разрешенные и заблокированные соединения в pfirewall.log.
GUI:
PowerShell:
Set-NetFirewallProfile -Profile Domain,Private,Public `
-LogFileName "C:\Windows\System32\LogFiles\Firewall\pfirewall.log" `
-LogMaxSizeKilobytes 32768 -LogAllowed True -LogBlocked True
Быстрая проверка снаружи
С клиентского ПК проверьте, что нужные порты доступны:
# RDP
Test-NetConnection vps.example.ru -Port 3389
# Веб
Test-NetConnection vps.example.ru -Port 80
Test-NetConnection vps.example.ru -Port 443
# SQL (если нужно)
Test-NetConnection vps.example.ru -Port 1433
TcpTestSucceeded : True — правило работает, порт доступен. Если False — смотрим профиль правила, Scope (IP-источник) и внешние ACL у провайдера.
Небольшой чек-лист ошибок
- Оставили RDP «всем»: добавьте RemoteAddress и отключите штатные широкие правила.
- Неправильный профиль: правило висит на Private, а сервер — в Public.
- Нет логов: включите журнал — иначе «невидимые» блокировки сложно отловить.
- Забыли внешний фаервол/SG провайдера Windows VPS: проверьте параллельно.