Recopila registros de sistemas Linux auditd y AIX

Compatible con:

Este analizador controla 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 con técnicas de análisis de grok, XML y JSON, y los asigna a los campos de UDM adecuados según el tipo de evento. El analizador también controla formatos específicos de registros de auditoría de sistemas AIX y enriquece el UDM con campos adicionales, como security_result y detalles intermedios.

Antes de comenzar

  • Asegúrate de tener una instancia de Google Security Operations.
  • Asegúrate de tener acceso raíz al host de Auditd.
  • Asegúrate de haber instalado rsyslog en el host de Auditd.
  • Asegúrate de tener un host de Windows 2012 SP2 o posterior, o bien un host de Linux con systemd.
  • 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

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia.

Obtén el ID de cliente de Google SecOps

  1. Accede a 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.

Instala el agente de BindPlane

  1. Para la instalación 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 la instalación en 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. En esta guía de instalación, encontrarás opciones de instalación adicionales.

Configura el agente de Bindplane para que ingiera Syslog y lo envíe a Google SecOps

  1. Accede a la máquina en la 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

Cómo exportar Syslog desde Auditd

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

    sudo vi /etc/audit/auditd.conf
    
  3. Busca o agrega las siguientes líneas para configurar auditd:

    active = yes
    output = syslog
    log_format = ENRICHED
    dispatcher = /sbin/audispd
    

Opcional: Especifica la instalación de Syslog: Agrega o modifica la siguiente línea en auditd.conf:

```none
syslog_facility = LOG_AUTHPRIV
```
  1. Abre el archivo de configuración de audispd (por lo general, ubicado en /etc/audisp/plugins.d/syslog.conf):

    sudo vi /etc/audisp/plugins.d/syslog.conf
    
  2. Busca o agrega 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 de Auditd para aplicar los cambios:

    sudo systemctl restart auditd
    
  4. Usa una herramienta como tail para supervisar el registro del sistema y verificar que se envíen 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 archivo rsyslog.conf o crea una configuración personalizada:

    sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
    
  6. Agrega una regla para reenviar registros:

    • if $programname == 'auditd' then @@<Bindplane_Agent>:<Bindplane_Port>
    • Usa @ para UDP o @@ para TCP
    • Reemplaza <BindPlane_Agent> por la dirección IP o el nombre de host de tu servidor.
    • Reemplaza <BindPlane_Port> por el puerto de tu servidor.
  7. Reinicia el servicio de rsyslog para aplicar los cambios:

    sudo systemctl restart rsyslog
    

Tabla de asignación de UDM

