Recopila registros de Microsoft IIS

Se admite en los siguientes sistemas operativos:

En esta guía, se explica cómo puedes transferir registros de Microsoft Internet Information Services (IIS) a Google Security Operations con Bindplane.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Windows Server 2016 o una versión posterior con IIS instalado
  • Acceso de administrador al servidor de IIS
  • Si se ejecuta detrás de un proxy, asegúrate de que los puertos de firewall estén abiertos según los requisitos del agente de Bindplane.

Obtén el archivo de autenticación de transferencia de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará BindPlane.

Obtén el ID de cliente de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Configura el registro extendido W3C de IIS

Abre el Administrador de IIS

  1. Haz clic en Iniciar.
  2. Escribe inetmgr y presiona Intro.
  3. Se abrirá la ventana Administrador de Internet Information Services (IIS).

Método alternativo:

  1. Presiona Tecla de Windows + R.
  2. Escribe inetmgr y presiona Intro.
  1. En el panel Conexiones, expande el nombre de tu servidor.
  2. Para configurar el registro en todo el servidor (recomendado), haz lo siguiente:
    • Haz clic en el nombre del servidor en el nivel raíz.
  3. Para configurar el registro específico del sitio, haz lo siguiente:
    • Expande Sitios y, luego, haz clic en el sitio específico (por ejemplo, Sitio web predeterminado).
  4. En la vista de funciones, haz doble clic en Logging.

Selecciona el formato de registro extendido de W3C

  1. En la página Logging, en la sección Log File, haz lo siguiente:
    • En el menú desplegable Formato, selecciona W3C.
  2. Haz clic en el botón Seleccionar campos.

Configura los campos de registro de W3C

En el diálogo W3C Logging Fields, selecciona los campos según uno de los siguientes patrones:

Usa este patrón cuando necesites el contexto completo de la solicitud, incluidas las cadenas de referencia y de consulta para el análisis de seguridad, y cuando alojes varios sitios en un solo servidor.

Habilita estos campos en este orden exacto:

  1. Fecha (fecha)
  2. Hora (hora)
  3. Nombre del servicio (s-sitename)
  4. Dirección IP del servidor (s-ip)
  5. Método (cs-method)
  6. URI Stem (cs-uri-stem)
  7. URI Query (cs-uri-query)
  8. Puerto del servidor (s-port)
  9. Nombre de usuario (cs-username)
  10. Dirección IP del cliente (c-ip)
  11. User Agent (cs(User-Agent))
  12. Referer (cs(Referer))
  13. Estado del protocolo (sc-status)
  14. Bytes enviados (sc-bytes)
  15. Bytes recibidos (cs-bytes)

Patrón 2: Básico con subestado y rendimiento

Usa este patrón cuando necesites códigos de error detallados (subestado, estado de Win32) y tiempos de solicitud para solucionar problemas.

Habilita estos campos en este orden exacto:

  1. Fecha (fecha)
  2. Hora (hora)
  3. Dirección IP del servidor (s-ip)
  4. Método (cs-method)
  5. URI Stem (cs-uri-stem)
  6. Puerto del servidor (s-port)
  7. Nombre de usuario (cs-username)
  8. Dirección IP del cliente (c-ip)
  9. User Agent (cs(User-Agent))
  10. Referer (cs(Referer))
  11. Estado del protocolo (sc-status)
  12. Protocol Substatus (sc-substatus)
  13. Estado de Win32 (sc-win32-status)
  14. Tiempo utilizado (time-taken)

Usa este patrón cuando necesites un registro integral con identificación del sitio, errores detallados, métricas de ancho de banda y datos de rendimiento.

