Cómo exportar registros del Journal de systemd con journalctl

Cómo exportar registros del Journal de systemd con journalctl

SOC Prime Team
SOC Prime Team linkedin icon Seguir

Ejecute journalctl con una ventana de tiempo y -o json, y obtendrá un objeto JSON por línea con cada campo que el diario almacenó:

sudo journalctl --since "2026-10-19 00:00" --until "2026-10-20 00:00" -o json --no-pager > web-03_journal.jsonl

Para un archivo de texto estilo syslog, use -o short-iso. Sin sudo, o pertenencia a systemd-journal, adm o wheel, solo verá su propio diario de usuario, no el del sistema.

En la mayoría de las distribuciones modernas, el diario es donde todo aterriza primero: servicios, el kernel, sudo, cron, inicios de sesión. En Debian 12 y posteriores, Fedora y Arch, es a menudo el único lugar, porque rsyslog no está instalado. Prime Core tiene {N} reglas de detección para registros del sistema Linux, asignadas a {M} técnicas de MITRE ATT&CK, entre ellas persistencia de cron (T1053.003), servicios systemd maliciosos (T1543.002) y abuso de sudo (T1548.003).

Empezar Gratis

Antes de comenzar

Permisos. Las mismas reglas que para cualquier registro del sistema: root o los grupos mencionados anteriormente. Nuestra [guía de permisos de logs de Linux] tiene los detalles.

¿El diario sobrevive a los reinicios? Si /var/log/journal no existe, los registros viven en memoria bajo /run/log/journal y desaparecen al reiniciar. journalctl –list-boots muestra cuántos inicios tiene en realidad. Si lista solo el actual, la historia anterior ya no está.

¿Cuánto hay? journalctl –disk-usage le informa antes de que lo descargue todo a un archivo. De forma predeterminada, un diario persistente puede crecer hasta el 10% de su sistema de archivos, con un límite de 4 GB. Eso es mucho más de lo que desea subir de una sola pieza.

Zonas horarias. El diario almacena marcas de tiempo en UTC, pero journalctl imprime la hora local a menos que agregue –utc. La salida JSON lleva la marca de tiempo UTC en microsegundos (__REALTIME_TIMESTAMP) de cualquier manera.

Paso 1: Reduzca el ámbito

Elija los filtros que coinciden con su pregunta. Se combinan:

FiltroLo que hace
–since / –untilVentana de tiempo; acepta «2026-10-19 14:00», ayer o «hace 2 horas»
-b, -b -1Inicio actual, inicio anterior
-u nginx -u sshUna o más unidades systemd
-p warningEsa prioridad y cualquier cosa más grave
-kSolo mensajes del kernel
_COMM=sudo, _UID=0Coincidir exactamente cualquier campo del diario

Paso 2: Elija el formato de salida

  • -o json: un objeto JSON por línea, con cada campo. Esta es la opción predeterminada para LogTotal, porque no se pierde nada.
  • -o json –output-fields=MESSAGE,_HOSTNAME,_COMM,_PID,SYSLOG_IDENTIFIER,PRIORITY: lo mismo, reducido. Algunos campos, como las marcas de tiempo y el ID de inicio, siempre están incluidos. Esto reduce el tamaño del archivo drásticamente.
  • -o short-iso: texto estilo syslog con marcas de tiempo ISO completas. Más pequeño y fácil de leer a simple vista. [PROOF: confirmar que LogTotal parsea short-iso]

No use -o export. A pesar del nombre, es un formato de serialización para enviar diarios entre máquinas systemd, no algo para analizar.

Le recomendamos una exportación típica con ámbito:

sudo journalctl -b -1 -p info -u ssh -u cron 

-o json --no-pager > web-03_prevboot.jsonl

Paso 3 (opcional): Leer archivos de diario de otra máquina

En trabajos de incidente, a menudo tiene una imagen de disco o una carpeta copiada /var/log/journal en lugar de un sistema en vivo. journalctl los lee directamente:

journalctl -D /mnt/evidence/var/log/journal -o json --no-pager > evidence_journal.jsonl

Use –file para señalar archivos .journal individuales. Un diario de un sistema bloqueado o apagado indebidamente puede imprimir advertencias de corrupción. La mayoría de las entradas suelen salir de todos modos.

Subir, sanitizar y revisar en LogTotal

  1. Subir. Abrir logtotal.com y cargue el archivo .jsonl. [PROOF: pantalla de carga, límite de tamaño]
  2. Sanitizar. [PROOF: what gets masked in journal JSON: hostnames, usernames, IPs, machine and boot IDs]. Look it over before you continue.
  3. Revisar. [PROOF: what the results screen shows]

Cómo se ve esto en datos reales. Exportamos un día de diario desde [PROOF: fuente de ejemplo, por ejemplo, una máquina virtual de prueba desechable después de agregar un trabajo cron, un nuevo usuario y un servicio systemd sospechoso]. LogTotal marcó [PROOF: hallazgos reales]. [PROOF: enlace al archivo de ejemplo]

Cuando algo sale mal

SíntomaCausa probableFix
Sugerencia sobre no ver mensajes de otros usuariosNo es root y no está en los grupos del diariosudo, o agregue la cuenta a systemd-journal
— No hay entradas —La ventana de tiempo o el nombre de la unidad no coincide; confusión local vs. UTCAmplíe la ventana; pruebe con –utc; verifique systemctl list-units
Solo existe el inicio actualDiario volátilLos registros antiguos se han ido; verifique su reenviador de registros o SIEM
La salida parece binaria o distorsionada-o export fue utilizadoUse -o json
El archivo tiene gigabytesSin filtrosAgregue unidades, prioridad, –output-fields

FAQ

¿JSON o texto?

JSON para análisis, porque mantiene PID, unidad, ID de arranque y marcas de tiempo exactas como campos separados. Texto cuando una persona lo leerá o cuando el tamaño importa.

¿Es el diario lo mismo que /var/log/syslog?

No. Cuando rsyslog está instalado, copia mensajes del diario a archivos de texto, por lo que puede tener ambos. Cuando no lo está, el diario es todo lo que hay.

Únete a la plataforma Detection as Code de SOC Prime para mejorar la visibilidad de las amenazas más relevantes para tu negocio. Para ayudarte a comenzar y obtener valor inmediato, programa una reunión ahora con los expertos de SOC Prime.