Servidores Dedicados y VPS22 de mayo de 2026 1 vista

Configurer el firewall de Windows Server en un VPS

Configurer el firewall de Windows Server en un VPS

Configurar el firewall de Windows Server en un VPS

5 pasos para asegurar su firewall VPS Windows

  1. Verificar el estado : Get-NetFirewallProfile | Select Name, Enabled en PowerShell.

  2. Activar en los 3 perfiles : Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True.

  3. Crear una regla entrante a través de la interfaz wf.msc o New-NetFirewallRule en PowerShell.

  4. Restringir RDP (3389) solo a su IP de origen.

  5. Activar los logs para auditar las conexiones bloqueadas.


🛡️ Por qué el firewall de Windows Server es crítico en un VPS

Un VPS Windows está expuesto directamente a Internet. Sin un firewall correctamente configurado, cualquiera puede intentar conectarse a sus puertos abiertos.

Firewall de red vs firewall de OS: dos capas distintas.

En OuiHeberg, su VPS Windows cuenta con un firewall de red a nivel de infraestructura. Pero este firewall no reemplaza a Windows Defender Firewall: opera a nivel de OS, regla por regla, programa por programa. Ambos deben estar activos.

Riesgos si el firewall de Windows está desactivado:

  • RDP (puerto 3389) expuesto a todos los bots de escaneo: ataques de fuerza bruta continuos.

  • SQL Server (1433), WinRM (5985/5986) accesibles sin restricciones.

  • Ninguna visibilidad sobre el tráfico bloqueado (sin logs).

Los 3 perfiles de red: ¿cuál se aplica en un VPS?

Perfil

Cuándo se activa

En un VPS

Dominio

Máquina unida a un dominio AD

Rara vez activo

Privado

Red de confianza (LAN)

Posible según configuración de red

Público

Red desconocida / Internet

Activo por defecto en un VPS

En un VPS independiente, se aplica el perfil Público. Active las reglas en los 3 perfiles para no dejar nada al azar.


🔍 Verificar el estado del firewall antes de comenzar

Siempre comience con un estado de la situación. Conéctese por RDP, abra PowerShell como administrador.

A través de PowerShell: estado completo de los 3 perfiles:

Get-NetFirewallProfile | Select Name, Enabled, DefaultInboundAction, DefaultOutboundAction
ImagenResultado esperado: Enabled = True en los 3 perfiles. Si uno está en False, actívelo inmediatamente.

A través de la interfaz gráfica:

Panel de control → Sistema y seguridad → Firewall de Windows Defender → verificar que cada perfil muestre "Activado".

Activar el firewall si está desactivado:

Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True

Verificar las acciones por defecto (recomendado):

Set-NetFirewallProfile -Profile Domain,Private,Public `
  -DefaultInboundAction Block `
  -DefaultOutboundAction Allow

Bloquear todo el tráfico entrante por defecto y permitir solo lo que defina explícitamente: esa es la postura de seguridad correcta.


🖱️ Crear una regla de firewall (método GUI)

Imagen🖥️ Acceder a la interfaz de Windows Defender Firewall con Seguridad Avanzada

Dos caminos posibles:

  • Tecla de Windows → escribir wf.msc → Enter.

  • Panel de control → Sistema y seguridad → Firewall de Windows Defender → Configuración avanzada.

La interfaz muestra 3 secciones: Reglas de tráfico entrante, Reglas de tráfico saliente, Reglas de seguridad de conexión.

Imagen

➡️ Crear una regla entrante (inbound)

  1. Clic derecho en Reglas de tráfico entranteNueva regla.

  2. Elegir el tipo: Puerto, Programa, Predefinida o Personalizada.

  3. Especificar el protocolo (TCP/UDP) y el número de puerto.

  4. Acción: Permitir la conexión o Bloquear.

  5. Seleccionar los perfiles afectados (Dominio, Privado, Público).

  6. Nombrar la regla de manera explícita (ej.: Allow-HTTP-80-Inbound).

⬅️ Crear una regla saliente (outbound)

La mayoría de las guías se detienen en las reglas entrantes. Es un error.

  1. Clic derecho en Reglas de tráfico salienteNueva regla.

  2. Mismo proceso que para una regla entrante.

  3. Útil para bloquear un proceso o una IP de destino específica.

Ejemplo concreto: bloquear las conexiones salientes hacia un puerto o una IP sospechosa sin afectar al resto del tráfico.

🔧 Definir el tipo de regla

Tipo

Uso

Puerto

Abrir/bloquear un puerto TCP o UDP específico

Programa

Permitir/bloquear un ejecutable (.exe)

Predefinida

Activar un grupo de reglas de Windows integrado (RDP, compartición de archivos…)

Personalizada

