Cargando



Registro de eventos en logs con Syslogd y Klogd en Linux

Tutorial para poder ver y gestionar los registros de eventos logs usando los comandos Syslogd y Klogd en Linux.


nov 07 2018 13:25
Avanzado
Total de Apartados : 5

Las tareas de administración en Linux son complejas en muchas situaciones por la cantidad de procesos, servicios y roles que son ejecutados a cada segundo y a esto debemos sumarle inicios de sesión, instalación de aplicaciones y no olvidar todos los eventos que registra cada aplicativo en la distribución gestionada. Para fortuna de administradores y personal de control o auditoria, disponemos de diversos comandos desarrollados para facilitar la gestión y control de los eventos del sistema y por ello Solvetic se enfocará en dos de los comandos más importantes para tal fin. Syslog y Klogd.

 

El log es como una bitacora, donde se registran eventos, errores, cambios y procesos que generan las aplicaciones o el sistema operativo para luego poder leer este registro y determinar qué eventos ocurrieron, sobre todo en caso de errores o vulnerabilidades. Los ficheros de log en un sistema linux, residen en el directorio /var/log El sistema de logs de Linux es gestionado por dos Daemon:

 

SYSLOGD
Genera los logs del sistema. Syslogd se ejecuta automáticamente al iniciarun sistema Linux, y es el encargado de almacenar informes sobre el funcionamiento del ordenador. Recibe mensajes de las diferentes partes del sistema, kernel y aplicaciones, los almacena en diferentes localizaciones, tanto locales como remotas, siguiendo un criterio definido en el fichero de configuración /etc/syslog.conf.

 

KLOGD
Genera los logs del kernel. klogd dirige los mensajes de registro del kernel al registro del sistema. El usuario puede controlar el manejo de los mensajes del kernel mediante la edición del archivo de configuración de syslogd. Estas aplicaciones de klogd son útiles especialmente para los desarrolladores del kernel.

 


1. Qué es y cómo usar Syslogd en registros Linux


Veamos qué es y cómo usar Syslogd

 

Qué es Syslogd
Syslogd (Linux system logging utilities - Utilidades de registro del sistema Linux), es un comando que nos brinda un tipo de registro el cual es usado por muchos programas modernos, gracias a Syslogd, cada mensaje registrado contiene al menos una hora y un campo de nombre de host, con lo cual llevar las tareas de supervisión puede ser algo mucho más simple y fácil de analizar.

 

El comando Syslogd posee un comportamiento BSD estándar y las nuevas versiones de Syslogd interactúan de manera transparente con la versión de syslog disponible en las bibliotecas estándar, así, si un binario vinculado a las bibliotecas compartidas estándar no funciona de forma correcta, Syslogd nos desplegará el comportamiento de este binario.

 

Paso 1

El archivo de configuración principal es /etc/syslog.conf, y el registro normalmente se especifica con entradas de reglas. En cada línea se especifican el selector (facility.priority) y la acción. Algo a tener en cuenta es que las distribuciones modernas de Linux, el comando Syslogd ha sido reemplazado por nuevas implementaciones de Syslog como rsyslog o syslog-ng, de modo que si deseamos usar Syslogd podemos instalarlo con el siguiente comando:
apt install inetutils-syslogd

 

Paso 2

Allí debemos ingresar la letra S para confirmar la descarga e instalación de Syslogd. Una vez instalado podemos ir a su archivo de configuración el cual se encuentra en la siguiente ruta /etc/syslog.conf:
nano /etc/syslog.conf

 

Paso 3

Allí encontramos todas las rutas que Syslogd usará para capturar la información. La sintaxis de uso general de Syslogd es la siguiente:
syslogd [ -a socket ] [ -d ] [ -f archivo de configuración] [ -h ] [ -l lista de host ] [ -m intervalo ] [ -n ] [ -p socket ] [ -r ] [ -s lista de dominio ] [ -S ] [ -v ] [ -x ]
Paso 4

Dentro de las opciones disponibles tenemos:

 

