Cómo abrir un puerto en el firewall de un VPS Windows
Para abrir un puerto en un VPS Windows, todo pasa por el firewall del propio Windows Server, Windows Defender Firewall: el área de cliente de OuiHeberg no tiene firewall de red para los VPS. Esta guía te muestra cómo comprobar el firewall, abrir un puerto con la interfaz o con PowerShell, limitar el Escritorio remoto a tu dirección y leer los registros. Ejecuta los comandos en PowerShell como administrador, en una sesión RDP.
Comprobar el estado del firewall de Windows Server
Windows aplica uno de sus tres perfiles según la red. En un VPS suele ser el perfil Public.
| Perfil | Cuándo se aplica |
|---|---|
| Domain | Máquina unida a un dominio de Active Directory |
| Private | Red marcada como de confianza |
| Public | Red desconocida, el caso de un VPS expuesto a Internet |
Muestra el estado de los tres perfiles y su acción por defecto.
Get-NetFirewallProfile | Select Name, Enabled, DefaultInboundAction, DefaultOutboundAction
Cada perfil debe mostrar Enabled en True. Si alguno está en False, vuelve a activar el firewall en los tres.
Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True
Lo correcto es bloquear todo el tráfico entrante salvo lo que autorices, y dejar pasar el saliente.
Set-NetFirewallProfile -Profile Domain,Private,Public `
-DefaultInboundAction Block `
-DefaultOutboundAction Allow
Los textos de Windows se citan en inglés, el idioma del sistema entregado. La consola del firewall se abre con wf.msc. Su página de inicio resume los tres perfiles e indica cuál está activo.

Abrir un puerto con la interfaz
Pulsa la tecla Windows, escribe
wf.mscy pulsa Intro.Haz clic derecho en Inbound Rules y luego en New Rule….
En el paso Rule Type, elige Port y haz clic en Next.
Elige TCP o UDP y escribe el puerto en Specific local ports, por ejemplo
443.Deja Allow the connection.
Deja marcados los tres perfiles.
Pon a la regla un nombre claro, por ejemplo
Allow-HTTPS-443-Inbound, y haz clic en Finish.
La regla se aplica al momento, sin reiniciar.

El paso Rule Type ofrece cuatro tipos de regla.
| Tipo | Uso |
|---|---|
| Program | Permitir o bloquear un ejecutable (.exe) |
| Port | Abrir o bloquear un puerto TCP o UDP |
| Predefined | Activar un grupo de reglas incluido en Windows (Escritorio remoto, uso compartido de archivos…) |
| Custom | Combinar puerto, programa y direcciones IP de origen o destino |
Una regla de salida se crea igual desde Outbound Rules. Sirve sobre todo para impedir que un programa o el servidor contacte con una dirección o un puerto concretos.

