Recoger registros de sistemas Linux auditd y AIX
Este analizador gestiona los registros de auditoría de Linux en formato SYSLOG y los transforma en UDM. Procesa mensajes de registro con formato JSON y de texto sin formato, extrae campos mediante técnicas de análisis grok, XML y JSON, y los asigna a los campos de UDM adecuados en función del tipo de evento. El analizador también gestiona formatos de registro de auditoría específicos de sistemas AIX y enriquece el UDM con campos adicionales, como security_result
y detalles intermedios.
Antes de empezar
- Asegúrate de que tienes una instancia de Google Security Operations.
- Asegúrate de que tienes acceso de superusuario al host de Auditd.
- Asegúrate de que has instalado rsyslog en el host de Auditd.
- Asegúrate de tener un host Windows 2012 SP2 o posterior, o un host Linux con systemd.
- 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.
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
- Para instalar en Windows, ejecuta la siguiente secuencia de comandos:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Para instalar Linux, ejecuta la siguiente secuencia de comandos:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- Puedes consultar otras opciones de instalación en esta guía de instalación.
Configurar el agente de Bindplane para ingerir Syslog y enviarlo a Google SecOps
- Accede al equipo en el que está instalado Bindplane.
Edita el archivo
config.yaml
de la siguiente manera:receivers: tcplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: auditd raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Reinicia el agente de Bindplane para aplicar los cambios con el siguiente comando:
sudo systemctl bindplane restart
Exportar Syslog desde Auditd
- Accede a la máquina desde la que quieras exportar los registros de auditoría.
Abre el archivo de configuración de Auditd (normalmente se encuentra en
/etc/audit/auditd.conf
).sudo vi /etc/audit/auditd.conf
Busca o añade las siguientes líneas para configurar auditd:
active = yes output = syslog log_format = ENRICHED dispatcher = /sbin/audispd
Opcional: Especifica la instalación de Syslog. Añade o modifica la siguiente línea en auditd.conf
:
```none
syslog_facility = LOG_AUTHPRIV
```
Abre el archivo de configuración de audispd (normalmente se encuentra en
/etc/audisp/plugins.d/syslog.conf
):sudo vi /etc/audisp/plugins.d/syslog.conf
Busca o añade las siguientes líneas para configurar audispd:
active = yes direction = out path = builtin_syslog type = builtin args = LOG_INFO format = string
Reinicia el servicio Auditd para aplicar los cambios:
sudo systemctl restart auditd
Usa una herramienta como
tail
para monitorizar el syslog y verificar que se están enviando los registros de Auditd:tail -f /var/log/syslog | grep auditd # Follow syslog and filter for auditd messages (path may vary depending on your system)
Edita el
rsyslog.conf
o crea una configuración personalizada:sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
Para añadir una regla para reenviar registros, sigue estos pasos:
if $programname == 'auditd' then @@<Bindplane_Agent>:<Bindplane_Port>
- Usa
@
para UDP o@@
para TCP - Sustituye
<BindPlane_Agent>
por la IP o el nombre de host de tu servidor. - Sustituye
<BindPlane_Port>
por el puerto de tu servidor.
Reinicia el servicio rsyslog para aplicar los cambios:
sudo systemctl restart rsyslog
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
acct |
target.user.user_display_name |
El valor de acct del registro sin procesar se asigna al campo target.user.user_display_name del UDM. Representa la cuenta asociada al evento. |
addr |
principal.ip |
El valor de addr del registro sin procesar se asigna al campo principal.ip del UDM. Representa la dirección IP de la entidad principal implicada en el evento. |
additional.fields |
additional.fields |
Los campos adicionales de los pares clave-valor o las etiquetas analizados se añaden a la matriz additional.fields del UDM. |
agent.googleapis.com/log_file_path |
(Sin asignar) | Esta etiqueta está presente en algunos registros sin procesar, pero no está asignada al objeto IDM en el UDM. |
algo |
(No se usa en este ejemplo) | Aunque está presente en el analizador y en algunos registros sin procesar, este campo no se usa en el ejemplo proporcionado y no aparece en el UDM final. |
application |
principal.application |
Se deriva del campo terminal del registro sin procesar o de otros campos, como exe , en función del tipo de registro. Representa la aplicación implicada. |
arch |
security_result.about.platform_version |
La arquitectura del campo arch del registro sin procesar se asigna a security_result.about.platform_version . |
auid |
about.user.userid , security_result.detection_fields.auid |
El ID de usuario de auditoría (auid ) se asigna a about.user.userid y se añade como campo de detección en security_result . |
cmd |
target.process.command_line |
El comando del campo cmd del registro sin procesar se asigna a target.process.command_line . |
collection_time |
(Sin asignar) | Este campo es la hora de recogida del registro y no se asigna al objeto IDM en el UDM. |
comm |
principal.application |
El nombre del comando (comm ) se asigna a principal.application . |
compute.googleapis.com/resource_name |
principal.hostname |
El nombre de recurso de esta etiqueta se asigna a principal.hostname . |
create_time |
(Sin asignar) | Este campo no está asignado al objeto IDM en el UDM. |
cwd |
security_result.detection_fields.cwd |
El directorio de trabajo actual (cwd ) se añade como campo de detección en security_result . |
data |
(Procesado) | El campo data contiene el mensaje de registro principal y el analizador lo procesa para extraer varios campos. No se asigna directamente a un solo campo de UDM. |
exe |
principal.process.file.full_path , target.process.file.full_path |
La ruta del archivo ejecutable (exe ) se asigna a principal.process.file.full_path o target.process.file.full_path en función del contexto. |
extensions.auth.type |
extensions.auth.type |
El tipo de autenticación lo define la lógica del analizador en función del tipo de evento. Suele tener el valor MACHINE o AUTHTYPE_UNSPECIFIED . |
fp |
network.tls.client.certificate.sha256 |
La huella digital (fp ) se analiza para extraer el hash SHA256 y se asigna a network.tls.client.certificate.sha256 . |
insertId |
(Sin asignar) | Este campo no está asignado al objeto IDM en el UDM. |
jsonPayload.message |
(Procesado) | Este campo contiene el mensaje de registro principal en formato JSON y lo procesa el analizador. |
key |
security_result.about.registry.registry_key |
El campo clave se ha asignado a security_result.about.registry.registry_key . |
labels |
(Procesado) | Las etiquetas del registro sin procesar se procesan y se asignan a varios campos de UDM o se añaden a additional.fields . |
logName |
(Sin asignar) | Este campo no está asignado al objeto IDM en el UDM. |
msg |
security_result.summary |
El mensaje (msg ) se suele usar para rellenar el campo security_result.summary . |
network.application_protocol |
network.application_protocol |
Definido por la lógica del analizador en función del tipo de evento (por ejemplo, SSH o HTTP. |
network.direction |
network.direction |
Definido por la lógica del analizador en función del tipo de evento (por ejemplo, INBOUND, OUTBOUND). |
network.ip_protocol |
network.ip_protocol |
Definido por la lógica del analizador. Normalmente, se asigna el valor TCP a los eventos SSH. |
network.session_id |
network.session_id |
Asignado desde el campo ses o derivado de otros campos. |
network.tls.cipher |
network.tls.cipher |
La información de cifrado se extrae del registro sin procesar y se asigna a este campo. |
network.tls.curve |
network.tls.curve |
La curva de intercambio de claves se extrae del registro sin procesar y se asigna a este campo. |
pid |
principal.process.pid , target.process.pid |
El ID de proceso (pid ) se asigna a principal.process.pid o target.process.pid en función del contexto. |
ppid |
principal.process.parent_process.pid , target.process.parent_process.pid |
El ID de proceso superior (ppid ) se asigna a principal.process.parent_process.pid o target.process.parent_process.pid en función del contexto. |
principal.asset.hostname |
principal.asset.hostname |
Copiado de principal.hostname . |
principal.asset.ip |
principal.asset.ip |
Copiado de principal.ip . |
principal.platform |
principal.platform |
Definido por la lógica del analizador en función del sistema operativo (por ejemplo, LINUX). |
principal.port |
principal.port |
Número de puerto asociado a la entidad de seguridad. |
principal.user.group_identifiers |
principal.user.group_identifiers |
IDs de grupo asociados al usuario principal. |
receiveTimestamp |
(Sin asignar) | Este campo es la marca de tiempo de recepción del registro y no se asigna al objeto IDM en el UDM. |
res |
security_result.action_details |
El resultado (res ) se asigna a security_result.action_details . |
resource.labels |
(Sin asignar) | Estas etiquetas están presentes en algunos registros sin procesar, pero no se asignan al objeto IDM en el UDM. |
resource.type |
(Sin asignar) | Este campo está presente en algunos registros sin procesar, pero no se asigna al objeto IDM en el modelo de datos unificado. |
security_result.action |
security_result.action |
Definido por la lógica del analizador en función del campo res (por ejemplo, PERMITIR o BLOQUEAR). |
security_result.detection_fields |
security_result.detection_fields |
Se añaden varios campos del registro sin procesar como pares clave-valor a esta matriz para proporcionar contexto. |
security_result.rule_id |
security_result.rule_id |
Definido por la lógica del analizador, a menudo en type_name para los eventos de llamadas al sistema. |
security_result.severity |
security_result.severity |
Definido por la lógica del analizador en función del nivel de gravedad del registro sin procesar. |
security_result.summary |
security_result.summary |
Un resumen del evento, que suele derivarse del campo msg u otros campos relevantes. |
ses |
network.session_id |
El ID de sesión (ses ) se asigna a network.session_id . |
source |
(Sin asignar) | Este campo contiene metadatos sobre la fuente de registro y no se asigna al objeto IDM en el UDM. |
subj |
(Procesado) | El campo de asunto (subj ) se procesa para extraer información sobre el contexto de seguridad y del usuario. |
syscall |
security_result.about.labels.Syscall |
El número de llamada al sistema se añade como etiqueta en security_result.about . |
target.administrative_domain |
target.administrative_domain |
El dominio del usuario objetivo. |
target.group.group_display_name |
target.group.group_display_name |
Nombre del grupo objetivo. |
target.ip |
target.ip |
La dirección IP del destino. |
target.port |
target.port |
Número de puerto asociado al destino. |
target.process.command_line |
target.process.command_line |
La línea de comandos del proceso de destino. |
target.resource.type |
target.resource.type |
El tipo del recurso de destino, definido por la lógica del analizador (por ejemplo, CREDENTIAL, SETTING). |
target.user.attribute.permissions |
target.user.attribute.permissions |
Permisos relacionados con el usuario de destino. |
target.user.group_identifiers |
target.user.group_identifiers |
IDs de grupo asociados al usuario de destino. |
target.user.userid |
target.user.userid |
ID de usuario del objetivo. |
textPayload |
(Procesado) | La carga útil de texto del registro, procesada por el analizador para extraer varios campos. |
timestamp |
metadata.event_timestamp |
Marca de tiempo del evento. |
tty |
security_result.about.labels.tty |
El tty se añade como etiqueta en security_result.about . |
type |
metadata.product_event_type |
El tipo de evento (type ) se asigna a metadata.product_event_type . |
uid |
principal.user.userid , target.user.userid |
El ID de usuario (uid ) se asigna a principal.user.userid o target.user.userid en función del contexto. |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.