NIDS & Analizadores de Logs

Autor: Sergio González González

Universidad de León, España

Resumen

Este artículo pretende mostrar la forma de instalar y configurar, en la distribución Debian GNU/Linux, algunos programas analizadores de logs y NIDS (Network Intrusion Detection System).


Tabla de contenidos

1. Introducción
2. Analizadores de logs
2.1. Calamaris
2.2. AWStats
2.3. log2mail
2.4. logcheck
3. NIDS - Network Intrusion Detection System
3.1. Snort
3.2. ippl
4. Más información
5. Sobre este documento

1. Introducción

Para facilitar la vida de un administrador de sistemas, se hace imprescindible el uso de analizadores de logs, que reporten las incidencias más importantes acaecídas en un determinado equipo. En este documento se mostrarán los siguientes analizadores de logs:

  • Calamaris - analizador de logs para Squid

  • AWStats - Analizador de logs para Apache

  • log2mail - Analizador de logs en busca de determinadas cadenas

  • logcheck - Analizador de logs que envía las anomalías del sistema al administrador

De todos es sabido que la red es un ‘mundo hostil’, por ello se hace necesario analizar el estado de nuestra red en busca de personajes sin escrúpulos que quieren a toda costa contactar de forma ilícita con nuestros servidores. Los programas NIDS ayudan en esta labor, aunque no son infalibles, por desgracia... Veremos a continuación algunos de los programas utilizados:

  • Snort - The Open Source Network Intrusion Detection System

  • ippl - IP protocols logger

2. Analizadores de logs

Sección dedicada a las herramientas analizadores de logs que actualmente se están utilizando en los servidores de la Unidad de Imagen y del laboratorio F1.

2.1. Calamaris

Calamaris es un script en Perl que genera estadísticas a partir de los archivos de log de Squid. Se ejecuta una vez al día, antes de la rotación de los logs y envía las estadísticas al administrador del sistema. Podemos ver un ejemplo de estos reportes en este enlace.

La instalación y configuración de Calamaris es extermadamente fácil en Debian GNU/Linux. Para instalarlo ejecutaremos:

# apt-get install calamaris

Una vez se ha bajado el programa, nos hará una serie de preguntas, a las que responderemos[1] de la siguiente forma:

What type of proxy log files do you want to analyse? squid
How should the daily analysis of Calamaris be stored? mail
How should the weekly analysis of Calamaris be stored? mail
How should the monthly analysis of Calamaris be stored? mail
Email address to which the daily analysis should be sent -> root

Al finalizar la configuración, nos generará el siguiente archivo de configuración

# configuration file for calamaris
# by Philipp Frauenfelder <[email protected]>
# 1998-10-09

# There are three categories: daily, weekly and monthly. For each of these
# one line is responsible. There must be a line for each category but only
# one.

# cat: [daily|weekly|monthly]
# mailto: mailaddress, eg. root
# webto: path incl. file name, eg. /var/www/calamaris/daily.html.
#        The script does currently not check wether the directory
#        exists and fails with a rather ugly error.
# todo: [nothing|mail|web|both]
# title: try it :-)

# cat:mailto:webto:todo:title
daily:root:/var/www/calamaris/daily.html:mail:'Squid daily'
weekly:root:/var/www/calamaris/weekly.html:mail:'Squid weekly'
monthly:root:/var/www/calamaris/monthly.html:mail:'Squid monthly'
# what log files should be parsed: [auto|squid|oops]
#       auto: tries to find the log files in this order: squid, oops
#       squid: parses a squid log file if available
#       oops: parses a oops log file if available
cache=squid

2.2. AWStats

Advanced Web Statistics (AWStats) es un analizador de archivos de log de un servidor web escrito en Perl. Muestra todas las estadísticas, incluyendo la cantidad de visitas, páginas visitadas, hits, horas de mayor actividad, buscadores, palabras clave usadas para encontrar el sitio, robots, enlaces rotos y mucho más. Para instalarlo tenemos que teclear:

# apt-get install calamaris

La configuración se lleva a cabo en el archivo /etc/awstats/awstats.conf y las opciones más interesantes serían:

LogFormat=1
DNSLookup=1
SiteDomain="cancerbero.unileon.es"
HostAliases="cancerbero.unileon.es 193.146.99.248"
Lang="es"
DefaultFile="index.html"

Cancerbero posee sus propias estadísticas generadas por AWStatas.

2.3. log2mail

log2mail es un demonio que revisa los archivos de log y envía a un correo electrónio a una determinada dirección si se da una expresión regular. Vamos a configurarlo de forma que se envíe un correo al administrador del sistema cada vez que un usuario se conecta a través de ssh al sistema o lo abandona. A continuación se muestran los archivos que se han de editar, así como su contenido:

2.3.1. /etc/log2mail/config/default

# sample config file for log2mail
# comments start with '#'
# see source code doc/Configuration for additional information

defaults
  sendtime = 20
  resendtime = 50
  maxlines = 1
  template = /etc/log2mail/mail
  fromaddr = log2mail
  sendmail = /usr/lib/sendmail -oi -t

