Configuración del Firewall de Windows

Resumen

Este artículo explica cómo configurar Windows Defender Firewall (antes Windows Firewall) en Windows Server. Cubre el diseño de los perfiles Dominio, Privado y Público, la optimización de las directivas de entrada/salida, la recopilación y análisis de registros y la administración centralizada mediante GPO y scripts para una operación práctica.

Convenciones de variables

Variable Ejemplo Descripción
<<SERVER_NAME>> SRV-CORE01 Nombre del servidor destino
<<LOG_PATH>> C:\FirewallLogs\pfirewall.log Ruta del archivo de registro del firewall
<<OU_NAME>> Servers Nombre de la OU

Paso 1: Comprender los perfiles y el diseño de aplicación

Windows Defender Firewall utiliza tres perfiles:

Perfil Uso Entorno típico
Dominio Redes unidas a Active Directory LAN corporativa, VPN
Privado Red confiable e independiente Entornos de prueba, redes cerradas
Público Red no confiable Wi-Fi público, laboratorios/VM

Cada perfil puede configurarse de forma independiente y cambia automáticamente según el identificador de red.

Comando de verificación:

# Verificar estado y directivas predeterminadas de cada perfil
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction, DefaultOutboundAction

Paso 2: Definir directivas básicas (comportamiento predeterminado)

De forma predeterminada, Windows Defender Firewall bloquea la entrada y permite la salida.
Mantenga esto o introduzca control explícito de salida según sea necesario.

# Establecer explícitamente la directiva predeterminada
Set-NetFirewallProfile -Profile Domain,Private,Public `
  -DefaultInboundAction Block `
  -DefaultOutboundAction Allow `
  -NotifyOnListen True

Nota: En entornos de alta seguridad, use -DefaultOutboundAction Block y permita solo el tráfico saliente imprescindible (p. ej., DNS, NTP, WSUS): enfoque de lista blanca.


Paso 3: Operación y gestión de reglas del firewall

Listar y filtrar reglas

# Todas las reglas
Get-NetFirewallRule

# Buscar reglas cuyo nombre contenga "RDP"
Get-NetFirewallRule | Where-Object DisplayName -Like "*RDP*"

# Solo reglas habilitadas
Get-NetFirewallRule | Where-Object Enabled -eq "True"

Crear reglas nuevas

# Permitir RDP entrante (TCP/3389) solo en el perfil de Dominio
New-NetFirewallRule -DisplayName "Allow RDP (Domain)" `
  -Direction Inbound -Protocol TCP -LocalPort 3389 `
  -Action Allow -Profile Domain

# Permitir NTP saliente (UDP/123)
New-NetFirewallRule -DisplayName "Allow NTP Outbound" `
  -Direction Outbound -Protocol UDP -LocalPort 123 `
  -Action Allow -Profile Domain,Private,Public

Tabla de parámetros (ejemplos y formatos)

Elemento Parámetro Ejemplo Formatos/valores aceptados
Dirección -Direction Inbound / Outbound Inbound, Outbound
Acción -Action Allow / Block Allow, Block
Protocolo -Protocol TCP / UDP / ICMPv4 / ICMPv6 / Any Como arriba; ICMP puede detallarse con -IcmpType
Puerto local -LocalPort 80 / 1024-2048 / 80,443,8080 Puerto único, rango, lista separada por comas
Puerto remoto -RemotePort 53 / 1000-2000 / 53,67,68 Puerto único, rango o lista
Dirección remota -RemoteAddress 192.168.1.1 / 192.168.0.0/24 / Any IP, CIDR, rango, lista, Any
Dirección local -LocalAddress 10.0.0.1 / 10.0.0.0/16 / Any IP, CIDR, rango, lista, palabras clave especiales, Any
Programa -Program C:\Program Files\App\App.exe Ruta completa del ejecutable
Servicio -Service W32Time Nombre del servicio de Windows
Perfil -Profile Domain,Private Combinación de Domain, Private, Public
Tipo de interfaz -InterfaceType Ethernet / Wireless / RemoteAccess Tipos admitidos

Ej.: permitir HTTP solo desde una IP de confianza

New-NetFirewallRule -DisplayName "Allow HTTP from Trusted IP" `
  -Direction Inbound -Protocol TCP -LocalPort 80 `
  -RemoteAddress 192.168.1.100 `
  -Action Allow -Profile Domain,Private

Ej.: permitir salida para un programa específico

New-NetFirewallRule -DisplayName "Allow Outbound for App.exe" `
  -Direction Outbound -Program "C:\Program Files\App\App.exe" `
  -Action Allow -Profile Domain,Private,Public

