Tal y como había prometido, aquí está el "logcheck-how-to".
=====================
logcheck es una herramienta pasiva de analisis de logs. Revisa periódicamente (por defecto cada hora) los logs del sistema, enviando por correo al administrador aquellas líneas con información relevante.
Cada línea de los ficheros de log se analiza mediante logtail (egrep y expresiones regulares), y se emite un aviso clasificado en base a 3 niveles de seguridad:
System events
Security events
Atack alerts
Los correos recibidos con las alarmas tendrán como encabezado el nivel de seguridad más crítico detectado, y su contenido tendrá las alarmas clasificadas en base a estos tres niveles.
El procedimiento de revisión de cada línea del log es el siguiente:
1- Comprobación de Atack Alerts según las reglas de cracking.d (lista de expresiones que identifican una línea de log con un intento de entrar al sistema u obtener información), con las excepciones definidas en cracking.ignore.d
/etc/logcheck/cracking.d
/etc/logcheck/cracking.ignore.d
Si coinciden las reglas, se emite una alerta clasificada como ATTACK ALERTS.
2- Comprobación de Security Events según las reglas de violations.d (lista de expresiones que identifican posibles violaciones de seguridad (rechazo de accesos a recursos: "denied", "refused", etc), con las excepciones definidas en violation.ignore.d
/etc/logcheck/violations.d
/etc/logcheck/violations.ignore.d
Si coinciden las reglas, se emite una alerta clasificada como SECURITY EVENT.
3.- Si no hay coincidencias anteriores, el resto de líneas del log se consideran eventos del sistema (indicios de un error o similar), y se emiten avisos clasificados como SYSTEM EVENT. En este caso las excepciones se definen mediante las reglas de uno de los siguientes ficheros, en función del nivel de filtrado seleccionado (report level) en logcheck.conf.
/etc/logcheck/ignore.d.paranoid
/etc/logcheck/ignore.d.server
/etc/logcheck/ignore.d.workstation
Report level:
Paranoic: modo paranoico, genera gran cantidad de mensajes
Server (default): modo servidor, utiliza reglas predefinidas para distintos servicios
Workstation: máquinas dentro de redes protegidas
En los directorios ignore.d._ se encuentra un conjunto de reglas correspondientes a cada modo de filtrado, donde se definen las expresiones que deben ser ignoradas para cada servicio definido (actividades habituales sin incidencias).
En /usr/share/doc/logcheck-database/README.logcheck-database.gz se describe la forma de escribir reglas.
Si logcheck no encuentra nada relevante en el sistema, no enviará ningún tipo de correo.
Configuración de cron (ejecución cada hora):
# /etc/cron.d/logcheck
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
@reboot logcheck if [ -x /usr/sbin/logcheck ]; then nice -n10 /usr/sbin/logcheck -R; fi
2 * * * * logcheck if [ -x /usr/sbin/logcheck ]; then nice -n10 /usr/sbin/logcheck; fi
# EOF
"@reboot" para que realice el informe en los reinicios
Estructura y reglas de logcheck:
/usr/sbin/logcheck
script invocado por logcheck que contiene todas las instrucciones a realizar.
Algunos parámetros especificados:
INTRO=0 (incluir o no encabezado y pie de mensaje)
REPORTLEVEL="server"
SENDMAILTO="root"
# default subject lines for mail
ATTACKSUBJECT="Security Alerts"
SECURITYSUBJECT="Security Events"
EVENTSSUBJECT="System Events"
ADDTAG="yes" (permite filtrar alertas en diferentes directorios)
# default paths
RULEDIR="/etc/logcheck"
CONFFILE="/etc/logcheck/logcheck.conf"
STATEDIR="/var/lib/logcheck"
LOGFILES_LIST="/etc/logcheck/logcheck.logfiles"
/usr/sbin/logtail
mantiene la información de las líneas de cada log que han sido analizadas, para no repetirlas en el próximo análisis.
/etc/logcheck/:
header.txt (cabecera del e-mail enviado)
logcheck.conf (fichero configuración)
logcheck.logfiles (lista de los logs a analizar)
cracking.d/
cracking.ignore.d/
(reglas que son indicio de ataques, y excepciones)
(Avisos clasificados como ATTACK ALERTS)
violations.d/
violations.ignore.d/
(reglas que detectan indicios de fallos de seguridad, y excepciones)
(Avisos clasificados como SECURITY EVENT)
ignore.d.paranoid/
ignore.d.server/
ignore.d.workstation/
(reglas de excepción para SYSTEM EVENT, en función del Report Level)
/etc/logcheck/logcheck.conf
Define las opciones principales de logcheck.
Sus parámetros principales son:
REPORTLEVEL="server"
SENDMAILTO="root"
#SUPPORT_CRACKING_IGNORE=0
#RULEDIR="/etc/logcheck"
#SYSLOGSUMMARY=0
#ATTACKSUBJECT="Security Alerts"
#SECURITYSUBJECT="Security Events"
#EVENTSSUBJECT="System Events"
(casi todos estos parámetros ya están definidos en el script logcheck)
/etc/logcheck/logcheck.logfiles
Contiene la ruta de los diferentes ficheros de log que se van a analizar (por defecto /var/log/syslog y /var/log/auth.log)
Los directorios de reglas se organizan de la siguiente manera:
cracking.d/ y violation.d/
logcheck: contiene las reglas comunes a los logs generados por cualquier paquete
<package>: contiene las reglas relativas a un paquete en concreto
local-<package>: reglas personalizadas creadas por el administrador sobre un determinado paquete
cracking.ignore.d/ y violations.ignore.d/
logcheck-<package>: contiene las reglas de excepción correspondientes a un paquete en concreto
local-<package>: reglas personalizadas creadas por el administrador sobre un determinado paquete
ignore.d.paranoid/ ignore.d.server/ y ignore.d.workstation/
logcheck: contiene las reglas comunes a los logs generados por cualquier paquete
<package>: contiene las reglas relativas a un paquete en concreto
Composición de una regla: se realiza mediante expresiones regulares RegExp.
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ sshd\[[0-9]+\]: Server listening on [:[:xdigit:].]+ port [[:digit:]]+\.$
En el fichero /etc/violation.d/logcheck aparecen los términos "Failed" "Invalid" como reglas genéricas para activar alertas del tipo Security Event
Aspectos críticos de logcheck: No realiza reagrupación y resumen de un mismo incidente (sí lo hace logwatch), siendo difícil detectar un patrón de ataque y generando además una gran cantidad de alertas sobre el mismo. (Recomendado: completar con logwatch)
==================
Ahora si un alma caritativa

hace un "logwatch-how-to" podemos probar ambos y ver qué nos ofrece cada uno.