file = /var/log/messages
  pattern = "root login"
    mailto = root

file = /var/log/auth.log
  pattern = "(ssh) session opened"
    mailto = root

  pattern = "(ssh) session closed"
    mailto = root

2.3.2. /etc/log2mail/mail

From: %f
To: %t
Subject: Coincidencia en: %m

Coincidencia de "%m" en "%F" %n veces:

--------------------------------------------------

%l

---------------------------------------------------

2.4. logcheck

Logcheck es parte del Proyecto Abacus de herramientas de seguridad. Este programa ha sido creado con la intención de ayudar en el procesado de archivos de log generados en sistemas UNIX. Logcheck encuentra las alertas de seguridad en los logs y las envía la correo del administrador. La forma de instalarlo es la siguiente:

# apt-get install logcheck

Una vez se ha bajado el programa, nos hará una serie de preguntas, que responderemos de la siguiente manera:

The email address to which the mails should be sent -> root

Esto es todo lo que tenemos que hacer, a partir de este momento, los avisos de seguridad llegarán puntualmente a nuestro correo ;-)

3. NIDS - Network Intrusion Detection System

3.1. Snort

Snort es un sistema detector de intrusiones en la red, capaz de hacer análisis en tiempo real y almacenar en un archivo de log los paquetes IP que han llegado a una determinada interfaz de red. La forma de instalarlo será la siguiente:

# apt-get install snort snort-common snort-doc snort-rules-default

Una vez se ha bajado el paquete, contestaremos a las preguntas realizadas de la siguiente forma:

 ¿Cuando debería arrancarse Snort? boot
¿En qué interfaz debería escuchar Snort? eth1 (para Cancerbero)
What address range should Snort consider to be local? 192.168.1.0/16
¿Debería deshabilitar el modo promiscuo? No
¿Deberían las reglas de Snort cambiarse de orden a Pasar|Alertar|Registrar? No
Si quiere añadir opciones adicionales a 'snort', especifiquelas aquí: "En blanco"
¿Quién debería recibir las estadísticas diarias? root
Una alerta debe aparecer más de éste número de veces para aparecer en las estadísticas. -> 1

Con eso es suficiente para que se ponga en marcha.

3.2. ippl

ippl es un “demonio” que guarda en archivos de log los paquetes IP enviados a un ordenador. Se ejecuta en segundo plano y muestra la información de los paquetes entrantes. Para instalarlo ejecutaremos:

# apt-get install ippl

La configuración se lleva a cabo en el archivo de configuración situado en /etc/ippl.conf. Ha de tener un aspecto similar al siguiente:

# IP protocols logger - Configuration file
# See ippl.conf(5)

# User used
# ---------
# Specify the user (declared in /etc/passwd) used to run the
# logging threads.
runas nobody

# Resolve hostnames?
# ------------------
# Uncomment the line below to disable DNS lookups
#noresolve all

# Use ident?
# ----------
# Uncomment the line below to enable IDENT lookups
#ident

# Log end of TCP connections ?
# ----------------------------
# Uncomment the line below to enable logging of closing TCP connections
# See the BUGS file.
#logclosing

# Expiration of DNS data
# ----------------------
#expire 3600

# Log in a file
# -------------
# Uncomment this line if you want to log messages into a /var/log/ippl.log
# See ippl.conf(5) for the syntax.
log-in all /var/log/ippl/all.log
log-in udp /var/log/ippl/udp.log

# Protocols logged
# ----------------
run icmp tcp
# Uncomment the line below to log UDP traffic.
# See ippl.conf(5) for recommandations.
run udp

# Logging format
# ----------------
# If you want to see the destination address, the ports, etc
# Or if you want to log the minimal information.
# See ippl.conf(5) for details.
logformat detailed all

# Filtering of packets logged
# ---------------------------

# Do not log answers to echo requests
#ignore icmp type echo_reply

# Log telnet connections using ident and name resolution
log options ident,resolve tcp port telnet

# Do not log UDP from localhost
#ignore udp from localhost

# Do not log DNS queries
#ignore udp port domain
#ignore udp srcport domain

# End of configuration
# Copyright (C) 1998-1999 Hugo Haas - Etienne Bernard

4. Más información

Si se quiere profundizar en alguno de estos programas, se invita al lector a consultar la ayuda que acompaña al programa así como las páginas principales de cada uno[2].

5. Sobre este documento

Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre GNU, versión 1.1 o cualquier versión posterior publicada por la Free Software Foundation. Puedes consultar una copia de la licencia en http://www.gnu.org/copyleft/fdl.html

Este documento ha sido escrito en formato XML utilizando la DTD de DocBook. Mediante este sistema, puede ser fácilmente transformado a múltiples formatos (HTML, TXT, PDF, PostScript, LaTeX, DVI, ...). Se recomienda su utilización como herramienta de documentación potente y libre.



[1] Las preguntas que no aparezcan en la lista, se responderán por defecto

[2] Algunas están listadas en la Introducción