Campo de registro Asignación de UDM Observación
acct target.user.user_display_name El valor de acct del registro sin procesar se asigna al campo target.user.user_display_name en el UDM. Representa la cuenta asociada con el evento.
addr principal.ip El valor de addr del registro sin procesar se asigna al campo principal.ip en el UDM. Representa la dirección IP de la principal involucrada en el evento.
additional.fields additional.fields Los campos adicionales de los pares clave-valor o las etiquetas analizados se agregan al array additional.fields en el UDM.
agent.googleapis.com/log_file_path (Sin asignar) Esta etiqueta está presente en algunos registros sin procesar, pero no se asigna al objeto IDM en el UDM.
algo (No se usa en este ejemplo) Si bien 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 en el registro sin procesar o de otros campos, como exe, según el tipo de registro. Representa la aplicación involucrada.
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 del usuario de auditoría (auid) se asigna a about.user.userid y se agrega como un 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 recopilación 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.
COMMAND target.process.command_line
compute.googleapis.com/resource_name principal.hostname El nombre del recurso de esta etiqueta se asigna a principal.hostname.
create_time (Sin asignar) Este campo no se asigna al objeto IDM en el UDM.
cwd security_result.detection_fields.cwd El directorio de trabajo actual (cwd) se agrega como un 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 target.process.file.full_path La ruta de acceso del archivo ejecutable (exe) se asigna a target.process.file.full_path.
extensions.auth.type extensions.auth.type El tipo de autenticación lo establece la lógica del analizador en función del tipo de evento. A menudo, se establece en 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.
_Item_Id metadata.product_log_id
insertId (Sin asignar) Este campo no se asigna 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 de clave se asigna a security_result.about.registry.registry_key.
labels (Procesado) Las etiquetas del registro sin procesar se procesan y se asignan a varios campos del UDM o se agregan a additional.fields.
logName (Sin asignar) Este campo no se asigna al objeto IDM en el UDM.
metadata.product_event_type SECCOMP La curva de intercambio de claves se extrae del registro sin procesar y se asigna a este campo.
msg security_result.summary El mensaje (msg) se suele usar para completar el campo security_result.summary.
network.application_protocol network.application_protocol La lógica del analizador la establece según el tipo de evento (p.ej., SSH, HTTP).
network.direction network.direction La lógica del analizador la establece según el tipo de evento (p.ej., INBOUND, OUTBOUND).
network.ip_protocol network.ip_protocol Lo establece la lógica del analizador, por lo general, en TCP para los eventos de SSH.
network.session_id network.session_id Se asigna desde el campo ses o se deriva de otros campos.
network.tls.cipher network.tls.cipher La información de la cifra 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 del proceso (pid) se asigna a principal.process.pid o target.process.pid según el contexto.
ppid principal.process.parent_process.pid, target.process.parent_process.pid El ID del proceso principal (ppid) se asigna a principal.process.parent_process.pid o target.process.parent_process.pid según el contexto.
principal.asset.hostname principal.asset.hostname Se copió desde principal.hostname.
principal.asset.ip principal.asset.ip Se copió desde principal.ip.
principal.platform principal.platform La lógica del analizador la establece según el sistema operativo (p.ej., LINUX).
principal.port principal.port Número de puerto asociado a la principal.
principal.user.group_identifiers principal.user.group_identifiers Son los IDs de grupo asociados con el usuario principal.
process.name target.process.file.full_path
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_Id target.resource.product_object_id
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 UDM.
security_result.action security_result.action El analizador sintáctico lo establece según la lógica del campo res (p.ej., PERMITIR, BLOQUEAR).
security_result.detection_fields security_result.detection_fields Se agregan varios campos del registro sin procesar como pares clave-valor a este array para proporcionar contexto.
security_result.rule_id security_result.rule_id Establecido por la lógica del analizador, a menudo en type_name para los eventos de llamadas al sistema.
security_result.severity security_result.severity La lógica del analizador la establece según el nivel de gravedad del registro sin procesar.
security_result.summary security_result.summary Es un resumen del evento que, a menudo, se deriva del campo msg o de 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 del contexto del usuario y de seguridad.
syscall security_result.about.labels.Syscall El número de llamada al sistema se agrega como una etiqueta dentro de security_result.about.
target.administrative_domain target.administrative_domain Es el dominio del usuario objetivo.
target.group.group_display_name target.group.group_display_name Es el nombre del grupo objetivo.
target.ip target.ip Es la dirección IP del objetivo.
target.port target.port Es el número de puerto asociado con el destino.
target.process.command_line target.process.command_line Es la línea de comandos del proceso de destino.
target.resource.type target.resource.type Es el tipo de recurso de destino, establecido por la lógica del analizador (p.ej., CREDENTIAL, SETTING).
target.user.attribute.permissions target.user.attribute.permissions Son los permisos relacionados con el usuario objetivo.
target.user.group_identifiers target.user.group_identifiers Son los IDs de grupo asociados con el usuario objetivo.
target.user.userid target.user.userid Es el ID de usuario del objetivo.
TenantId metadata.product_deployment_id
textPayload (Procesado) Es la carga útil de texto del registro, que el analizador procesa para extraer varios campos.
timestamp metadata.event_timestamp Es la marca de tiempo del evento.
tty security_result.about.labels.tty El TTY se agrega como una etiqueta dentro de security_result.about.
type metadata.product_event_type El tipo de evento (type) se asigna a metadata.product_event_type.
uid target.user.userid El ID de usuario (uid) se asigna a target.user.userid.

Referencia del delta de asignación del UDM

El 23 de septiembre de 2025, Google SecOps lanzó una nueva versión del analizador de Okta, que incluye cambios significativos en la asignación de campos de registro de Okta a campos de UDM y cambios en la asignación de tipos de eventos.

Delta de la asignación de campos de registro

En la siguiente tabla, se muestra el delta de asignación para los campos de registro de Okta a UDM expuestos antes del 23 de septiembre de 2025 y posteriormente (se enumeran en las columnas Asignación anterior y Asignación actual, respectivamente).

