Gentoo Logo

[ << ] [ < ] [ Inicio ] [ > ] [ >> ]


3. Gestión de registro

Contenido:

3.a. Introducción

Puede conseguir un mayor nivel de detalle en sus registros de sistema para que indiquen un ataque en curso o ya realizado. Los atacantes normalmente escudriñan o investigan las redes antes de actuar.

Es también de vital importancia que sus ficheros de registro de sistema sean fácilmente legibles y manejables. Gentoo Linux le permite elegir durante la instalación entre tres tipos diferentes de gestores de registro.

3.b. Gestión de registro: Syslogd

Syslogd es el gestor de registro más común para Linux y Unix en general. Incorpora algunas utilidades de rotación de logs, pero usar /usr/sbin/logrotate en una tarea programada (logrotate se configura en /etc/logrotate.conf) puede que sea más potente, puesto que logrotate tiene más prestaciones. Cuan a menudo se debe ejecutar la rotación de los registros dependerá de la carga del sistema.

A continuación se encuentra el syslog.conf estándar con algunas características añadidas. Hemos "descomentado" las líneas cron y tty y añadido un gestor de registro remoto. Para mejorar la seguridad puede almacenar los registros en dos lugares.

Listado de Código 2.1: /etc/syslog.conf

#  /etc/syslog.conf     Configuration file for syslogd.
#
#                       For more information see syslog.conf(5)
#                       manpage.
#                       This is from Debian, we are using it for now
#                       Daniel Robbins, 5/15/99

#
# Primero algunos ficheros de registro estándar. Registre por servicio.
#

auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          /var/log/mail.log
user.*                          -/var/log/user.log
uucp.*                          -/var/log/uucp.log
local6.debug                    /var/log/imapd.log

#
# Registro para el sistema de correo. Divídalo porque
# es fácil escribir guiones para manejar estos ficheros.
#
mail.info                       -/var/log/mail.info
mail.warn                       -/var/log/mail.warn
mail.err                        /var/log/mail.err

# Registro para el servicio de news INN
#
news.crit                       /var/log/news/news.crit
news.err                        /var/log/news/news.err
news.notice                     -/var/log/news/news.notice

#
# Algunos fichero de registro para todo lo demás
#
*.=debug;\
        auth,authpriv.none;\
        news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages

#
# Las emergencias y alertas son enviadas a todos los
# que han iniciado una sesión.
#
*.emerg                         *
*.=alert                        *

#
# Me gusta que los mensajes se muestren en la consola, pero solo en una
# consola virtual que normalmente dejo disponible.
#
daemon,mail.*;\
       news.=crit;news.=err;news.=notice;\
       *.=debug;*.=info;\
       *.=notice;*.=warn       /dev/tty8

# Configurando un servidor para gestionar el registro remotamente
*.*                        @logserver

# La 'named pipe' /dev/xconsole es para la utilidad 'xconsole'. Para usarla,
# debe llamar 'xconsole' con la opción '-file':
#
#    $ xconsole -file /dev/xconsole [...]
#
# NOTA: ajuste la siguiente lista, o podría volverse loco si tiene
#       un sitio medianamente ocupado...
#
#daemon.*,mail.*;\
#       news.crit;news.err;news.notice;\
#       *.=debug;*.=info;\
#       *.=notice;*.=warn       |/dev/xconsole

local2.*                --/var/log/ppp.log

Los atacantes intentarán borrar sus huellas editando o borrando los ficheros de registro. Puede dificultarles la tarea enviando los registros a más de un servidor remoto en máquinas distintas. Encuentre más información sobre syslogd ejecutando man syslog.

3.c. Gestión de registro: Metalog

El Metalog de Frank Dennis no puede enviar los registros a un servidor remoto, pero tiene como ventajas su rendimiento y flexibilidad. Puede registrar por nombre de programa, urgencia, servicio (como syslogd) e incorpora concordancia con expresiones regulares con las que puede ejecutar guiones ("scripts") externos cuando son encontradas determinadas pautas. Es muy bueno realizando acciones cuando se necesitan.

La configuración estándar es normalmente suficiente. Si necesita notificar por correo electrónico cuando ocurre un fallo de contraseña puede utilizar uno de los siguientes guiones.

Para postfix:

Listado de Código 3.1: /usr/local/sbin/mail_pwd_failures.sh para postfix

#! /bin/sh
echo "$3" | mail -s "Warning (program : $2)" root

Para netqmail:

Listado de Código 3.2: /usr/local/sbin/mail_pwd_failures.sh para netqmail

#!/bin/sh
echo "To: root
Subject:Failure (Warning: $2)
$3
" | /var/qmail/bin/qmail-inject -f root

Recuerde hacer ejecutable el guión con /bin/chmod +x /usr/local/sbin/mail_pwd_failures.sh.

Entonces "descomente" la línea de comando debajo de "Password failures" en /etc/metalog/metalog.conf tal que:

Listado de Código 3.3: /etc/metalog/metalog.conf

command  = "/usr/local/sbin/mail_pwd_failures.sh"

3.d. Gestión de registro: Syslog-ng

Syslog-ng proporciona algunas de las mismas características que syslog y metalog con una pequeña diferencia. Puede filtrar mensajes basándose en nivel y contenido (como metalog), proporciona gestión de registro remoto como syslog, mantiene registros de syslogd (incluso descriptores de Solaris), los envía a una TTY, ejecuta programas y puede actuar como un servidor de registro. Básicamente tiene lo mejor de los otros dos gestores de registro combinado con una configuración avanzada.

Seguidamente un fichero de configuración típico ligeramente modificado:

Listado de Código 4.1: /etc/syslog-ng/syslog-ng.conf

