Instala el paquete principal auditd y los plugins de audispd que extienden sus capacidades de reenvío y filtrado de eventos.
# Actualizar la lista de paquetes sudo apt update # Instalar servidor SSH (requisito del ejercicio) sudo apt install -y openssh-server # Instalar auditd y los plugins de audispd sudo apt install -y auditd audispd-plugins
auditd — el demonio principal del subsistema de auditoría del kernel Linux.audispd-plugins — plugins para reenviar eventos a syslog, afcat, etc.Una vez instalado, auditd debería iniciarse automáticamente. Asegúrate de que esté activo y configurado para arrancar con el sistema.
sudo systemctl enable auditd
sudo systemctl start auditd
active (running) en verde.sudo systemctl status auditd # Salida esperada: ● auditd.service - Security Auditing Service Loaded: loaded (/lib/systemd/system/auditd.service; enabled) Active: active (running) since ...
Active: active (running) confirma que el demonio está funcionando y registrando eventos.Las reglas se guardan en el directorio /etc/audit/rules.d/. Vamos a crear una regla para monitorear el archivo de configuración crítico de SSH.
99- garantiza que se cargue al final, tras otras reglas del sistema.sudo nano /etc/audit/rules.d/99-custom.rules
Pega la siguiente regla dentro del archivo:
# Monitorea lectura, escritura, ejecución o cambio de atributos en sshd_config -w /etc/ssh/sshd_config -p rwxa -k sshd_config_changes
Anatomía de la regla
Ruta del archivo o directorio a monitorear.
El archivo concreto que se audita.
Tipo de operaciones a monitorear.
Todas las operaciones posibles sobre el archivo.
Nombre legible asignado a la regla para buscar sus logs.
Identificador único para filtrar con
ausearch -k.Permisos -p rwxa
lectura del archivo
escritura o modificación
ejecución del archivo
cambio de atributos (chmod, chown…)
-p rw solo registra lecturas y escrituras, sin monitorear ejecuciones ni cambios de atributos.3.2 — Aplicar las Reglas
Tras guardar el archivo de reglas, cárgalas con augenrules para que auditd las active sin necesidad de reiniciar el servicio.
sudo augenrules --load
sudo auditctl -R /etc/audit/audit.rules — cargar reglas manualmente.sudo systemctl restart auditd — reiniciar el servicio.Método recomendado:
augenrules --load es la práctica preferida en sistemas modernos.Probar la regla — Generar y buscar un evento
Genera un evento de lectura (r) sobre el archivo monitoreado y luego búscalo usando la clave que definimos:
# 1. Leer el archivo — dispara la regla (-p r) cat /etc/ssh/sshd_config # 2. Buscar los eventos registrados por la clave sudo ausearch -k sshd_config_changes
ausearch mostrará un bloque de texto con la hora, el usuario (auid=1000), el comando ejecutado (comm="cat") y el archivo accedido, confirmando que la regla está activa.El resultado de sudo ausearch -k sshd_config_changes muestra varios bloques separados por ----. Cada uno corresponde a un evento diferente capturado por la regla:
| Hora aprox. | Tipo de evento | Descripción de la acción |
|---|---|---|
| Tue Nov 4 12:02:06 |
CONFIG_CHANGE | op=add_rule — La regla fue añadida al sistema Auditd por primera vez (cuando ejecutaste augenrules --load). |
| Tue Nov 4 12:04:13 |
SYSCALL — cp | comm="cp" exe="/usr/bin/cp" — El sistema copió o creó una versión del archivo sshd_config, probablemente durante la instalación o actualización de SSH. |
| Tue Nov 4 12:04:13 |
SYSCALL — sshd | comm="sshd" — Múltiples eventos del propio demonio SSH leyendo su configuración al iniciarse o recargarse (syscall=257, success=yes). |
| Tue Nov 4 12:04:56 |
CONFIG_CHANGE | op=remove_rule + op=add_rule — La regla fue temporalmente eliminada y re-añadida. Ocurre cuando ejecutas augenrules --load para actualizar reglas. |
| Tue Nov 4 12:06:35 |
SYSCALL — cat ★ TU PRUEBA | comm="cat" exe="/usr/bin/cat" — El usuario auid=1000 (tú) ejecutó cat para leer /etc/ssh/sshd_config, disparando la regla de monitoreo (-p r). ¡La auditoría funciona correctamente! |
ausearch es la herramienta diseñada para consultar y filtrar este archivo de forma eficiente.sudo ausearch -k sshd_config_changes
sudo ausearch -m USER_AUTH -sv no
USER_AUTH (autenticación de usuario) donde el resultado fue negativo (-sv no = success=no). Útil para detectar intentos de sudo incorrectos o logins fallidos.-k <clave> — filtrar por clave de regla.-m <tipo> — filtrar por tipo de mensaje (USER_AUTH, SYSCALL, CONFIG_CHANGE…).-sv no — mostrar solo eventos con success=no (fallidos).-ui <uid> — filtrar por UID de usuario.-ts today — mostrar solo eventos de hoy.