Campo de registro Asignación anterior Asignación actual Ejemplo de registro de referencia
1.1.1.1 (dirección IP) src.ip principal.ip "<163>Apr 10 09:00:05 hostname.com sshd[3318513]: Accepted password for abc from 1.1.1.1 port 33988 ssh2"
1.1.1.1 (dirección IP) principal.ip target.ip "<29>Oct 5 08:37:16 abc ProxySG: E0000 Access Log HTTP (main): Connecting to server 1.1.1.1 on port 4433.(0) NORMAL_EVENT alog_stream_http.cpp 261"
abc (usuario) principal.user.userid target.user.userid "<85>Feb 27 08:26:55 offozcav login: FAILED LOGIN 1 FROM ::ffff:1.1.1.1 FOR abc, Authentication failure\r\n\r\n"
abc.abc (usuario) principal.user.userid target.user.userid "<86>Feb 27 08:29:19 offozcav login: LOGIN ON pts/43 BY abc.abc FROM\r\n\r\n::ffff:1.1.1.1"
COMMAND principal.process.command_line target.process.command_line "<85>Sep 24 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number"
exe target.process.file.full_path principal.process.file.full_path
_ItemId additional.fields metadata.product_log_id
metadata.product_event_type PATH SECCOMP
process.name principal.process.file.full_path target.process.file.full_path
_ResourceId additional.fields target.resource.product_object_id
TenantId additional.fields metadata.product_deployment_id
uid principal.user.userid target.user.userid
USER principal.user.user_display_name target.user.userid "<85>Sep 24 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number"
user principal.user.userid target.user.userid "29>Jan 16 11:28:00 san-auth-1-irl2 tac_plus[17329]: login failure: user 1.1.1.1 (1.1.1.1) vty0"
user principal.user.userid target.user.userid "<87>Jul 15 10:27:01 xpgjrconfdb01 crond[1045]: pam_unix(crond:account): expired password for user root (password aged)"

Delta de la asignación de tipos de eventos

Varios eventos que antes se clasificaban como eventos genéricos ahora se clasifican correctamente con tipos de eventos significativos.

En la siguiente tabla, se muestra el delta para el control de los tipos de eventos de Okta antes del 23 de septiembre de 2025 y después de esa fecha (se indican en las columnas Old event_type y Current event-type, respectivamente).

eventType del registro event_type anterior event_type actual
aix_event_type=CRON_Start USER_LOGIN PROCESS_LAUNCH
CRYPTO_KEY_USER NETWORK_CONNECTION USER_LOGIN
FILE_Mknod USER_LOGIN FILE_CREATION
FILE_Rename USER_LOGIN FILE_MODIFICATION
FILE_Stat USER_LOGIN FILE_OPEN
FILE_Unlink USER_LOGIN FILE_DELETION
FS_Chabc USER_LOGIN PROCESS_UNCATEGORIZED
FS_Mkdir USER_LOGIN FILE_CREATION
FS_Rmdir USER_LOGIN FILE_DELETION
PROC_Execute USER_LOGIN PROCESS_LAUNCH
type=ANOM_ABEND STATUS_UPDATE PROCESS_TERMINATION
type=ANOM_PROMISCUOUS SETTING_MODIFICATION
type=CRED_REFR USER_LOGIN USER_CHANGE_PERMISSIONS
type=PROCTILE PROCESS_UNCATEGORIZED PROCESS_LAUNCH
type=SERVICE_START USER_RESOURCE_ACCESS SERVICE_START
type=SERVICE_STOP USER_RESOURCE_ACCESS SERVICE_STOP
type=USER_ACCT USER_LOGIN/SETTING_MODIFICTION USER_LOGIN
type=USER_MGMT SETTING_MODIFICATION/GROUP_MODIFICATION GROUP_MODIFICATION
USER_ERR USER_LOGOUT USER_LOGIN

Cambios adicionales

  • Se quitó la asignación duplicada de res de security_result.description. Se captura en security_result.action_details.
  • Se quitó el auditd_msg_data innecesario de los campos adicionales.
  • Se quitó el auditd_msg_data innecesario de security_result.summary.
  • Cuando es type=ADD_USER, se quitó la asignación duplicada de acct a target.user.display_name. Ya está mapeado en target.user.userid.
  • Se quitó la asignación duplicada de comm de principal.process.command_line y principal.process.file.names. Se captura en principal.application.
  • Se quitó la asignación duplicada de target.hostname cuando el valor está en principal.
  • Se quitó la asignación innecesaria codificada de target.resource.type a SETTING.
  • Se quitaron las asignaciones de etiquetas de Acerca de porque ya no están disponibles.
  • Se corrigió la asignación: Las IPs ahora se enrutan a principal.ip, no a principal.hostname.
  • Se corrigió la repetición de los eventos que se generan.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.