Cuando nuestros roles y funciones implican gestionar todos los elementos de la infraestructura corporativa, ya sea a nivel de redes o de sistemas, debemos contar con herramientas útiles para monitorear, hacer seguimientos de eventos y velar por el óptimo desempeño de todos los componentes de la misma.
Hoy revisaremos cómo implementar y usar el sistema de auditoria de Linux, una herramienta para muchos desconocida. Sabemos que existen utilidades de terceros que nos permiten gestionar diferentes parámetros dentro del sistema pero esta utilidad va más allá de lo que necesitamos y revisaremos por qué.
Para este tutorial analizaremos la utilidad sobre un entorno CentOS 7.
1. Conocer el sistema de auditoria de Linux
Con el sistema de auditoria podemos estar actualizados en cuanto a la información primordial de la seguridad en nuestro sistema.
El sistema de auditoria nos proporciona informes sobre todos los acontecimientos ocurridos en el sistema tomando como base reglas predefinidas; Es importante aclarar que con el sistema de auditoria no añadimos seguridad a CentOS 7 sino que nos permite analizar qué falencias tiene el sistema para tomar acción correctiva sobre ello.
- Cambios en las bases de datos, por ejemplo cambios en la ruta /etc/passwd.
- El sistema de auditoria proporciona fecha, hora y tipo de evento.
- Intentos de importación o exportación de información dentro del sistema.
- Mecanismos de autenticación de los usuarios.
- Todas las modificaciones a los cambios de auditoría e intentos de acceso a los logs de auditoría, entre otros.
2. Verificar la instalación del sistema de auditoria
Dentro del Sistema de auditoria tenemos dos esquemas importantes a tener en cuenta:
1. El núcleo del sistema de auditoria toma todos los eventos procesados por el usuario y envía esta información al demonio de auditoria.
2. El demonio de auditoria toma esta información y crea los registros.
El sistema de auditoria maneja dos paquetes: audit y audit-libs, estos vienen instalados por defecto en CentOS 7 podemos comprobar su instalación usando el siguiente comando:
sudo yum list audit audit-libs
En caso de no tenerlos podemos instalar el sistema de auditoría usando el siguiente comando:
sudo yum install auditUna vez se hayan instalado debemos ver el siguiente texto:
Installed Packages audit.x86_64 audit-libs.x86_64Vamos a pasar a la configuración del sistema.
3. Configurar el sistema de auditoría en CentOS 7
Una vez hayamos validado que tenemos los paquetes requeridos vamos a modificar la configuración del archivo auditd.conf y es en este archivo que tenemos la opción de configurar los registros, eventos y demás. Para acceder a este archivo usaremos el siguiente comando:
sudo nano /etc/audit/auditd.confSe desplegará la siguiente ventana:
- num_logs: Permite definir el número de logs a registrar en el equipo.
- max_log_file: Usando este parámetro podemos definir el tamaño máximo de un log.
- space_left: Podemos establecer la cantidad de espacio libre en el disco.
- disk_full_action: Podemos definir una acción determinada para cuando el disco esté lleno.
Como vemos podemos ajustar diversos parámetros. Por ejemplo si deseamos que el número de logs sea 12 simplemente borramos el valor por defecto (5) y añadimos el deseado (12). Si deseamos cambiar el tamaño de los logs a 20 simplemente cambiamos el valor por defecto (6) al requerido (20).
Guardamos los cambios usando la combinación Ctrl + O y salimos del editor usando la combinación Ctrl + X. Una vez procesados los cambios debemos reiniciar el servicio de auditoría usando el comando:
sudo service auditd restart
4. Comprender los registros del Sistema de auditoría en CentOS 7
Por defecto el sistema de auditoría almacena todos los eventos ocurridos en CentOS en la ruta /var/log/audit/audit.log y estos archivos contienen mucha información y códigos que pueden ser no tan fáciles de comprender para muchos de nosotros pero Solvetic se encarga de resumir un poco estos archivos.
Para demostrar cómo funciona el sistema de auditoría hemos creado una regla llamada sshconfigchange y puede ser creada usando el siguiente comando:
sudo auditctl -w /etc/ssh/sshd_config -p rwxa -k sshconfigchangePara ver la regla usamos la siguiente sintaxis:
sudo cat /etc/ssh/sshd_config
Ahora vamos a ver el log creado por la herramienta de auditoría de sistema ingresando lo siguiente:
sudo nano /var/log/audit/audit.log
Vamos a basarnos en tres (3) registros vitales:
- SYSCALL
- CWD
- PATH
Estos archivos están compuestos de la siguiente manera:
- Palabra clave: Hace referencia al nombre del proceso (PATH, CWD, etc)
- Timestamp: Hace referencia a la fecha y hora (1469708505.235)
- Id: Consiste en el ID del evento en mención (153)
SYSCALL se refiere a que el mensaje fue generado por una llamada del núcleo del sistema de auditoría, campo msg=audit (1469708505.235:153):
En el campo timestamp e ID vemos que estos tres registros tienen el mismo valor (1469708505.235:153) lo que nos indica que estos tres registros fueron almacenados con el mismo evento de auditoría.
El campo arch hace referencia a la arquitectura de la máquina, en este caso 40000003 indica que es i386, si fuera el valor c000003e haría referencia a una máquina x86_64.
El campo Syscall hace mención al tipo de llamada que fue enviada al sistema. El valor puede varia, en este caso es 5. Podemos usar el comando sudo ausyscall 5 para ver el estado del servicio (Open).
Existen más de 300 valores, si deseamos ver que significan los valores en general podemos usar el comando:
sudo ausyscall -dumpY veremos todos los valores y su significado:
El campo Success nos indica si la llamada del evento fue satisfactoria o no, yes o no. Podemos ubicar el evento SYSCALL y desplazarnos hacia la izquierda para ver otros informes incluidos.
El campo uid hace referencia al usuario que ha iniciado el servicio de auditoría, en este caso es uid=0.
El campo comm hace referencia al comando que fue usado para desplegar el mensaje, por ello vemos que figura como comm=”cat”.
El campo exe nos indica la ruta de acceso al comando que generó el evento de auditoría, podemos ver en este ejemplo que es exe="/usr/bin/cat".
En el evento CWD podemos notar que no está la misma información que en SYSCALL, aquí tenemos el directorio usado para guardar los eventos, CWD- Current Working Directory, de allí que vemos el valor cwd=”/home/solvetic”.
En el último evento, PATH, vemos que está presente el campo name el cual hace referencia al archivo o directorio que fue usado para crear la auditoría, en este caso vemos lo siguiente: name=”/etc/ssh/sshd_config”.
5. Buscar eventos de auditoria para eventos específicos
Una de las formas más interesantes que podemos buscar un evento en CentOS 7 es usando la sintaxis:
sudo ausearch -m Nombre_Evento --start today -iEste comando nos permite filtrar un determinado evento y no tener que buscar en todo el archivo de eventos ya que es extenso. En este caso buscaremos todos los eventos asociados al inicio de sesión, por ello ingresaremos lo siguiente:
sudo ausearch -m LOGIN --start today -iEl resultado obtenido será el siguiente:
También es posible filtrar la búsqueda por ID del evento para ello usaremos la siguiente sintaxis:
sudo ausearch -a ID_EventoA continuación vamos a ver cómo generar reportes.
6. Generar reportes de Auditoría
Una de las formas como podemos administrar mejor los eventos es con un reporte detallado acerca de lo que sucede en CentOS 7 y con el sistema de auditoría podemos generar reportes sencillos y claros de comprender para ayudarnos en nuestra gestión. Para ello usaremos el comando:
sudo aureport -x –summaryY veremos el resultado obtenido:
La primera columna que vemos indica la cantidad de veces que el comando ha sido ejecutado y la segunda columna indica que comando se ejecutó. De la misma manera podemos generar un reporte con los eventos fallidos usando el comando:
sudo aureport --failed
Si deseamos generar un reporte con los nombres de usuario y las llamadas del sistema usaremos el comando:
sudo aureport -f -i
7. Cómo analizar procesos de manera individual
Es posible que en ocasiones debamos analizar procesos individualmente y no todo un directorio, para ello usaremos autrace, esta herramienta permite monitorear las llamadas del sistema a un proceso en particular. Los resultados de autrace se almacenan en la ruta:
/var/log/audit/audit.logPor ejemplo analizaremos la ruta /bin/date, para ello usaremos lo siguiente:
sudo autrace /bin/date
Vemos que se ha creado el evento con el ID 16541. Ahora procedemos a ingresar el siguiente comando para ver el resumen del evento:
udo ausearch -p 16541 --raw | aureport -f -i
De esta manera podemos analizar archivos individualmente. En el siguiente enlace podemos ver todos los tipos de registros que pueden ser auditados por el sistema de auditoría en CentOS 7.
De esta manera vemos como el sistema de auditoria en CentOS 7 nos puede ayudar a gestionar y supervisar los acontecimientos que ocurren en nuestros equipos y así velar por tener un sistema seguro, estable y en óptimas condiciones.
Por último os dejamos un tutorial sobre la herramienta gratuita WinAudit, para hacer auditorías en Windows: