arso-m7: article snort

6
Ayudantes de Snort • PORTADA 27 Número 72 WWW.LINUX - MAGAZINE.ES S nort es viejo – en la escala TI, incluso anciano. Marty Roesch comenzó el desarrollo del sniffer de red [1] en 1998. Su plan original era desarrollar uno que pudiera funcionar en diversos sistemas operativos. La ver- sión inicial, que data de 1998, contenía 1200 líneas de código, pero de estos humildes comienzos surgió uno de los motores de IDS de redes más potentes. En 2001, Roesch fundó Sourcefire [2], una empresa que hoy es sinónimo de potentes dispositivos de detección de intrusiones en redes basados en Snort, y que continúa desarrollando Snort como una forma de corresponder a la comuni- dad de código abierto. Snort es un motor que analiza y estandariza el tráfico de red y luego comprueba las firmas para identificar actividades sospechosas. Snort no pro- porciona herramientas para la gestión de firmas, ni el almacenamiento de los mensajes de los análisis en una base de datos o registros forenses. En el pasado, los administradores solían uti- lizar herramientas como Oinkmaster [3] o BASE [4] para procesar la infor- mación de Snort; sin embargo, estos proyectos han quedado huérfanos o dormidos. Afortunadamente, algunos trabajos nuevos han cubierto este hueco: Snorby [5], OpenFPC [6] y Pulled Pork [7]. Este artículo muestra la última generación de proyectos que dan soporte a Snort. Sniffer Con la versión 2.9, los desarrolladores de Snort presentaron la nueva DAQ (la librería de adquisición de datos), que reemplaza a la clásica libpcap. A partir de esta versión, Snort depende de la librería DAQ, por lo que no se podrá ins- talar el sniffer sin ella (véase el cuadro titulado “DAQ”). La versión actual de Snort es la 2.9.0.3. A diferencia de la anterior, los desarrolladores simplemente han corre- gido algunos fallos. Antes de compilar Snort debemos asegurarnos de tener ins- taladas en el sistema las librerías DAQ, Dnet y PCRE. La Tabla 1 muestra las posibles modificaciones del script ./con- figure de Snort. Aunque podemos tener varias configuraciones de bases de datos, lo más probable es que deseemos evitarlas; vamos a mostrar cómo utilizar Barnyard [12] como base de datos resi- dente. El archivo con el código fuente de Snort sólo proporciona un script de comienzo para Red Hat y las distribucio- nes basadas en Fedora. Probablemente haya que modificar el script para que se ajuste a nuestras necesidades de instala- ción – o incluso que tengamos que escri- birnos nuestro propio script. Lo impor- tante es recordar que necesitamos ejecu- Snorby, Open FPC y Pulled Pork traen de vuelta a Snort CARNE FRESCA Snort es el estándar de facto para la detección de intrusiones en redes de código abierto. La comunidad de desarrolladores ha mantenido un perfil bajo durante un par de años, pero las extensiones como Snorby, OpenFPC y Pulled Pork le han proporcionado al viejo cerdito un poco más de vida. POR RALF SPENNEBERG © lsantilli - 123RF.com

Upload: aurora-lara-marin

Post on 24-Jul-2015

1.481 views

Category:

Technology


0 download

TRANSCRIPT

Ayudantes de Snort • PORTADA

27Número 72W W W . L I N U X - M A G A Z I N E . E S

Snort es viejo – en la escala TI,

incluso anciano. Marty Roesch

comenzó el desarrollo del sniffer

de red [1] en 1998. Su plan original era

desarrollar uno que pudiera funcionar

en diversos sistemas operativos. La ver-

sión inicial, que data de 1998, contenía

1200 líneas de código, pero de estos

humildes comienzos surgió uno de los

motores de IDS de redes más potentes.

En 2001, Roesch fundó Sourcefire [2],

una empresa que hoy es sinónimo de

potentes dispositivos de detección de

intrusiones en redes basados en Snort, y

que continúa desarrollando Snort como

una forma de corresponder a la comuni-

dad de código abierto.

Snort es un motor que analiza y

estandariza el tráfico de red y luego

comprueba las firmas para identificar

actividades sospechosas. Snort no pro-

porciona herramientas para la gestión

de firmas, ni el almacenamiento de los

mensajes de los análisis en una base de

datos o registros forenses. En el

pasado, los administradores solían uti-

lizar herramientas como Oinkmaster

[3] o BASE [4] para procesar la infor-

mación de Snort; sin embargo, estos

proyectos han quedado huérfanos o

dormidos. Afortunadamente, algunos

trabajos nuevos han cubierto este

hueco: Snorby [5], OpenFPC [6] y

Pulled Pork [7]. Este artículo muestra la

última generación de proyectos que dan

soporte a Snort.

SnifferCon la versión 2.9, los desarrolladores

de Snort presentaron la nueva DAQ (la

librería de adquisición de datos), que

reemplaza a la clásica libpcap. A partir

de esta versión, Snort depende de la

librería DAQ, por lo que no se podrá ins-

talar el sniffer sin ella (véase el cuadro

titulado “DAQ”).

La versión actual de Snort es la

2.9.0.3. A diferencia de la anterior, los

desarrolladores simplemente han corre-

gido algunos fallos. Antes de compilar

Snort debemos asegurarnos de tener ins-

taladas en el sistema las librerías DAQ,

Dnet y PCRE. La Tabla 1 muestra las

posibles modificaciones del script ./con-

figure de Snort. Aunque podemos tener

varias configuraciones de bases de

datos, lo más probable es que deseemos

evitarlas; vamos a mostrar cómo utilizar

Barnyard [12] como base de datos resi-

dente.

El archivo con el código fuente de

Snort sólo proporciona un script de

comienzo para Red Hat y las distribucio-

nes basadas en Fedora. Probablemente

haya que modificar el script para que se

ajuste a nuestras necesidades de instala-

ción – o incluso que tengamos que escri-

birnos nuestro propio script. Lo impor-

tante es recordar que necesitamos ejecu-

Snorby, Open FPC y Pulled Pork traen de vuelta a Snort

CARNE FRESCA

Snort es el estándar de facto para la detección de intrusiones en redes

de código abierto. La comunidad de desarrolladores ha mantenido un

perfil bajo durante un par de años, pero las extensiones como Snorby,

OpenFPC y Pulled Pork le han proporcionado al viejo cerdito un poco

más de vida.

POR RALF SPENNEBERG

© ls

an

tilli - 123R

F.co

m

PORTADA • Ayudantes de Snort

28 Número 72 W W W . L I N U X - M A G A Z I N E . E S

tar Snort por medio de

/usr/local/bin/snort-c/etc/snort/snort. conf.

Antes de comenzar a utilizar Snort por

primera vez, debemos copiar el conte-

nido del directorio etc que se encuentra

en el directorio del código fuente a

/etc/snort/ y crear un directorio

/var/log/snort. El cuadro titulado

“snort.conf” contiene la ayuda necesaria

para modificar el fichero de

configuración snort.conf.

FirmasEvidentemente, Snort necesita ahora las

firmas que le proporcionarán el conoci-

miento para detectar las intrusiones.

Existen básicamente tres fuentes de fir-

mas:

• Las reglas VRT de Sourcefire Vulnera-

bility Research Team

• Las reglas Emerging Threats

• Las reglas GPL

Estas reglas han de mantenerse actuali-

zadas siempre – en este artículo utili-

zaremos más adelante Pulled Pork para

las actualizaciones. Si tenemos la

intención de utilizar Snort en un

entorno en producción, es probable

que deseemos utilizar las reglas VRT o

las Emerging Threats. Ambas se

encuentran disponibles tanto de forma

gratuita como de pago. Las reglas VRT

gratuitas se diferencian de las comer-

ciales porque se publican 30 días des-

pués que las comerciales, pero permi-

ten acceder al conjunto completo de

reglas. La edición comercial de las

reglas Emerging Threats incluye reglas

adicionales que no se suministran en la

versión gratuita.

Los siguientes ejemplos utilizan las

reglas VRT, que se pueden descargar

como parte de una suscripción comer-

cial o bien obtenerlas gratuitamente con

un retraso de 30 días (tras registrarse).

Una vez que nos hayamos subscrito o

registrado, Sourcefire nos proporcionará

un “Oink Code” que habrá que incluir

en la petición de descarga:

wget http://www.snort.org/reg-rU

ules/snort rules-snapshot-2903.U

tar.gz/<oinkcode> -O snortrulesU

-snapshot-2903.tar.gz

El conjunto de reglas VRT incluye cuatro

directorios: etc contiene los ficheros de

configuración que necesitan los conjun-

tos de reglas Snort

y Barnyard, que

deberemos copiar

en el directorio

/etc/snort. rules,

que contiene las

reglas basadas en

texto para Snort,

ha de copiarse en

/etc/snort/rules.

preproc_rules nos

da las reglas del

preprocesador –

sólo hay que copiar el directorio en

/etc/snort/preproc_rules.

Por último, las reglas binarias para

Snort se encuentran disponibles en

so_rules. Necesitamos copiar el subdi-

rectorio de la distribución (por ejemplo,

so_rules/precompiled/Ubuntu-10-4/x86-6

4/2.9.0.3/*) en /usr/local/lib/ snort_

dynamicrules y los ficheros *.rules en el

directorio /etc/snort/so_rules/.

Sourcefire Vulnerability Research

Team ofrece algunas reglas sólo en for-

mato binario. Existen dos razones para

el uso del formato binario: por un

lado, el lenguaje de reglas de Snort es

un lenguaje muy potente pero no es

capaz de identificar paquetes sospe-

chosos en algunos ataques. Las libre-

rías binarias mejoran considerable-

mente la tasa de detección. La

segunda razón es que un tercero

podría haber descubierto una vulnera-

bilidad en Sourcefire bajo un acuerdo

de confidencialidad (NDA). Si el

equipo de VRT distribuyese la firma en

texto claro, estarían publicando deta-

lles sin la autorización necesaria.

Actualizando con PulledPorkLa mayoría de los usuarios utilizan

Oinkmaster para actualizar los conjun-

tos de reglas. Como los trabajos de

desarrollo de esta herramienta se

encuentran dormidos, Pulled Pork admi-

nistra las tareas en diversos entornos.

Pulled Pork también procesa las reglas

binarias y organiza los elementos en los

directorios adecuados. Para la instala-

ción sólo es necesario descargarse el

paquete desde Google Code. La versión

actual de Pulled pork (0.5.0) requiere

01 <SNORT_ATTRIBUTES>

02 <ATTRIBUTE_TABLE>

03 <HOST>

04 <IP>10.1.2.3</IP>

05 <OPERATING_SYSTEM>

06 <NAME>

07 <ATTRIBUTE_VALUE>Windows</ATTRIBUTE_VALUE>

08 </NAME>

09 <FRAG_POLICY>Windows</FRAG_POLICY>

10 <STREAM_POLICY>Win XP</STREAM_POLICY>

11 </OPERATING_SYSTEM>

12 <SERVICES>

13 <SERVICE>

14 <PORT>

15 <ATTRIBUTE_VALUE>80</ATTRIBUTE_VALUE>

16 </PORT>

17 <IPPROTO>

18 <ATTRIBUTE_VALUE>tcp</ATTRIBUTE_VALUE>

19 </IPPROTO>

20 <PROTOCOL>

21 <ATTRIBUTE_VALUE>http</ATTRIBUTE_VALUE>

22 </PROTOCOL>

23 </SERVICE>

24 </SERVICES>

25 </HOST>

26 </ATTRIBUTE_TABLE>

Listado 1: Una Tabla de Atributos de unHost

Insta-Snorby está basado en la librería TurnKey Linux Virtual

Appliance [9], que proporciona máquinas virtuales para diver-

sos propósitos. Basada en Ubuntu Linux, permite a los adminis-

tradores probar varias aplicaciones sin tener que instalar nada.

Insta-Snorby es una imagen ISO; la versión 0.6.0 soporta una

instalación sin complicaciones en un dispositivo. Contiene:

• Snort 2.9.0.3

• Barnyard 2.19

• Snorby 2.2.1

• Open FPC

• Pulled Pork

Para instalarla como un dispositivo virtual, necesitaremos pro-

porcionarle a Insta-Snorby al menos 512 MB de RAM para evi-

tar el uso de una memoria de intercambio.

Insta-Snorby

29Número 72W W W . L I N U X - M A G A Z I N E . E S

BarnyardUna vez que se haya instalado Snort con

las especificaciones, registrará los men-

sajes en un fichero binario en formato

Unified2, que no podremos leer directa-

mente, de modo que será necesario utili-

zar otra herramienta para almacenar los

datos en una base de datos. La herra-

mienta perfecta es Barnyard2, que

adopta el papel del proceso que escribe

los datos en la base de datos, redu-

ciendo por tanto la carga del servidor. El

archivo con el código fuente de Barn-

yard se encuentra disponible en [12]; su

instalación desde el código fuente no

supone ningún problema.

Barnyard necesita escribir ficheros en

el directorio /var/log/snort y escribir el

contenido del fichero en la base de

datos. Snort almacena los ficheros en

este directorio con el patrón

merged.log.XXXXXXXX, donde

XXXXXXX es la marca de tiempo que

Barnyard referencia para ayudar a igno-

rar los ficheros antiguos. Si no se

encuentra la marca de tiempo, habrá

que eliminar la opción nostamp del

fichero de configuración para la salida

del plugin Unified. Como el fichero de

registro de Unified sólo contiene infor-

mación binaria, Barnyard tiene que

acceder a otros ficheros de

configuración de Snort para poder inter-

pretar el contenido del fichero, así que

introducimos las rutas de estos ficheros

en el fichero de configuración

/usr/local/etc/barnyard2.conf y modifi-

camos el resto de los parámetros:

Perl y los módulos Archive::Tar,

Crypt::SSLeay y LWP::Simple de Perl,

que se pueden instalar en la mayoría de

las distribuciones por medio del gestor

de paquetes. Para instalar Pulled Pork,

copiamos el directorio etc en

/etc/pulledpork y el script de Perl

pulledpork.pl en /usr/local/bin. El

fichero de configuración pulledpork.

conf también es autoexplicativo. Las

únicas tareas importantes son la modi-

ficación de la regla de la URL con el

Oink Code, las rutas para instalar las

reglas y las reglas compartidas de obje-

tos, dependiendo de la distribución que

tengamos. Pulled Pork puede modificar

las reglas durante la instalación. Para

hacerlo, referencia cuatro ficheros de

configuración adicionales, que pode-

mos activar:

• dropsid.conf: Pulled Pork cambia

todas las reglas de este fichero para

decirle a Snort que descarte los paque-

tes.

• enablesid.conf y disablesid.conf:

PulledPork activa y desactiva las

reglas de estos ficheros.

• modifysid.conf: Pulled Pork modifica

las reglas en los ficheros especifica-

dos.

El programa se ejecuta tecleando pulled-

pork.pl -c /etc/pulledpork/pulledpork.

conf. Antes de descargar las reglas,

Pulled Pork utiliza las sumas de compro-

bación para ver si las reglas en el servi-

dor son nuevas. El resto lo realiza un

trabajo programado de forma diaria en

cron.

config utc

config daemon

config logdir: /tmp

config waldo_file: /var/logU

/snort/waldo

#output alert_fast: stdout

output database: log, mysql, U

user=snort password=snortpw U

dbname=snortdb host=localhost

Antes de ejecutar Barnyard2, debemos

crear la base de datos:

# cat << EOF | mysql -u root -p

create database snortdb;

grant all on snortdb.* to U

snort@localhost identified U

by “snortpw”;

EOF

# mysql -u snort -password=U

snortpw snortdb < schemas/U

create_mysql

La siguiente línea en el script de

comienzo automatiza el proceso de

arranque:

barnyard2 -d /var/log/snort/U

-f merged.log -c /usr/local/U

etc/barnyard2.conf -n

La -n le indica a Barnyard2 que sólo pro-

cese los mensajes nuevos que se añadan

al fichero de registro de Snort. Para

poder ignorar los mensajes antiguos

cuando se reinicie, insertará un marca-

dor en un fichero Waldo [13].

SnorbySnorby, que hace de interfaz de Snort,

sólo se encuentra oficialmente disponi-

ble por medio de su propio repositorio

Git [14], pero a veces nos podemos tro-

pezar con varios archivos comprimidos.

Antes de poder instalar Snorby, necesi-

tamos resolver algunas dependencias:

Ruby (>=1.8.7), Rubygems y las

siguientes Rubygems: tzinfo, builder,

memcache-client, rack, rack-test, erubis

mail, text-format, bundler, thor, i18n,

sqlite3-ruby y rack-mount rails=3.0.0.

Los requisitos de Ruby en particular

implican que tenemos una distribución

reciente o que estamos preparados para

instalar todos estos paquetes desde el

código fuente. Ubuntu a partir de Kar-

mic y Fedora 14 incluyen la versión

1.8.7 de Ruby; ninguna de estas versio-

nes incluyen la versión 3 de Rails.

Figura 1: El panel de control de Snorby ordena los mensajes según su gravedad.

Ayudantes de Snort • PORTADA

PORTADA • Ayudantes de Snort

30 Número 72 W W W . L I N U X - M A G A Z I N E . E S

Tras descomprimirlo, en el directorio

de Snorby tecleamos bundle install; este

paso instala un par de paquetes adicio-

nales. rake snorby:setup finalmente ins-

tala Snorby. Hay un par de ficheros de

configuración autoexplicativos –

snorby/config/snorby_config.yml y

snorby/config/initializers/mail_config.rb

– que necesitamos modificar, pero luego

podemos ejecutar Snorby tecleando

rails -c para que aparezca la ventana de

inicio de sesión.

Tras iniciar la sesión, veremos el panel

de control de Snorby, una GUI de última

generación con los mensajes entrantes

(Figura 1) que permite ver cada evento

en detalle (Figura 2).

Análisis ForenseSnort sólo detecta los ataques potencia-

les en la red y registra cualquier paquete

sospechoso que haga saltar las alarmas.

A menudo esto sucede demasiado tarde,

ya que Snort no puede viajar hacia atrás

en el tiempo y registrar los paquetes

enviados previamente. Sólo se pueden

modificar las firmas para que registren

la subsecuencia de paquetes desde la

misma conexión. Esta complicación

hace que sea prácticamente imposible

analizar un ataque con éxito a nivel de

red.

El reciente proyecto OpenFPC (cap-

tura completa de paquetes) tiene como

objetivo resolver este problema.

OpenFPC es la rama hija de la plantilla

de Sourcefire, como Pulled Pork; el

número de versión es bastante bajo

(0.4), y necesitamos instalar primero

unos cuantos paquetes para cubrir las

dependencias. En las distribuciones

lación openfpc-install.sh install y res-

pondemos a las preguntas (por ejemplo,

el nombre de usuario y la contraseña).

El fichero /etc/openfpc/ openfpc- default.

conf se usa para otras configuraciones.

Luego arrancamos el servidor y compro-

bamos la disponibilidad de los clientes:

openfpc --action start

openfpc-client --action status

Para que el programa se ejecute en el

momento de arranque del ordenador,

encontraremos los scripts de arranque

en /etc/init.d. Para integrarlo con

Snorby, necesitamos hacer un pequeño

basadas en Debian como Ubuntu, la ins-

talación es más fácil, ya que podemos

hacer lo siguiente:

aptitude install apache2 U

daemonlogger tcpdump U

tshark libarchive-zip-perl U

libfilesys-df-perl libapache2U

-mod-php5 mysql-server php5U

-mysql libdatetime-perl U

libdbi-perl libdate-simple-perlU

php5-mysql libterm-readkey-perlU

libdate-simple-perl

Tras descomprimir el código fuente de

OpenFPC, ejecutamos el script de insta-

Figura 2: En la interfaz web de Snorby, los administradores pueden clasificar los resultados,

añadir comentarios y gestionar los sensores y los usuarios.

Opción Función

--enable-ipv6 Activa el soporte IPv6. Incluso si no se desea realmente usar IPv6, se debería activar esta función. Esta es la

única opción para que Snort soporte el parámetro ipvar utilizado en los ficheros de configuración 2.9.

--enable-static-daq Integra una librería DAQ estática. Esto facilita la distribución del binario.

--enable-zlib Muchos servidores comprimen las páginas cuando las sirven. Con este parámetro, Snort podrá analizar tam

bién las páginas web. Sin embargo, implica la incorporación de la librería Zlib al sistema.

--enable-targetbased Activa la configuración del preprocesador específica de un host, tal como se describe en el artículo.

--enable-decoder-preprocessor-rules Permite activar y desactivar las pruebas individuales del preprocesador.

--enable-reload Soporta una recarga simple en el caso de que cambie la configuración de Snort. El reiniciado siempre

implica la pérdida de algunos paquetes.

--enable-reload-error-restart Si falla la recarga, Snort se reinicia.

--enable-normalizer Activa el código normalizador en el modo en línea. Un binario de Snort puede funcionar en el modo en línea

IPS o en modo pasivo IDS si se utiliza la librería DAQ.

--enable-inline-init-failopen Permite a Snort pasar los paquetes sin comprobarlos durante la inicialización del modo en línea.

Tabla 1: Opciones de Configuración

Ayudantes de Snort • PORTADA

31Número 72W W W . L I N U X - M A G A Z I N E . E S

cambio mediante la GUI web. En la

interfaz administrativa, activamos el

plugin OpenFPC e introducimos en

OpenFPC el path:https:// Open-FPC- Ser-

ver_ name/ openfpc/ cgi-bin/ extract. cgi.

Luego podemos descargar el fichero

Pcap de la conexión entera directa-

mente desde la alerta en Snorby (Figura

3) y enviarlo a Wireshark para su análi-

sis.

La Seguridad TienePrioridadPor razones de seguridad, no debería-

mos nunca ejecutar Snort con los privi-

legios del root; tiene mucho más sentido

crear una cuenta dedicada para Snort y

añadir el nombre de la cuenta y el grupo

al fichero de configuración de Snort.

Además, podemos encerrar Snort en una

jaula Chroot; el fichero snort.conf que-

daría de la siguiente forma:

config set_uid: snort

config set_gid: snort

config chroot: /chroot/snort

Evidentemente, necesitamos modificar

algunos permisos y estructuras de direc-

torios para evitar que Snort tenga pro-

blemas.

Snort también ofrece algunos métodos

avanzados, tales como la reconstrucción

del tráfico basada en el destino. Los

investigadores Vern Paxson y Umesh

Shankar descubrieron en 2003 que dife-

rentes sistemas operativos manejan la

desfragmentación IP y reensamblan TCP

de diferentes maneras. Esto le propor-

ciona a un atacante la posibilidad de

camuflar un ataque de modo que com-

prometa el objetivo pero que no sea

detectado por el IDS.

Para permitir que esto suceda, el ata-

cante debería fragmentar el exploit, ade-

más crea el fragmento con la carga ata-

cante dos veces. Un fragmento contiene

la carga y el otro contiene datos no peli-

grosos. Si se envían los dos en sucesión,

el éxito o el fracaso del ataque y la habi-

lidad del IDS para detectarlo dependerán

de cómo responda el sistema objetivo.

¿Preferirá el primer o el segundo frag-

mento para la desfragmentación? Esta-

bleciendo los parámetros con cuidado,

el atacante podría ejecutar el exploit sin

que el IDS lo detecte.

Existen diferencias similares con los

segmentos TCP y el solapamiento de

los fragmentos y los segmentos. Para

asegurarse de que Snort siempre

detecte estos ata-

ques de forma correcta, necesita des-

fragmentar y reensamblar los paquetes

de la misma forma que lo haría el sis-

tema objetivo.

Snort posee un par de trucos propios

en respuesta a estos métodos de ataque

avanzado: soporta los modos de des-

fragmentación de first, last, bsd,

bsd-right, linux, windows y solaris, con

bsd por defecto. Para métodos de reen-

samblado más complejos, véase la

Tabla 2.

Si sólo utiliza uno o dos sistemas ope-

rativos, la configuración es bastante

simple: sólo hay que editar la sección

del preprocesador de snort.conf:

preprocessor frag3_engine: U

policy linux bind_to [10.1.1.U

12/32,10.1.1.13/32] U

detect_anomalies

preprocessor frag3_engine: U

policy windows bind_to U

10.2.1.0/24 detect_anomalies

Esta configuración está bien para las

redes Windows con dos ordenadores

Linux. De forma similar, habría que

modificar el preprocesador Stream5.

Para más detalles, léase el fichero

La mayoría de los parámetros de configuración que se encuen-

tran en el fichero snort.conf pueden quedarse tal cual, pero

habrá que hacer unos cuantos cambios. La configuración DAQ

utiliza la interfaz de paquetes AF y proporciona un búffer de 256

MB para utilizarlo de caché para cualquier paquete que aún no

haya procesado. La variable HOME_NET define la red a prote-

ger. Las variables RULE_PATH, SO_RULE_PATH y

PREPROC_RULE_PATH hacen referencia a los directorios

correctos. El plugin de salida unified2 crea los ficheros de regis-

tro:

config daemon

config interface: eth0

config daq: afpacket

config daq_mode: passive

config daq_var: buffer_size_mb=256

ipvar HOME_NET 192.168.0.0/24

var RULE_PATH /etc/snort/rules

var SO_RULE_PATH /etc/snort/so_rules

var PREPROC_RULE_PATH /etc/snort/preproc_rules

output unified2: filename merged.log, limit 128,

vlan_event_types

Para utilizar reglas de preprocesamiento y reglas de objetos

compartidos, deberemos quitar los signos de comentario que

se encuentran al comienzo de las directivas incluidas en las

correspondientes secciones.

snort.conf Uno de los mayores problemas a la hora de ejecutar Snort en

una red rápida es su propio rendimiento. Si Snort tardara dema-

siado en analizar los paquetes y fallase a la hora de obtener los

paquetes a la velocidad necesaria de la librería Libpcap [10], la

librería descartaría el paquete. Es más, los administradores han

usado dos soluciones diferentes para solucionar este problema:

Phil Wood añadió un búffer de memoria en anillo a Libcap; el

tamaño del búffer se especificaba cuando se cargaba la librería.

A partir de la versión 1.0 de Libpcap, el búffer en anillo viene

implementado en la librería. Otra solución es la librería PF_ring

[11], que reemplaza a la librería libpcap.

La versión 2.9 de Snort presenta DAQ (librería para la adquisi-

ción de datos) como una alternativa nueva y mucho más sim-

ple, que accede directamente a la tarjeta de interfaz de red sin

hacer uso de Libpcap. DAQ es fácil de instalar, sin embargo, la

mayoría de las distribuciones no cuentan con los paquetes pre-

compilados con los parámetros correctos. De hecho, la página

web de Snort sólo ofrece paquetes RPM. Tras descargar la

última versión 0.5 del código fuente, sólo hay que seguir los

pasos típicos: ./configure,make,sudo make install. No hay

muchas dependencias que resolver. Para asegurarse de que se

pueden compilar los fuentes, probablemente haya que instalar

el compilador de C, Flex, Bison y libpcap >= 1.0. Si no va a usar

Libpcap, sino que accede a la NIC directamente por medio de la

librería DAQ, puede desactivar Libpcap

usando --disable-pcap-module.

DAQ

mente desde un análisis de Nmap pode-

mos utilizar Hogger [15].

¡Corre, Cerdito, Corre!Con una combinación inteligente de los

componentes adecuados, podemos crear

un sistema de detección de intrusiones

en la red con Snort. Obviamente, necesi-

tamos utilizar un buen hardware en una

red rápida. Dispositivos como el que

comercializa Sourcefire pueden monito-

rizar las redes a velocidades de hasta 10

Gbps ejecutanto Snort 2.9 en un hard-

ware altamente especializado.

Comparado con

esto, el hardware

normal habitual-

mente alcanza su

límite a 1 Gbps. Se

recomiendan tarje-

tas interfaces de

red premium –

como las fabrica-

das por Napatech

[16], por ejemplo

– una generosa

cantidad de RAM y

una CPU rápida.

Además, los admi-

nistradores que

buscan rendi-

miento necesitarán

modificar los pará-

metros del prepro-

cesador para indicar la cantidad de RAM

disponible.

Conseguir que Snort maneje redes de

10 Gbps es todo un reto – pero no impo-

sible – con una buena experiencia, el

hardware adecuado y un ajuste óptimo.

La respuesta que Steven Sturges de

Sourcefire da cuando se le pregunta

acerca de cuál es el mayor desafío, es

concisa: “Velocidad”. Y continúa expli-

cando que no es difícil analizar 500

Mbps en tiempo real; el reto está en

intentar hacer lo mismo con ¡10 Gbps! �

README.stream5 que se encuentra en

el directorio del código fuente de

Snort.

Si tenemos muchos sistemas operati-

vos en la LAN, esta clase de administra-

ción es demasiado compleja. En tal

caso, necesitamos una tabla de atributos

de los hosts para definir la información

en un fichero XML (Listado 1). La tabla

se define en snort.conf como

attribute_table filename /path/to/file. La

tabla de atributos de hosts contiene

información de cada ordenador indivi-

dual. Para crear el fichero XML directa-

PORTADA • Ayudantes de Snort

32 Número 72 W W W . L I N U X - M A G A Z I N E . E S

Ralf Spenneberg es profesor free-

lance de Unix/ Linux, consultor, y

autor y CEO de Ralf Spenneberg

Open Source Training. Ralf ha

publicado varios libros sobre

detección de intrusiones, SELinux,

cortafuegos y redes privadas vir-

tuales. La segunda edición de su

último libro VPN on Linux se pub-

licó hace unos meses.

EL A

UT

OR

[1] Snort: http:// www. snort. org

[2] Sourcefire: http:// www. sourcefire.

com

[3] Oinkmaster: http:// oinkmaster.

sourceforge. net

[4] BASE: http:// base. secureideas. net

[5] Snorby: http:// www. snorby. org

[6] OpenFPC: http:// www. openfpc. org/

[7] Pulled Pork: http:// code. google. com/

p/ pulledpork/

[8] Insta-Snorby del 19.01.2011 http://

www. snorby. org/ Insta-Snorby-0. 6. 0.

iso

[9] Librería TurnKey Linux Virtual

Appliance: http:// www. turnkeylinux.

org

[10] Librería libpcap: http:// www.

tcpdump. org

[11] LibreríaPF_ring: http:// www. ntop.

org/ PF_RING. html

[12] Barnyard2 http:// www. securixlive.

com/ barnyard2/ index. php

[13] Fichero Waldo: http:// en. wikipedia.

org/ wiki/ Waldo_file

[14] Repositorio Snorby Git: https://

github. com/ Snorby/ snorby/ tarball/

master

[15] Hogger: http:// code. google. com/ p/

hogger/

[16] Napatech: http:// www. napatech.

com/ applications/ network_security/

intrusion_detection. html

RECURSOS

Figura 3: Si usamos el fichero PCAP, podremos definir con precisión qué paquetes queremos

que extraiga OpenFPC.

Método Efecto

first Prefiere el primer segmento de solapamiento

last Prefiere el último segmento de solapamiento

bsd Free BSD 4.x, Net BSD 2.x, Open BSD 3.x, AIX

linux Linux 2.4 y 2.6

old-linux Linux 2.2 y anteriores

windows Windows 98, NT, 2000, XP

win2003 Windows 2003 Server

vista Windows Vista

solaris Solaris 9.x

hpux10 HPUX 10

hpux HPUX 11

irix IRIX 6

macos MacOS >= 10.3

Tabla 2: Reensamblado Basado en elObjetivo