> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wirespeed.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Windows

> Centralización y reenvío de la telemetría de Microsoft Windows

## Primeros pasos

Wirespeed admite la ingesta de registros y telemetría de Windows con una arquitectura gratuita y sin agente:

1. [WEF](#wef-windows-event-forwarding) (Windows Event Forwarding) en los puntos de conexión cuyos registros desee
2. [WEC](#wec-windows-event-collection) (Windows Event Collector) en un único servidor
3. [Winlogbeat](#winlogbeat): para leer los registros de WEC (p. ej., del registro `ForwardedEvents`) y enviarlos a Logstash
4. [Logstash](#logstash): para reenviar los registros de Winlogbeat a Wirespeed a través de HTTPS

WEF (muchos hosts) envía registros → WEC (un único servidor) los recopila y reenvía → Logstash → Wirespeed

Antes de configurar Logstash, siga la guía compartida [Reenviadores de registros](https://docs.wirespeed.co/es/integrations/log-forwarders.md) para añadir **Windows Event Logs** y abrir **Detalles del reenviador**. Use el receptor HTTPS que se muestra allí como destino de Logstash.

> [!NOTE]
>
> Para más información sobre WEF/WEC, [lea este artículo de Microsoft](https://learn.microsoft.com/en-us/windows/security/operating-system-security/device-management/use-windows-event-forwarding-to-assist-in-intrusion-detection).

### WEF (Windows Event Forwarding)

**WEF** es el método nativo de Microsoft (sin agente) para recopilar registros y telemetría de Windows y enviarlos a una ubicación centralizada. Normalmente se trata de servidores Windows locales o de nube privada, pero también puede incluir puntos de conexión Windows de alto valor. En el contexto de esta documentación, denominamos a estos sistemas **sistemas de origen**.

### WEC (Windows Event Collection)

**WEC** es el método nativo de Microsoft (sin agente) para recopilar de forma centralizada los registros de los sistemas de origen. En una arquitectura sencilla, habrá un único servidor WEC dentro de un entorno local o de nube privada que actuará como servidor WEC. No debe ser un Domain Controller (esos son sistemas de origen WEF).

### Winlogbeat

**Winlogbeat** es uno de los muchos [Beats](https://www.elastic.co/beats) que Elastic proporciona para el envío de datos. Winlogbeat envía registros de eventos de Windows a Elasticsearch o Logstash y se puede instalar como servicio de Windows.

### Logstash

Logstash es un pipeline de procesamiento de datos de código abierto del lado del servidor que puede ingestar datos de múltiples orígenes, transformarlos y, a continuación, enviarlos a un «stash».

## Configurar Windows Event Forwarder

Hay varias opciones para desplegar WEF + WEC. Nuestra recomendación usa Group Policy para indicar a los hosts Windows que envíen (push) telemetría al servidor WEC, en lugar de recuperarla (pull). Puede usar el método pull, pero no está documentado aquí.

1. Abra Group Policy Management
   1. En un domain controller o estación de trabajo de administración, ejecute gpmc.msc.
2. Cree un nuevo GPO (Group Policy Object)
   1. Haga clic con el botón derecho en la OU donde residan sus servidores (p. ej., `Servers OU`) → **Create a GPO in this domain, and Link it here**.
   2. Nombre: `Windows Event Forwarding`.
   3. Haga clic con el botón derecho en el GPO > **Edit**.
3. Habilite el servicio WinRM (sin Remote Management)
   1. Computer Configuration > Policies > Windows Settings > Security Settings > System Services.
      1. Establezca Windows Remote Management (WS-Management) en **Automatic**.
      2. \*\*\[OPCIONAL] \*\*Wirespeed recomienda bloquear el tráfico de red WinRM entrante en cualquier punto de conexión Windows donde no sea necesario, ya que habilita una vía de movimiento lateral para los atacantes. Dicho esto, el servidor WEC debe tenerlo habilitado, así que si realiza este cambio, separe su servidor WEC en una OU distinta donde esta configuración de Group Policy no le afecte.
         1. Computer Configuration > Policies > Administrative Templates > Windows Components > Windows Remote Management (WinRM) > WinRM Service.
         2. Establezca en **Disabled**
4. Defina la dirección del servidor WEC
   1. Computer Configuration > Policies > Administrative Templates > Windows Components > Event Forwarding.
   2. Habilite la configuración e introduzca lo siguiente en el campo **Option**: `Server=http://WEC-Server01.domain.local:5985/wsman/SubscriptionManager/WEC,Refresh=60`
   3. Sustituya `WEC-Server01.domain.local` por el FQDN de su servidor WEC. El puerto `5985` es el estándar para WinRM sobre HTTP. El puerto `5986` es el estándar para WinRM sobre HTTPS, pero requiere una Certificate Authority TLS desplegada internamente de forma adecuada en su entorno Active Directory para que todos los puntos de conexión puedan confiar en los certificados HTTPS. Sin una PKI adecuada, déjelo en `5985` sobre HTTP.
5. Habilite PowerShell Logging y Transcription
   1. Computer Configuration > Policies > Administrative Templates > Windows Components > Windows PowerShell
   2. Habilite **Turn on PowerShell Script Block Logging**
      1. Marque `Log script block invocation start/stop events` (4105/4106)
   3. Habilite **Turn on Module Logging**
      1. Establezca `Module Names` en `*`
   4. Habilite **Turn on PowerShell Transcription**
      1. **Transcription Output Directory**: **Déjelo en blanco** (el valor predeterminado es `%UserProfile%\Documents\PowerShell_transcripts`)
      2. Marque **Include invocation headers**.
   5. Habilite **Turn on PowerShell Remoting Transcription** (si está disponible)
      1. **Transcription Output Directory**: **Déjelo en blanco** (el valor predeterminado es `%UserProfile%\Documents\PowerShell_transcripts`)
      2. Marque **Include invocation headers**.
6. **Habilitar Command Line Logging**
   1. Computer Configuration > Policies > Administrative Templates > System > Audit Process Creation
   2. Habilite **"Include command line in process creation events"**
      1. Esto rellena el campo CommandLine en Security Event ID 4688 para todas las creaciones de proceso
7. Definir el registro mínimo
   1. Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Policy Configuration > System Audit Policies > Detailed Tracking
      1. Habilite **Audit Process Creation**
         1. Establezca en **Success** (Event ID 4688 para la invocación de PowerShell)
   2. Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Policy Configuration > System Audit Policies > Account Logon
      1. Habilite **Audit Kerberos Authentication Service**
         1. Establezca en **Success** y **Failure** (Event IDs 4768, 4771)
      2. Habilite **Audit Kerberos Service Ticket Operations**
         1. Establezca en **Success** y **Failure** (Event ID 4769)
      3. Habilite **Audit Other Account Logon Events**
         1. Establezca en **Success** y **Failure** (Event ID 4776)
   3. Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Policy Configuration > System Audit Policies > Logon/Logoff
      1. Habilite **Audit Logoff**
         1. Establezca en **Success** (Event ID 4634 para la terminación de sesión)
      2. Habilite **Audit Other Logon/Logoff Events**
         1. Establezca en **Success** y **Failure** (Event IDs 4648, 4778, 4779, 4800, 4801)
   4. Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Policy Configuration > System Audit Policies
      1. **Audit Logon**: Habilite **Success** y **Failure** para cubrir tipos de inicio de sesión local, interactivo y remoto (p. ej., RDP, red).
      2. **Audit Account Lockout**: Habilite **Success** y **Failure**
      3. **Audit Special Logon**: Habilite **Success** (inicios de sesión privilegiados, p. ej., derechos de administrador)
      4. **Audit User Account Management**: Habilite **Success** y **Failure** (creación y cambios de usuario)
      5. **Audit Security Group Management**: Habilite **Success** y **Failure** (creación y cambios de grupo)
      6. **Audit Audit Policy Change**: Habilite **Success** y **Failure** (modificaciones de la directiva de auditoría)
      7. **Audit Security System Extension**: Habilite **Success** y **Failure** (cambios en la configuración de registros)
      8. **Privilege Use**: \[Recomendación] Deshabilitado o solo **Failure** (Event IDs 4673, 4674)
      9. **Process Creation**: \[Recomendación] Habilitado **Success** (paso 6, Event ID 4688)
      10. **File and Registry Access (Object Access)**: \[Recomendación] **Disabled** o solo **Failure** (Event IDs 4656, 4663)
          1. \[Opcional] Si es necesario, habilite de forma selectiva mediante SACL en objetos concretos (fuera del alcance)
8. **Habilitar Task Scheduler Logging**
   1. Computer Configuration > Policies > Administrative Templates > Windows Components > Task Scheduler
   2. Habilite **"Turn On logging for task registration"**
      1. Esto genera eventos de creación, modificación y ejecución de tareas programadas (Event IDs 106, 200, 201)

## Configurar Windows Event Collector

1. Identifique un servidor (debe coincidir con el servidor identificado y establecido en la group policy anterior), que debe ejecutar una versión compatible de Windows Server (Server 2016 o posterior).
   \[!WARNING] Si sigue nuestras recomendaciones anteriores para deshabilitar el tráfico WinRM entrante en los hosts Windows supervisados, asegúrese de que esa configuración NO se aplique al servidor WEC, o WEC no funcionará.
2. Descargue `WEC-Setup.ps1` del Github de Wirespeed: [https://github.com/WirespeedSecurity/utils/](https://github.com/WirespeedSecurity/utils/)
3. Cree el directorio `C:/Program Files/Wirespeed` y mueva el script allí. Abra un terminal de PowerShell ejecutándose como administrador en este directorio y ejecute el script con `./WEC-Setup.ps1`. Este script:
   1. Habilitará y configurará el servicio Windows Remote Management (WinRM): una dependencia de WEC.
   2. Establecerá el servicio Windows Event Collector (`wecsvc`) para que se inicie automáticamente e iniciará el servicio de inmediato con `wecutil qc`.
   3. Añadirá la cuenta `NT AUTHORITY\Network Service` al grupo local `Event Log Readers` para garantizar los permisos adecuados para la recopilación de eventos.
   4. Creará reglas de firewall para permitir el tráfico entrante en los puertos 5985 (WinRM sobre HTTP) y 5986 (WinRM sobre HTTPS) para la comunicación WEF.
   5. Configurará el servidor WEC para reenviar sus propios eventos de Windows a sí mismo (localhost) a través de HTTP en el puerto 5985, habilitando la auto-supervisión al establecer la clave del registro `HKLM:\SOFTWARE\Policies\Microsoft\Windows\EventLog\EventForwarding\SubscriptionManager`.
   6. Creará una suscripción WEC iniciada por el origen denominada "Security and PowerShell Events" para recopilar eventos de los registros Security, Microsoft-Windows-PowerShell/Operational, Windows PowerShell, System y Application, usando HTTP y almacenando los eventos en el registro ForwardedEvents.
4. Para validar la configuración:
   1. Compruebe el registro `ForwardedEvents` en Event Viewer (`eventvwr.msc`) del servidor WEC para confirmar que se recopilan eventos de los sistemas de origen (y del propio servidor WEC).
   2. Revise el registro de configuración en `C:\Program Files\Wirespeed\collector.log` por si hay errores o confirmación de pasos de configuración correctos.
   3. Genere un evento de prueba en un sistema de origen (p. ej., `eventcreate /Id 500 /D "Test event" /T ERROR /L System`) y verifique que aparece en el registro `ForwardedEvents` del servidor WEC.
      \[!NOTE] Todas las acciones y errores del script se registran en un archivo de registro en `C:\Program Files\Wirespeed\collector.log` para cualquier validación o depuración adicional que se requiera.

## Configurar el reenvío de registros

> [!NOTE]
>
> Para más información, consulte la documentación oficial de [Winlogbeat](https://www.elastic.co/docs/reference/beats/winlogbeat/) y [Logstash](https://www.elastic.co/docs/reference/logstash).

### Instalar y configurar Winlogbeat

La instalación se basa en la [guía de instalación de Winlogbeat](https://www.elastic.co/docs/reference/beats/winlogbeat/winlogbeat-installation-configuration) oficial de Elastic.

1. Descargar e instalar Winlogbeat
   1. Descargue el archivo zip de la [página de descargas](https://www.elastic.co/downloads/beats/winlogbeat)
   2. Extraiga el contenido en `C:\Program Files`
   3. Cambie el nombre del directorio `winlogbeat-<version>` a `Winlogbeat`
   4. Abra un símbolo del sistema de PowerShell como administrador (haga clic con el botón derecho en el icono de PowerShell y seleccione Run As Administrator)
   5. Desde el símbolo del sistema de PowerShell, ejecute los siguientes comandos para instalar el servicio
      1. `cd 'C:\Program Files\Winlogbeat'`
      2. `.\install-service-winlogbeat.ps1`

> [!NOTE]
>
> Si la ejecución de scripts está deshabilitada en su sistema, debe establecer la directiva de ejecución de la sesión actual para permitir que se ejecute el script. Por ejemplo: `PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-winlogbeat.ps1`.

1. Configurar Winlogbeat
   1. En `winlogbeat.yml`, sustituya el contenido existente por las configuraciones siguientes:
   ```yaml theme={null}
   winlogbeat.event_logs:
     - name: Security
       ignore_older: 72h
     - name: System
       ignore_older: 72h
     - name: Application
       ignore_older: 72h
     - name: Microsoft-Windows-PowerShell/Operational
       ignore_older: 72h
     - name: ForwardedEvents
       ignore_older: 72h
   output.logstash:
     hosts: ["localhost:5044"]
     ssl.enabled: false
     codec.json:
       pretty: false
   ```

> [!NOTE]
>
> Esta es una configuración muy básica. Se recomienda conocer más opciones de configuración de Winlogbeat y adaptar lo anterior a sus necesidades específicas. Consulte la [documentación oficial de Elastic](https://www.elastic.co/docs/reference/beats/winlogbeat/configuring-howto-winlogbeat) para todas las opciones de configuración disponibles.

### Instalar y configurar Logstash

> [!WARNING]
>
> Logstash requiere una de las siguientes opciones:
>
> * Java 17
> * Java 21

1. Descargar e instalar Logstash
   1. Descargue el archivo zip de la [página de descargas](https://www.elastic.co/downloads/logstash)
   2. Extraiga el contenido en `C:\Program Files`
   3. Cambie el nombre del directorio `logstash-<version>` a `Logstash`
   4. Vaya al directorio `C:\Program Files\Logstash\config\`

2. Configurar Logstash
   1. Abra **Detalles del reenviador** de su integración Windows Event Logs y copie el dominio HTTPS y el puerto de escucha
   2. Edite `logstash.conf` para recopilar eventos de Winlogbeat y enviarlos a Wirespeed:
      1. Sustituya el contenido del `logstash.conf` existente por el contenido siguiente (o créelo si no existe):
         ```
         input { 
           beats { 
             port => 5044 
             ssl_enabled => false
           } 
         }
         filter { 
           # Fix the field reference - use winlog.event_id for Windows events
           if [winlog][event_id] { 
             mutate { 
               add_field => { "event_id" => "%{[winlog][event_id]}" } 
             } 
           }
           # Alternative field paths depending on your beat version
           if [event][code] { 
             mutate { 
               add_field => { "event_id" => "%{[event][code]}" } 
             } 
           }
         }
         output {
           http {
             url => "https://<WIRESPEED_DOMAIN>:<WIRESPEED_PORT>"
             http_method => "post"
             codec => "json"
           }
         }
         ```
      2. Sustituya `<WIRESPEED_DOMAIN>` y `<WIRESPEED_PORT>` por los valores de **Detalles del reenviador**
   3. Edite `logstash.yml` para reconocer la nueva configuración de forma predeterminada
      1. Añada las líneas siguientes al archivo, guárdelo y ciérrelo:
         ```yaml theme={null}
         config.reload.automatic: true  # Automatically reload config if logstash.conf changes
         path.config: "C:\\Program Files\\Logstash\\config\\logstash.conf"  # Sets the default config file
         ```
         > [!NOTE]
         >
         > Esta es una configuración muy básica. Se recomienda conocer más opciones de configuración de Logstash y adaptar lo anterior a sus necesidades específicas. Consulte la [documentación oficial de Elastic](https://www.elastic.co/docs/reference/logstash) para todas las opciones de configuración disponibles.
   4. Instalar Logstash como servicio
      \[!WARNING] Se recomienda ejecutar Logstash manualmente para asegurarse de que la configuración es válida antes de ejecutarlo como servicio. Consulte más información aquí: [Running Logstash Manually](https://www.elastic.co/docs/reference/logstash/running-logstash-windows#running-logstash-windows-manual)
      \[!NOTE] **Recomendado:** Lea más sobre esta configuración aquí: [Running Logstash as a service with NSSM](https://www.elastic.co/docs/reference/logstash/running-logstash-windows#running-logstash-windows-nssm)
      1. Descargar e instalar NSSM
         1. [https://nssm.cc/download](https://nssm.cc/download) y extraiga `nssm.exe` de `nssm-<version.number>\win64\nssm.exe` a `Logstash\bin\`
      2. Use NSSM para crear el servicio Logstash
         1. Abra un terminal de PowerShell como administrador y ejecute el siguiente comando para instalar Logstash como servicio:
            1. `cd "C:\Program Files\Logstash\bin"`
            2. `.\nssm.exe install logstash`
         2. Cuando aparezca la ventana `NSSM service installer`, especifique los siguientes parámetros en la pestaña `Application`:
            1. **Path**: `C:\Program Files\Logstash\bin\logstash.bat`
            2. **Startup Directory**: `C:\Program Files\Logstash\bin`
         3. Haga clic en **Install Service** y, a continuación, en **Ok**
   5. Iniciar Logstash y WinLogbeat:
      1. `Start-Service logstash`
      2. `Start-Service winlogbeat`
      3. Verifique que los servicios se están ejecutando con
         1. `Get-Service Logstash`
         2. `Get-Service winlogbeat`
   6. Póngase en contacto con un ingeniero de Wirespeed a través del chat de la plataforma o enviando un correo a [support@wirespeed.co](mailto:support@wirespeed.co) para asegurarse de que los registros fluyen como se espera


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.