Habilita estos campos en este orden exacto:

  1. Fecha (fecha)
  2. Hora (hora)
  3. Nombre del servicio (s-sitename)
  4. Dirección IP del servidor (s-ip)
  5. Método (cs-method)
  6. URI Stem (cs-uri-stem)
  7. URI Query (cs-uri-query)
  8. Puerto del servidor (s-port)
  9. Nombre de usuario (cs-username)
  10. Dirección IP del cliente (c-ip)
  11. User Agent (cs(User-Agent))
  12. Estado del protocolo (sc-status)
  13. Protocol Substatus (sc-substatus)
  14. Estado de Win32 (sc-win32-status)
  15. Bytes enviados (sc-bytes)
  16. Bytes recibidos (cs-bytes)
  17. Tiempo utilizado (time-taken)

Patrón 4: Multisitio con contexto completo

Este patrón es funcionalmente idéntico al patrón 3.

Usa este patrón si tienes varios sitios y necesitas una observabilidad completa.

Habilita estos campos en este orden exacto:

  1. Fecha (fecha)
  2. Hora (hora)
  3. Nombre del servicio (s-sitename)
  4. Dirección IP del servidor (s-ip)
  5. Método (cs-method)
  6. URI Stem (cs-uri-stem)
  7. URI Query (cs-uri-query)
  8. Puerto del servidor (s-port)
  9. Nombre de usuario (cs-username)
  10. Dirección IP del cliente (c-ip)
  11. User Agent (cs(User-Agent))
  12. Estado del protocolo (sc-status)
  13. Protocol Substatus (sc-substatus)
  14. Estado de Win32 (sc-win32-status)
  15. Bytes enviados (sc-bytes)
  16. Bytes recibidos (cs-bytes)
  17. Tiempo utilizado (time-taken)

Patrón 5: Contexto del sitio con métricas completas (alternativo)

Este patrón es funcionalmente idéntico a los patrones 3 y 4.

Habilita estos campos en este orden exacto:

  1. Fecha (fecha)
  2. Hora (hora)
  3. Nombre del servicio (s-sitename)
  4. Dirección IP del servidor (s-ip)
  5. Método (cs-method)
  6. URI Stem (cs-uri-stem)
  7. URI Query (cs-uri-query)
  8. Puerto del servidor (s-port)
  9. Nombre de usuario (cs-username)
  10. Dirección IP del cliente (c-ip)
  11. User Agent (cs(User-Agent))
  12. Estado del protocolo (sc-status)
  13. Protocol Substatus (sc-substatus)
  14. Estado de Win32 (sc-win32-status)
  15. Bytes enviados (sc-bytes)
  16. Bytes recibidos (cs-bytes)
  17. Tiempo utilizado (time-taken)

Patrón 6: Compatible con TLS, con subestado y rendimiento

Usa este patrón cuando necesites hacer un seguimiento de las versiones del protocolo HTTP/HTTPS (HTTP/1.1, HTTP/2, HTTP/3) para el análisis de seguridad o la solución de problemas de TLS.

Habilita estos campos en este orden exacto:

  1. Fecha (fecha)
  2. Hora (hora)
  3. Dirección IP del servidor (s-ip)
  4. Método (cs-method)
  5. URI Stem (cs-uri-stem)
  6. URI Query (cs-uri-query)
  7. Puerto del servidor (s-port)
  8. Nombre de usuario (cs-username)
  9. Dirección IP del cliente (c-ip)
  10. Versión del protocolo (cs-version)
  11. User Agent (cs(User-Agent))
  12. Referer (cs(Referer))
  13. Estado del protocolo (sc-status)
  14. Protocol Substatus (sc-substatus)
  15. Estado de Win32 (sc-win32-status)
  16. Tiempo utilizado (time-taken)

Patrón 7: Compatible con TLS sin métricas de rendimiento

Usa este patrón en los siguientes casos: Es igual que el patrón 6, pero no necesitas métricas de tiempo empleado.

