¿Quién Ha Tocado Mis Cosas? Configuración de Monitoreo Completo con Auditd en tu VPS
¡Hola, compañero de servidor!
Montar un VPS es genial, ¿verdad? Tienes tu pedacito de internet corriendo. Pero si algo he aprendido es que tener un servidor ahí fuera, sin vigilancia, es como dejar la puerta de casa abierta... Tarde o temprano, puede pasar algo.
Por eso, la monitorización no es solo para ver si el servidor está vivo, sino para saber quién está haciendo qué dentro de él. ¿Quién cambió ese permiso? ¿Esa carpeta importante se modificó sola? ¡Necesitamos un chivato!
Y ahí es donde entra nuestro amigo, Auditd.
¿Qué demonios es Auditd?
Piensa en Auditd como el detective privado de tu Linux.
No es un antivirus, ni un firewall; es un subsistema que está siempre, siempre, siempre atento. Su trabajo es registrar en tiempo real absolutamente todo: cambios de permisos, la ejecución de comandos (especialmente los peligrosos, los que se ejecutan como root), o si alguien toca archivos críticos del sistema.
Es la herramienta perfecta para darle un subidón a tu seguridad, tener esa trazabilidad y, sobre todo, dormir tranquilo sabiendo que si pasa algo, sabrás exactamente cuándo y cómo ocurrió.
Manos a la Obra: Poniendo el Detective a Trabajar
Aquí te dejo el paso a paso. Es sencillo, ¡pero hay que ser muy preciso!
1. La Instalación (El Ritual Inicial)
Lo primero es instalar al detective y sus herramientas. En un sistema basado en Debian/Ubuntu, es así de fácil:
sudo apt update && sudo apt install auditd audispd-plugins -y
2. ¿Está Vivo? (Verificación)
Una vez instalado, hay que asegurarse de que el servicio está funcionando. ¡Siempre comprueba antes de seguir!
sudo systemctl status auditd
Si ves un active (running), ¡perfecto! Ya está al acecho.
3. Las Reglas del Juego (El Corazón de Auditd)
Ahora viene lo interesante. Tenemos que decirle a Auditd qué queremos que vigile. Vamos a crear un archivo de reglas súper importante. Yo lo llamo vps-monitoring.rules, pero puedes llamarlo como quieras:
sudo nano /etc/audit/rules.d/vps-monitoring.rules
Y pegamos estas reglas. Tranquilo, no son tan complejas como parecen, son etiquetas para que la búsqueda luego sea fácil:
# Monitoreamos Cambios de Permisos (chmod)
-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -k perms_changes
-a always,exit -F arch=b32 -S chmod,fchmod,fchmodat -k perms_changes
# Monitoreamos Cambios de Dueño (chown, lchown)
-a always,exit -F arch=b64 -S chown,fchown,lchown,fchownat -k owner_changes
-a always,exit -F arch=b32 -S chown,fchown,lchown,fchownat -k owner_changes
# ¡Ojo! Comandos ejecutados como el todopoderoso root
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands
-a always,exit -F arch=b32 -S execve -F euid=0 -k root_commands
# Directorios Críticos: si alguien toca /etc o /boot, ¡alarma!
-w /etc -p wa -k system_config_changes
-w /boot -p wa -k boot_changes
Nota Rápida: Las reglas conb64yb32son para asegurarnos de que funcionan tanto en arquitecturas de 64 bits como de 32 bits. ¡Así no nos complicamos la vida!
Una vez guardado, cargamos estas reglas reiniciando el servicio:
sudo systemctl restart auditd
4. Manteniendo el Orden (Rotación de Logs)
El detective Auditd es muy eficiente, ¡pero también genera muchos logs! Si no los limpiamos, pueden llenarte el disco duro. Tenemos que ser buenos administradores.
Para eso usamos logrotate, que se encarga de rotar, comprimir y borrar los logs viejos de forma automática. Crea este archivo:
sudo nano /etc/logrotate.d/audit
Y añade esta configuración. Estamos diciendo que los rote diariamente (daily), que guarde los de los últimos 30 días (rotate 30), y que los comprima:
/var/log/audit/audit.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 0600 root root
postrotate
/sbin/service auditd reload > /dev/null 2>&1 || true
endscript
}
Esto es lo que hace un administrador de sistemas de verdad: automatizar la limpieza.
¿Y Ahora Qué? (Reportando los Eventos)
¡Listo! Ya tienes el monitoreo corriendo. ¿Y cómo ves lo que ha grabado el detective?
Los logs están en /var/log/audit/audit.log, pero son ilegibles. Para buscar, usa el comando ausearch. Por ejemplo, si quieres ver quién ha ejecutado comandos como root:
sudo ausearch -k root_commands
O si quieres ver los cambios de permisos:
sudo ausearch -k perms_changes
¡Ahora tienes trazabilidad completa! Ya no te preguntarás quién cambió algo, sino cuándo y cómo. ¡Es una maravina para la seguridad de tu VPS!