Herramientas de logs en Linux
A continuación, veremos el uso en distintas herramientas de logs en Linux, cuya función es facilitar las búsquedas y operaciones con respecto a al registro de eventos del sistema.
Table of Contents
ToggleJournald
Journald es un demonio cuyo funcionamiento es almacenar la información de registro de eventos. Es decir, crea y mantiene una estructura indexada de la información recibida del kernel, los procesos de usuarios y servicios del sistema. Los datos son guardados de forma segura y en binarios, en el directorio /var/log/journal, de manera que no puedan ser falsificados.
La configuración de este servicio se encuentra en:
/etc/systemd/journald.conf
Opciones y Descripción
A continuación veremos el significado y uso en la configuración del archivo journald.conf
OPCIÓN | DESCRIPCIÓN |
Storage=opción | Controla el luagar donde se guardará la información. Las opciones posibles son: volatile, persistent, auto y none. volatile: Guarda la información la memoria RAM en el directorio /run/log/journal. Se pierde al reiniciar. persistent: Guardará la información en /var/log/journal auto: Es la opción predeterminada. Si no existe /var/log/journal, guardará los registros en la RAM. none: Desactiva el almacenamiento de registros. |
Compress= | Comprimir o no la información almacenada. De manera predeterminada el valor es yes. |
Seal= | Utilizar o no la protección de los registros por modificaciones no autorizadas. Valor predeterminado yes. |
SplitMode= | División de registros: uid=por userID. login=usuarios con acceso al sistema. Los usuarios sin acceso (usuarios de sistema ) utilizarán los registros de sistema. none=utilizará un único archivo para almacenar los registros. |
RateLimitInterval= RateLimitBurst= | Aplica un límite a los mensajes generados en el sistema. Si en el intervalo definido en RateLimitInterval supera la cantidad de mensajes en RateLimitBurst los descartará. Valor predeterminado 1000 mensajes cada 30 segundos. |
MaxFileSec= | Tiempo máximo para rotar los registros. Predeterminado un mes. |
MaxRetentionSec= | Período máximo de retención de registros. |
ForwardToSyslog= | Reenviar o no los mensajes recibidos al servicio de syslog. |
Recordar:
Luego de haber instalado este servicio, en el caso de que no nos aparezca el directorio /var/log/journal, procederemos a crear dicha ruta de la siguiente manera:
# mkdir /var/log/journal
Luego de crear el directorio hay que ejecutar el siguiente comando para que systemd aplique determinadas reglas (por ejemplo permisos r-w-x) a los archivos y directorios del journal.
# systemd-tmpfiles –create –prefix /var/log/journal
Comando journalctl
Este comando es utilizado para consultar los registros escritos por el servicio systemd-journald.service. En caso de no tenerlo instalado, podemos buscarlo con #apt search journalctl.
Opciones
f Muestra de manera continua los nuevos registros (similar a “tail -f “).
n [número] Muestra el número de líneas definido.
o [salida] Muestra el formato en la salida definida (short, verbose, json).
k Muestra mensajes del kernel (igual comando dmesg).
p [prioridad] Muestra los mensajes de la prioridad definida (debug, info, notice, warning, err, crit, alert, emerg).
_PID [número] Muestra los mensajes del PID definido.
_UID [número] Muestra los mensajes del usuario definido.
Sintaxis:
# journalctl (opción) [argumento]
Ejemplos
Muestra los registros del PID 1 con la prioridad err
# journalctl -p err _PID=1
Cabe aclarar que el comando anterior mostrará también los mensajes con niveles de mayor severidad. Si por ejemplo, se desea ver solamente los mensaje de error, tendriamos que ejecutar:
# journalctl PRIORITY=err _PID=1
Mostrar registros hasta una hora y fecha determinada:
# journalctl -U “2022-08-15 07:10:00”
Mostrar de una semana para atrás:
# journalctl -U “-1 week”
Mostrar los registros del último mes hasta el día de ayer:
# journalctl -S “-1 month” -U “today”
Mostrar los registros de los últimos 10 minutos:
# journalctl -S “-10 minutes”
Mostrar los últimos 10 registros del servicio dbus:
# journalctl -n 10 _SYSTEMD_UNIT=dbus.service
Mostrar de manera continua los registros de la unidad apache2:
# journalctl -f -u apache2
Mostrar de manera continua los registros del usuario operador:
# journalctl _UID=$(id -u operador)
Mostrar un listado de los últimos arranques del equipo:
# journalctl –list-boots
Comando logger
Este comando es una de las herramientas de logs en Linux bastante útil, ya que nos permite hacer llamadas a rsyslog para que el sistema pueda escribir un log donde se le indique:
Opciones:
-p prioridad (puede utilizarse como selector, es decir, servicio.prioridad)
-t marca y/o agrega un texto para identificar el mensaje
Los mensajes sin ruta especificada se envían a /var/log/messages. Veamos los siguientes ejemplos:
#logger Mundo Lathack!
#tail –f /var/log/messages
Podemos hacerlo en mail.info:
# logger -p mail.info «ejemplo Lathack»
# tail -f /var/log/mail.log
O también usar:
# logger -t «ejemplo Lathack» -p mail.info «prueba de mensaje»
# tail /var/log/mail.log
Uso de los comandos lastlog y last
Estos comandos representan otras de las herramientas de logs en Linux, fundamentales para la seguridad. Con ellos podremos obtener información acerca de los intentos fallidos de acceso de los usuarios del sistema, y las veces que intentaron conectarse.
Comando lastlog
Este comando muestra la última vez que se logueó cada usuario del sistema.
Sintaxis:
# lastlog (opción) [ususario]
Opciones:
-u define el usuario a consultar
-t días muestra solo los registros que no sean más antiguos que la cantidad de días definida
-b días muestra solo los registros que sean más antiguos que la cantidad de días definida
# lastlog
Comando last
El comando last muestra las últimas veces que un usuario ingresó en el sistema, pero también las veces que se apagó o reinició el equipo. De igual modo, indica la versión del kernel con la que se inició, lo cual es muy importante.
Sintaxis:
# last (opciones) [ususario]
Aunque por defecto, si solo ejecutamos el comando “last”, nos traerá el resultado de todos los usuarios.
Opciones:
f archivo Lee otro archivo en lugar de usar /var/log/wtmp.
-numero cantidad de líneas a mostrar.
F más datos acercas de login y logout.
w más datos acerca del usuario y dominios.
# last