Mejora la Ciberseguridad de tus Sistemas Linux con Audit

Mejora la Ciberseguridad de tus Sistemas Linux con Audit

por Raúl Unzué

Ciberseguridad: Audit en Linux

Cuando hablamos de Ciberseguridad en Linux, solemos pensar en firewalls, permisos de usuarios o configuraciones de red. Todo eso está muy bien, pero hay una pieza que mucha gente olvida, saber exactamente qué pasa en el sistema. Ahí entra en juego Audit, un servicio que viene integrado en Linux y que actúa como esa “caja negra” que registra absolutamente todo lo que ocurre.

¿Quién intentó leer /etc/shadow? ¿Qué usuario borró un archivo crítico? ¿Qué proceso está accediendo a un socket extraño? Con Audit puedes responder a esas preguntas sin tener que adivinar. Y ojo, no se trata solo de seguridad, también sirve para cumplimiento (por ejemplo, normativas como PCI-DSS, HIPAA o ISO 27001 lo exigen).

En esta entrada vamos a ver de manera práctica qué aporta este servicio, cómo se usa en el día a día y qué pasos seguir para implementarlo sin complicarse demasiado.

¿Qué aporta Linux Audit?

  • Visibilidad total: monitoriza accesos, modificaciones y ejecuciones.
  • Rastreo de usuarios: identifica qué hizo cada cuenta, incluso root.
  • Cumplimiento normativo: es un requisito en muchos marcos de seguridad.
  • Investigación de incidentes: cuando algo falla, tienes pruebas claras.

Instalar y habilitar Auditd

Para implementar el servicio Auditd en un sistema Linux, usaremos los siguientes comandos:

Debian/Ubuntu

sudo apt update

sudo apt install -y auditd audispd-plugins

Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 1

sudo systemctl enable --now auditd

Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 2

## OPCIONAL (Añade parámetros al kernel). Editas "/etc/default/grub" :

GRUB_CMDLINE_LINUX="audit=1 audit_backlog_limit=8192"

Y lanzas un "sudo update-grub"

Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 3

RHEL/Alma/Rocky

sudo dnf install -y audit

sudo systemctl enable --now auditd

Comprueba estado y versión:

sudo auditctl -s

sudo auditctl -v

## OPCIONAL:

sudo grubby --update-kernel=ALL --args="audit=1 audit_backlog_limit=8192"   # RHEL/Alma/Rocky

 

Reglas base de Auditd

Para evitar mucho "ruido", es recomendable crear reglas persistentes en "/etc/audit/rules.d/". Usaremos claves (-k) para buscar luego fácil con ausearch.

  • Recomendación: en máquinas x86_64 conviene duplicar reglas de syscalls para arch=b64 y arch=b32 si quieres cobertura total. Aquí meto b64 (lo común). Si quieres full, duplica con -F arch=b32.
  1. Crea un fichero de reglas:

     

    sudo tee /etc/audit/rules.d/10-baseline.rules >/dev/null <<'EOF'
     ## Limpia reglas en memoria antes de cargar (solo en carga con auditctl)-D
     ## Monitoreo de cambios de identidad y archivos críticos
     -w /etc/passwd -p wa -k identity-w /etc/shadow -p r -k shadow_read
     -w /etc/group -p wa -k identity-w /etc/gshadow -p wa -k identity
     -w /etc/sudoers -p wa -k sudoers-w /etc/ssh/sshd_config -p wa -k ssh_config
     ## Directorios sensibles (recursivo)-w /etc/ -p wa -k etc_changes
     -w /var/log/ -p wa -k logs_watch
     ## Ejecución de binarios privilegiados o sensibles
     -w /usr/bin/sudo -p x -k sudo_exec-w /bin/su -p x -k su_exec
     ## Registro de toda ejecución de comandos por usuarios humanos (UID>=1000)
     -a always,exit -F arch=b64 -S execve -F auid>=1000 -F auid!=-1 -k exec_user
     ## Cambios de red/hostname
     -a always,exit -F arch=b64 -S sethostname -S setdomainname -k net_hostname
     ## Cambios de fecha/hora (muy sensible para Kerberos, firmas, etc.)
     -a always,exit -F arch=b64 -S adjtimex -S settimeofday -S clock_settime -k time_change
     -w /etc/localtime -p wa -k time_change## Carga/descarga de módulos del kernel
     -a always,exit -F arch=b64 -S init_module -S delete_module -k modules
     ## Opcional: proteger reglas una vez cargadas (immutable)
     # ¡Actívalo solo cuando tengas las reglas maduras! Requiere reboot para cambiar.
     #-e 2EOF
  2. Carga las reglas persistentes:

    sudo augenrules --load

    Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 4

  3. Verifica reglas en memoria:

    sudo auditctl -l

    Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 5

Simulación de eventos a Auditar en Linux

