Recoger registros de Microsoft IIS

Disponible en:

En este documento se explica cómo recoger registros de Microsoft Internet Information Services (IIS) en Google Security Operations mediante Bindplane. En primer lugar, el analizador intenta limpiar y normalizar los datos de entrada eliminando los caracteres innecesarios y estandarizando los nombres de los campos. A continuación, usa una serie de patrones grok para extraer los campos relevantes de varios formatos de registro de Microsoft IIS y los asigna al modelo de datos unificado (UDM).

Antes de empezar

  • Asegúrate de que tienes una instancia de Google SecOps.
  • Asegúrate de que tengas Windows 2016 o una versión posterior.
  • Si se ejecuta a través de un proxy, asegúrate de que los puertos del cortafuegos estén abiertos.

Obtener el archivo de autenticación de ingestión de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recogida.
  3. Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.

Obtener el ID de cliente de Google SecOps

  1. Inicia sesión en 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.

Instalar el agente de BindPlane en Windows

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

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

Recursos de instalación adicionales

Configurar el agente de BindPlane para ingerir Syslog y enviarlo a Google SecOps

  1. Antes de configurar el archivo YAML, detén el observIQ Distro for Open Telemetry Collector servicio en el panel Servicios.
  2. Accede al archivo de configuración:

    1. Busca el archivo config.yaml. Normalmente, se encuentra en el directorio /etc/bindplane-agent/ en Linux o en el directorio de instalación en Windows.
    2. Abre el archivo con un editor de texto (por ejemplo, nano, vi o Bloc de notas).
  3. Edita el archivo config.yaml de la siguiente manera:

    receivers:
      iis:
        collection_interval: 60s
    
    processors:
      # Resourcedetection is used to add a unique (host.name) to the metric resource(s), allowing users to filter between multiple agent systems.
      resourcedetection:
        detectors: ["system"]
        system:
          hostname_sources: ["os"]
    
      normalizesums:
    
      batch:
    
    exporters:
      chronicle/powershell:
        endpoint: malachiteingestion-pa.googleapis.com
        # Adjust the path to the credentials file you downloaded in Step 1
        creds: '/path/to/ingestion-authentication-file.json'
        log_type: 'IIS'
        override_log_type: false
        raw_log_field: body
        customer_id: '<customer_id>'
    
    service:
      pipelines:
        logs/winpowershell:
          receivers:
            - iis
          processors:
            - resourcedetection
            - normalizesums
            - batch
          exporters: [chronicle/iis]
    
  4. Sustituye <customer_id> por el ID de cliente real.

  5. Actualiza /path/to/ingestion-authentication-file.json a la ruta en la que se guardó el archivo de autenticación en la sección Obtener el archivo de autenticación de ingestión de Google SecOps.

  6. Después de guardar el archivo config.yaml, inicia el servicio observIQ Distro for Open Telemetry Collector.

Reinicia el agente de Bindplane para aplicar los cambios

  • Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Servicios o introducir el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
@timestamp metadata.event_timestamp Marca de tiempo del evento tal como se registra en el registro sin procesar.
@version metadata.product_version La versión del servidor IIS.
AgentDevice additional.fields.AgentDevice.value.string_value El dispositivo que ha generado el registro.
AgentLogFile additional.fields.AgentLogFile.value.string_value El nombre del archivo de registro.
ASP.NET_SessionId network.session_id El ID de sesión del usuario.
c-ip principal.ip La dirección IP del cliente.
Canal security_result.about.resource.attribute.labels.Channel.value El canal en el que se ha registrado el evento.
ChannelID security_result.about.resource.attribute.labels.ChannelID.value ID del canal en el que se ha registrado el evento.
Ordenador target.hostname Nombre de host del equipo de destino.
cs-bytes network.received_bytes Número de bytes recibidos del cliente.
cs-host principal.hostname, principal.asset.hostname Nombre de host del cliente.
cs-method network.http.method Método HTTP usado por el cliente.
cs-uri-query target.url La cadena de consulta de la URL solicitada por el cliente.
cs-uri-stem target.url Ruta de la URL solicitada por el cliente.
cs-username principal.user.user_display_name Nombre de usuario del cliente.
cs-version network.tls.version_protocol Versión HTTP utilizada por el cliente.
cs(Cookie) Se usa para extraer información de las cookies.
cs(Referer) network.http.referral_url La URL que ha remitido al cliente a la página actual.
cs(User-Agent) network.http.user_agent User-agent del cliente.
csbyte network.received_bytes Número de bytes recibidos del cliente.
cshost principal.hostname, principal.asset.hostname Nombre de host del cliente.
csip principal.ip, principal.asset.ip La dirección IP del cliente.
csmethod network.http.method Método HTTP usado por el cliente.
csreferer network.http.referral_url La URL que ha remitido al cliente a la página actual.
csuseragent network.http.user_agent User-agent del cliente.
csusername principal.user.user_display_name Nombre de usuario del cliente.
csversion network.tls.version_protocol Versión HTTP utilizada por el cliente.
fecha Se usa para crear la marca de tiempo del evento si la marca de tiempo del registro sin procesar no es válida.
description security_result.description Descripción del evento.
devicename target.hostname Nombre de host del equipo de destino.
dst_ip target.ip, target.asset.ip La dirección IP del equipo de destino.
dst_port target.port El número de puerto del equipo de destino.
duración Duración de la solicitud en milisegundos.
EventEnqueuedUtcTime additional.fields.EventEnqueuedUtcTime.value.string_value La hora en la que se puso en cola el evento (en UTC).
EventID metadata.product_log_id ID del evento.
EventProcessedUtcTime additional.fields.EventProcessedUtcTime.value.string_value La hora en la que se procesó el evento en UTC.
EventTime metadata.event_timestamp Marca de tiempo del evento.
EventType metadata.product_event_type El tipo del evento.
file_path target.file.full_path Ruta completa del archivo implicado en el evento.
FilterId security_result.about.resource.attribute.labels.FilterId.value ID del filtro.
FilterKey security_result.about.resource.attribute.labels.FilterKey.value La clave del filtro.
FilterName security_result.about.resource.attribute.labels.FilterName.value Nombre del filtro.
FilterType security_result.about.resource.attribute.labels.FilterType.value El tipo de filtro.
host target.hostname Nombre de host del equipo de destino.
host.architecture principal.asset.hardware.cpu_platform La arquitectura del equipo host.
host.geo.name additional.fields.geo_name.value.string_value Ubicación geográfica del equipo host.
host.hostname target.hostname, target.asset.hostname Nombre de host del equipo host.
host.id observer.asset_id El ID de la máquina host.
host.ip principal.ip, principal.asset.ip La dirección IP de la máquina host.
host.mac principal.mac La dirección MAC del host.
host.os.build additional.fields.os_build.value.string_value Número de compilación del sistema operativo de la máquina host.
host.os.kernel principal.platform_patch_level Versión del kernel del sistema operativo de la máquina host.
host.os.name additional.fields.os_name.value.string_value El nombre del sistema operativo de la máquina host.
host.os.platform principal.platform La plataforma del sistema operativo de la máquina host.
host.os.version principal.platform_version La versión del sistema operativo de la máquina host.
http_method network.http.method Método HTTP usado por el cliente.
http_response network.http.response_code El código de respuesta HTTP.
http_status_code network.http.response_code El código de estado HTTP de la respuesta.
http_substatus additional.fields.sc_substatus.value.string_value El código de subestado HTTP de la respuesta.
instancia additional.fields.instance.value.string_value El ID de instancia de la tarea.
intermediary_devicename intermediary.hostname, intermediary.asset.hostname El nombre de host del dispositivo intermediario.
json_message 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 La clave de la capa.
LayerName security_result.about.resource.attribute.labels.LayerName.value Nombre de la capa.
LayerId security_result.about.resource.attribute.labels.LayerId.value El ID de la capa.
log.file.path target.file.full_path Ruta completa del archivo de registro.
log.offset metadata.product_log_id Desplazamiento del evento en el archivo de registro.
logstash.collect.host observer.hostname El nombre de host del equipo que ha recogido el registro.
logstash.process.host intermediary.hostname El nombre de host del equipo que ha procesado el registro.
logstash_json_message El mensaje de registro sin procesar en formato JSON.
mensaje security_result.description El mensaje de registro sin procesar.
ministerio additional.fields.ministry.value.string_value El ministerio asociado al evento.
name Nombre de la entidad.
NewValue additional.fields.NewValue.value.string_value El nuevo valor del ajuste de configuración.
OldValue additional.fields.OldValue.value.string_value Valor anterior del ajuste de configuración.
puerto principal.port Número de puerto del cliente.
priority_code El código de prioridad del mensaje syslog.
ProcessID principal.process.pid ID de proceso del proceso que ha generado el evento.
ProviderGuid security_result.about.resource.attribute.labels.ProviderGuid.value El GUID del proveedor.
ProviderKey security_result.about.resource.attribute.labels.ProviderKey.value Clave del proveedor.
ProviderName security_result.about.resource.attribute.labels.ProviderName.value El nombre del proveedor.
referrer_url network.http.referral_url La URL que ha remitido al cliente a la página actual.
request_url target.url La URL solicitada por el cliente.
s-computername target.hostname Nombre de host del equipo de destino.
s-ip target.ip, target.asset.ip La dirección IP del equipo de destino.
s-port target.port El número de puerto del equipo de destino.
s-sitename additional.fields.sitename.value.string_value El nombre del sitio.
sc-bytes network.sent_bytes Número de bytes enviados al cliente.
sc-status network.http.response_code El código de estado HTTP de la respuesta.
sc-substatus additional.fields.sc_substatus.value.string_value El código de subestado HTTP de la respuesta.
sc-win32-status El código de estado de Windows de la respuesta.
scbyte network.sent_bytes Número de bytes enviados al cliente.
scstatus network.http.response_code El código de estado HTTP de la respuesta.
gravedad security_result.severity Gravedad del evento.
service.type additional.fields.service_type.value.string_value El tipo de servicio.
sIP principal.ip, principal.asset.ip La dirección IP del cliente.
sPort principal.port Número de puerto del cliente.
sSiteName additional.fields.sitename.value.string_value El nombre del sitio.
src_ip principal.ip, principal.asset.ip, observer.ip La dirección IP del cliente.
src_port principal.port Número de puerto del cliente.
sysdate Fecha y hora del mensaje syslog.
syslog_facility security_result.severity_details La instalación del mensaje syslog.
syslog_pri La prioridad del mensaje syslog.
syslog_severity security_result.severity_details La gravedad del mensaje syslog.
syslog_severity_code El código de gravedad del mensaje syslog.
etiquetas security_result.rule_name Etiquetas asociadas al evento.
tarea additional.fields.task.value.string_value El nombre de la tarea.
Tiempo Se usa para crear la marca de tiempo del evento si la marca de tiempo del registro sin procesar no es válida.
tiempo_empleado Duración de la solicitud en milisegundos.
uri_query target.url La cadena de consulta de la URL solicitada por el cliente.
user_agent network.http.user_agent User-agent del cliente.
Nombre de usuario target.user.userid Nombre de usuario del usuario actual.
UserSid target.user.windows_sid El SID de Windows del usuario.
Ponderación security_result.about.resource.attribute.labels.Weight.value El peso del filtro.
win32_status 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 y USER_LOGIN
extensions.auth.type MACHINE

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.