Registro y supervisión del Firewall de Windows
Convierta el Firewall de Windows en fuente de detección: pfirewall.log, eventos WFP 5156/5157 y de cambio de reglas 4946-4950, reenviados de forma centralizada.
Un firewall de host que bloquea tráfico pero no avisa a nadie es solo medio control. Los descartes que registra revelan escaneos, intentos de movimiento lateral y aplicaciones mal configuradas. Sus eventos de cambio de configuración muestran a un atacante abriendo un puerto para sus herramientas o apagando el firewall. La mayoría de los entornos no recopilan ni lo uno ni lo otro.
El pilar de endurecimiento del Firewall de Windows fija la directiva: todos los perfiles activados, entrada bloqueada por defecto, protocolos de administración limitados a los equipos de gestión. Esta guía construye la supervisión encima. Hay tres fuentes, y cada una tiene una finalidad distinta:
| Fuente | Dónde | Ideal para |
|---|---|---|
pfirewall.log | Archivo de texto en cada host | Investigación local, construcción de listas de permisos |
| Eventos de auditoría de Plataforma de filtrado de Windows (WFP) | Registro de seguridad, 5150-5159 | Detección central de conexiones bloqueadas y permitidas, con la ruta del proceso |
| Eventos de cambio de directiva del firewall | Registro de seguridad, 4944-4958 | Detectar la manipulación de reglas y configuración |
La visión general del área está en la página temática del Firewall de Windows.
Paso 1: configurar pfirewall.log por perfil
Ruta de GPO: Computer Configuration > Policies > Windows Settings > Security Settings > Windows Defender Firewall with Advanced Security. Abra las propiedades y, en cada una de las pestañas Domain Profile, Private Profile y Public Profile, haga clic en Customize en Logging:
| Configuración | Valor recomendado |
|---|---|
| Name | %SystemRoot%\System32\LogFiles\Firewall\pfirewall.log (por defecto) |
| Size limit (KB) | De 16 384 a 32 767 (32 767 es el máximo) |
| Log dropped packets | Yes |
| Log successful connections | No en los puestos de trabajo; Yes en servidores sensibles o durante el descubrimiento de reglas |
Cuando el archivo alcanza su límite de tamaño, Windows lo renombra a pfirewall.log.old y empieza uno nuevo, sobrescribiendo el .old anterior. En un servidor con mucho ruido eso puede significar solo unas horas de historial, así que recopile el archivo o apóyese en los eventos del paso 2.
Puede usar un archivo distinto por perfil (domainfw.log, publicfw.log) para ver de un vistazo en qué perfil estaba un portátil cuando se descartó algo. Si mueve el registro fuera de la carpeta por defecto, el servicio de firewall debe poder escribir allí:
$path = 'D:\Logs\Firewall'
New-Item -ItemType Directory -Path $path -Force | Out-Null
$acl = Get-Acl $path
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
'NT SERVICE\mpssvc','Modify','ContainerInherit,ObjectInherit','None','Allow')
$acl.AddAccessRule($rule); Set-Acl -Path $path -AclObject $aclEn Intune, las opciones de perfil equivalentes están en el catálogo de configuración, en la categoría Firewall, por perfil: Log File Path, Log Max File Size, Enable Log Dropped Packets y Enable Log Success Connections (Firewall CSP MdmStore/DomainProfile/LogFilePath, LogMaxFileSize, EnableLogDroppedPackets, EnableLogSuccessConnections, y lo mismo bajo PrivateProfile y PublicProfile). En un dispositivo que también recibe directiva de grupo, el valor de la GPO para la ruta y el tamaño del registro prevalece sobre el valor MDM.
Leer el archivo
El archivo está delimitado por espacios y tiene una línea de encabezado #Fields:. Analícelo a partir del encabezado en lugar de suponer un orden de columnas fijo, porque las compilaciones recientes de Windows han añadido campos:
$log = "$env:SystemRoot\System32\LogFiles\Firewall\pfirewall.log"
$fields = (Get-Content $log -TotalCount 10 | Where-Object { $_ -like '#Fields:*' }) -replace '^#Fields:\s*' -split ' '
Get-Content $log | Where-Object { $_ -and $_ -notlike '#*' } |
ConvertFrom-Csv -Delimiter ' ' -Header $fields |
Where-Object action -eq 'DROP' |
Group-Object 'src-ip','dst-port' | Sort-Object Count -Descending | Select-Object -First 20 Count, NameUn único origen que toca muchos puertos, o muchos orígenes internos que atacan TCP 445 o 5985 en los puestos de trabajo, es exactamente el patrón que las reglas del pilar pretenden detener.
Paso 2: habilitar la auditoría de Plataforma de filtrado de Windows
WFP es el motor que hay debajo del firewall. Sus eventos de auditoría son más útiles que el registro de texto para la supervisión central porque incluyen la ruta de la aplicación y la dirección, y pasan por la canalización de eventos normal.
Ruta de GPO: Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Policy Configuration > Audit Policies > Object Access:
| Subcategoría | Configuración | Eventos |
|---|---|---|
| Audit Filtering Platform Connection | Failure (en todo el parque); Success solo en servidores seleccionados | 5157 conexión bloqueada, 5159 enlace bloqueado, 5155 escucha bloqueada; 5156, 5158, 5154 en caso de acierto |
| Audit Filtering Platform Packet Drop | Failure solo en servidores seleccionados | 5152 paquete descartado, 5153 |
Recuerde que la directiva de auditoría avanzada solo se aplica si Audit: Force audit policy subcategory settings to override audit policy category settings está habilitada en Security Options, algo que cualquier línea base moderna ya hace.
En un solo equipo, para pruebas:
auditpol /set /subcategory:"Filtering Platform Connection" /failure:enable
auditpol /get /subcategory:"Filtering Platform Connection","MPSSVC Rule-Level Policy Change"El evento 5157 indica «The Windows Filtering Platform has blocked a connection» y contiene el proceso (como ruta de dispositivo, por ejemplo \device\harddiskvolume3\windows\system32\svchost.exe), la dirección, las direcciones y puertos de origen y destino, el protocolo y un Filter Run-Time ID. Para averiguar qué filtro o regla produjo un bloqueo, vuelque el estado de WFP y busque ese ID:
netsh wfp show filters file="$env:TEMP\filters.xml"
Select-String -Path "$env:TEMP\filters.xml" -Pattern '<filterId>123456</filterId>' -Context 0,20Tenga en cuenta que 5157 también se dispara con los paquetes descartados por la acción de bloqueo por defecto, no solo por reglas de bloqueo explícitas, así que un flujo de eventos 5157 es normal. Lo que importa es a quién se bloquea y desde dónde.
Paso 3: auditar siempre los cambios de configuración del firewall
Los cambios de configuración son raros, baratos de recopilar y de gran valor. Habilite Audit MPSSVC Rule-Level Policy Change para Success y Failure en Advanced Audit Policy Configuration > Audit Policies > Policy Change. Los eventos clave del registro de seguridad:
| Evento | Significado |
|---|---|
| 4944 / 4945 | Directiva activa y reglas enumeradas al iniciarse el servicio de firewall |
| 4946 | Se añadió una regla a la lista de excepciones |
| 4947 | Se modificó una regla |
| 4948 | Se eliminó una regla |
| 4949 | Se restauró la configuración predeterminada del firewall |
| 4950 | Se cambió una opción del firewall (por ejemplo, se desactivó el firewall en un perfil) |
| 4954 | La configuración de firewall de directiva de grupo cambió y se aplicó |
| 4956 | El perfil activo cambió |
La actualización de la directiva de grupo produce 4954 y, en algunas compilaciones, ráfagas de 4946/4948 al volver a aplicarse las reglas de directiva. Construya la detección en torno a los cambios que no coinciden con una actualización de directiva o que proceden de un proceso distinto de los que usa su pila de gestión.
El registro Applications and Services Logs > Microsoft > Windows > Windows Firewall With Advanced Security > Firewall recoge los mismos cambios con el detalle de la regla y la aplicación que la modificó. Sus identificadores de evento varían entre versiones de Windows (las compilaciones antiguas usaban 2004, 2005 y 2006 para reglas añadidas, modificadas y eliminadas), así que compruebe los ID en sus imágenes actuales de Windows 11 24H2/25H2 y Server 2025 antes de escribir reglas contra él.
Vigile también el propio servicio. Un atacante que detiene MpsSvc o cambia su tipo de inicio deja los eventos 7036 y 7040 del Administrador de control de servicios en el registro del sistema.
Paso 4: reenviar lo que importa
Para los eventos de WFP y de cambio de directiva, el transporte es Windows Event Forwarding (vea la entrada del glosario sobre WEF) o el agente de su SIEM. Mantenga la suscripción ajustada para que 5157 no ahogue al recopilador:
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">*[System[(EventID>=4946 and EventID<=4950) or EventID=4954 or EventID=4956]]</Select>
<Select Path="Security">*[System[EventID=5157]] and *[EventData[Data[@Name='Direction']='%%14592']]</Select>
</Query>
</QueryList>%%14592 es el valor de dirección entrante. Las conexiones entrantes bloqueadas en los puestos de trabajo son las interesantes para el movimiento lateral; las salientes bloqueadas generan más ruido y son útiles sobre todo en servidores con salida denegada por defecto. Si el volumen sigue siendo excesivo, recopile 5157 solo de los servidores y de una muestra de puestos, y apóyese en la telemetría de red del EDR para el resto.
Para pfirewall.log, apunte su agente de registros al archivo (y al archivo .old) y analícelo con los campos de encabezado mostrados antes.
Ideas de detección
- Firewall desactivado o entrada por defecto en Allow: 4950 en cualquier perfil, fuera de una ventana de cambios. Alerta inmediata.
- Nueva regla de permiso entrante creada localmente: un 4946 en un dispositivo con la combinación de reglas locales desactivada suele ser un atacante o un instalador cuya acción no tendrá efecto, pero sigue revelando intención.
- Escaneo interno: una dirección de origen que produce eventos 5157 contra muchos hosts o puertos de destino en pocos minutos.
- Tráfico de administración entre puestos de trabajo: 5157 entrante en TCP 445, 135, 3389 o 5985 desde subredes que no son de administración.
- SMB saliente bloqueado hacia Internet: un intento de autenticación forzada o de exfiltración de datos.
La referencia de identificadores de eventos de seguridad los sitúa junto a los eventos de inicio de sesión y de proceso con los que los correlacionará.
Qué se rompe
- Rotación del registro de seguridad: habilitar la auditoría de aciertos de Filtering Platform Connection en todo el parque puede hacer rotar el registro de seguridad en minutos y ocultar los eventos de inicio de sesión. Aumente el tamaño del registro de seguridad (al menos 1 GB en los servidores) y limítese a los errores en los clientes.
- Carga del recopilador: una suscripción a 5157 sin filtrar suele ser la mayor fuente de eventos de una implementación de WEF. Filtre en origen con XPath.
- Rutas de registro personalizadas sin permiso de escritura para
NT SERVICE\mpssvcno producen ningún archivo, sin avisar. - Desajuste de perfil: un registro configurado solo en el perfil de dominio no da nada cuando un portátil está en el perfil público en casa.
Comprobarlo
Revise la configuración de registro efectiva, que refleja la GPO y el MDM y no la configuración local:
Get-NetFirewallProfile -PolicyStore ActiveStore |
Select-Object Name, LogFileName, LogMaxSizeKilobytes, LogBlocked, LogAllowed
Get-NetConnectionProfile | Select-Object InterfaceAlias, NetworkCategory
auditpol /get /subcategory:"Filtering Platform Connection","MPSSVC Rule-Level Policy Change"Después pruebe de extremo a extremo: desde un puesto de trabajo sin privilegios de administración, ejecute Test-NetConnection <target> -Port 445 contra otro puesto. En el destino debería ver una línea DROP TCP en pfirewall.log y un evento 5157; en el recopilador, el 5157 debería llegar dentro de su intervalo de reenvío. Por último, añada y elimine una regla de prueba inofensiva y confirme que 4946 y 4948 llegan al SIEM.
Lista de comprobación
- Registro de paquetes descartados activado en los tres perfiles, tamaño de archivo de al menos 16 MB
- Rutas de registro personalizadas con permiso de escritura para
NT SERVICE\mpssvc - Filtering Platform Connection auditado en errores; aciertos solo en servidores seleccionados
- MPSSVC Rule-Level Policy Change auditado en aciertos y errores
- Eventos 4946-4950, 4954 y 5157 (filtrado) reenviados al SIEM
- Alertas sobre firewall desactivado, reglas de permiso locales y patrones de escaneo interno
- Prueba de extremo a extremo realizada: conexión bloqueada y cambio de regla visibles de forma centralizada
El registro solo es útil si la directiva que lo respalda es coherente en todo el parque; el siguiente paso es gestionar la directiva de firewall a escala.
Preguntas frecuentes
¿Uso pfirewall.log o los eventos de seguridad de WFP?
Use ambos, para tareas distintas. pfirewall.log es un archivo de texto local y barato, excelente durante una investigación en un host pero incómodo de recopilar a escala. Los eventos de auditoría de WFP (5157 para conexiones bloqueadas, 5156 para las permitidas) llegan al registro de seguridad, incluyen la ruta del proceso y viajan por Windows Event Forwarding o por su agente como cualquier otro evento. Para la detección centralizada, prefiera los eventos y fíltrelos con rigor.
¿Por qué mi pfirewall.log está vacío aunque el registro esté habilitado?
Las causas más comunes son una ruta de registro personalizada en la que el servicio de firewall no puede escribir, un registro habilitado en un perfil que no está activo, o una configuración local de perfil anulada por una GPO que deja el registro desactivado. Compruebe el almacén activo con Get-NetFirewallProfile, confirme en qué perfil está el adaptador de red y conceda permiso de escritura a NT SERVICE\mpssvc si ha movido el registro.
¿Auditar las conexiones correctas (5156) genera demasiado ruido?
En un servidor o puesto de trabajo con mucha actividad, sí: puede generar miles de eventos por minuto y expulsar eventos útiles del registro de seguridad. Habilítelo solo en unos pocos servidores sensibles, o temporalmente mientras construye una lista de permisos de salida. Para la recopilación en todo el parque, audite solo los errores (5157) y audite siempre los cambios de reglas y de configuración, que son raros y valiosos.
Registro y supervisión del Firewall de Windows