Control total: puerto + programa + dirección IP de origen/destino


⚡ Crear una regla de firewall (método PowerShell)

PowerShell es el método preferido en un VPS: programable, reproducible, auditable. Todos los comandos a continuación requieren una sesión de PowerShell elevada (administrador).

💻 Comandos esenciales New-NetFirewallRule

Estructura básica:

New-NetFirewallRule `
  -DisplayName "Nombre descriptivo" `
  -Direction Inbound `          # o Outbound
  -Protocol TCP `
  -LocalPort 80 `
  -Action Allow `               # o Block
  -Profile Public,Private,Domain `
  -Enabled True

🔒 Asegurar RDP (puerto 3389): restringir a una IP

No deje RDP abierto a todo Internet. Restringir a su IP fija o a su rango VPN.

# Bloquear RDP para todos
New-NetFirewallRule `
  -DisplayName "Block-RDP-All" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 3389 `
  -Action Block `
  -Profile Any

# Permitir RDP solo desde su IP
New-NetFirewallRule `
  -DisplayName "Allow-RDP-MyIP" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 3389 `
  -RemoteAddress "203.0.113.10" `
  -Action Allow `
  -Profile Any

⚠️ Orden de aplicación: primero cree la regla Allow con su IP, luego la regla Block. En caso de duda, pruebe desde otra sesión RDP abierta antes de cerrar la primera.

🌐 Abrir HTTP/HTTPS (puertos 80 y 443)

New-NetFirewallRule `
  -DisplayName "Allow-HTTP-HTTPS-Inbound" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort @(80, 443) `
  -Action Allow `
  -Profile Any

🗄️ Abrir SQL Server (puerto 1433): restringir a una subred

SQL Server nunca debe estar expuesto a Internet. Limítelo a su subred de aplicación.

New-NetFirewallRule `
  -DisplayName "Allow-SQLServer-LAN" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 1433 `
  -RemoteAddress "10.0.0.0/24" `
  -Action Allow `
  -Profile Any

🔌 Abrir WinRM (5985/5986) para la gestión remota

WinRM permite la gestión de PowerShell a distancia. Debe restringirse a una IP de gestión.

# WinRM HTTP (5985) y HTTPS (5986)
New-NetFirewallRule `
  -DisplayName "Allow-WinRM-Management" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort @(5985, 5986) `
  -RemoteAddress "203.0.113.10" `
  -Action Allow `
  -Profile Any

🚫 Bloquear un puerto o una IP específica

# Bloquear un puerto entrante
New-NetFirewallRule `
  -DisplayName "Block-Port-8080-Inbound" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 8080 `
  -Action Block `
  -Profile Any

# Bloquear una IP de origen específica (entrante)
New-NetFirewallRule `
  -DisplayName "Block-IP-Suspect" `
  -Direction Inbound `
  -RemoteAddress "198.51.100.42" `
  -Action Block `
  -Profile Any

# Bloquear una conexión saliente hacia una IP
New-NetFirewallRule `
  -DisplayName "Block-Outbound-IP" `
  -Direction Outbound `
  -RemoteAddress "198.51.100.42" `
  -Action Block `
  -Profile Any

📋 Reglas predefinidas de Windows Server que debe conocer

Windows Server incluye grupos de reglas listas para usar. Actívelas por grupo en lugar de regla por regla.

Grupos útiles:

Grupo

Uso

Remote Desktop

Permitir conexiones RDP

File and Printer Sharing

Compartición de red SMB

Windows Management Instrumentation (WMI)

Gestión WMI remota

Windows Remote Management

PowerShell Remoting / WinRM

Core Networking

Tráfico de red fundamental (DNS, DHCP, ICMP)

Network Discovery

Descubrimiento de red

Activar un grupo entero con netsh:

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

Activar un grupo con PowerShell:

Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
Enable-NetFirewallRule -DisplayGroup "Windows Remote Management"

📝 Activar la registración del firewall

Sin logs, es imposible diagnosticar un bloqueo o detectar un intento de intrusión.

Por qué registrar:

  • Identificar qué regla bloquea una conexión legítima.

  • Detectar escaneos de puertos o intentos de fuerza bruta.

  • Satisfacer los requisitos de auditoría de seguridad.

Activar los logs a través de PowerShell (todos los perfiles):

Set-NetFirewallProfile -Profile Domain,Private,Public `
  -LogFileName "%SystemRoot%\System32\LogFiles\Firewall\pfirewall.log" `
  -LogMaxSizeKilobytes 4096 `
  -LogAllowed True `
  -LogBlocked True

Activar a través de 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

Dónde encontrar los logs:

Ruta por defecto: C:\Windows\System32\LogFiles\Firewall\pfirewall.log

Leer los logs: formato de las columnas clave:

Columna

Significado

date / time

Marca de tiempo del evento

action

ALLOW o DROP

src-ip

IP de origen

dst-ip

IP de destino

src-port

Puerto de origen

dst-port

Puerto de destino

path

Dirección: SEND (saliente) o RECEIVE (entrante)

Para leer rápidamente las conexiones bloqueadas en PowerShell:

Get-Content "C:\Windows\System32\LogFiles\Firewall\pfirewall.log" |
  Where-Object { $_ -match "DROP" } |
  Select-Object -Last 50

🔎 Auditar y gestionar las reglas existentes

Esta es la sección que no encontrará en OVH o Amen. Gestionar las reglas existentes es tan importante como crear nuevas.

Listar todas las reglas activas:

Get-NetFirewallRule | Where-Object { $_.Enabled -eq "True" } |
  Select-Object DisplayName, Direction, Action, Profile |
  Sort-Object Direction

Listar las reglas activas con los puertos asociados:

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

Desactivar una regla sin eliminarla:

Disable-NetFirewallRule -DisplayName "Nombre de la regla"

Reactivar una regla:

Enable-NetFirewallRule -DisplayName "Nombre de la regla"

Eliminar una regla definitivamente:

Remove-NetFirewallRule -DisplayName "Nombre de la regla"

Exportar todas las reglas (backup):

netsh advfirewall export "C:\Backup\firewall-backup.wfw"

Importar las reglas desde un backup:

netsh advfirewall import "C:\Backup\firewall-backup.wfw"

💡 Buena práctica: exporte sus reglas antes de cualquier modificación importante. En caso de problema, la restauración toma 10 segundos.


🚨 Solución de problemas: conexión rechazada a pesar de una regla activa

Su regla existe, está activada, pero la conexión falla de todos modos. Aquí están los 5 escenarios más frecuentes.

🔍 Verificar si el puerto está realmente abierto localmente

# Probar desde el servidor mismo
[Upload...]
# Probar desde un puesto externo (reemplazar la IP)
Test-NetConnection -ComputerName 203.0.113.50 -Port 443 -InformationLevel Detailed

Si TcpTestSucceeded : False → el puerto no es accesible. Si True → el problema proviene de otro lugar (aplicación, DNS, etc.).

⚠️ Conflicto entre regla entrante y regla saliente

Windows aplica las reglas Block con prioridad sobre Allow. Si existe una regla Block más genérica, anula su regla Allow específica.

Verifique las reglas en conflicto:

# Reglas Block activas en entrada
Get-NetFirewallRule -Direction Inbound -Action Block -Enabled True |
  Select-Object DisplayName, Profile

📡 Perfil de red incorrecto (Público vs Privado)

¿Su regla está creada para el perfil Privado, pero su VPS está en perfil Público? No se aplica.

Verifique el perfil activo:

Get-NetConnectionProfile | Select-Object Name, NetworkCategory

Corrija el perfil si es necesario:

Set-NetConnectionProfile -InterfaceAlias "Ethernet" -NetworkCategory Private

🏗️ Firewall de red OuiHeberg vs firewall de Windows: ¿cuál bloquea?

Si Test-NetConnection desde el servidor mismo tiene éxito pero falla desde el exterior, el bloqueo proviene del firewall de red OuiHeberg, no de Windows Defender Firewall.

Diagnóstico rápido:

  1. Desde el VPS: Test-NetConnection -ComputerName localhost -Port XXXX → éxito = Windows OK.

  2. Desde su puesto: Test-NetConnection -ComputerName <IP_VPS> -Port XXXX → fallo = firewall de red.

En este caso, verifique las reglas de su firewall de red en el área de cliente de OuiHeberg.

📋 Verificar los logs para identificar la regla bloqueante

# Buscar los DROP en un puerto específico (ej. 8080)
Get-Content "C:\Windows\System32\LogFiles\Firewall\pfirewall.log" |
  Where-Object { $_ -match "DROP" -and $_ -match "8080" }

La columna path indica RECEIVE (entrante) o SEND (saliente). Esto confirma la dirección del bloqueo.


✅ Buenas prácticas de seguridad del firewall en VPS Windows

Principio del menor privilegio: bloquear todo por defecto.

Comience con DefaultInboundAction Block y abra solo los puertos estrictamente necesarios. Cada puerto abierto es una superficie de ataque.

Cambiar el puerto RDP (3389 → puerto personalizado).

Cambiar el puerto no reemplaza una buena regla de firewall, pero reduce el ruido de los escaneos automatizados. Modifique la clave del registro, luego cree la regla de firewall correspondiente:

# Ejemplo: RDP en el puerto 54321
New-NetFirewallRule `
  -DisplayName "Allow-RDP-Custom-Port" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 54321 `
  -RemoteAddress "203.0.113.10" `
  -Action Allow `
  -Profile Any

