Recopila registros de sistemas Linux auditd y AIX
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
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Collection Agents.
- Descarga el archivo de autenticación de transferencia.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración del SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
- 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
- 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
- Puedes encontrar opciones de instalación adicionales en esta guía de instalación.
Configura el agente de Bindplane para que ingiera Syslog y lo envíe a Google SecOps
- Accede a la máquina en la 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
Cómo exportar Syslog desde Auditd
- Accede a la máquina desde la que deseas exportar los registros de auditoría.
Abre el archivo de configuración de Auditd (por lo general, se encuentra en
/etc/audit/auditd.conf
).sudo vi /etc/audit/auditd.conf
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
```
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
Busca o agrega las siguientes líneas para configurar audispd:
active = yes direction = out path = builtin_syslog type = builtin args = LOG_INFO format = string
Reinicia el servicio de Auditd para aplicar los cambios:
sudo systemctl restart auditd
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)
Edita el recurso
rsyslog.conf
o crea una configuración personalizada:sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
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.
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 | 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 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 . |
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 |
principal.process.file.full_path , target.process.file.full_path |
La ruta de acceso ejecutable (exe ) se asigna a principal.process.file.full_path o target.process.file.full_path según el contexto. |
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 . |
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. |
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 con la principal. |
principal.user.group_identifiers |
principal.user.group_identifiers |
Son los IDs de grupo asociados con el 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 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 del 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. |
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 |
principal.user.userid , target.user.userid |
El ID de usuario (uid ) se asigna a principal.user.userid o target.user.userid según el contexto. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.