options {
        chain_hostnames(no);

        # la acción predeterminada de syslog-ng es registrar
        # una línea STATS al archivo cada 10 minutos. Eso se pone feo
        # luego de un rato. Cámbielo a cada 12 horas para obtener una
        # actualización diaria de los mensajes perdidos por syslog-ng
        # (0).
        stats_freq(43200);
};

source src {
    unix-stream("/dev/log" max-connections(256));
    internal();
};

source kernsrc { file("/proc/kmsg"); };

# define los destinos
destination authlog { file("/var/log/auth.log"); };
destination syslog { file("/var/log/syslog"); };
destination cron { file("/var/log/cron.log"); };
destination daemon { file("/var/log/daemon.log"); };
destination kern { file("/var/log/kern.log"); };
destination lpr { file("/var/log/lpr.log"); };
destination user { file("/var/log/user.log"); };
destination mail { file("/var/log/mail.log"); };

destination mailinfo { file("/var/log/mail.info"); };
destination mailwarn { file("/var/log/mail.warn"); };
destination mailerr { file("/var/log/mail.err"); };

destination newscrit { file("/var/log/news/news.crit"); };
destination newserr { file("/var/log/news/news.err"); };
destination newsnotice { file("/var/log/news/news.notice"); };

destination debug { file("/var/log/debug"); };
destination messages { file("/var/log/messages"); };
destination console { usertty("root"); };

# los mensajes se registran en el tty12 ...
destination console_all { file("/dev/tty12"); };

# ... si tiene intención de usar /dev/console para programas
# como like xconsole puede comentar el destino definido arriba que hace
# referencia a /dev/tty12 y descomentar la siguiente línea.
#destination console_all { file("/dev/console"); };

# crea los filtros
filter f_authpriv { facility(auth, authpriv); };
filter f_syslog { not facility(authpriv, mail); };
filter f_cron { facility(cron); };
filter f_daemon { facility(daemon); };
filter f_kern { facility(kern); };
filter f_lpr { facility(lpr); };
filter f_mail { facility(mail); };
filter f_user { facility(user); };
filter f_debug { not facility(auth, authpriv, news, mail); };
filter f_messages { level(info..warn)
       and not facility(auth, authpriv, mail, news); };
filter f_emergency { level(emerg); };

filter f_info { level(info); };
filter f_notice { level(notice); };
filter f_warn { level(warn); };
filter f_crit { level(crit); };
filter f_err { level(err); };
filter f_failed { message("failed"); };
filter f_denied { message("denied"); };

# enlaza filtros con destinos
log { source(src); filter(f_authpriv); destination(authlog); };
log { source(src); filter(f_syslog); destination(syslog); };
log { source(src); filter(f_cron); destination(cron); };
log { source(src); filter(f_daemon); destination(daemon); };
log { source(kernsrc); filter(f_kern); destination(kern); };
log { source(src); filter(f_lpr); destination(lpr); };
log { source(src); filter(f_mail); destination(mail); };
log { source(src); filter(f_user); destination(user); };
log { source(src); filter(f_mail); filter(f_info); destination(mailinfo); };
log { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); };
log { source(src); filter(f_mail); filter(f_err); destination(mailerr); };

log { source(src); filter(f_debug); destination(debug); };
log { source(src); filter(f_messages); destination(messages); };
log { source(src); filter(f_emergency); destination(console); };

# registro predeterminado
log { source(src); destination(console_all); };

syslog-ng es muy sencillo de configurar, pero también es muy fácil olvidar algo en el archivo de configuración, ya que es extenso. El autor promete algunas características extra como cifrado, autenticación, compresión y control MAC (Mandatory Access Control). Con esas opciones se convertirá en el gestor de registro de red perfecto, ya que el atacante no podrá espiar en el registro.

Y syslog-ng tiene otras ventajas: ¡no necesita ejecutarse como root!

3.e. Análisis de registros con Logcheck

Desde luego, mantener los registros solo es la mitad del trabajo. Un programa como Logcheck puede hacer mucho más fácil el análisis regular de los registros. Logcheck es un guión ("script"), acompañado de un binario llamado logtail, que se ejecuta desde el servicio de cron y comprueba los registros mediante una serie de reglas para detectar actividad sospechosa. Entonces, envía los resultados al buzón de correo de root.

Logcheck y logtail forman parte del paquete app-admin/logsentry.

Logcheck usa cuatro ficheros para separar las líneas del registro importantes de las que no lo son. Estos ficheros son logcheck.hacking, que contiene los mensajes conocidos de ataques de alteración (hacking), logcheck.violations, que contiene los patrones indicadores de compromisos de seguridad, logcheck.violations.ignore, con las palabras claves que probablemente emparejaría el fichero de compromisos de seguridad, pero que permiten que los registros normales sean ignorados, y logcheck.ignore, que casa todas aquellas entradas que deban ser ignoradas.

Aviso: No deje logcheck.violations.ignore vacío, Logcheck usa grep para analizar sintácticamente los registros, y algunas versiones del mismo asumen que un fichero vacío significa un comodín: Todos los compromisos de seguridad serían ignorados.


[ << ] [ < ] [ Inicio ] [ > ] [ >> ]


Imprimir

Ver completo

Página actualizada 2 de abril, 2010

Sumario: Gentoo Linux le permite elegir entre 3 bitácoras distintas.

Kim Nielsen
Autor

John P. Davis
Editor

Eric R. Stockbridge
Editor

Carl Anderson
Editor

Jorge Paulo
Editor

Sven Vermeulen
Editor

Benny Chuang
Editor

Sune Jeppesen
Editor

Tiemo Kieft
Editor

Zack Gilburd
Editor

Dan Margolis
Editor

Joshua Saddler
Editor

John Christian Stoddart
Traductor

José Luis Rivero
Traductor

Postel
Traductor

Carles Ferrer Peris
Traductor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.