Consulte nuestra guía de conexión RDP para el procedimiento completo de cambio de puerto.

Restringir RDP a una IP o rango de IP.

Si tiene una IP fija, esta es la medida más efectiva. Si su IP cambia, use un VPN y autorice únicamente el rango VPN.

Desactivar las reglas no utilizadas.

No elimine: desactive. Podrá reactivarlas si es necesario. Audite las reglas activas cada trimestre.

Auditoría regular de las reglas.

# Exportación mensual de las reglas activas
Get-NetFirewallRule | Where-Object { $_.Enabled -eq "True" } |
  Export-Csv "C:\Audit\firewall-rules-$(Get-Date -Format 'yyyy-MM').csv" -NoTypeInformation

📊 Resumen: checklist de firewall VPS Windows

Acción

Comando PowerShell / Ubicación GUI

Verificar el estado de los perfiles

Get-NetFirewallProfile | Select Name, Enabled

Activar el firewall (3 perfiles)

Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True

Bloquear todo el tráfico entrante por defecto

Set-NetFirewallProfile -DefaultInboundAction Block

Crear una regla entrante (puerto)

New-NetFirewallRule -Direction Inbound -LocalPort XX -Action Allow

Crear una regla saliente (puerto)

New-NetFirewallRule -Direction Outbound -LocalPort XX -Action Block

Restringir RDP a una IP

-LocalPort 3389 -RemoteAddress "X.X.X.X" -Action Allow

Activar los logs

Set-NetFirewallProfile -LogBlocked True -LogAllowed True

Listar las reglas activas

Get-NetFirewallRule | Where-Object { $_.Enabled -eq "True" }

Desactivar una regla

Disable-NetFirewallRule -DisplayName "Nombre"

Eliminar una regla

Remove-NetFirewallRule -DisplayName "Nombre"

Exportar las reglas (backup)

netsh advfirewall export "C:\Backup\fw.wfw"

Probar un puerto

Test-NetConnection -ComputerName localhost -Port XXXX


❓ FAQ

¿Cuál es la diferencia entre Windows Defender Firewall y un firewall de red?

El firewall de red (nivel infraestructura, en OuiHeberg) filtra el tráfico antes de que llegue a su VPS. Windows Defender Firewall opera a nivel del sistema operativo: controla las conexiones programa por programa, puerto por puerto, con reglas por perfil de red. Ambos son complementarios: uno no reemplaza al otro.

¿Cómo abrir un puerto en un VPS Windows Server?

En PowerShell (administrador):

New-NetFirewallRule -DisplayName "Allow-Port-XXXX" -Direction Inbound -Protocol TCP -LocalPort XXXX -Action Allow -Profile Any

Reemplace XXXX con el número de puerto. Si el puerto sigue inaccesible desde el exterior, verifique también el firewall de red OuiHeberg en su espacio de cliente.

Mi aplicación no responde a pesar de que hay una regla abierta: ¿qué hacer?

Verifique en este orden:

  1. Test-NetConnection -ComputerName localhost -Port XXXX: ¿está escuchando el puerto?

  2. ¿El perfil de red activo corresponde al perfil de la regla?

  3. ¿Una regla Block más genérica no está sobrescribiendo su regla Allow?

  4. ¿El bloqueo proviene del firewall de red OuiHeberg (prueba desde el exterior)?

  5. Consulte los logs: Get-Content pfirewall.log | Where-Object { $_ -match "DROP" }

¿Es necesario activar el firewall en todos los perfiles (Dominio, Privado, Público)?

Sí, siempre. En un VPS, el perfil Público generalmente está activo. Pero si la configuración de red cambia (adición de una interfaz, unión a un dominio), puede activarse otro perfil. Activar los 3 perfiles garantiza una protección continua, sea cual sea la situación.

¿Cómo respaldar mis reglas de firewall de Windows Server?

netsh advfirewall export "C:\Backup\firewall-backup.wfw"

Para restaurar:

netsh advfirewall import "C:\Backup\firewall-backup.wfw"

Planifique esta exportación en una tarea programada de Windows antes de cada mantenimiento.

¿Qué puerto utiliza RDP por defecto y cómo cambiarlo?

RDP utiliza el puerto TCP 3389 por defecto. Para cambiarlo:

  1. Modifique la clave del registro: HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp → valor PortNumber.

  2. Creé una nueva regla de firewall que permita el nuevo puerto desde su IP.

  3. Desactive (o elimine) la regla en el puerto 3389.

  4. Reinicie el servicio TermService.

Consulte nuestra guía de conexión RDP para el procedimiento detallado.


🔗 Fuentes útiles