Habilita estos campos en este orden exacto:

  1. Fecha (fecha)
  2. Hora (hora)
  3. Dirección IP del servidor (s-ip)
  4. Método (cs-method)
  5. URI Stem (cs-uri-stem)
  6. URI Query (cs-uri-query)
  7. Puerto del servidor (s-port)
  8. Nombre de usuario (cs-username)
  9. Dirección IP del cliente (c-ip)
  10. Versión del protocolo (cs-version)
  11. User Agent (cs(User-Agent))
  12. Referer (cs(Referer))
  13. Estado del protocolo (sc-status)
  14. Protocol Substatus (sc-substatus)
  15. Estado de Win32 (sc-win32-status)

Patrón 8: Mínimo con rendimiento

Usa este patrón cuando necesites un registro mínimo con métricas de rendimiento, pero no te interesen las cadenas de consulta, los sitios de referencia ni las versiones de protocolo.

Habilita estos campos en este orden exacto:

  1. Fecha (fecha)
  2. Hora (hora)
  3. Dirección IP del servidor (s-ip)
  4. Método (cs-method)
  5. URI Stem (cs-uri-stem)
  6. Puerto del servidor (s-port)
  7. Nombre de usuario (cs-username)
  8. Dirección IP del cliente (c-ip)
  9. User Agent (cs(User-Agent))
  10. Estado del protocolo (sc-status)
  11. Protocol Substatus (sc-substatus)
  12. Estado de Win32 (sc-win32-status)
  13. Tiempo utilizado (time-taken)

Orientación para la selección de patrones

Para la mayoría de las implementaciones, usa el patrón 1 o el patrón 3.

  • Patrón 1: Es el mejor para las implementaciones centradas en la seguridad con varios sitios (incluye el sitio de referencia, la cadena de consulta y el nombre del sitio).
  • Patrón 3: Es el mejor para los entornos de producción que necesitan métricas integrales (incluye el subestado, los errores de Win32, el ancho de banda, la sincronización y el nombre del sitio).
  • Patrón 6/7: Úsalo si necesitas hacer un seguimiento de las versiones del protocolo HTTP (adopción de HTTP/2, solución de problemas de TLS).
  • Patrón 2 de 8: Se usa para el registro mínimo con detalles de errores.

Aplicar configuración

  1. Haz clic en Aceptar para cerrar el cuadro de diálogo W3C Logging Fields.
  2. Verifica la ruta de acceso del Directorio en el que se escribirán los registros.
    • Valor predeterminado: %SystemDrive%\inetpub\logs\LogFiles
  3. En Log File Rollover, selecciona Daily (se recomienda para la transferencia de datos de Google SecOps).
  4. Haz clic en Aplicar en el panel Acciones.

Verifica el registro de IIS

  1. Para generar tráfico de prueba en tu sitio de IIS, abre una página web en un navegador.
  2. Navega al directorio de registros: C:\inetpub\logs\LogFiles\W3SVC1\
  3. Abre el archivo de registro más reciente (por ejemplo, u_ex251020.log) en el Bloc de notas.
  4. Verifica que la línea #Fields: contenga todos los campos que habilitaste.

    • Línea de #Fields: de ejemplo:

      #Fields: date time s-sitename s-computername s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
      
    • Ejemplo de entrada de registro:

      2025-10-20 14:23:15 Default_Web_Site SERVER01 192.168.1.10 GET /index.html - 80 - 203.0.113.45 Mozilla/5.0+(Windows+NT+10.0) - 200 0 0 1234 567 125
      

Instala el agente de BindPlane

Instala el agente de BindPlane en tu servidor de Windows según las siguientes instrucciones.

Instalación en Windows

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el comando siguiente:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Recursos de instalación adicionales

Configura el agente de BindPlane para transferir registros de IIS y enviarlos a Google SecOps

Detén el servicio de Bindplane

  • Antes de editar el archivo de configuración, detén el servicio:

    Stop-Service "observIQ OpenTelemetry Collector"
    

