Auditd es una herramienta de monitoreo extraordinariamente poderosa. Como cualquier persona que lo haya mirado puede dar fe, usabilidad.
Es la principal debilidad. Configurar algo así como auditd requiere una gran cantidad de reflexión detallada sobre exactamente
qué es lo que necesita auditoría en el sistema específico en cuestión. En la pregunta te decidiste por un servidor web.
Como nuestro sistema de ejemplo, lo cual es bueno ya que es específico.
En aras del argumento, supongamos que existe una división formal entre los servidores web test / dev y la producción
servidores web donde los desarrolladores web realizan todo su trabajo en los sistemas de prueba / desarrollo y cambios en la producción
El entorno se realiza en una implementación controlada.
Entonces, al hacer esas suposiciones bastante grandes y al concentrarnos en el sistema de producción, podemos ponernos a trabajar. Mirando la recomendación de auditd en el
punto de referencia CIS para RHEL5 podemos comenzar a desarrollar el siguiente conjunto de reglas sugerido:
-a exit,always -S unlink -S rmdir
-a exit,always -S stime.*
-a exit,always -S setrlimit.*
-w /etc/group -p wa
-w /etc/passwd -p wa
-w /etc/shadow -p wa
-w /etc/sudoers -p wa
-b 1024
-e 2
Esto hará que los registros se escriban cada vez que salgan las llamadas al sistema rmdir, desvincular, stime o setrlimit. Esto debería
Háganos saber si alguien intenta eliminar archivos o jigger con los tiempos. También configuramos relojes de archivos específicos en el
Archivos que definen grupos, usuarios, contraseñas y acceso sudo. En lugar de mirar las llamadas del sistema para cada una de ellas
el registro de auditoría se escribirá cada vez que uno de esos archivos sea:
- abierto con los modos O_WRONLY o O_RDWR
- un atributo ha cambiado
Ya que asumimos que estamos hablando de un servidor web de producción, recomendaría agregar la línea:
-w /var/www -p wa
Esto observará recursivamente todos los archivos bajo el árbol de directorios /var/www
.
Ahora podemos ver el motivo de la suposición de "entorno controlado" que se hizo anteriormente. Entre monitorear todos los archivos en
La raíz web, así como todos los eventos de desvinculación o rmdir, podrían ser prohibitivamente ruidosos en un entorno de desarrollo. Si
podemos anticipar cambios en el sistema de archivos, como durante las ventanas de mantenimiento o los eventos de implementación, podemos filtrar de manera más razonable
este ruido.
Combinando todo esto en un solo archivo coherente, queremos que se vea como /etc/audit/audit.rules
# 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.
# First rule - delete all
-D
# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 1024
-a exit,always -S unlink -S rmdir
-a exit,always -S stime.*
-a exit,always -S setrlimit.*
-w /var/www -p wa
-w /etc/group -p wa
-w /etc/passwd -p wa
-w /etc/shadow -p wa
-w /etc/sudoers -p wa
# Disable adding any additional rules - note that adding *new* rules will require a reboot
-e 2