ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Windows Server

Cómo abrir y cerrar puertos en el Firewall de Windows (GUI y PowerShell)

7 pasos 16 min de lectura 6 vistas 0
Contenido

Cuando un sitio web, una base de datos, un servidor de juegos o una aplicación propia en su VPS Windows no es accesible desde internet, la causa habitual es un puerto cerrado en el Firewall de Windows. Esta guía muestra cómo abrir y cerrar puertos en el Firewall de Windows en Windows Server 2016/2019/2022 tanto con la interfaz gráfica como con PowerShell (New-NetFirewallRule / Remove-NetFirewallRule), cómo restringir un puerto a IPs de origen concretas, permitir el ping, comprobar que un puerto está a la escucha y probarlo desde fuera.

Paso 1: Abrir un puerto en el Firewall de Windows con la interfaz gráfica

Conéctese por Escritorio remoto (RDP), pulse Win+R y ejecute el comando siguiente para abrir Windows Defender Firewall with Advanced Security (Firewall de Windows Defender con seguridad avanzada). Haga clic en Inbound Rules (Reglas de entrada) y luego en New Rule (Nueva regla), elija Port (Puerto), seleccione TCP o UDP e introduzca los puertos locales específicos (por ejemplo, 8080 o 80,443). Elija Allow the connection (Permitir la conexión), deje marcados Domain, Private y Public (Dominio, Privado y Público) y asigne a la regla un nombre descriptivo.

wf.msc
El tráfico saliente está permitido de forma predeterminada, así que en la mayoría de los casos solo necesita reglas de entrada. Use nombres claros como "Allow TCP 8080 - API" para encontrar fácilmente la regla cuando quiera cerrar el puerto más adelante.

Paso 2: Abrir puertos con PowerShell New-NetFirewallRule

En una ventana de PowerShell con privilegios de administrador, un solo comando abre un puerto, lo que resulta ideal para scripts e implementaciones repetidas. -LocalPort acepta un solo puerto, una lista separada por comas o un rango, y -Protocol puede ser TCP o UDP.

# Permitir TCP 8080 entrante (todos los perfiles)
New-NetFirewallRule -DisplayName "Allow TCP 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow -Profile Any

# Varios puertos / un rango, y UDP
New-NetFirewallRule -DisplayName "Allow Web 80,443" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Allow
New-NetFirewallRule -DisplayName "Allow UDP 27015-27020" -Direction Inbound -Protocol UDP -LocalPort 27015-27020 -Action Allow

Paso 3: Restringir un puerto del firewall a IPs de origen concretas

Los puertos de bases de datos (1433, 3306) y de administración no deberían estar abiertos a todo internet. Añada -RemoteAddress con las IPs o subredes de confianza; todo lo demás se descarta según la política de entrada predeterminada. Para cambiar los orígenes permitidos más adelante, edite la regla con Set-NetFirewallRule en lugar de volver a crearla.

# Permitir SQL Server 1433 solo desde la IP de su oficina y una subred
New-NetFirewallRule -DisplayName "MSSQL from office" -Direction Inbound -Protocol TCP -LocalPort 1433 -RemoteAddress 203.0.113.10,198.51.100.0/24 -Action Allow

# Cambiar más adelante la lista de orígenes de una regla existente
Set-NetFirewallRule -DisplayName "MSSQL from office" -RemoteAddress 203.0.113.10,203.0.113.20

Paso 4: Cerrar un puerto en el Firewall de Windows (Disable o Remove-NetFirewallRule)

Puede cerrar un puerto desactivando la regla temporalmente, eliminándola con Remove-NetFirewallRule o creando una regla Block explícita. En el Firewall de Windows, una regla Block siempre prevalece sobre una regla Allow, por lo que una regla Block es la forma más segura de garantizar que un puerto permanezca cerrado.

# Listar las reglas que creó
Get-NetFirewallRule -Direction Inbound | Where-Object DisplayName -like "Allow*" | Format-Table DisplayName,Enabled,Action