Edita el archivo de configuración

  1. Ubica el archivo config.yaml.
    • Ruta predeterminada: C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
  2. Abre el archivo con un editor de texto (por ejemplo, Bloc de notas, VS Code o Notepad++) como administrador.
  3. Reemplaza todo el contenido por la siguiente configuración:

    receivers:
      iis:
        collection_interval: 60s
    
    processors:
      resourcedetection:
        detectors: ["system"]
        system:
          hostname_sources: ["os"]
      normalizesums:
      batch:
    
    exporters:
      chronicle/iis:
        endpoint: malachiteingestion-pa.googleapis.com
        creds: 'C:\SecOps\ingestion-auth.json'
        log_type: 'IIS'
        override_log_type: false
        raw_log_field: body
        customer_id: '<CUSTOMER_ID>'
        compression: gzip
    
    service:
      pipelines:
        logs/iis:
          receivers:
            - iis
          processors:
            - resourcedetection
            - normalizesums
            - batch
          exporters:
            - chronicle/iis
    
    • Reemplaza los siguientes marcadores de posición:
      • creds:: Es la ruta de acceso a tu archivo de autenticación de transferencia (por ejemplo, C:\SecOps\ingestion-auth.json).
      • customer_id:: Tu ID de cliente real de Google SecOps de la sección Obtén el ID de cliente de Google SecOps

