-
Configurar el cortafuegos de Windows para bloquear tráfico entrante
En muchos entornos, especialmente cuando exponemos servicios al exterior, tiene sentido aplicar una política de firewall estricta: bloquear todo el tráfico entrante por defecto y permitir únicamente aquello que realmente necesitamos. En este caso, vamos a aplicar ese enfoque en Windows y, posteriormente, habilitar una excepción concreta para permitir conexiones RDP desde fuera.
NATIVAMENTE DESDE EL PROPIO WINDOWS
El comando clave que define este comportamiento es el siguiente:
Set-NetFirewallProfile -All -DefaultInboundAction Block -DefaultOutboundAction Allow
Con esta configuración conseguimos lo siguiente:
- Todo el tráfico entrante queda bloqueado por defecto.
- Todo el tráfico saliente queda permitido.
- Solo se aceptarán conexiones entrantes si existe una regla explícita que las permita.
Este es el comportamiento típico de un sistema endurecido: reducimos la superficie de ataque al mínimo y abrimos únicamente lo imprescindible.
Ahora bien, si necesitamos acceder por RDP desde fuera, debemos crear una excepción específica para permitir ese tráfico entrante en el puerto 3389.
Primero, nos aseguramos de que el servicio de escritorio remoto está habilitado en el sistema. Esto puede hacerse desde la configuración del sistema o directamente por PowerShell:
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 0
Una vez habilitado RDP, añadimos la regla de firewall que permita conexiones entrantes en el puerto correspondiente:
New-NetFirewallRule -DisplayName "Permitir RDP entrante desde Internet" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow
Con esto ya hemos abierto el puerto, pero en un entorno real no deberíamos permitir acceso desde cualquier origen. Es recomendable restringir las IPs que pueden conectarse. Por ejemplo, si queremos permitir solo una IP concreta:
New-NetFirewallRule -DisplayName "Permitir RDP solo desde IP concreta" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 203.0.113.10 -Action Allow
O incluso un rango de red:
New-NetFirewallRule -DisplayName "Permitir RDP desde red corporativa" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 203.0.113.0/24 -Action Allow
De esta forma mantenemos una política restrictiva global, pero permitimos acceso controlado al servicio que nos interesa.
Para comprobar que las reglas se han aplicado correctamente, podemos listar las reglas relacionadas con RDP:
Get-NetFirewallRule | Where-Object DisplayName -like "*RDP*"
Este enfoque es especialmente útil en máquinas expuestas directamente a Internet o en entornos donde queremos tener control total sobre qué servicios están accesibles. Aplicando esta filosofía, cada nuevo servicio debe abrirse explícitamente, lo que reduce significativamente riesgos derivados de configuraciones por defecto demasiado permisivas.
DESDE UNA CONEXIÓN RDP ACTIVA
Cuando aplicamos una política de bloqueo total de tráfico entrante, debemos asegurarnos de no autodesconectarnos. Por eso, primero creamos la excepción RDP y después aplicamos la política global.
El flujo correcto es:
- Crear la regla que permita RDP
- Verificar que existe
- Aplicar la política restrictiva
Primero añadimos la excepción para RDP:
New-NetFirewallRule -DisplayName "Permitir RDP entrante" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow
Si queremos hacerlo bien desde el inicio, limitamos por IP:
New-NetFirewallRule -DisplayName "Permitir RDP solo desde mi IP" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 203.0.113.10 -Action Allow
Verificamos que la regla está creada:
Get-NetFirewallRule -DisplayName "*RDP*"
Ahora sí, aplicamos la política restrictiva:
Set-NetFirewallProfile -All -DefaultInboundAction Block -DefaultOutboundAction Allow
Con este orden:
- La sesión RDP actual no se corta
- Las futuras conexiones RDP siguen funcionando
- Todo el resto de tráfico entrante queda bloqueado
Un detalle importante: si ya existían reglas de RDP (Windows suele crearlas), es preferible habilitarlas en lugar de duplicar reglas:
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
o
Enable-NetFirewallRule -DisplayGroup "Escritorio Remoto"
…en español. Esto evita inconsistencias y aprovecha la configuración nativa del sistema.
En resumen: primero abrimos la puerta que necesitamos, luego cerramos todas las demás. Ese orden es obligatorio si estamos conectados por RDP.
Los hacks de hacks4geeks son minitutoriales rápidos pensados para geeks con conocimiento informático avanzado. Si no entiendes o no consigues ejecutar un hack de esta web considera suscribirte a Premium para solicitar asistencia sobre el mismo.