# Desactivar temporalmente o eliminar de forma permanente
Disable-NetFirewallRule -DisplayName "Allow TCP 8080"
Remove-NetFirewallRule -DisplayName "Allow TCP 8080"

# Bloquear un puerto de forma explícita (las reglas Block prevalecen sobre las Allow)
New-NetFirewallRule -DisplayName "Block TCP 445" -Direction Inbound -Protocol TCP -LocalPort 445 -Action Block
Nunca elimine ni bloquee la regla de Escritorio remoto (puerto 3389 o su puerto RDP personalizado). Si lo hace, su sesión se desconectará de inmediato y perderá el acceso.

Paso 5: Permitir el ping (ICMP) en Windows Server

Windows Server ignora el ping de forma predeterminada. Esto no afecta a los sitios web, pero las herramientas de monitoreo y las pruebas de latencia pueden indicar que el servidor está caído. Las reglas siguientes solo permiten ICMP Echo Request y mantienen bloqueados los demás tipos de ICMP.

# Permitir ping (ICMPv4 Echo Request) y eco ICMPv6
New-NetFirewallRule -DisplayName "Allow ICMPv4 Ping" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -Action Allow
New-NetFirewallRule -DisplayName "Allow ICMPv6 Ping" -Direction Inbound -Protocol ICMPv6 -IcmpType 128 -Action Allow

# Lo mismo con la sintaxis clásica de netsh
netsh advfirewall firewall add rule name="Allow ICMPv4 Ping" dir=in action=allow protocol=icmpv4:8,any

Paso 6: Comprobar que el puerto está a la escucha

Una regla de firewall no sirve de nada si ningún programa escucha en el puerto. Use netstat o Get-NetTCPConnection para ver la dirección de escucha y el ID del proceso. Si la dirección es 127.0.0.1, la aplicación solo acepta conexiones locales y debe configurarse para escuchar en 0.0.0.0 o en la IP pública del servidor.

netstat -ano | findstr :8080

Get-NetTCPConnection -State Listen -LocalPort 8080 | Select-Object LocalAddress,LocalPort,OwningProcess
Get-Process -Id (Get-NetTCPConnection -State Listen -LocalPort 8080).OwningProcess

Paso 7: Probar el puerto abierto desde fuera

Haga siempre la prueba desde otro equipo; probar en el propio servidor omite el firewall y da resultados engañosos. TcpTestSucceeded : True, o "succeeded" en nc, significa que el puerto es accesible.

# Desde otro equipo con Windows
Test-NetConnection 203.0.113.50 -Port 8080

# Desde un equipo con Linux / macOS
nc -zv 203.0.113.50 8080
ping 203.0.113.50

Preguntas frecuentes

Añadí una regla de firewall, pero el puerto sigue cerrado. ¿Por qué?

Compruebe que el programa está a la escucha (paso 6), que no está vinculado a 127.0.0.1, que ninguna regla Block cubre el mismo puerto, que está probando el protocolo correcto (TCP o UDP) y que su propia red no filtra el puerto. Nuestra guía de "solución de problemas de red en Windows" incluye más comprobaciones.

¿Puedo simplemente desactivar el Firewall de Windows?

No lo recomendamos. Desactivar el firewall expone SMB, RPC y otros servicios del sistema a los escáneres de internet. Manténgalo activado y abra solo los puertos que necesite.

¿Necesito una regla de firewall después de cambiar el puerto RDP?

Sí. Permita primero el nuevo puerto y luego reinicie el servicio de Escritorio remoto. Consulte nuestra guía "cambiar el puerto RDP de Windows" para ver el procedimiento completo.

¿Sigue sin resolverlo después de seguir estos pasos? Abra un ticket de soporte y el equipo técnico de IMIDC, disponible 24/7, le ayudará. Incluya la IP del servidor, la versión del sistema operativo, los comandos que ejecutó y una captura de pantalla del error para que podamos localizar el problema más rápido.

¿Fue útil la respuesta?

Tutoriales relacionados