La auditoría del sistema es una tarea muy importante que debe ser parte de cada servidor. Nos permite auditar detalles minuciosos relacionados con lo que sucede exactamente dentro del sistema. La mayoría de los administradores de sistemas pueden conocer las funcionalidades básicas de auditoría, como buscar en el archivo /var/log/secure para los intentos de inicio de sesión, pero cuando se trata de auditorías de bajo nivel, aquí es donde se debe hacer el trabajo.
Algunos de los casos en los que la auditoría del sistema ayuda son:
- Vigilancia del acceso a archivos :Queremos tener un informe sobre qué archivos o directorios dentro de su servidor han sido accedidos o modificados y en qué momento y por qué usuario. Este es un aspecto importante específicamente si queremos detectar el acceso a archivos importantes dentro de nuestros servidores o si queremos saber quién hizo el cambio que impactó el entorno de producción.
- Monitoreo de llamadas del sistema :Cada comando que escribimos en la parte posterior hace una llamada del sistema al kernel.
Supervisión de /etc/shadow y /etc/passwd en busca de cambios
1. Para monitorear los archivos /etc/shadow y /etc/passwd, agregue las siguientes 2 reglas en el archivo de reglas auditd /etc/audit/rules.d/audit.rule.
# vi /etc/audit/rules.d/audit.rule -w /etc/shadow -p wa -k shadow -w /etc/passwd -p wa -k passwdEn CentOS/RHEL 6, el archivo de configuración es /etc/audit/audit.rules en lugar de /etc/audit/rules.d/audit.rules.
El comando anterior representa lo siguiente:
-w path-to-file -p permissions -k keyname
donde el permiso es cualquiera de los siguientes:
r – lectura del archivo
w – escribir en el archivo
x – ejecutar el archivo
a – cambio en el atributo del archivo (propiedad/permisos)
2. Reinicie el servicio auditd después de definir las 2 reglas anteriores.
# service auditd restartNota :No use el comando "systemctl" para administrar el servicio auditado en CentOS/RHEL. En su lugar, utilice el comando "servicio" heredado. El motivo de esta limitación es que el demonio de auditoría tiene que registrar cualquier cambio en la pista de auditoría, incluido el inicio y la detención del mismo demonio de auditoría. Systemctl usa dbus para hablar con el sistema, lo que oculta quién emitió el comando y parece que lo hizo root.
3. Use el comando "auditctl -l" para verificar las reglas que ha establecido.
# auditctl -l -w /etc/shadow -p wa -k shadow -w /etc/passwd -p wa -k passwd
Verificar
El archivo de registro /var/log/audit/audit.log registra todos los mensajes de registro relacionados con auditd. Puede comprobar este archivo de registro para ver si alguien ha cambiado los archivos shadow y passwd. Este archivo puede ser largo y el sistema puede generar muchos registros en este archivo. Para filtrar las reglas que nos interesan, podemos usar el comando "ausearch" con la clave que especificamos al definir las reglas. Por ejemplo:
# ausearch -k shadow ---- time->Sat Jun 16 06:23:07 2018 type=PROCTITLE msg=audit(1529130187.897:595): proctitle=7061737377640074657374 type=PATH msg=audit(1529130187.897:595): item=4 name="/etc/shadow" inode=551699 dev=ca:01 mode=0100664 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:shadow_t:s0 objtype=CREATE cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=PATH msg=audit(1529130187.897:595): item=3 name="/etc/shadow" inode=636309 dev=ca:01 mode=0100664 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:shadow_t:s0 objtype=DELETE cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=PATH msg=audit(1529130187.897:595): item=2 name="/etc/nshadow" inode=551699 dev=ca:01 mode=0100664 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:shadow_t:s0 objtype=DELETE cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=PATH msg=audit(1529130187.897:595): item=1 name="/etc/" inode=132 dev=ca:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 objtype=PARENT cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=PATH msg=audit(1529130187.897:595): item=0 name="/etc/" inode=132 dev=ca:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 objtype=PARENT cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=CWD msg=audit(1529130187.897:595): cwd="/root" type=SYSCALL msg=audit(1529130187.897:595): arch=c000003e syscall=82 success=yes exit=0 a0=7f443258a332 a1=7f443258a2bc a2=7f443a3517b8 a3=0 items=5 ppid=4320 pid=4486 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="passwd" exe="/usr/bin/passwd" subj=unconfined_u:unconfined_r:passwd_t:s0-s0:c0.c1023 key="shadow"
De manera similar, para el archivo /etc/passwd, podemos filtrar los registros usando:
# ausearch -k passwd time->Sat Jun 16 06:22:56 2018 type=PROCTITLE msg=audit(1529130176.633:589): proctitle=757365726164640074657374 type=PATH msg=audit(1529130176.633:589): item=4 name="/etc/passwd" inode=638208 dev=ca:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:passwd_file_t:s0 objtype=CREATE cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=PATH msg=audit(1529130176.633:589): item=3 name="/etc/passwd" inode=636309 dev=ca:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:passwd_file_t:s0 objtype=DELETE cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=PATH msg=audit(1529130176.633:589): item=2 name="/etc/passwd+" inode=638208 dev=ca:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:passwd_file_t:s0 objtype=DELETE cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=PATH msg=audit(1529130176.633:589): item=1 name="/etc/" inode=132 dev=ca:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 objtype=PARENT cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=PATH msg=audit(1529130176.633:589): item=0 name="/etc/" inode=132 dev=ca:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 objtype=PARENT cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=CWD msg=audit(1529130176.633:589): cwd="/root" type=SYSCALL msg=audit(1529130176.633:589): arch=c000003e syscall=82 success=yes exit=0 a0=7ffc0729ae70 a1=55f815c79ce0 a2=7ffc0729ade0 a3=55f815ce21a0 items=5 ppid=4320 pid=4481 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="useradd" exe="/usr/sbin/useradd" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="passwd"Comprender la auditoría del sistema con auditd