RegistrosActividad del usuarioRed
auth.log, secure y syslog: logs de texto de Linux
Logs de texto de rsyslog en Linux: auth.log y syslog en Debian/Ubuntu, secure y messages en RHEL, con las trampas de rotación y formato de fecha.
- Ubicación
- /var/log/auth.log, /var/log/secure
- Distribuciones
- Prueba
- Quién se autenticó, desde dónde y con qué método, y qué notificaron los servicios y el kernel, en texto plano
- Marcas de tiempo
- Tradicional: hora local, sin año ni zona. RFC 3339: hora local con desfase y microsegundos
- Acceso
- root o grupo adm (Debian/Ubuntu); root (RHEL)
- Retención
- logrotate: semanal, 4 generaciones en la configuración por defecto de Debian/Ubuntu y RHEL
- Adquisición
- UAC, Velociraptor, cp -a, tar
Herramientas
Comparar todas las herramientas- Linux Log ParserNavegador
- grep / zgrepCLI · incluido en Linux
- PlasoCLI · código abierto
- lnavCLI · código abierto
Qué es
Un demonio syslog (rsyslog en casi todas las distribuciones principales, a veces syslog-ng) recibe mensajes de los programas y del kernel y los escribe en archivos de texto según reglas de facility y prioridad. En los hosts con systemd, rsyslog suele leer de journald, así que los archivos de texto y el journal contienen copias solapadas de los mismos eventos, almacenadas y rotadas de forma independiente.
El archivo de autenticación es la columna vertebral de la mayoría de las cronologías de intrusión: los inicios de sesión y fallos de sshd, el uso de sudo y su, la apertura y cierre de sesiones PAM, la creación de cuentas y los cambios de contraseña llegan ahí a través de las facilities auth y authpriv.
Dónde se encuentra
| Contenido | Debian / Ubuntu | RHEL / Rocky / Alma / Fedora (con rsyslog instalado) |
|---|---|---|
Autenticación (auth, authpriv) | /var/log/auth.log | /var/log/secure |
| Mensajes generales | /var/log/syslog | /var/log/messages |
| Kernel | /var/log/kern.log | en /var/log/messages |
| Cron | en /var/log/syslog | /var/log/cron |
| Correo | /var/log/mail.log | /var/log/maillog |
| Reglas | /etc/rsyslog.conf, /etc/rsyslog.d/50-default.conf (Ubuntu) | /etc/rsyslog.conf, /etc/rsyslog.d/ |
| Rotación | /etc/logrotate.d/rsyslog | /etc/logrotate.conf, /etc/logrotate.d/rsyslog (versiones antiguas: syslog) |
La configuración por defecto de RHEL envía authpriv.* a secure y *.info;mail.none;authpriv.none;cron.none a messages. El 50-default.conf de Ubuntu envía auth,authpriv.* a auth.log y todo lo que no es auth a syslog.
No todos los hosts tienen estos archivos. Debian 12 ya no instala rsyslog por defecto y Fedora dejó de hacerlo en Fedora 20, así que una instalación nueva puede registrar solo en el journal. Los sistemas actualizados conservan rsyslog. Compruebe si existen /etc/rsyslog.conf y el paquete rsyslog antes de interpretar la ausencia de un archivo como un borrado.
Qué prueba
- Autenticaciones SSH correctas y fallidas, con usuario, IP de origen, puerto y método (
Accepted password,Accepted publickey ... SHA256:<fingerprint>,Failed password,Invalid user). - Uso de privilegios: líneas de comando
sudo:, sesionessu:,pam_unix(...:session): session opened for user. - Cambios de cuentas: mensajes de
useradd,usermod,groupadd,passwdychpasswd. - Eventos de servicios y del kernel en
syslog/messages/kern.log: reinicios de servicios, conexión de USB, líneas LOG del cortafuegos. - No prueba lo que hizo un usuario después de iniciar sesión, y todo lo que un usuario local escriba con
loggerparece una línea normal. El nombre del programa y el PID de la línea los proporciona el emisor y no se verifican.
Campos clave
Una línea tradicional (estilo RFC 3164):
Sep 20 03:14:07 web-prod-03 sshd[4190]: Accepted password for deploy from 203.0.113.50 port 40318 ssh2
La misma línea en el formato de alta precisión por defecto de rsyslog (marca de tiempo RFC 3339):
2026-09-20T03:14:07.512345+02:00 web-prod-03 sshd[4190]: Accepted password for deploy from 203.0.113.50 port 40318 ssh2
| Parte | Significado |
|---|---|
| Marca de tiempo | Momento en que el demonio syslog escribió la línea (ver más abajo) |
| Nombre de host | Host que generó el mensaje (importante en servidores de logs centralizados) |
Etiqueta program[pid] | Nombre y PID del emisor tal como los proporciona el emisor |
| Mensaje | Texto libre; los patrones dependen de cada programa |
Patrones de mensaje útiles: Accepted, Failed password, Invalid user, Connection closed by authenticating user, session opened, session closed, COMMAND=, new user:, new group:, password changed for. OpenSSH 9.8 y posteriores separan el proceso por conexión en sshd-session, así que busque con grep ambos nombres.
Marcas de tiempo
Hay dos formatos habituales, y es imprescindible identificar cuál usaba el host:
- Tradicional (
RSYSLOG_TraditionalFileFormat):Mmm dd HH:MM:SS, hora local, sin año ni zona horaria. Elrsyslog.confde la familia RHEL fija esta plantilla de forma explícita. - Alta precisión (el formato integrado por defecto de rsyslog,
RSYSLOG_FileFormat): RFC 3339 con microsegundos y desfase respecto a UTC. Debian lo activó a partir de bookworm (12) al dejar de forzar la plantilla tradicional, y Ubuntu 24.04 también registra así.
Con el formato tradicional, recupere la zona de /etc/localtime (o /etc/timezone en Debian) en la imagen y deduzca el año a partir de los metadatos de los archivos y del orden de rotación. Tenga cuidado con los cambios de año dentro de un mismo archivo y con los cambios de horario de verano que duplican o saltan una hora.
ls -l /mnt/evidence/etc/localtime # symlink target names the zone
TZ=Europe/Paris date -u -d '2026-09-20 03:14:07' # local -> UTC
Retención
logrotate controla la vida útil. El /etc/logrotate.d/rsyslog de Debian rota semanalmente, conserva 4 generaciones y comprime con delaycompress (auth.log, auth.log.1, auth.log.2.gz ...). En RHEL, los valores por defecto son semanal, rotate 4 y dateext (secure-20260920). Cuente con aproximadamente un mes de historial de texto salvo que se haya cambiado la configuración. El journal puede conservar más o menos, así que compare siempre ambos.
Adquisición
# Dead box, from a read-only mount
tar -C /mnt/evidence -cpf /cases/2026-017/varlog.tar var/log etc/rsyslog.conf etc/rsyslog.d etc/logrotate.conf etc/logrotate.d etc/localtime
# Live, as root: copy, do not tail or edit in place
tar -C / -cpf /media/ir/varlog.tar var/log etc/rsyslog.conf etc/rsyslog.d etc/logrotate.d etc/localtime
El artefacto var_log de UAC recoge todo /var/log; Velociraptor puede recoger las mismas rutas con sus artefactos de recogida de archivos. Llévese también las generaciones rotadas y comprimidas, y anote la hora de adquisición: logrotate puede ejecutarse mientras trabaja.
Análisis
Las herramientas de texto plano llegan muy lejos; la clave es leer todas las generaciones en orden.
cd /mnt/evidence/var/log
zgrep -hE 'Accepted|Failed password|Invalid user' auth.log* secure* 2>/dev/null
zgrep -h 'sudo:' auth.log* secure* 2>/dev/null
zgrep -hE 'new user|new group|password changed' auth.log* secure* 2>/dev/null
Para las cronologías, Plaso incluye los plugins de parser text/syslog y text/syslog_traditional; pase --timezone con los archivos en formato tradicional para que las horas locales se conviertan correctamente. lnav resulta práctico para recorrer de forma interactiva muchos archivos rotados. Linux Log Parser lee en el navegador auth.log / secure, syslog, los archivos del journal, audit.log y wtmp / btmp / lastlog, y los combina en una sola cronología con las sesiones de inicio reconstruidas; no se sube nada.
Consejos para la investigación
- Un número de líneas que cae a mitad del día, un archivo actual mucho más pequeño que sus hermanos rotados o un archivo cuyo mtime es anterior a actividad conocida son indicios de edición o truncado. Compare con el journal y con wtmp.
- Cada línea
Accepteddebería tener su sesión en wtmp y, si auditd está activo, un registroUSER_LOGINen audit.log. Si falta la pareja, hay que explicarlo. - Asocie las huellas de
Accepted publickeycon las entradas deauthorized_keys(ver artefactos SSH) para identificar la clave utilizada. - Revise
/etc/rsyslog.confy/etc/rsyslog.d/en busca de destinos de reenvío (@host,@@host,omfwd): un colector remoto puede conservar logs eliminados en local, y una reglastopo de descarte añadida recientemente es en sí misma una manipulación. - La parada de
rsyslog.serviceaparece en el journal; un hueco en el log de texto mientras el journal sigue funcionando apunta directamente al demonio syslog. - En los servidores de logs centralizados, recuerde que la marca de tiempo puede ser la del receptor y no la del emisor, según la plantilla.