Vamos a crear un usuario de pruebas, ejecutar acciones comunes y provocar eventos.

  • Crear usuario de pruebas en Linux:
    • sudo useradd -m -s /bin/bash alice
    • echo "alice:MiPassTemporal123" | sudo chpasswd

      Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 6

  • Intento leer /etc/shadow con el usuario alice (no me debería dejar):
    • sudo -u alice -i -- bash -lc 'cat /etc/shadow >/dev/null 2>&1 || true'

      Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 7

    • Aunque falle, el intento de lectura queda registrado por -w /etc/shadow -p r -k shadow_read.
      • # Intentos de leer /etc/shadow
      • ausearch -k shadow_read -i

        Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 8

  • Ejecutar comandos que intentan modificar "/etc":
    • sudo -u alice -i -- bash -lc 'id; whoami; echo hola >/dev/null'
    • sudo -u alice -i -- bash -lc 'sudo -l >/dev/null 2>&1 || true' 

      Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 9

    • Aunque no sea un usuario del grupo "sudoer", la ejecución es registrada:
      • ausearch -k etc_changes -i
      • ausearch -k identity -i
    • Puedes probar a lanzar modificación como root, la cual generará un "write (wa)"
      • echo "# linea de prueba $(date)" | sudo tee -a /etc/ssh/sshd_config >/dev/null
      • Cambio el nombre del host: "sudo hostnamectl set-hostname demo-audit-$(date +%H%M)"

Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 10

  • Cambiar la hora del sistema: "sudo date -s "2025-08-17 12:34:56" 2>/dev/null || true" o "timedatectl"

    Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 11

  • Buscar ejecuciones de usuarios:
    • ausearch -k exec_user -i | less
  • Buscar ejecuciones de sudo y su:
    • sudo ausearch -k sudo_exec -i
    • sudo ausearch -k su_exec -i
    • Usa -ts today, -ts recent, -ts 10:00:00 -te 12:00:00 para acotar tiempo:
      • sudo ausearch -k exec_user -ts recent -i
  • Búsqueda por fichero o usuario:
    • sudo ausearch -f /etc/ssh/sshd_config -i
    • # Actividad del usuario alice (auid = ID al autenticar)
      • ALICE_UID=$(id -u alice)
      • sudo ausearch -ua "$ALICE_UID" -ts today -i

Informes rápidos con Audit

Podéis gestionar informes rápidos para ciertos eventos:

  • Resumen de ficheros 
    • sudo aureport -f --summary

      Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 12

  • Resumen de ejecuciones
    • sudo aureport -x --summary

      Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 13

  • Autenticaciones (logins)
    • sudo aureport -au

      Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 14

  • Por usuario
    • sudo aureport -u

      Geeknetic Mejora la Ciberseguridad de tus Sistemas Linux con Audit 15

Tip: Añade -i a aureport para “humanizar” (resolución de IDs a nombres).

Afinar Logs de Auditd

Para evitar que colapsen un sistema en Producción, puedes mejorar la rotación de logs o cambiar el espacio utilizado según tus necesidades.

Edita /etc/audit/auditd.conf para gestionar rotación y espacio:

log_file = /var/log/audit/audit.log

max_log_file = 200        # tamaño en MB por fichero

num_logs = 10

max_log_file_action = ROTATE

space_left = 1024         # cuando queden 1GB libres

space_left_action = SYSLOG

admin_space_left = 512

admin_space_left_action = SUSPEND

disk_full_action = SUSPEND

disk_error_action = SUSPEND

Aplica:

sudo systemctl reload auditd

  • Ruido: Si te salen toneladas por "execve", filtra demonios con:

-F auid>=1000 -F auid!=-1

Puedes además excluir rutas o procesos muy ruidosos (por ejemplo, agentes EDR, backup, etc.) con reglas -a never,exit -F exe=/ruta/ruidosa.

  • Inmutabilidad: Cuando tengas tus reglas estables, activa al final de la regla (Esto bloquea cambios hasta reinicio. Úsalo en producción cuando esté todo validado):

-e 2

Reglas de oro de la gestión de eventos en Linux

A continuación, os damos algunas pautas para encontrar eventos:

  • Cambios de identidad: /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow
  • Ejecuciones de usuarios humanos: execve con auid>=1000
  • Archivos de configuración: /etc/, /etc/ssh/sshd_config, /etc/sudoers
  • Cambios de tiempo/hostname: time_change, net_hostname
  • Módulos del kernel: init_module, delete_module

Control total de tus Linux con Audit

Con auditd conviertes tu Linux en un sistema auditado de verdad. Puedes revisar quién hizo qué, cuándo y cómo, sin especular. El truco está en elegir bien qué vigilar (identidad, configuración, ejecuciones) y en buscar por claves (-k) para investigar rápido. En minutos puedes reproducir un incidente, simulas un acceso, tiras de ausearch y tienes la película completa, con protagonistas, guion y desenlace.

Si lo integras con rotación de logs y reglas afinadas, auditd no molesta ni se come el disco, y te dará justo lo que necesitas para responder auditorías, investigar incidentes o cumplir requisitos de seguridad. Y cuando quieras “sellar” la política, lo inmutas y a dormir tranquilo.

Fin del Artículo. ¡Cuéntanos algo en los Comentarios!

Redactor del Artículo: Raúl Unzué

Raúl Unzué

Soy un apasionado de la virtualización con más de 20 años de experiencia, especializado en soluciones como VMware(premio vExpert y vExpert Pro desde 2013), Proxmox e Hyper-V. Durante mi carrera, he ayudado a empresas a optimizar sus infraestructuras TI mientras comparto mis conocimientos como redactor IT. Mi objetivo es traducir lo complejo en algo práctico y accesible, combinando teoría con experiencia real. Si te interesa la virtualización, las herramientas TI o simplemente aprender algo nuevo, espero ayudarte con mis artículos.

Expert P Series Banner