Recopila registros de Microsoft IIS
En este documento, se explica cómo recopilar registros de Microsoft Internet Information Services (IIS) en Google Security Operations con Bindplane. Primero, el analizador intenta limpiar y normalizar los datos de entrada quitando los caracteres innecesarios y estandarizando los nombres de los campos. Luego, usa una serie de patrones de grok
para extraer los campos pertinentes de varios formatos de registro de Microsoft IIS y los asigna al modelo de datos unificados (UDM).
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de tener Windows 2016 o una versión posterior.
- Si ejecutas la herramienta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Collection Agents.
- 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
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Profile.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala 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 obtener más opciones de instalación, consulta esta guía de instalación.
Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps
- Antes de configurar el archivo YAML, detén el Service
observIQ Distro for Open Telemetry Collector
en el panel Services. Accede al archivo de configuración:
- Ubica el archivo
config.yaml
. Por lo general, 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).
- Ubica 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]
Reemplaza
<customer_id>
por el ID de cliente real.Actualiza
/path/to/ingestion-authentication-file.json
a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Cómo obtener el archivo de autenticación de la transferencia de datos 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 de Servicios o ingresar 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 | 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 | 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 | 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 | 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 la 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 | Es el 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. | |
tags | 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.