Comprobar los perfiles y activar el cortafuegos
El cortafuegos de Windows tiene tres perfiles: Dominio / Privado / Público. En VPS, normalmente se activa el perfil Público. Base segura: entrante: Bloquear, saliente: Permitir.
GUI: «Cortafuegos de Windows Defender con seguridad avanzada» → Pantalla del perfil raíz.
PowerShell:
Get-NetFirewallProfile | Select Name,Enabled,DefaultInboundAction,DefaultOutboundAction
Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True
Proteger el RDP (3389/TCP)
El RDP es necesario para la administración de los Windows VPS, pero no puede estar abierto a «todo el mundo». El procedimiento es sencillo: active temporalmente las reglas por defecto, cree su propia regla restringida basada en la fuente IP y, a continuación, desactive las reglas «generales».
GUI (asistente para nuevas reglas):
1. Reglas entrantes → Nueva regla… → Puerto
2. TCP, puertos locales específicos: 3389
Autorizar la conexión
Una vez creado, vaya a Propiedades → Zona y especifique las direcciones IP remotas (su subred IP estática/VPN). Esto es esencial para la seguridad.
PowerShell:
# When connecting for the first time: enable the standard group
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
# Strict rule only from your IP
New-NetFirewallRule -DisplayName "RDP inbound (admin IP only)" `
-Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow `
-RemoteAddress 203.0.113.50 -Profile Any
# After verification, disable “broad” RDP rules.
Disable-NetFirewallRule -DisplayGroup "Remote Desktop"
Solo abrimos lo que es realmente necesario
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 (si se utiliza)
New-NetFirewallRule -DisplayName "MSSQL (1433)" -Direction Inbound -Protocol TCP -LocalPort 1433 -Action Allow
(Si accede desde redes restringidas, defina también RemoteAddress para estas reglas).
Active el registro (esto es muy útil para la resolución de problemas).
Registre las conexiones autorizadas y bloqueadas en pfirewall.log.
GUI:
PowerShell:
Set-NetFirewallProfile -Profile Domain,Private,Public `
-LogFileName "C:\Windows\System32\LogFiles\Firewall\pfirewall.log" `
-LogMaxSizeKilobytes 32768 -LogAllowed True -LogBlocked True
Verificación rápida desde el exterior
Desde el PC cliente, compruebe que los puertos necesarios sean accesibles:
# RDP
Test-NetConnection vps.example.ru -Port 3389
# Веб
Test-NetConnection vps.example.ru -Port 80
Test-NetConnection vps.example.ru -Port 443
# SQL (if necessary)
Test-NetConnection vps.example.ru -Port 1433
TcpTestSucceeded: True: la regla funciona, el puerto está disponible. Si es False: compruebe el perfil de la regla, el alcance (IP de origen) y las ACL externas con el proveedor.
Breve lista de comprobación de errores
- RDP dejado «abierto a todos»: añada RemoteAddress y desactive las reglas generales predeterminadas.
- Perfil incorrecto: la regla está definida como «Privada», pero el servidor se encuentra en la zona pública.
- Sin registros: active el registro, de lo contrario, los bloqueos «invisibles» son difíciles de detectar.
- Olvido del firewall externo/SG del proveedor VPS Windows: compruébelo en paralelo.