Especificar sockets extra
este argumento nos permite especificar los sockets adicionales que Syslogd debe escuchar, es usado en caso de que algún daemon se ejecute dentro de un entorno chroot (). Sera posible hacer uso de hasta 19 sockets adicionales.
-a socket

 

Activar modo depuración
este argumento activa el modo de depuración lo cual mantendrá a Syslog en primer plano y así escribir mucha información de depuración en el tty actual.
-d

 

 

Archivo de configuración
Este argumento especifica un archivo de configuración alternativo en vez del archivo por defecto /etc/syslog.conf.
-f config file (Archivo de configuración)  

 

Bloquear reenvío de mensajes remotos
con este parámetro se evita que Syslogd no reenvie los mensajes que recibe de los hosts remotos.
-h

 

Definir nombre de red
Gracias a este parámetro se puede indicar un nombre de host el cual se debe registrar solo con su nombre de host simple y no con el FQDN.
-l hostlist (Lista de hosts)

 

Definir intervalo de tiempo
Al hacer uso de este parámetro podemos especificar el intervalo de tiempo a usar, por defecto el valor es 20 minutos.
-m intervalo

 

Evitar ejecución de Syslodg
Este parámetro evita que Syslogd sea ejecutado en segundo plano.
-n

 

Establecer socket de dominio
Nos permite especificar un socket de dominio Unix alternativo en lugar de /dev/log
-p socket

 

 

Permitir mensajes de red
Esta opción permitirá que la instalación reciba mensajes de la red utilizando un socket de dominio de Internet con el servicio Syslog.
-r

 

Definir nombre de dominio
Este parámetro especifica un nombre de dominio que se debe eliminar antes de iniciar sesión.
-s domainlist (Lista de dominio)

 

 

Habilitar registro
Habilita el registro detallado,
-S

 

Habilitar versión actual
Permite ver la versión actual de Syslogd.
-v

 

 

 

 

 

Paso 5

Al ejecutar alguna de las opciones disponibles podemos ver todas las tareas que son ejecutadas a nivel interno:

 

 

 


2. Señales en Syslogd registros Linux

 

Paso 1

Syslogd está en la capacidad de reaccionar ante un conjunto de señales, una opción para enviar una señal a Syslogd es ejecutando:
kill -SIGNAL 'cat /var/run/syslogd.pid'
Paso 2

Al ejecutarse esta señal entran en juego diversos componentes como. Así, Syslogd es una solución practica para analizar los eventos de Linux.

 

SIGHUP
esta opción permite a Syslogd llevar un proceso de reinicio donde todos los archivos abiertos se cierran, el archivo de configuración se volverá a leer y se volverá a iniciar la instalación de Syslog.

 

SIGTERM
El servicio caducará.

 

SIGINT, SIGQUIT
Si la depuración está habilitada, estos se ignoran, de lo contrario Syslogd caducará.

 

SIGUSR1
Activa o desactiva la depuración.

 

SIGCHLD
Espera los nuevos mensajes.

 

 


3. Configurar el archivo de Syslogd Linux


Syslogd hace uso de una sintaxis algo diferente en su archivo de configuración que el archivo tradicional de las fuentes BSD originales. La configuración de syslogd se hace a través del archivo /etc/syslogd.conf. A través de este archivo se especifica hacia dónde se deben enrutar los diferentes mensajes. Se pueden dejar líneas en blanco o comentar líneas enteras con el carácter "#"

 

Para que syslog acepte conexiones remotas debemos añadir el parámetro -r

