Administración bitácoras syslog Roberto Gómez Cárdenas rogomez@itesm.mx http://homepage.cem.itesm.mx/rogomez Lámina 1 Las bitácoras: el sistema syslog Administración de la información generada por el kernel y utilidades del sistema. Antes cada programa era libre de elegir su política de logging. Comprende un demonio, funciones de biblioteca y un comando permite registrar errores en archivos definidos anteriormente Administra mensajes/anuncios en base a niveles y entidades posible enviarlos a otras máquinas para su procesamiento Lámina 2 Dr. Roberto Gómez Cárdenas 1
Entidades y su origen Entidades Programa que lo utiliza auth Seguridad y comandos de autorización authpriv Mensajes de autorización privados (no del sistema) cron mensajes de los daemons at y cron daemon mensajes del resto de los daemons kern mensaje del núcleo lpr mensajes del subsistema de impresión mail mensajes del subsistema de correo electrónico news mensajes del subsistema de noticias security es igual a auth. Se encuentra en desuso syslog mensajes del propio subsistema de logs user mensajes genéricos de los usuarios uucp mensajes del subsistema UUCP (el cual ya no se usa) local0-7 reservados para uso local mark Estampillas de tiempo generadas en tiempos regulares * Todas las facilidades, excepto mark Lámina 3 Los niveles de prioridad (severidad) Nivel debug info notice warning warn err error crit alert emerg panic Significado aproximado mensajes de depuración de un programa mensajes informativos mensajes de sucesos significativos pero normales mensajes de advertencia es igual a warning. Está en desuso mensajes de error es igual a err. Está en desuso mensajes que indican condiciones críticas mensajes de alerta. Se debe emprender una acción al momento el sistema se ha vuelto inoperable es igual a emerg. Está en desuso. Lámina 4 Dr. Roberto Gómez Cárdenas 2
Las acciones Acción Significado nombre-archivo Escribir mensaje en un archivo ubicado dentro de la máquina local @hostname Redireccionar el mensaje al syslogd corriendo en hostname @ipaddress Redireccionar el mensaje al host en la dirección IP ipaddress user1, user2,... Escribir mensaje en la pantalla de los usuarios si están conectados * Escribir mensaje a todos los usuarios conectados Lámina 5 Ejemplo archivo configuración mail.debug auth.info;auth.notice auth.info;auth.notice *.info,mail.none;auth.none *.alert local0.notice;local0.debug local7.notice;local7.info /usr/spool/mqueue/syslog /usr/adm/auth.info floreal /usr/adm/syslog /usr/adm/noticelog /usr/spool/mqueue/poplog /tmp/essai.syslog Lámina 6 Dr. Roberto Gómez Cárdenas 3
Software que usa syslog Programa Entidad Nivel Descripción cron cron info System task-scheduling daemon ftpd ftp debug-crit FTP daemon (wu-ftpd) impad mail info-alert IMAP mail server inetd daemon err,warning Internet superdeamon login authpriv info-err Loging programs lpd lpr info-err Line printer deamon named daemon info-err Name server (DNS) passwd auth notice,waring Password-setting program popper local0 debug,notice POP3 mail server sendmail mail debug-alert Mail transport system shutdown auth notice Halts the system su auth notice Switches UIDs sudo local2 notice,alert Limited su program syslog syslog,mark info-err Internal errors,time stamps tcpd local7 debug-err TCP wrapper for inetd vmlinuz kern all The kernel xinetd configurable info(default) Variant of inetd (Red Hat) Lámina 7 Funciones de biblioteca Funciones para comunicarse con demonio syslog Para usarlas en un programa en C se necesita incluir /usr/include/syslog.h Se cuenta con tres funciones: openlog(cadena, opcion, entidad) syslog(prioridad, cadena, parámetros...) setlogmask(mascara) closelog( ); Lámina 8 Dr. Roberto Gómez Cárdenas 4
La función openlog( ) Sintaxis: openlog(ident, logopt, entidad) Mensajes son almacenados (logged) con las opciones espificadas por logopt Mensajes empiezan por el string de identificación ident Si openlog no es usado, se toman las opciones por default ident: default al nombre de la máquina logopt: un string en blanco entidad: user Lámina 9 Opciones openlog( ) Opción LOG_PID LOG_CONS LOG_NDELAY LOG_NOWAIT Significado PID del proceso será desplegado en cada mensaje si comunicación con syslog es imposible, mensaje es enviado a la consola del operador conexión con demonio syslogd es establecida inmediatamente utilizada con LOG_CONS para escribir en la consola del operador Ejemplo: openlog( adminscript, LOG_PID, LOG_MAIL) Lámina 10 Dr. Roberto Gómez Cárdenas 5
Los valores de las entidades En mayúsculas precedidas por LOG_ Valor LOG_AUTH LOG _AUTHPRIV LOG_CRON LOG_DAEMON LOG_FTP LOG_KERN LOG_LOCALn LOG_LPR LOG_MAIL LOG_NEWS LOG_SYSLOG LOG_USER LOG_UUCP Entidad asociada mensajes autorización/seguridad (en desuso) mensajes autorización/seguridad demonio cron demonios sistema demonio ftp mensajes al núcleo reservado para uso local, n 0,1,2,3,4,5,6 o 7 subsistema de impresión susbsistema de correo susbsistema de noticias USENET mensajes generados internamente por syslogd Mensaje genericos usuraio Subsistema UUCP Lámina 11 Sintaxis: Función syslog syslog(nivel, mensaje,...) Usada para transmitir mensajes a syslog, el cual lo almacena con el nivel especificado Opciones: la fecha, hora, hostname y string de identificación de la llamada openlog( ) son añadidos al mensaje en el archivo de bitácoras mensaje puede ser seguido de uno o varios parámetros al estilo del printf( ) Ejemplo: syslog(log_info, Envio a %s fallo despues %d intentos.,$user,$intentos); Lámina 12 Dr. Roberto Gómez Cárdenas 6
Niveles Precedidos por los caracteres LOG_ Nivel LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG Significado sistema no se puede usar una acción se debe tomar de inmediato condiciones crítica condiciones de error condiciones de advertencia condición normal pero significativa mensaje información mensaje nivel depuración Lámina 13 Nota; función setlogmask puede usarse para restringir logging a ciertos niveles Función closelog( ); Cierra el canal de bitácoras Debe llamarse esta rutina si se desea reabrir el canal de bitácoras con opciones diferentes Es buena práctica el llamar a closelog( ) cuando el programa termine, pero no es estrictamente necesario hacerlo. Lámina 14 Dr. Roberto Gómez Cárdenas 7
Ejemplo uso funciones syslog #include <stdio.h> #include <syslog.h> int main(int argc, char *argv[ ]) { } if (argc!= 3) { openlog( adminscript, cons.pid, LOG_LOCAL7); syslog(log_err, Error en parametros en aplicación local 7. ); closelog(); exit(0); } : : Lámina 15 Salida del ejemplo Se produce la siguiente entrada, donde 191 es el PID de adminscript Dec 28 22:56:24 sancerre.bordeaux.vino adminscript[191]: Error en parametros en aplicación local 7 Lámina 16 Dr. Roberto Gómez Cárdenas 8
El comando logger Permite interactuar con syslog a nivel shell Sintaxis Lámina 17 logger [-t trace] [-p prioridad] [-f archivo] [-i] [mensaje...] t: cadena de caracteres será colocada al principio de cada mensaje en lugar del nombre del usuario p: urgencia indicada por el par entidad.prioridad f: contenido archivo mencionado es usado como mensaje i: número de procesos (PID) del comando logger ejecutado es aumentado al mensaje Ejemplo karmax@utopia:~$ logger -p user.info -t " ls ejecutado correctamente" root@utopia:~# tail -1 /var/log/messages Oct 18 06:58:49 utopia ls ejecutado correctamente Rotación bitácoras Una forma de mantener información bitácoras por un periodo fijo se conoce como rotación. En rotación se mantiene archivos de respaldo que datan de un día, de dos días... etc. Cada día un programa renombra archivos para empujar datos viejos al final de la cadena. Ejemplo: archivo logfile copias respaldo pueden ser llamadas logfile.1, logfile.2... etc si se trabaja la semana se llega hasta logfile.7 pero no logfile.8 a diario, los datos de logfile.7 se pierden ya que logfile.6 los sobre-escribe Lámina 18 Dr. Roberto Gómez Cárdenas 9
Paquete logrotate El paquete logrotate contiene una tarea de cron que hace circular automáticamente los archivos de log al archivo de configuración /etc/logrotate.conf y los archivos de configuración en el directorio /etc/logrotate.d. Por defecto, se configura para circular cada semana y mantener la validez de los archivos previos de log durante cuatro semanas. Lámina 19 Ejemplo archivo configuración logrotate Rota /var/log/messages cada semana. Mantiene 5 versiones del archivo Notifica syslog cada vez que el archivo es reinicializado. Archivos bitácoras Samba son rotados cada semana no son movidos y restablecidos, sino copiados y truncados demonios Samba se les envía señal HUP después de que todos los archivos Lámina 20 fueron rotados #Example log rotation policy error sa-book@admin.com rotate 5 weekly /var/log/messages{ postrotate /bin/kill HUP `cat/var/run/syslogd.pid` endscript. } /var/log/samba/*.log{ notifempty copytruncate sharedscripts postrotate /bin/kill HUP `cat /var/lock/samba/*.pid` endscript } Dr. Roberto Gómez Cárdenas 10
Opciones logrotate Opción compress daily,weekly,monthly delaycompress Significado Comprime todas las versiones no actualizadas del archivo de registro Rota los archivos de registros en el escala especificada Comprime todas las versiones excpto las basicas y las que son mas recientes Lámina 21 endscript errors emailaddr missingok notifempty olddir dir postrotate prerotate rotate n sharedscripts size=logsize Marca el final de un escrito prerotado o postrotado Notificaciones de errores de email para direcciones de email especificas No se complementa si el archivo de registro no existe No rota si el archivo de registro esta vacio Especifica que las versiones mas viejas del archivo de registro fueron colocadas en dir Despues que el registro ha sido rotado, introduce un escrito para ser activado Antes de hacer cualquier cambio, introduce un escrito para ser activado Incluye n versiones del registro en el esquema de rotacion Activa escritos solo una vez por el grupo entero Rota si el archvio de registro es mayor que (e.g., 100K, 4M) Archivos bitácoras especiales (i) Lámina 22 /var/adm/sulog archivo texto, registra las ejecuciones comando su faillog guarda el último acceso al sistema lo hace del último intento de acceso de cada usuario /var/log/wtmp registra todos los ingresos y salidas al sistema archivo en formato binario, puede verse con comando last /var/log/utmp lista los usuarios que están actualmente dentro del sistema archivo binario, contenido visible con comandos who Dr. Roberto Gómez Cárdenas 11
Archivos bitácoras especiales (ii) /var/log/lastlog información similar a wtmp pero solo registra el tiempo del último login de cada usuario usado por comandos finger o who y se puede ver con comando lastlog /var/log/btmp lista los intentos de ingreso fallidos solo disponible en algunos Unix /var/adm/loginlog solo par algunas versiones de Unix registran en él los intentos fallidos de login Lámina 23 Administración bitácoras: Tiger Ejecutar Tiger o un programa similar que pueda analizar sintácticamente archivos de log o verificar archivos vulnerables. muchas de estas verificaciones pueden automatizarse usando este tipo de programas. Este programa puede obtenerse de ftp://coast.cs.purdue.edu/pub/tools/unix/scanners/t iger/ Lámina 24 Dr. Roberto Gómez Cárdenas 12