Antes de comenzar a hablar sobre el sistema de auditoría, me gustaría hacer algunas preguntas. ¿Cómo se monitorean los comandos ejecutados por el usuario? ¿Cómo se controla si se accedió a un archivo oa un directorio? ¿Cómo registra varios eventos relacionados con la seguridad? ¿Cómo monitorea las llamadas al sistema, el acceso a la red, etc... y finalmente, cómo genera un informe a partir de eso? Bueno, el sistema de auditoría de Linux es la respuesta a todas las preguntas anteriores.
El sistema de auditoría de Linux permite que un administrador configure reglas de auditoría para monitorear las llamadas al sistema, el acceso a la red, los archivos, etc. y generar un informe resumido, que luego puede analizarse e investigarse en busca de actividad sospechosa. A partir de la versión 2.6, el kernel de Linux viene con auditd daemon y, cuando se inicia, lee las reglas preconfiguradas de /etc/audit/audit.rules . El administrador puede usar auditctl comando para controlar el sistema de auditoría, crear reglas, etc... Los otros dos comandos importantes son:
- ausearch – comando que le permite consultar los registros de auditoría en función de los criterios dados.
- aureport – comando utilizado para generar informes.
Los archivos de configuración de auditoría se encuentran en /etc/audit y registra en /var/log/audit.
- /etc/audit/audit.rules – archivo donde se crean y cargan las reglas permanentes cuando auditd se inicia el demonio.
- /etc/audit/audit.conf – archivo de configuración de auditoría
- /etc/audit/rules.d/ – carpeta que contiene archivos de reglas personalizadas.
A continuación se muestra la lista de información que registrará la auditoría:
- Marca de tiempo, tipo y resultado del evento
- UID, GID que desencadenó el evento
- Etiquetas de sensibilidad de sujeto y objeto
- Acceso a todos los sistemas de autenticación como SSH, Kerberos, etc...
- Comprobaciones de integridad de archivos
- Importación y exportación de información.
- Incluya o excluya eventos según la identidad del usuario, el tema y otros atributos.
- Intentos de cambiar los registros y archivos de configuración de auditoría.
¿Cómo configurar auditd en CentOS y Ubuntu?
En CentOS:
# yum install audit
En Ubuntu:
# apt-get install auditd :::::::::: Setting up auditd (1:2.4.5-1ubuntu2) ... update-rc.d: warning: start and stop actions are no longer supported; falling ba ck to defaults Processing triggers for libc-bin (2.23-0ubuntu3) ... Processing triggers for systemd (229-4ubuntu6) ... Processing triggers for ureadahead (0.100.0-19) ...
Una vez instalado el paquete, el auditd Daemon se iniciará automáticamente. Si no, puede iniciarlo usando los siguientes comandos:
# /etc/init.d/auditd start
Lista de las reglas de auditoría activas:
# auditctl -l No rules
¿Cómo crear reglas de auditoría?
Vamos a crear una regla para monitorear el archivo /etc/passwd
# auditctl -w /etc/passwd -p war -k audit-passwd
El comando anterior crea una vigilancia en el archivo /etc/passwd .
- –con /etc/passwd – crea un reloj para el archivo /etc/passwd
- -p guerra – establece el filtro de permisos – w para escritura, r para lectura, a para cambio de atributo y e para ejecución.
- –k auditoría-contraseña – aquí contraseña de auditoría es una clave para identificar la regla de forma única a partir de los registros.
Básicamente, el comando anterior rastrea /etc/passwd para cualquiera que intente escribir, leer o cambiar los atributos del archivo.
Ahora que se creó la regla, iniciemos sesión como un usuario sin privilegios e intentemos acceder a /etc/passwd archivo.
$ grep "someinformation" /etc/passwd
$ vim /etc/passwd
Los dos comandos anteriores fueron realizados por un usuario local llamado 'ubuntu' y se espera que esos eventos se registren en /var/log/audit/audit.log archivo.
¿Cómo encontrar quién cambió o accedió a /etc/passwd?
Usaremos ausearch comando:
# ausearch -f /etc/passwd -i
type=PROCTITLE msg=audit(08/05/2016 11:56:10.088:72) : proctitle=grep --color=auto henry /etc/passwd type=PATH msg=audit(08/05/2016 11:56:10.088:72) : item=0 name=/etc/passwd inode=56913 dev=fd:01 mode=file,644 ouid=root ogid=root rdev=00:00 nametype=NORMAL type=CWD msg=audit(08/05/2016 11:56:10.088:72) : cwd=/home/ubuntu type=SYSCALL msg=audit(08/05/2016 11:56:10.088:72) : arch=x86_64 syscall=openat success=yes exit=3 a0=0xffffffffffffff9c a1=0x7ffebf6cb887 a2=O_RDONLY|O_NOCT TY a3=0x0 items=1 ppid=14098 pid=14992 auid=ubuntu uid=ubuntu gid=ubuntu euid=ubuntu suid=ubuntu fsuid=ubuntu egid=ubuntu sgid=ubuntu fsgid=ubuntu tty=pts0 s es=1302 comm=grep exe=/bin/grep key=audit-passwd ---- type=PROCTITLE msg=audit(08/05/2016 11:56:12.028:74) : proctitle=vim /etc/passwd type=PATH msg=audit(08/05/2016 11:56:12.028:74) : item=0 name=/etc/passwd inode=56913 dev=fd:01 mode=file,644 ouid=root ogid=root rdev=00:00 nametype=NORMAL type=CWD msg=audit(08/05/2016 11:56:12.028:74) : cwd=/home/ubuntu type=SYSCALL msg=audit(08/05/2016 11:56:12.028:74) : arch=x86_64 syscall=open success=yes exit=3 a0=0x556072132500 a1=O_RDONLY a2=0x0 a3=0x556072347f50 items =1 ppid=14098 pid=14993 auid=ubuntu uid=ubuntu gid=ubuntu euid=ubuntu suid=ubuntu fsuid=ubuntu egid=ubuntu sgid=ubuntu fsgid=ubuntu tty=pts0 ses=1302 comm=vi m exe=/usr/bin/vim.basic key=audit-passwd
El resultado del registro anterior indica que el usuario llamó a ubuntu había accedido al archivo /etc/passwd usando comandos grep y vim . De forma predeterminada, la salida del registro utilizará UID y GID, pero la opción '-i ‘ asignará el uid y el gid a los nombres correspondientes (nombre de usuario legible por humanos y nombre de grupo).
¿Cómo crear un watch para monitorear los cambios de un usuario en particular?
#auditctl -w /usr/local/test -p wa -F uid=1001 -k audit-temp
Busque eventos en el registro:
#ausearch -ua 1001 -i
El comando anterior enumerará todos los eventos activados por el ID de usuario 1001 .
Creando reglas permanentes
Nota :Las reglas creadas usando auditctl son temporales y estarán activos hasta que auditd se reinicia el demonio. Los siguientes comandos explican este escenario.
# auditctl -l -w /etc/passwd -p rwa -k audit-passwd -a always,exit -S all -F dir=/etc -F perm=wa -F uid=1001 -F key=audit-temp -a always,exit -S all -F dir=/usr/local/test -F perm=wa -F uid=1001 -F key=audit
El comando anterior imprime la lista de reglas activas. Ahora intentemos reiniciar auditd demonio.
# /etc/init.d/auditd restart [ ok ] Restarting auditd (via systemctl): auditd.service.
Vuelva a comprobar las reglas activas.
# auditctl -l No rules
Una vez que la auditoría se reinicia el demonio, todas las reglas que se crearon usando auditctl el comando será eliminado (porque eran temporales). Si ha estado experimentando con auditctl y desea crear esas reglas de forma permanente, puede editar /etc/audit/audit.rules o cree un nuevo archivo de reglas en /etc/audit/rules.d/ carpeta.
# echo "-D" > /etc/audit/rules.d/new.rules # auditctl -l >> /etc/audit/rules.d/new.rules
El primer comando agrega la acción de eliminar regla antes de agregar el nuevo conjunto de reglas.
¿Cómo generar un informe de auditoría?
Informe resumido:
# aureport Summary Report ====================== Range of time in logs: 08/05/2016 11:45:39.464 - 08/08/2016 06:14:14.328 Selected time for report: 08/05/2016 11:45:39 - 08/08/2016 06:14:14.328 Number of changes in configuration: 7 Number of changes to accounts, groups, or roles: 5 Number of logins: 1 Number of failed logins: 6 Number of authentications: 8 Number of failed authentications: 6 Number of users: 3 Number of terminals: 8 Number of host names: 2 Number of executables: 37 Number of commands: 39 Number of files: 13 Number of AVC's: 0 Number of MAC events: 0 Number of failed syscalls: 12 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: 2 Number of process IDs: 214 Number of events: 1337
El comando anterior imprimirá el informe resumido de todos los eventos registrados.
Imprimir un informe resumido de todos los intentos fallidos de inicio de sesión
# aureport --login --summary -i Login Summary Report ============================ total auid ============================ 6 henry 1 ubuntu
Generar un informe resumido de eventos de archivos ejecutables:
# aureport -x --summary
Genera un informe de todos los archivos de auditoría que se consultan y el rango de tiempo de los eventos que incluyen
# aureport -t Log Time Range Report ===================== /var/log/audit/audit.log: 08/05/2016 11:45:39.464 - 08/08/2016 06:17:01.068
Generar un informe de todos los eventos registrados dentro del intervalo de fechas:
# aureport --start 08/05/2016 00:00:00 --end 08/07/2016 00:00:00
Generar informe desde ausearch salida
# ausearch -k audit-temp | aureport -f -i
¿Cómo eliminar todas las reglas de auditoría?
# auditctl -D
Nota :El comando anterior eliminará todas las reglas activas en la auditd en ejecución demonio. Sin embargo, las reglas permanentes en el archivo /etc/audit/audit.rules se cargarán cada vez que auditd se inicia.
¿Eso es todo auditoría? ¿puede hacer? ¡No! El sistema de auditoría de Linux es capaz de hacer más y lo que se enumera aquí es solo una pequeña parte de este poderoso sistema. Eche un vistazo a las páginas man de auditd , auditoría , ausearch y aureport para más información.