Recoger registros de Microsoft IIS
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
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recogida.
- 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
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instalar el agente de BindPlane en Windows
- Abre el símbolo del sistema o PowerShell como administrador.
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
- Para ver otras opciones de instalación, consulta esta guía de instalación.
Configurar el agente de BindPlane para ingerir Syslog y enviarlo a Google SecOps
- Antes de configurar el archivo YAML, detén el
observIQ Distro for Open Telemetry Collector
servicio en el panel Servicios. Accede al archivo de configuración:
- 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. - Abre el archivo con un editor de texto (por ejemplo,
nano
,vi
o Bloc de notas).
- Busca el archivo
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]
Sustituye
<customer_id>
por el ID de cliente real.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.Después de guardar el archivo
config.yaml
, inicia el servicioobservIQ 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.