Abrir un puerto con PowerShell
PowerShell es más rápido y se repite tal cual en otro servidor. Basta una línea para abrir un puerto TCP. Sustituye 8080 por el tuyo.
New-NetFirewallRule -DisplayName "Allow-Port-8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow -Profile Any
Para una regla de salida, cambia Inbound por Outbound. Para bloquear, cambia Allow por Block. Este es el mismo comando en varias líneas, para los puertos web 80 y 443.
New-NetFirewallRule `
-DisplayName "Allow-HTTP-HTTPS-Inbound" `
-Direction Inbound `
-Protocol TCP `
-LocalPort @(80, 443) `
-Action Allow `
-Profile Any
Limitar un puerto a ciertas direcciones
Un servicio de administración o una base de datos no debe quedar abierto a todo Internet. El parámetro -RemoteAddress reserva la regla a una dirección o a un rango. Ejemplo con SQL Server (puerto 1433) limitado a una subred, y WinRM (5985 y 5986) limitado a una dirección de administración.
# SQL Server, solo desde una subred
New-NetFirewallRule `
-DisplayName "Allow-SQLServer-LAN" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 1433 `
-RemoteAddress "10.0.0.0/24" `
-Action Allow `
-Profile Any
# WinRM HTTP (5985) y HTTPS (5986), solo desde una dirección
New-NetFirewallRule `
-DisplayName "Allow-WinRM-Management" `
-Direction Inbound `
-Protocol TCP `
-LocalPort @(5985, 5986) `
-RemoteAddress "203.0.113.10" `
-Action Allow `
-Profile Any
Para conectar tus VPS entre sí sin pasar por Internet, la guía Cómo conectar dos VPS con una red privada explica cómo activar la red privada.
Reservar el Escritorio remoto a tu dirección IP
Los robots barren el puerto 3389 sin parar. Si tu conexión tiene una dirección fija, resérvale el Escritorio remoto.
Crea una regla que permita el puerto 3389 desde tu dirección. Sustituye
203.0.113.10por la tuya.New-NetFirewallRule ` -DisplayName "Allow-RDP-MyIP" ` -Direction Inbound ` -Protocol TCP ` -LocalPort 3389 ` -RemoteAddress "203.0.113.10" ` -Action Allow ` -Profile AnyAbre una segunda sesión RDP para comprobar que sigues entrando. Mantén abierta la primera.
Desactiva las reglas originales del Escritorio remoto, que aceptan cualquier dirección.
Disable-NetFirewallRule -DisplayGroup "Remote Desktop"
Como el tráfico entrante está bloqueado por defecto, ahora solo pasa tu dirección.
No crees una regla
Blocken el puerto 3389. En Windows, una regla de bloqueo gana a una regla de permiso, así que también cortaría tu dirección. Si pierdes el acceso, abre la consola desde la ficha del VPS en el área de cliente y corrige la regla.
Si tu dirección cambia a menudo, pasa por una VPN y permite su rango. Para cambiar el puerto del Escritorio remoto, sigue la guía Cambiar el puerto RDP en un VPS Windows Server.
Bloquear un puerto o una dirección IP
# Bloquear un puerto de entrada
New-NetFirewallRule `
-DisplayName "Block-Port-8080-Inbound" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 8080 `
-Action Block `
-Profile Any
# Bloquear una dirección de origen (entrada)
New-NetFirewallRule `
-DisplayName "Block-IP-Suspect" `
-Direction Inbound `
-RemoteAddress "198.51.100.42" `
-Action Block `
-Profile Any
# Bloquear las conexiones salientes hacia una dirección
New-NetFirewallRule `
-DisplayName "Block-Outbound-IP" `
-Direction Outbound `
-RemoteAddress "198.51.100.42" `
-Action Block `
-Profile Any
Una regla de bloqueo pasa por delante de todas las reglas de permiso que afectan al mismo tráfico.
Activar las reglas predefinidas de Windows
Windows Server trae grupos de reglas listos para usar. Actívalos por grupo en lugar de uno a uno.
| Grupo | Uso |
|---|---|
| Remote Desktop | Conexiones de Escritorio remoto |
| File and Printer Sharing | Uso compartido de archivos SMB |
| Windows Management Instrumentation (WMI) | Administración remota por WMI |
| Windows Remote Management | PowerShell remoto (WinRM) |
| Core Networking | Tráfico de red básico (DNS, DHCP, ICMP) |
| Network Discovery | Detección de redes |
Con netsh o con PowerShell, como prefieras.
netsh advfirewall firewall set rule group="remote desktop" new enable=Yes
netsh advfirewall firewall set rule group="Windows Remote Management" new enable=Yes
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
Enable-NetFirewallRule -DisplayGroup "Windows Remote Management"
Para permitir el ping, la guía Cómo permitir el ping en un VPS Windows Server detalla las reglas ICMP.
Registrar el tráfico bloqueado
El registro del firewall muestra qué conexión se rechazó y deja ver los escaneos de puertos. Actívalo para los tres perfiles.
Set-NetFirewallProfile -Profile Domain,Private,Public `
-LogFileName "%SystemRoot%\System32\LogFiles\Firewall\pfirewall.log" `
-LogMaxSizeKilobytes 4096 `
-LogAllowed True `
-LogBlocked True
El mismo ajuste se puede hacer con netsh.
netsh advfirewall set allprofiles logging filename "%SystemRoot%\System32\LogFiles\Firewall\pfirewall.log"
netsh advfirewall set allprofiles logging maxfilesize 4096
netsh advfirewall set allprofiles logging droppedconnections enable
netsh advfirewall set allprofiles logging allowedconnections enable
El registro está en C:\Windows\System32\LogFiles\Firewall\pfirewall.log. Estas son sus columnas útiles.
| Columna | Contenido |
|---|---|
| date, time | Fecha y hora del evento |
| action | ALLOW o DROP |
| src-ip, dst-ip | Direcciones de origen y destino |
| src-port, dst-port | Puertos de origen y destino |
| path | RECEIVE para la entrada, SEND para la salida |
Este comando muestra los 50 últimos bloqueos.
Get-Content "C:\Windows\System32\LogFiles\Firewall\pfirewall.log" |
Where-Object { $_ -match "DROP" } |
Select-Object -Last 50
Gestionar y guardar las reglas
Lista las reglas activas, ordenadas por dirección.
Get-NetFirewallRule | Where-Object { $_.Enabled -eq "True" } |
Select-Object DisplayName, Direction, Action, Profile |
Sort-Object Direction
El mismo inventario puede mostrar el protocolo y el puerto de cada regla.
Get-NetFirewallRule | Where-Object { $_.Enabled -eq "True" } |
ForEach-Object {
$rule = $_
$portFilter = $rule | Get-NetFirewallPortFilter
[PSCustomObject]@{
Name = $rule.DisplayName
Direction = $rule.Direction
Action = $rule.Action
Protocol = $portFilter.Protocol
LocalPort = $portFilter.LocalPort
}
} | Format-Table -AutoSize
Desactiva una regla en vez de borrarla: así podrás reactivarla.
# Desactivar
Disable-NetFirewallRule -DisplayName "Allow-Port-8080"
# Reactivar
Enable-NetFirewallRule -DisplayName "Allow-Port-8080"
# Borrar definitivamente
Remove-NetFirewallRule -DisplayName "Allow-Port-8080"
Exporta todas las reglas antes de un cambio importante. La importación restaura la configuración exportada.
netsh advfirewall export "C:\Backup\firewall-backup.wfw"
netsh advfirewall import "C:\Backup\firewall-backup.wfw"
Para guardar cada mes una foto de las reglas activas, expórtalas a CSV.
Get-NetFirewallRule | Where-Object { $_.Enabled -eq "True" } |
Export-Csv "C:\Audit\firewall-rules-$(Get-Date -Format 'yyyy-MM').csv" -NoTypeInformation
Diagnosticar una conexión rechazada
¿La regla existe y está activa, pero la conexión falla? Revisa estos puntos en orden.
¿El servicio escucha en el puerto?
# En el servidor: ¿hay un programa escuchando en el puerto 443?
Get-NetTCPConnection -LocalPort 443 -State Listen
Test-NetConnection -ComputerName localhost -Port 443
# Desde tu PC con Windows (sustituye la dirección por la del VPS)
Test-NetConnection -ComputerName 203.0.113.50 -Port 443 -InformationLevel Detailed
Si TcpTestSucceeded vale True en el servidor y False desde tu PC, bloquea el firewall. Si vale False también en el servidor, el servicio no escucha y el problema está en la aplicación.
¿Pasa antes una regla de bloqueo?
Una regla Block más amplia se impone a tu regla Allow. Lista las reglas de bloqueo activas.
Get-NetFirewallRule -Direction Inbound -Action Block -Enabled True |
Select-Object DisplayName, Profile
¿La regla apunta al perfil correcto?
Una regla creada para el perfil Private no se aplica si el VPS está en el perfil Public. Muestra el perfil activo y el nombre de la interfaz.
Get-NetConnectionProfile | Select-Object Name, InterfaceAlias, NetworkCategory
Lo más sencillo es ampliar la regla a todos los perfiles. Pasar la interfaz al perfil Private también funciona, pero le aplica todas las reglas de ese perfil.
# Ampliar la regla a todos los perfiles
Set-NetFirewallRule -DisplayName "Allow-Port-8080" -Profile Any
# O pasar la interfaz al perfil Private (nombre leído en InterfaceAlias)
Set-NetConnectionProfile -InterfaceAlias "Ethernet" -NetworkCategory Private
¿Qué dice el registro?
# Bloqueos en el puerto 8080
Get-Content "C:\Windows\System32\LogFiles\Firewall\pfirewall.log" |
Where-Object { $_ -match "DROP" -and $_ -match "8080" }
La columna path confirma la dirección del bloqueo, de entrada o de salida.
¿Necesitas ayuda?
Abre un ticket desde Tickets › Abrir un ticket, o desde el recuadro Contactar con el soporte al pie de la ficha del VPS. En el campo Servicio afectado, elige el VPS para que el equipo gane tiempo. También puedes preguntar en el Discord de OuiHeberg.
Windows Server 2025 con licencia incluida, Escritorio remoto y gestión desde el área de cliente.
Ver ofertas →