|
1.
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.
1.
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 usted puede almacenar los registros
en dos lugares.
Listado de Código 1.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 sólo 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. Usted 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.
1.
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 1.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 1.1: /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 script 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 1.1: /etc/metalog/metalog.conf |
command = "/usr/local/sbin/mail_pwd_failures.sh"
|
1.
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 1.1: /etc/syslog-ng/syslog-ng.conf |
options {
chain_hostnames(no);
stats_freq(43200);
};
source src {
unix-stream("/dev/log" max-connections(256));
internal();
};
source kernsrc { file("/proc/kmsg"); };
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"); };
destination console_all { file("/dev/tty12"); };
#destination console_all { file("/dev/console"); };
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"); };
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); };
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,
autentificació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!
1.
Análisis de registros con Logcheck
Desde luego, mantener los registros sólo 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.
|
|