Recoger registros de sistemas Linux auditd y AIX

Disponible en:

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

  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.

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

  1. 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
  2. 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
  3. 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

  1. Accede al equipo en el que está instalado Bindplane.
  2. 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
    
  3. Reinicia el agente de Bindplane para aplicar los cambios con el siguiente comando: sudo systemctl bindplane restart

Exportar Syslog desde Auditd

  1. Accede a la máquina desde la que quieras exportar los registros de auditoría.
  2. Abre el archivo de configuración de Auditd (normalmente se encuentra en /etc/audit/auditd.conf).

    sudo vi /etc/audit/auditd.conf
    
  3. 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
```
  1. 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
    
  2. 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
    
  3. Reinicia el servicio Auditd para aplicar los cambios:

    sudo systemctl restart auditd
    
  4. 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)
    
  5. Edita el rsyslog.conf o crea una configuración personalizada:

    sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
    
  6. 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.
  7. 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.