Como administradores de sistemas, personal del grupo de soporte o simplemente como una medida de mantener los mejores niveles de control tanto del servidor como de los equipos cliente de la organización es auditando de forma constante el sistema operativo con el fin de estar un paso más adelante los fallos que puedan presentarse y de este modo preservar la integridad y disponibilidad del sistema así como sus roles, servicios y elementos almacenados en él.
Una auditoría esta compuesta por un examen de las diversas partes que componen ese sistema específicamente, con una evaluación crítica, y pruebas si es necesario, en diferentes áreas de interés.
Tomando como base este concepto hoy Solvetic hará un análisis de dos de las mejores herramientas para el proceso de auditoria en Linux: auditd y ausearch.
Es importante aclarar que la auditoría no proporciona seguridad adicional al sistema operativo sino que puede ser usada para descubrir violaciones de las políticas de seguridad utilizadas en el sistema y así estar con el conocimiento adecuado de estas.
Esta información recopilada es crucial para los entornos de misión crítica con el fin de determinar el infractor de la política de seguridad y las acciones que realizaron y así permitir que todas las acciones de seguridad y nuevas políticas creadas en la organización estén enfocadas en mejorar todo el entorno operativo.
- Fecha, hora, tipo y resultado de un evento.
- Etiquetas de sensibilidad de sujetos y objetos.
- Asociación de un evento con la identidad del usuario que ejecuto el evento.
- Desplegar todas las modificaciones a la configuración de auditoría e intento de acceso a los archivos de registro de auditoría.
- Almacenar todos los usos de los mecanismos de autenticación, como SSH, Kerberos y otros.
- Es posible cambiar a cualquier base de datos de confianza, como /etc/passwd.
- Registra cualquier intento de importar o exportar información hacia o desde el sistema.
- Incluye o excluye eventos basados en identidad de usuario, etiquetas de sujeto y objeto y otros atributos.
- Controlled Access Protection Profile (CAPP)
- Labeled Security Protection Profile (LSPP)
- Rule Set Base Access Control (RSBAC)
- National Industrial Security Program Operating Manual (NISPOM)
- Federal Information Security Management Act (FISMA)
- Payment Card Industry — Data Security Standard (PCI-DSS)
- Security Technical Implementation Guides (STIG)
- No requiere programas o procesos externos para ejecutarse en un sistema que lo haga autosuficiente.
- Es altamente configurable razón por la cual nos permite ver cualquier operación del sistema que deseemos.
- Ayuda a detectar o analizar compromisos, a nivel de seguridad, potenciales de un sistema.
- Es capaz de funcionar como un sistema de detección independiente.
- Puede trabajar con sistemas de detección de intrusos para permitir la detección de intrusiones.
- Es una herramienta vital para la auditoría de investigaciones forenses.
Aunque algunos términos puedan parecer extraños, si estamos comprometidos con la seguridad sin dudas esta es una de las mejores opciones.
1. Componentes del sistema de auditoria de Linux auditd
El sistema de auditoría tiene dos componentes básicos que son:
- Aplicaciones de usuario y utilidades o herramientas
- Procesamiento de llamadas de sistema a nivel de kernel, el cual acepta llamadas de sistema desde aplicaciones de espacio de usuario y las pasa a través de tres tipos de filtros: usuario, tarea, salida o exclusión.
/var/log/audit/audit.logAdicional a esto, el audispd es un multiplexor de eventos que interactúa con auditd y envía eventos a otros programas que desean realizar procesamiento de eventos en tiempo real.
Existen varias herramientas de espacio de usuario para administrar y recuperar información del sistema de auditoría que son:
Para este análisis usaremos CentOS 7
2. Instalación y configuración de auditd en CentOS 7
El primer paso consiste en asegurarnos que la herramienta de auditoría está instalada en el sistema usando el comando rpm y la utilidad grep así:
rpm -qa | grep auditEl resultado será:
En caso de no contar con los paquetes de auditoria, debemos ejecutar el siguiente comando como usuarios root:
yum install auditUna vez instalado debemos configurar si auditd se encuentra habilitad, para ello ejecutaremos alguno de los siguientes comandos en su orden:
systemctl is-enabled auditdsystemctl status auditdsystemctl start auditd (inicia el servicio) systemctl enable auditd (habilita el servicio)
service auditd statusservice auditd start (inicia el servicio) chkconfig auditd on (habilita el servicio)
Podemos ver que su estado es activo.
3. Configuración de auditd
Para configurar auditd debemos usar el archivo de configuración principal /etc/audit/auditd.conf ya que allí será posible controlar cómo se ejecuta el servicio tal como la definición de la ubicación del archivo de registro, el número máximo de archivos de registro, el formato de registro, cómo tratar los discos completos, la rotación de registros y más opciones.
Para esto usaremos el editor preferido:
nano /etc/audit/auditd.confAlli veremos lo siguiente:
Podemos ver que cada línea nos permite indicar una acción específica y podremos cambiarla según sea necesario.
4. Reglas de auditoria en Linux
Como indicamos anteriormente, auditd hace uso de reglas para recopilar información específica del kernel. Estas reglas son básicamente opciones de auditctl las cuales pueden preconfiguradas en el archivo /etc/audit/rules.d/audit.rules.
Hay tres tipos de reglas de auditoría que pueden ser definidas las cuales son:
Para acceder a dichas reglas iremos a la siguiente ruta usando el editor deseado:
nano /etc/audit/rules.d/audit.rulesVeremos lo siguiente:
En este archivo, en la primer sección debemos agregar reglas de control. Posteriormente, agregar las reglas de auditoría en la sección central y, finalmente, la última sección contiene parámetros de inmutabilidad que también son reglas de control.
Algunos ejemplos de estas reglas son:
-D
-b 3074
-f 4
-r 120
Un ejemplo de una regla es el siguiente:
Allí tenemos lo siguiente:
-w
-p
-k
Una vez definidas las reglas usamos la combinación de teclas Ctrl + O para guardar el archivo y Ctrl + X para salir del mismo. Agregaremos estas reglas, tomando las del ejemplo ejecutando las siguientes líneas como root:
auditctl -w /etc/passwd -p wa -k passwd_changesauditctl -w /etc/group -p wa -k group_changesauditctl -w /etc/sudoers -p wa -k sudoers_changesPara poder ver las reglas actuales ejecutaremos lo siguiente:
sudo auditctl -l
De esta forma auditd se convierte en una valiosa herramienta de auditoria en CentOS 7.
5. Ausearch Linux
La utilidad ausearch ha sido diseñada para permitir buscar archivos de registro de auditoría para eventos específicos basados en eventos y diferentes criterios de búsqueda como identificador de evento, identificador de clave, arquitectura de CPU, nombre de comando, nombre de host, nombre de grupo o ID de grupo.
De forma predeterminada, ausearch busca en el archivo /var/log/audit/audit.log. Puede especificar un archivo diferente utilizando el comando ausearch options -if nombre_archivo. El suministro de múltiples opciones en un comando ausearch equivale a usar el operador AND.
Para usar el valor por defecto y ver los logs actuales ejecutaremos alguno de los siguientes comandos:
cat /var/log/audit/audit.logcat /var/log/audit/audit.log | less
Como vemos los datos acá representados pueden ser confusos por lo cual ausearch hace uso de la sintaxis ausearch (opción) para filtrar estos resultados y obtener una visión mucho más fácil de administrar.
Contamos con opciones como:
ausearch -m ADD_USER,DEL_USER,USER_CHAUTHTOK,ADD_GROUP,DEL_GROUP,CHGRP_ID,ROLE_ASSIGN,ROLE_REMOVE -iVeremos lo siguiente:
Así podemos ver las diversas opciones a la hora de realizar una auditoria completa y eficaz en CentOS o RedHat.
Muy bueno. Se menciona el comando 'aureport' pero sin ejemplo.
Este comando funciona tras la instalación de 'auditd' y muestra un informe muy interesante sin necesidad de haber configurado nada. Va bien para detectar intrusiones o intentos:
-------------------------------------------------
Summary Report
======================
Range of time in logs: 05/30/19 12:17:27.430 - 05/30/19 19:25:01.042
Selected time for report: 05/30/19 12:17:27 - 05/30/19 19:25:01.042
Number of changes in configuration: 9
Number of changes to accounts, groups, or roles: 0
Number of logins: 0
Number of failed logins: 27
Number of authentications: 2
Number of failed authentications: 9
Number of users: 3
Number of terminals: 7
Number of host names: 11
Number of executables: 6
Number of commands: 1
Number of files: 0
Number of AVC's: 0
Number of MAC events: 0
Number of failed syscalls: 0
Number of anomaly events: 0
Number of responses to anomaly events: 0
Number of crypto events: 0
Number of integrity events: 0
Number of virt events: 0
Number of keys: 0
Number of process IDs: 88
Number of events: 438