Ej.: permitir entrada para un servicio específico

New-NetFirewallRule -DisplayName "Allow Service XYZ Inbound" `
  -Direction Inbound -Service "W32Time" `
  -Action Allow -Profile Domain,Private

Ej.: bloquear salida vía interfaz inalámbrica

New-NetFirewallRule -DisplayName "Block Outbound on Wireless" `
  -Direction Outbound -InterfaceType Wireless `
  -Action Block -Profile Public

Modificar, (des)habilitar y eliminar reglas

# Deshabilitar regla
Disable-NetFirewallRule -DisplayName "Allow RDP (Domain)"

# Habilitar regla
Enable-NetFirewallRule -DisplayName "Allow RDP (Domain)"

# Cambiar (p. ej., limitar a Domain y Private)
Set-NetFirewallRule -DisplayName "Allow RDP (Domain)" -Profile Domain,Private

# Eliminar regla
Remove-NetFirewallRule -DisplayName "Allow RDP (Domain)"

Exportar/Importar conjunto de reglas

# Exportar directiva del firewall
netsh advfirewall export "C:\Backup\FirewallPolicy.wfw"

# Importar directiva del firewall
netsh advfirewall import "C:\Backup\FirewallPolicy.wfw"

Paso 4: Configurar registros y auditoría

Registrar permitidos/denegados y supervisar anomalías.

# Registrar Allow y Block, tamaño máx. 32 MB
Set-NetFirewallProfile -Profile Domain,Private,Public `
  -LogAllowed True -LogBlocked True `
  -LogFileName "<<LOG_PATH>>" -LogMaxSizeKilobytes 32767

Ver registros en tiempo real:

Get-Content "<<LOG_PATH>>" -Tail 20 -Wait

Atención: LogAllowed=True genera más volumen. En producción, considere activarlo solo en perfiles críticos (p. ej., Público) y establezca rotación/archivo.
El límite de -LogMaxSizeKilobytes es 32767 KB; valores mayores provocan error.


Paso 5: Administración centralizada con GPO

Las configuraciones del firewall pueden editarse y automatizarse por GPO usando los cmdlets del módulo GroupPolicy.
Cmdlets clave: Set-GPRegistryValue, Get-GPO, New-GPO, New-GPLink, Set-GPInheritance.

Crear un GPO y aplicar la configuración de registros del perfil de Dominio

  1. Crear u obtener el GPO

    $gpo = New-GPO -Name "Firewall-Policy-Domain"
    

    Para editar un GPO existente: Get-GPO -Name "<NOMBRE_DEL_GPO>".

  2. Aplicar valores mediante claves de registro del GPO

    # Activar registros en el perfil de Dominio
    Set-GPRegistryValue -Name $gpo.DisplayName `
      -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" `
      -ValueName "EnableLogging" -Type DWord -Value 1
    
    # Ruta y tamaño del registro
    Set-GPRegistryValue -Name $gpo.DisplayName `
      -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\Logging" `
      -ValueName "LogFilePath" -Type String -Value "%systemroot%\system32\logfiles\firewall\pfirewall.log"
    
    Set-GPRegistryValue -Name $gpo.DisplayName `
      -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\Logging" `
      -ValueName "LogFileSize" -Type DWord -Value 32767
    

Estas definiciones surtirán efecto cuando el GPO se vincule a una OU con New-GPLink.

Vincular a la OU (New-GPLink)

Proporcione el DN de la OU (o el DN del dominio) en -Target.

Import-Module ActiveDirectory

$gpo = Get-GPO -Name "Firewall-Policy-Domain"

# Buscar la OU por nombre y obtener su DN
$ou = Get-ADOrganizationalUnit -LDAPFilter '(name=<<OU_NAME>>)' `
      -SearchBase (Get-ADDomain).DistinguishedName -SearchScope Subtree |
      Select-Object -First 1
$ouDn = $ou.DistinguishedName

# Vincular el GPO a la OU (habilitado; Enforced opcional)
New-GPLink -Name $gpo.DisplayName -Target $ouDn -LinkEnabled Yes -Enforced No

Requisitos: módulos ActiveDirectory y GroupPolicy (RSAT) instalados en la estación de administración.


Paso 6: Verificación periódica y resolución de problemas

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

# Prueba de conectividad de puerto
Test-NetConnection -ComputerName <<SERVER_NAME>> -Port 3389

Conclusión

Windows Defender Firewall proporciona una defensa de red robusta en Windows Server. Al combinar control explícito del tráfico de entrada/salida, análisis de registros y gestión central/automatizada mediante GPO y PowerShell, se obtiene visibilidad y seguridad alineadas con el hardening para la era de zero trust.