En servidores Linux, la auditoría de seguridad es crucial, especialmente para proteger archivos de configuración críticos contra cambios no autorizados. En este punto, auditd es un potente mecanismo de auditoría proporcionado por el núcleo de Linux. Registra detalladamente cambios de archivos, llamadas al sistema y acciones de usuario. En esta guía, explicaremos paso a paso cómo monitorear cambios de archivos usando auditd.
¿Qué es Auditd y por qué es importante?
auditd es un servicio que recopila y gestiona registros de auditoría en sistemas Linux. Es ideal para monitorear cambios en archivos sensibles como /etc/passwd, /etc/shadow, /etc/ssh/sshd_config. Si un atacante modifica estos archivos, auditd permite detectar el incidente, viendo quién, cuándo y qué cambio realizó. Esto facilita la detección temprana de violaciones de seguridad.
Instalación y configuración inicial
En la mayoría de distribuciones Linux, auditd viene preinstalado. Si no, puede instalarlo con:
sudo apt install auditd audispd-plugins # Para Debian/Ubuntu
sudo yum install audit audit-libs # Para RHEL/CentOS
Después de la instalación, inicie el servicio y habilítelo para que se inicie automáticamente con el sistema:
sudo systemctl enable auditd
sudo systemctl start auditd
Ahora auditd está funcionando. El archivo de configuración principal es /etc/audit/auditd.conf. Allí puede ajustar el tamaño del registro, tiempo de retención, etc.
Reglas para monitoreo de cambios de archivos
Agregue las reglas como archivos con extensión .rules en el directorio /etc/audit/rules.d/. Por ejemplo, para monitorear cambios en /etc/passwd:
sudo nano /etc/audit/rules.d/watch-passwd.rules
Escriba la siguiente regla:
-w /etc/passwd -p wa -k passwd_changes
En esta regla: -w indica el archivo a monitorear, -p wa monitorea escrituras y cambios de atributos (write, attribute), -k es la palabra clave. Similarmente para /etc/shadow:
-w /etc/shadow -p wa -k shadow_changes
Para cargar las reglas, reinicie auditd:
sudo systemctl restart auditd
También puede monitorear un directorio específico. Por ejemplo:
-w /etc/ssh -p wa -k ssh_config_changes
Visualización y análisis de registros
Los registros se almacenan en /var/log/audit/audit.log. Puede consultarlos con las herramientas ausearch y aureport. Por ejemplo, para ver registros con la palabra clave passwd_changes:
sudo ausearch -k passwd_changes
La salida es muy detallada; cada evento incluye tipo (syscall), usuario (uid), proceso (pid), marca de tiempo y resultado (success/fail). Una línea de ejemplo:
type=SYSCALL msg=audit(1609459200.123:456): arch=c000003e syscall=2 success=yes exit=0 ... uid=1000 comm="vim" ... key="passwd_changes"
Esto indica que el usuario UID 1000 abrió el archivo con vim. Con aureport puede obtener resúmenes:
sudo aureport -k -i
Escenarios de ejemplo
1. Cambio no autorizado en configuración SSH: Si un atacante modifica /etc/ssh/sshd_config para permitir inicio de sesión root, auditd registrará el cambio inmediatamente. Puede investigar con ausearch -k ssh_config_changes.
2. Monitoreo de binarios del sistema: También se pueden monitorear rutas críticas como /usr/bin o /usr/sbin. Por ejemplo:
-w /usr/bin -p wa -k binary_changes
Pero esto puede generar muchos registros; por lo tanto, es más sensato monitorear solo archivos específicos.
3. Rotación y retención de registros: En auditd.conf, configure max_log_file y num_logs para ajustar el tamaño y número de archivos de registro. Por ejemplo, para mantener 5 archivos de 50 MB:
max_log_file = 50
num_logs = 5
Conclusión
auditd es una herramienta indispensable para monitorear cambios de archivos en servidores Linux. Con reglas adecuadas, puede detectar ataques tempranamente y proporcionar evidencia para análisis forense. Recuerde que los registros deben revisarse regularmente. Puede hacer el proceso más eficiente configurando sistemas de alerta automática (por ejemplo, redirigiendo a syslog con audispd). En HostingServer.com.tr recomendamos el uso de auditd para aumentar la seguridad de su servidor.