Reinicia el agente de Bindplane para aplicar los cambios

  • Después de guardar el archivo config.yaml, reinicia el servicio de Bindplane:

    Start-Service "observIQ OpenTelemetry Collector"
    
  • Verifica que el servicio esté en ejecución:

    Get-Service "observIQ OpenTelemetry Collector"
    
  • Resultado esperado:

    Status   Name                               DisplayName
    ------   ----                               -----------
    Running  observiq-otel-collector            observIQ OpenTelemetry Collector
    

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
@timestamp metadata.event_timestamp Es la marca de tiempo del evento tal como se registró en el registro sin procesar.
@version metadata.product_version Es la versión del servidor IIS.
AgentDevice additional.fields.AgentDevice.value.string_value Es el dispositivo que generó el registro.
AgentLogFile additional.fields.AgentLogFile.value.string_value Nombre del archivo de registro.
ASP.NET_SessionId network.session_id ID de sesión del usuario.
c-ip principal.ip Es la dirección IP del cliente.
Canal security_result.about.resource.attribute.labels.Channel.value Es el canal en el que se registró el evento.
ChannelID security_result.about.resource.attribute.labels.ChannelID.value Es el ID del canal en el que se registró el evento.
Computadora target.hostname Es el nombre de host de la máquina de destino.
cs-bytes network.received_bytes Es la cantidad de bytes recibidos del cliente.
cs-host principal.hostname, principal.asset.hostname Es el nombre de host del cliente.
cs-method network.http.method Es el método HTTP que usa el cliente.
cs-uri-query target.url Es la cadena de consulta de la URL que solicitó el cliente.
cs-uri-stem target.url Es la ruta de la URL que solicitó el cliente.
cs-username principal.user.user_display_name Es el nombre de usuario del cliente.
cs-version network.tls.version_protocol Es la versión de HTTP que usa el cliente.
cs(Cookie) Se usa para extraer información de las cookies.
cs(Referer) network.http.referral_url Es la URL que remitió al cliente a la página actual.
cs(User-Agent) network.http.user_agent Es el usuario-agente del cliente.
csbyte network.received_bytes Es la cantidad de bytes recibidos del cliente.
cshost principal.hostname, principal.asset.hostname Es el nombre de host del cliente.
csip principal.ip, principal.asset.ip Es la dirección IP del cliente.
csmethod network.http.method Es el método HTTP que usa el cliente.
csreferer network.http.referral_url Es la URL que remitió al cliente a la página actual.
csuseragent network.http.user_agent Es el usuario-agente del cliente.
csusername principal.user.user_display_name Es el nombre de usuario del cliente.
csversion network.tls.version_protocol Es la versión de HTTP que usa el cliente.
fecha Se usa para construir la marca de tiempo del evento si la marca de tiempo del registro sin procesar no es válida.
descripción security_result.description Es una descripción del evento.
devicename target.hostname Es el nombre de host de la máquina de destino.
dst_ip target.ip, target.asset.ip Es la dirección IP de la máquina de destino.
dst_port target.port Número de puerto de la máquina de destino.
duración Es la duración de la solicitud en milisegundos.
EventEnqueuedUtcTime additional.fields.EventEnqueuedUtcTime.value.string_value Es la fecha y hora en que se puso en cola el evento en UTC.
EventID metadata.product_log_id Es el ID del evento.
EventProcessedUtcTime additional.fields.EventProcessedUtcTime.value.string_value Fecha y hora en que se procesó el evento en UTC.
EventTime metadata.event_timestamp Es la marca de tiempo del evento.
EventType metadata.product_event_type Es el tipo de evento.
file_path target.file.full_path Es la ruta de acceso completa del archivo involucrado en el evento.
FilterId security_result.about.resource.attribute.labels.FilterId.value Es el ID del filtro.
FilterKey security_result.about.resource.attribute.labels.FilterKey.value Es la clave del filtro.
FilterName security_result.about.resource.attribute.labels.FilterName.value Es el nombre del filtro.
FilterType security_result.about.resource.attribute.labels.FilterType.value Es el tipo de filtro.
host target.hostname Es el nombre de host de la máquina de destino.
host.architecture principal.asset.hardware.cpu_platform Es la arquitectura de la máquina anfitrión.
host.geo.name additional.fields.geo_name.value.string_value Ubicación geográfica de la máquina anfitrión.
host.hostname target.hostname, target.asset.hostname Es el nombre de host de la máquina anfitrión.
host.id observer.asset_id Es el ID de la máquina anfitrión.
host.ip principal.ip, principal.asset.ip Es la dirección IP de la máquina anfitrión.
host.mac principal.mac Es la dirección MAC de la máquina anfitrión.
host.os.build additional.fields.os_build.value.string_value Número de compilación del sistema operativo en la máquina anfitrión.
host.os.kernel principal.platform_patch_level Es la versión del kernel del sistema operativo en la máquina anfitrión.
host.os.name additional.fields.os_name.value.string_value Nombre del sistema operativo en la máquina anfitrión.
host.os.platform principal.platform Es la plataforma del sistema operativo en la máquina anfitrión.
host.os.version principal.platform_version Es la versión del sistema operativo en la máquina anfitrión.
http_method network.http.method Es el método HTTP que usa el cliente.
http_response network.http.response_code El código de respuesta HTTP.
http_status_code network.http.response_code Es el código de estado HTTP de la respuesta.
http_substatus additional.fields.sc_substatus.value.string_value Es el código de subestado HTTP de la respuesta.
instancia additional.fields.instance.value.string_value Es el ID de instancia de la tarea.
intermediary_devicename intermediary.hostname, intermediary.asset.hostname Es el nombre de host del dispositivo intermediario.
json_message Es el mensaje de registro sin procesar en formato JSON.
kv_fields Se usa para extraer pares clave-valor del mensaje de registro sin procesar.
LayerKey security_result.about.resource.attribute.labels.LayerKey.value Es la clave de la capa.
LayerName security_result.about.resource.attribute.labels.LayerName.value Es el nombre de la capa.
LayerId security_result.about.resource.attribute.labels.LayerId.value Es el ID de la capa.
log.file.path target.file.full_path Es la ruta de acceso completa del archivo de registro.
log.offset metadata.product_log_id Es el desplazamiento del evento en el archivo de registro.
logstash.collect.host observer.hostname Es el nombre de host de la máquina que recopiló el registro.
logstash.process.host intermediary.hostname Es el nombre de host de la máquina que procesó el registro.
logstash_json_message Es el mensaje de registro sin procesar en formato JSON.
mensaje security_result.description Es el mensaje de registro sin procesar.
ministerio additional.fields.ministry.value.string_value Es el ministerio asociado con el evento.
nombre Es el nombre de la entidad.
NewValue additional.fields.NewValue.value.string_value Es el valor nuevo del parámetro de configuración.
OldValue additional.fields.OldValue.value.string_value Es el valor anterior del parámetro de configuración.
puerto principal.port Número de puerto del cliente.
priority_code Es el código de prioridad del mensaje de syslog.
ProcessID principal.process.pid Es el ID del proceso que generó el evento.
ProviderGuid security_result.about.resource.attribute.labels.ProviderGuid.value Es el GUID del proveedor.
ProviderKey security_result.about.resource.attribute.labels.ProviderKey.value Es la clave del proveedor.
ProviderName security_result.about.resource.attribute.labels.ProviderName.value Es el nombre del proveedor.
referrer_url network.http.referral_url Es la URL que remitió al cliente a la página actual.
request_url target.url Es la URL que solicitó el cliente.
s-computername target.hostname Es el nombre de host de la máquina de destino.
s-ip target.ip, target.asset.ip Es la dirección IP de la máquina de destino.
s-port target.port Número de puerto de la máquina de destino.
s-sitename additional.fields.sitename.value.string_value Es el nombre del sitio.
sc-bytes network.sent_bytes Es la cantidad de bytes enviados al cliente.
sc-status network.http.response_code Es el código de estado HTTP de la respuesta.
sc-substatus additional.fields.sc_substatus.value.string_value Es el código de subestado HTTP de la respuesta.
sc-win32-status Es el código de estado de Windows de la respuesta.
scbyte network.sent_bytes Es la cantidad de bytes enviados al cliente.
scstatus network.http.response_code Es el código de estado HTTP de la respuesta.
gravedad, security_result.severity Es la gravedad del evento.
service.type additional.fields.service_type.value.string_value Es el tipo de servicio.
sIP principal.ip, principal.asset.ip Es la dirección IP del cliente.
sPort principal.port Número de puerto del cliente.
sSiteName additional.fields.sitename.value.string_value Es el nombre del sitio.
src_ip principal.ip, principal.asset.ip, observer.ip Es la dirección IP del cliente.
src_port principal.port Número de puerto del cliente.
sysdate Fecha y hora del mensaje de syslog.
syslog_facility security_result.severity_details Es la instalación del mensaje de syslog.
syslog_pri Es la prioridad del mensaje de syslog.
syslog_severity security_result.severity_details Es la gravedad del mensaje de syslog.
syslog_severity_code Es el código de gravedad del mensaje de syslog.
etiquetas security_result.rule_name Son las etiquetas asociadas al evento.
tarea additional.fields.task.value.string_value Es el nombre de la tarea.
hora Se usa para construir la marca de tiempo del evento si la marca de tiempo del registro sin procesar no es válida.
time-taken Es la duración de la solicitud en milisegundos.
uri_query target.url Es la cadena de consulta de la URL que solicitó el cliente.
user_agent network.http.user_agent Es el usuario-agente del cliente.
UserName target.user.userid Nombre de usuario de la persona.
UserSid target.user.windows_sid Es el SID de Windows del usuario.
Peso security_result.about.resource.attribute.labels.Weight.value Es el peso del filtro.
win32_status Es el código de estado de Windows de la respuesta.
xforwardedfor El encabezado X-Forwarded-For, que contiene una lista de direcciones IP separadas por comas.
metadata.log_type "IIS"
network.direction "INBOUND"
metadata.vendor_name "Microsoft"
metadata.product_name "Internet Information Server"
metadata.event_type "NETWORK_HTTP", "USER_UNCATEGORIZED", "GENERIC_EVENT", "STATUS_UPDATE", "USER_LOGOUT", "USER_LOGIN"
extensions.auth.type "MACHINE"

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.