SYSLOGD_OPTIONS="-r -m 0"
Normalmente syslogd ocupa el puerto 514 debemos revisar que el firewall no lo bloquee para probar en que puerto está corriendo, desde la terminal escribimos el siguiente código
grep syslog /etc/services
En los Log de servicios en esta línea podemos ver que los logs de “mail, cron, info” van al directorio messages
*.info;mail.none;authpriv.none;cron.none /var/log/messages
Vamos a probar a enviar un mensaje a todos los log con el siguiente comando
grep "Mensaje de prueba" /var/log/*
En este caso podemos ver que varios log están con permisos denegados por lo tanto no se pueden escribir.

 

 

 

 

 

8 log-denegado-linux.png

 

Habría que determinar si es necesario cambiar los permisos o no según nuestras necesidades. Los log tiene varios niveles de prioridad de los mensajes (de menos a más prioritario:

 

Los logs de fallos, errores y advertencias
debug, info,notice, warning, warn, err, error, crit, alert, emerg y panic

 

Logs de tipo mensajes
Varios los logs de tipo mensajes
auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, syslog, user, uucp
Los mas importantes son
  • var/log/messages: aquí encontraremos los logs que llegan con prioridad info (información), notice (notificación) o warn (aviso).
  • /var/log/kern.log: aquí se almacenan los logs del kernel, generados por klogd.
  • /var/log/auth.log: en este log se registran los login en el sistema, las veces que hacemos su, etc. Los intentos fallidos se registran en líneas con información del tipo clave no validad o login no válido.
  • /var/log/dmesg: en este archivo se almacena la información que genera el kernel durante el arranque del sistema.

 

 

Estos archivos de logs acumulan información todo el tiempo por lo que en algún momento pueden ocupar mucho espacio, para solucionar este problema podemos comprimirlo o ir haciendo backup si son realmente necesarios. Algunos cambios a tener en cuenta son:

 

Uso comodín
Se usa como comodín para todas las prioridades y servicios anteriores, dependiendo de su uso (si antes o después del carácter de separación `.').
“*” (asterisco)=

 

No marcar prioridad
Indica que no existe una prioridad definida para el servicio de la línea seleccionada.
“ “ : (blanco, espacio, nulo)

 

Elegir diferentes servicios
Permite especificar múltiples servicios con el mismo nivel de prioridad en una misma línea.
“,” (coma)

 

Controlar mensajes diferentes
Permite dirigir los mensajes de varios servicios y prioridades hacia un mismo destinatario.
“;” (punto y coma)

 

Elegir prioridad de mensajes
Nos da la posibilidad de solo almacenar los mensajes con la prioridad exacta especificada.
“=” (igual)

 


4. Qué es y cómo usar Klogd en registros Linux

 

Qué es Klogd
Klogd (Kernel Log Daemon), es un demonio del sistema el cual ha sido desarrollado para interceptar y registrar los mensajes del kernel de Linux. La función del comando Klogd está centrada en capturar múltiples instancias del kernel como lo son el origen, la priorización y la resolución de las direcciones del kernel.

 

En los ambientes Linux contamos con dos fuentes de información de registro del kernel principales como lo son:

  • El sistema de archivos /proc
  • La interfaz syscall (sys_syslog)
El comando Klogd ha sido diseñado para elegir la fuente de información más conveniente para el despliegue de la información, para lograr esto, en primer lugar, verifica la presencia de un sistema de archivos /proc que este montado, si existe, el archivo /proc/kmsg es usado como fuente de información de registro del kernel, en caso de que el sistema de archivos proc no está montado, Klogd hará uso de una llamada del sistema con el fin de obtener mensajes del kernel. En caso de que los mensajes del kernel sean redireccionados a través del demonio syslogd, el demonio Klogd, desde su versión 1.1, está en la capacidad de priorizar los mensajes del kernel, esta prioridad está en un rango <[0-7]> por lo que la prioridad del mensaje del kernel es codificada como un solo dígito numérico dentro <>.

 

Cuando se recibe un mensaje del kernel, el demonio Klogd leerá el nivel de prioridad asignado y le otorgará el nivel de prioridad tomando como base el mensaje de syslog. Al usar Klogd, también será posible cambiar la presentación de los mensajes del kernel en la consola del sistema, en un núcleo común, el nivel de registro de la consola predeterminado se establece en 7, así, todos los mensajes con un nivel de prioridad inferior a 7 (prioridad más alta) aparecerán en la consola. Los mensajes de nivel de prioridad 7 son considerados mensajes de "depuración" y, por lo tanto, no aparecerán en la consola para no saturar de información los demás eventos del kernel.

 

Klogd cuenta con una funcionalidad llamada Kernel Address Resolution mediante la cual, si el kernel detecta una condición de error interno, automáticamente se activa un protocolo de error de protección general. Esto forma parte del procedimiento de manejo de GPF, en el cual el núcleo imprime un informe de estado que indica el estado del procesador cuando se genera la falla, dentro de este resultado veremos detalles como los contenidos de los registros del microprocesador, los contenidos de la pila del kernel y un monitoreo de las funciones que se estaban ejecutando antes del error.

 

El proceso de resolver las direcciones numéricas a partir de los resultados del fallo de protección se puede hacer de forma manual o a través del programa ksymoops que se incluye en las fuentes del núcleo. El comando Klogd es compatible con el problema del diagnóstico de fallos de protección en los módulos cargables del kernel actuales.

 

Paso 1

Al igual que Syslogd, Klog ha sido reemplazado en las distribuciones actuales por comandos más dinámicos, de modo que para su instalación ejecutaremos lo siguiente. Allí ingresamos la letra S para confirmar la descarga e instalación.
apt install busybox-syslogd

 

Paso 2

La sintaxis de Klogd es la siguiente:
klogd [ -c n ] [ -d ] [ -f fname ] [ -iI ] [ -n ] [ -o ] [ -p ] [ -s ] [ -k fname ] [ -v ] [ -x ] [ -2 ]
Paso 3

Estas opciones son:

 

Definir nivel de registro
este parámetro define el nivel de registro predeterminado de los mensajes de la consola en n.
-c n

 

Modo depuración
esta opción habilita el modo de depuración.
-d

 

Registrar mensajes
archivo registra los mensajes en el nombre de archivo especificado en lugar de en la instalación de syslog.
-f

 

Identificar demonios ejecutándose
identifica el demonio klogd actualmente en ejecución. Ambos interruptores controlan la carga / recarga de información de símbolos.
-i -I

 

Parar klogd en segundo plano
Evita que Klogd sea ejecutado en segundo plano.
-n

 

Lectura completa en buffers de mensajes
Esta opción permite que Klogd lea y registre todos los mensajes que se encuentran en los buffers de mensajes del kernel.
-o

 

Forzar llamada del sistema
Fuerza al comando Klogd a usar la interfaz de llamadas del sistema a los buffers de mensajes del kernel.
-s

 

Ver versión Klogd
Imprime la versión de Klogd.
-v

 

 

Paso 4

Si deseamos leer todos los eventos después del inicio de sesión, vamos a ejecutar lo siguiente:
klogd -o -f ./krnl.msg
Paso 5

Después de esto será posible acceder al contenido de dicho archivo:

 

 

 

 

 


5. Señales de Klogd en Linux


El comando Klogd puede responder a ocho (8) señales que son: SIGHUP, SIGINT, SIGKILL, SIGTERM, SIGTSTP, SIGUSR1, SIGUSR2 y SIGCONT. Las señales SIGINT, SIGKILL, SIGTERM y SIGHUP permiten que el daemon cierre las fuentes de registro del kernel y finalice el proceso de forma correcta mientras que las señales SIGTSTP y SIGCONT son usadas para iniciar y detener el registro del kernel.

 

Paso 1

Por ejemplo, si deseamos debe desmontar el sistema de archivos /proc, debemos ejecutar los siguientes comandos:
# kill -TSTP pid
# umount /proc
# kill -CONT pid
Paso 2

Algunos archivos a usar con Klogd son:

 

  • /proc/kmsg: es el archivo fuente para los mensajes del kernel klogd
  • /var/run/klogd.pid: es el archivo que contiene el id de proceso de klogd
  • /boot/System.map, /System.map, /usr/src/linux/System.map: son las ubicaciones por defecto para los mapas del sistema del kernel.

 

Como vemos, disponemos de estos dos comandos útiles y esenciales para una correcta y completa administración de los eventos del kernel en Linux.

 

Tutorial para poder instalar y configurar Logrotate y así gestionar eventos de registro de forma completa en Ubuntu Linux.


¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

Hola! Si no encuentras algún tutorial en el buscador de Solvetic, Solicítalo Aquí

X