Logs de seguridad: /var/log/auth.log, last, auditd

Introducción

Monitorizar los logs de seguridad es esencial para detectar intrusiones, auditar accesos y cumplir con requisitos de conformidad. Linux registra los eventos de autenticación, escalada de privilegios y actividad de usuarios en varios ficheros y en el journal.

/var/log/auth.log y /var/log/secure

El fichero de autenticación varía según la distribución:

  • Debian/Ubuntu: /var/log/auth.log
  • Red Hat/CentOS/Fedora: /var/log/secure
  • Sistemas con systemd puro: journalctl -u ssh (sin fichero en disco)

# Seguir el log en tiempo real
tail -f /var/log/auth.log

# Ver con journalctl
journalctl -u ssh -f
journalctl -u sshd --since "2025-05-09 00:00:00"

# Buscar intentos fallidos de login
grep "Failed password" /var/log/auth.log
grep "Invalid user" /var/log/auth.log

# Buscar logins exitosos
grep "Accepted" /var/log/auth.log
grep "session opened" /var/log/auth.log

# Contar intentos fallidos por IP (top 10 atacantes)
grep "Failed password" /var/log/auth.log \
    | awk '{print $(NF-3)}' \
    | sort | uniq -c | sort -rn | head -10

# Buscar uso de sudo
grep "sudo" /var/log/auth.log
grep "COMMAND" /var/log/auth.log     # comandos ejecutados con sudo

# Buscar cambios de contraseña
grep "passwd" /var/log/auth.log

# Rotación de logs (gestionada por logrotate)
ls /var/log/auth.log*
# auth.log  auth.log.1  auth.log.2.gz  auth.log.3.gz ...
          

last, lastb, who, w — Historial de sesiones


# last — historial de logins (lee /var/log/wtmp)
last
last -n 20            # últimas 20 entradas
last usuario          # sesiones de un usuario concreto
last reboot           # historial de reinicios
last -F               # mostrar fechas completas con hora

# lastb — intentos fallidos de login (lee /var/log/btmp, requiere root)
lastb
lastb -n 20
lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head   # IPs más activas

# lastlog — último login de cada usuario del sistema
lastlog
lastlog -u usuario    # solo un usuario

# who — usuarios conectados ahora mismo
who
who -a                # información extendida

# w — usuarios conectados y qué están haciendo
w
w usuario             # solo un usuario

# users — lista compacta de usuarios conectados
users
          

auditd — Sistema de auditoría del kernel

auditd registra eventos a nivel de kernel: accesos a ficheros, llamadas al sistema, cambios de privilegios, ejecución de comandos. Es obligatorio en entornos con requisitos de conformidad (PCI-DSS, SOX, CIS Benchmarks).


# Instalación
apt install auditd audispd-plugins   # Debian/Ubuntu
dnf install audit                    # Red Hat/CentOS

# Habilitar
systemctl enable --now auditd

# Log de auditoría
/var/log/audit/audit.log

# Configuración
/etc/audit/auditd.conf
/etc/audit/rules.d/audit.rules       # reglas de auditoría
          

auditctl — Gestionar reglas en tiempo real:


# Ver reglas activas
auditctl -l

# Auditar accesos a un fichero sensible
auditctl -w /etc/passwd -p wa -k cambios_passwd
# -w: fichero a vigilar
# -p wa: permisos a auditar (w=escritura, a=atributos, r=lectura, x=ejecución)
# -k: etiqueta para buscar en los logs

# Auditar el directorio /etc/ssh
auditctl -w /etc/ssh -p wa -k config_ssh

# Auditar ejecución de comandos por un usuario
auditctl -a always,exit -F arch=b64 -F uid=1001 -S execve -k usuario_1001

# Hacer las reglas persistentes (fichero de reglas)
# /etc/audit/rules.d/audit.rules
-w /etc/passwd -p wa -k cambios_passwd
-w /etc/shadow -p wa -k cambios_shadow
-w /etc/sudoers -p wa -k cambios_sudoers
-w /etc/ssh/sshd_config -p wa -k config_ssh
          

ausearch — Buscar en los logs de auditoría:


# Buscar por etiqueta (key)
ausearch -k cambios_passwd
ausearch -k config_ssh

# Buscar por usuario
ausearch -ua 1001         # por UID
ausearch -ua usuario      # por nombre

# Buscar por tipo de evento
ausearch -m USER_LOGIN
ausearch -m EXECVE

# Buscar en un rango de tiempo
ausearch --start 05/09/2025 08:00:00 --end 05/09/2025 18:00:00

# Formato interpretable
ausearch -k cambios_passwd -i    # -i: interpretar UIDs como nombres
          

aureport — Informes de auditoría:


# Resumen general
aureport

# Informe de intentos fallidos de autenticación
aureport --auth --failed

# Informe de comandos ejecutados
aureport --exec

# Informe de ficheros accedidos
aureport --file

# Informe de usuarios
aureport --user

# Últimas 100 entradas de eventos de login
aureport -au -i --failed
          

Patrones de análisis habituales


# Detectar escaneo de puertos SSH (muchos "Invalid user" de la misma IP)
grep "Invalid user" /var/log/auth.log \
    | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn

# Ver si root ha conseguido conectarse por SSH
grep "Accepted.*root" /var/log/auth.log

# Detectar escalada de privilegios fallida
grep "authentication failure.*sudo" /var/log/auth.log

# Listar comandos ejecutados con sudo hoy
grep "$(date '+%b %e')" /var/log/auth.log | grep "COMMAND"

# Verificar si hay usuarios conectados con sesiones antiguas
w | awk 'NR>2 {print $1, $5}'   # usuario y tiempo idle

# Resumen rápido del estado de seguridad
echo "=== Logins exitosos ===" && grep "Accepted" /var/log/auth.log | tail -5
echo "=== Intentos fallidos ===" && grep "Failed" /var/log/auth.log | wc -l
echo "=== IPs bloqueadas por fail2ban ===" && fail2ban-client status sshd 2>/dev/null
          

Revisar /var/log/auth.log o journalctl -u ssh regularmente, automatizar el análisis con scripts y configurar auditd en sistemas que requieran trazabilidad completa de acciones de usuario.

CUPS y arquitectura de impresión en Linux

Índice de la sección

Índice del curso