- Resumen
- Convenciones de variables
- Paso 1: Comprender los perfiles y el diseño de aplicación
- Paso 2: Definir directivas básicas (comportamiento predeterminado)
- Paso 3: Operación y gestión de reglas del firewall
- Paso 4: Configurar registros y auditoría
- Paso 5: Administración centralizada con GPO
- Paso 6: Verificación periódica y resolución de problemas
- Conclusión
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 Blocky 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=Truegenera 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-LogMaxSizeKilobyteses 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
-
Crear u obtener el GPO
$gpo = New-GPO -Name "Firewall-Policy-Domain"Para editar un GPO existente:
Get-GPO -Name "<NOMBRE_DEL_GPO>". -
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.
