Supongo que a la mayoría de los administradores de sistemas GNU/Linux siempre les gustará saber qué está pasando en su sistema y saber qué persona hace cada cosa. Si bien ya hemos hablado de algún programa que servía para loguear los comandos que se ejecutaban en el sistema, también hay otros programas, como AIDE (del que prometo hablar pronto) que también indican qué ficheros se han modificado. Sin embargo, hoy vamos a hablar de audit, un pequeño daemon para nuestro sistema que registrará el usuario que hace el cambio, cómo lo hace, qué tipo de cambio, etc. Como podéis observar un daemon muy necesario para el sistema.
Para comenzar, instalamos el software necesario. Está disponible en los repositorios de las principales distribuciones.
shell> apt-get install auditd
Una vez instalado todo lo necesario, simplemente queda configurarlo antes de arrancar el servicio. Para ello debemos de tocar dos ficheros, el auditd.conf y el audit.rules, ambos en /etc/audit. El primero es el fichero general de configuración del daemon,
# This file controls the configuration of the audit daemon log_file = /var/log/audit/audit.log log_format = RAW log_group = root priority_boost = 4 flush = INCREMENTAL freq = 20 num_logs = 4 disp_qos = lossy dispatcher = /sbin/audispd name_format = NONE ##name = mydomain max_log_file = 5 max_log_file_action = ROTATE space_left = 75 space_left_action = SYSLOG action_mail_acct = root admin_space_left = 50 admin_space_left_action = SUSPEND disk_full_action = SUSPEND disk_error_action = SUSPEND ##tcp_listen_port = tcp_listen_queue = 5 tcp_max_per_addr = 1 ##tcp_client_ports = 1024-65535 tcp_client_max_idle = 0 enable_krb5 = no krb5_principal = auditd ##krb5_key_file = /etc/audit/audit.key
Y el segundo, el fichero de reglas, donde indicamos el tipo de monitorización que deseamos tener sobre cada fichero y también reglas generales para todos los ficheros.
# This file contains the auditctl rules that are loaded # whenever the audit daemon is started via the initscripts. # The rules are simply the parameters that would be passed # to auditctl. # Increase the buffers to survive stress events. # Make this bigger for busy systems -b 320 # User administration -w /etc/group -p wa -k SYSTEM_group -w /etc/passwd -p wa -k SYSTEM_passwd -w /etc/login.defs -p wa -k SYSTEM_login.defs -w /etc/securetty -p wa -k SYSTEM_securetty -w /etc/sysconfig/authconfig -p wa -k SYSTEM_network -w /etc/ssh/sshd_config -p wa -k SYSTEM_sshd
Las últimas son las principales y más importantes y el significado es el siguiente,
- -w
es que registre cuando se modifica - -p wa
Registra las modificaciones del sistema - -k
Setea el filtro cuando busquemos los audit log deberemos filtrar por esta file

Ahora únicamente nos queda por arrancar el daemon.
shell> service auditd start
Tras ello, las operaciones que afecten a los ficheros indicados quedarán registradas y las podremos buscar y saber qué ha pasado gracias al comando ausearch. Por ejemplo, veamos lo que nos dice acerca del fichero /etc/ssh/sshd_config.
shell> ausearch -f /etc/ssh/sshd_config time->Wed Nov 6 19:41:22 2012 type=PATH msg=audit(1309963282.841:81): item=0 name="/etc/ssh/sshd_config" inode=693347 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 type=CWD msg=audit(1309963282.841:81): cwd="/root" type=SYSCALL msg=audit(1309963282.841:81): arch=40000003 syscall=226 success=yes exit=0 a0=8b14540 a1=1a5b0f a2=8b78430 a3=1c items=1 ppid=2960 pid=2989 auid=500 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=tty2 ses=1 comm="vim" exe="/usr/bin/vim" key="SYSTEM_sshd"
Como indicamos en negrita, vemos el uid del usuario que hizo la modificación (en este caso uid=0, root) y que empleó vim para hacer dicha modificación. También vemos la key con la que quedó registrado, para búsquedas más rápidas.
Para más información se pude consultar el man de ausearch y de auditctl.
La entrada Comandos interesantes, audit la puedes leer en Puppet Linux.
No hay comentarios :
Publicar un comentario