En esta publicación, veremos cómo leer los registros de auditoría y qué significa cada línea y campo.
Por ejemplo, el archivo audit.log registró 4 líneas de la siguiente manera:
type=SYSCALL msg=audit(1640033159.053:177988798): arch=c000003e syscall=2 success=no exit=-13 a0=7ffc736c18a0 a1=0 a2=1b6 a3=24 items=1 ppid=130071 pid=130082 auid=1001 uid=1001 gid=1002 euid=1001 suid=1001 fsuid=1001 egid=1002 sgid=1002 fsgid=1002 tty=(none) ses=318813 comm="pidstat" exe="/usr/bin/pidstat" key="access" type=PROCTITLE msg=audit(1640033159.053:177988797): proctitle=70696473746174002D727564002D6800310033 type=CWD msg=audit(1640033159.053:177988798): cwd="/u01/app/oracle/oracle.ahf/data/repository/suptools/rac01/oswbb/oracle/oswbb" type=PATH msg=audit(1640033159.053:177988798): item=0 name="/proc/674/io" inode=12022 dev=00:04 mode=0100400 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
El evento anterior consta de cuatro registros, que comparten la misma marca de tiempo y número de serie ( 1640033159.053:177988797 ). Los registros siempre comienzan con type= palabra clave. Cada registro consta de varios pares nombre=valor separados por un espacio en blanco o una coma. A continuación se presenta un análisis detallado del evento anterior:
Primer registro
tipo=LLAMADA AL SISTEMA
El campo de tipo contiene el tipo del registro. En este ejemplo, el valor SYSCALL especifica que este registro fue activado por una llamada del sistema al núcleo. Para obtener una lista de todos los valores de tipos posibles y sus explicaciones, consulte Tipos de registros de auditoría.
mensaje=auditoría(1640033159.053:177988798)
Los registros de campo msg:una marca de tiempo y una identificación única del registro en el formulario de auditoría (marca de tiempo:ID). Varios registros pueden compartir la misma marca de tiempo e ID si se generaron como parte del mismo evento de auditoría. La marca de tiempo utiliza el formato de tiempo de Unix:segundos desde las 00:00:00 UTC del 1 de enero de 1970. Varios pares de nombre=valor específicos de eventos proporcionados por el kernel o las aplicaciones de espacio de usuario.
arch=c000003e
El campo arch contiene información sobre la arquitectura de la CPU del sistema. El valor, c000003e, está codificado en notación hexadecimal. Al buscar registros de auditoría con el comando ausearch, use la opción -i o –interpret para convertir automáticamente los valores hexadecimales en sus equivalentes legibles por humanos. El valor c000003e se interpreta como x86_64.
llamada al sistema=2
El campo syscall registra el tipo de llamada al sistema que se envió al núcleo. El valor, 2, se puede comparar con su equivalente legible por humanos en el archivo /usr/include/asm/unistd_64.h. En este caso, 2 es la llamada al sistema abierto. Tenga en cuenta que la utilidad ausyscall le permite convertir los números de llamada del sistema a sus equivalentes legibles por humanos. Utilice el comando ausyscall –dump para mostrar una lista de todas las llamadas del sistema junto con sus números. Para obtener más información, consulte la página del manual de ausyscall(8).
éxito=no
El campo de éxito registra si la llamada al sistema registrada en ese evento en particular tuvo éxito o falló. En este caso, la llamada no tuvo éxito.
salir=-13
El campo de salida contiene un valor que especifica el código de salida devuelto por la llamada al sistema. Este valor varía para diferentes llamadas al sistema. Puede interpretar el valor a su equivalente legible por humanos con el siguiente comando:
a0=7ffc736c18a0 a1=0 a2=1b6 a3=24
Los campos a0 a a3 registran los primeros cuatro argumentos, codificados en notación hexadecimal, de la llamada al sistema en este evento. Estos argumentos dependen de la llamada al sistema que se utilice; pueden ser interpretados por la utilidad ausearch.
elementos=1
El campo de elementos contiene el número de registros auxiliares PATH que siguen al registro syscall.
ppid=130071 pid=130082
El campo ppid/pid registra el ID del proceso principal y el ID del proceso.
auid=1001 uid=1001 gid=1002 euid=1001 suid=1001 fsuid=1001 egid=1002 sgid=1002 fsgid=1002
El campo auid registra la ID de usuario de auditoría, la ID de usuario, la ID de grupo, la ID de usuario efectiva, la ID de usuario establecida, la ID de usuario del sistema de archivos, la ID de grupo efectiva, la ID de grupo establecida, la ID de grupo del sistema de archivos.
tty=(ninguno) ses=318813
El campo tty y la sesión registran el terminal desde el que se invocó el proceso analizado.
comm="pidstat"
El campo com registra el nombre de la línea de comandos del comando que se usó para invocar el proceso analizado. En este caso, se utilizó el comando cat para activar este evento de auditoría.
exe=”/usr/bin/pidstat”
El campo exe registra la ruta al ejecutable que se utilizó para invocar el proceso analizado.
clave=”acceso”
El campo clave registra la cadena definida por el administrador asociada con la regla que generó este evento en el registro de auditoría.
Segundo registro
tipo=PROCTITLE
El campo de tipo contiene el tipo del registro. En este ejemplo, el valor PROCTITLE especifica que este registro proporciona la línea de comandos completa que activó este evento de auditoría, provocado por una llamada del sistema al kernel.
proctitle=70696473746174002D727564002D6800310033
El campo proctitle registra la línea de comando completa del comando que se usó para invocar el proceso analizado. El campo está codificado en notación hexadecimal para no permitir que el usuario influya en el analizador del registro de auditoría. El texto se decodifica en el comando que activó este evento de auditoría. Cuando busque registros de auditoría con el comando ausearch, use la opción -i o –interpret para convertir automáticamente los valores hexadecimales en sus equivalentes legibles por humanos.
Tercer Registro
tipo=CWD
En el segundo registro, el valor del campo de tipo es CWD:directorio de trabajo actual. Este tipo se utiliza para registrar el directorio de trabajo desde el cual se ejecutó el proceso que invocó la llamada al sistema especificada en el primer registro. El propósito de este registro es registrar la ubicación del proceso actual en caso de que una ruta relativa termine siendo capturada en el registro PATH asociado. De esta manera se puede reconstruir la ruta absoluta.
mensaje=auditoría(1640033159.053:177988798)
El campo msg contiene la misma marca de tiempo y el mismo valor de ID que el valor del primer registro. La marca de tiempo utiliza el formato de tiempo Unix:segundos desde las 00:00:00 UTC del 1 de enero de 1970.
cwd=”/u01/app/oracle/oracle.ahf/data/repository/suptools/rac01/oswbb/oracle/oswbb”
El campo cwd contiene la ruta al directorio en el que se invocó la llamada al sistema.
Cuarto Registro
tipo=RUTA
En este registro, el valor del campo de tipo es PATH. Un evento de auditoría contiene un registro de tipo PATH para cada ruta que se pasa a la llamada del sistema como argumento.
mensaje=auditoría(1640033159.053:177988798)
El campo msg contiene la misma marca de tiempo y valor de ID que el valor en el primer y segundo registro.
elemento=0
El campo de artículo indica qué artículo, del número total de artículos referenciados en el registro de tipo SYSCALL, es el registro actual. Este número está basado en cero; un valor de 0 significa que es el primer elemento.
nombre=”/proc/674/io”
El campo de nombre registra la ruta del archivo o directorio que se pasó a la llamada del sistema como argumento. En este caso, fue el archivo /proc/674/io.
inodo=12022
El campo de inodo contiene el número de inodo asociado con el archivo o directorio registrado en este evento. El siguiente comando muestra el archivo o directorio asociado con el número de inodo 409248:
dev=00:04
El campo dev especifica la ID menor y mayor del dispositivo que contiene el archivo o directorio registrado en este evento.
modo=0100400
El campo de modo registra los permisos de archivo o directorio, codificados en notación numérica tal como los devuelve el comando stat en el campo st_mode. Consulte la página del comando man stat(2) para obtener más información. En este caso, 0100600 puede interpretarse como -r——–, lo que significa que solo el usuario root tiene permisos de lectura para /proc/674/io.
ouid=0
El campo ouid registra el ID de usuario del propietario del objeto.
ogid=0
El campo ogid registra el ID de grupo del propietario del objeto.
rdev=00:00
El campo rdev contiene un identificador de dispositivo registrado solo para archivos especiales. En este caso, no se utiliza porque el archivo grabado es un archivo normal.
tipo de nombre=NORMAL
El campo objtype registra la intención de la operación de cada registro de ruta en el contexto de una llamada al sistema dada.