Перевіряємо профілі та вмикаємо брандмауер
У 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: перевірте паралельно.