Sei sulla pagina 1di 7

ADMINISTRACIÓN • Snort

Detección de Intrusiones con Snort

SEGURIDAD SNORT
Búsqueda de ataques ocultos con el sistema de detección de intrusos Cada vez que el IDS encuentra una coinci-
dencia en una regla, se dispara una acción
Snort. POR CHRIS RILEY preconfigurada. La acción varía depen-
diendo de la configuración de dicha regla,
aunque en modo IDS básico, el sistema sim-

H
ace poco implementamos un Sis- obvio, observando estos logs, que los servi- plemente registra el tráfico peligroso o envía
tema de Detección de Intrusos (IDS) dores no estaban recibiendo la atención ade- una alerta. Un sensor, es decir, un equipo
para una granja de webs alojada cuada. situado en el perímetro de la red, permanece
remotamente. Tras la configuración inicial, La moraleja de esta historia es que siem- vigilante al tráfico que el cortafuegos deja
pcphotos, Fotolia

comenzamos a hacer pruebas y a optimizar pre hay que tener un ojo puesto en la red. pasar; con otro sensor, situado en el exterior
el sistema. Tan pronto como se conectó, Incluso aunque no tengamos el problema de del cortafuegos, se pueden ver los intentos
detectamos un tipo de tráfico que no debería un cortafuegos mal configurado, nuestros de acceso.
pasar del DMZ. El cortafuegos controlado sistemas pueden beneficiarse de la vigilancia Snort [1] es un IDS alternativo de código
por el ISP estaba mal configurado y permitía de un IDS. En el nivel más básico, lo que un abierto, y al igual que otros proyectos de
la entrada de casi todo el tráfico. IDS hace es capturar todo el tráfico de una código abierto, cuenta ahora con una rama
Durante el poco tiempo en que estuvo el red. Luego compara el contenido de los corporativa, Sourcefire [2]. Lo bueno es que
test en funcionamiento, el IDS registró un paquetes con reglas específicas para ver si Snort sigue estando disponible bajo licencia
gran número de escaneos de puertos e inten- existen vulnerabilidades conocidas o código GPL.
tos de acceso a los servidores principales. Era malicioso.

60 Número 46 WWW.LINUX-MAGAZINE.ES
Snort • ADMINISTRACIÓN

En este artículo explicamos cómo usar Para ver un listado com-


Snort para vigilar nuestra red. pleto de las opciones
soportadas ejecutaremos
Instalación ./configure -h. Si se produ-
La instalación de Snort suele ser sencilla. cen errores durante la
Quien tenga un gestor de paquetes .dev o compilación, quizá sea
.rpm debería encontrar a Snort entre los porque nos faltan algunos
paquetes disponibles para su distribución; archivos de cabecera
aunque sea una versión algo más antigua. necesarios. En particular,
En el momento de escribir estas líneas, la hay que asegurarse de
última versión es la 2.8.3.1. Instalarlo desde tener pcre.h, pcap.h, pcap-
las fuentes no es tan sencillo como hacerlo bpf.h y mysql.h en el
con apt-get, pero dispondremos de muchas directorio /usr/include. Si
más opciones para la configuración del sis- no se encuentran estos
tema. Para compilarlo necesitaremos el tar- archivos, algunas de las
ball con las fuentes y, opcionalmente, la dependencias pueden no Figura 1: El archivo snort.conf es el eje central en la
suma MD5 que usaremos para comprobar la instalarse correctamente configuración de Snort.
integridad del paquete. (Listados 1 y 2). Es posi-
ble además que tengamos problemas con el tanto gratuita como de pago, dependiendo
wget http://www.snort.org/U archivo libpcap.so. En determinadas distri- de cómo de actualizado necesitemos nuestro
dl/snort-2.8.3.1.tar.gz buciones tenemos que recrear este enlace juego de reglas. Las reglas para los miembros
simbólico mediante con suscripción de pago se actualizan 30
Opcional: días antes que las de los usuarios normales.
ln -sU Es mejor no usar las reglas proporcionadas
wget http://www.snort.org/U /usr/lib/libpcap.so.<versión>U por la versión liberada, ya que caducan rápi-
dl/snort-2.8.3.1.tar.gz.md5 /usr/lib/libpcap.so damente ante nuevos ataques. Una vez nos
hemos registrado (o suscrito), ya podemos
Opcional: Una vez hecho make y make install, damos descargar el nuevo juego de reglas para des-
los últimos toques antes de pasar a la comprimirlas en /etc/snort/rules. No hay que
md5sum -cU configuración de la base de datos MySQL. olvidarse de la comprobación del tar con
snort-2.8.3.1.tar.gz.md5 Hay que crear un usuario para Snort (no md5sum.
tar -xvf snort-2.8.3.1.tar.gz querremos que el servicio se ejecute como
cd snort-2.8.3.1 root, ¿verdad?). Para crear un nuevo usuario, Preparación de la Base de
ejecutamos los siguientes comandos: Datos
Una vez descomprimidas las fuentes, decidi- Ahora que ya hemos instalado el sistema
mos dónde nos dejará los registros y las aler- groupadd snortgrp básico, ha llegado el momento de preparar la
tas. Además, siempre podemos registrarlo useradd -g snortgrp snortusr base de datos. Una vez tengamos en ejecu-
todo en /var/log/snort/ o configurar una ruta ción el servidor de MySQL (lo podemos
escalable más flexible. Snort soporta una Con ellos creamos el grupo snortgrp y el comprobar con ps -A | grep mysqld to
amplia variedad de bases de datos que nos usuario snortusr. Antes de continuar debe- check), podemos empezar con la
permite centralizar fácilmente la informa- mos asegurarnos de que nos encontramos configuración.
ción. La elección dependerá de lo que quera- en el directorio desde el que hemos descom- La configuración de la base de datos se
mos hacer y de la cantidad de tráfico con la primido Snort. Los siguientes comandos nos divide en varios apartados. Primero debe-
que pensemos trabajar. Un cálculo sencillo sirven para crear los directorios necesarios mos elegir una contraseña adecuada, crear la
puede ser multiplicar por 10 el nivel de trá- para los archivos de configuración, reglas y base de datos necesaria y definir la estruc-
fico estimado. La mayoría de las veces la registros de Snort, y copiar los archivos nece- tura de las tablas. Nos conectamos como
gente se sorprende de cómo un mínimo trá- sarios al recién creado directorio /etc/snort. root al servicio de MySQL y creamos la base
fico puede sobrecargar con facilidad nuestro de datos y los permisos para snortusr. Para
sistema de registros si no se está prevenido. mkdir -p /etc/snort/rules abrir la línea de comandos de MySQL ejecu-
En este ejemplo instalamos MySQL como mkdir /var/log/snort taremos mysql -u root -p desde la terminal.
base de datos para Snort. Si quiere utilizarse touch /var/log/snort/snort.log Luego se nos pide la contraseña del usuario
otra base de datos, se puede compilar el touch /var/log/snort/alert root y entramos al intérprete de mysql>. En
soporte para la misma mediante las opciones chown -R snortusr.snortgrpU él introducimos los siguientes comandos
disponibles para ./configure. /var/log/snort para la finalización del primer apartado de la
cp etc/* /etc/snort/ configuración (hemos de asegurarnos de que
./configure cada línea termina con un punto y coma
—with-mysql Para descargar las últimas reglas debemos “;”).
make conectarnos al sitio web de Snort [1] y regis- Nos cercioraremos de que las contraseñas
sudo make install trarnos. El sitio ofrece opciones de registro que creemos aguantarán bien un posible ata-

WWW.LINUX-MAGAZINE.ES Número 46 61
ADMINISTRACIÓN • Snort

configuración de las credenciales proporcionadas y comen-


Snort. El archivo zará a registrar o alertarnos sobre todo el trá-
principal de fico capturado. Al terminar, mostrará estadís-
configuración, ticas sobre la sesión (Figura 3). El reporte en
snort.conf (Figura pantalla no está mal, pero tampoco es la
1), se encuentra en mejor solución.
Figura 2: Configuración de la conexión MySQL en snort.conf. el directorio /etc/ Para hacer que Snort arranque al inicio,
snort. Abrimos este insertaremos un sencillo script en el directo-
que por fuerza bruta. Se recomienda usar un archivo con un editor de nuestra elección y rio /etc/init.d. Para crear el script, abrimos
mínimo de ocho caracteres y que contengan echamos un vistazo a las distintas secciones. nuestro editor favorito e introducimos las
mayúsculas, minúsculas y caracteres espe- Con el archivo de configuración podemos líneas:
ciales. usar muchos trucos útiles para la
configuración de nuestro IDS. Por ejemplo, #!/bin/bash
create database snort; necesitaremos añadir información acerca de #
grant INSERT, SELECT on root.*U la red y los servidores, de forma que Snort # Script de inicio de SnortU
to snort@localhost; pueda relacionar las reglas correctamente. -/etc/init.d/snortstart
set PASSWORD for U Para garantizar que el sistema monitoriza el #
snort@localhost=PASSWORDU tráfico adecuado, las variables HOME_NET y /usr/local/bin/snort -Dq -u U
(‘ConTR4sEña_3leg|da’); EXTERNAL_NET deben reflejar la infraes- snortusr -g snortgrp -c U
grant CREATE, INSERT, SELECT,U tructura de la red. En una red simple, /etc/snort/snort.conf
DELETE, UPDATE on snort.* toU HOME_NET probablemente se defina como
snort@localhost; un rango de IPs privado, como Una vez colocado el script, ejecutamos
grant CREATE, INSERT, SELECT,U 192.168.0.0/24. Esto implica que todo el trá- chmod +x /etc/init.d/snortstart para que
DELETE, UPDATE on snort.* toU fico originado en el rango de IPs 192.168.0.1- éste sea ejecutable, y update-rc.d
snort; 255 se considerará tráfico interno. Estos /etc/init.d/snortstart defaults 95 para crear
exit detalles variarán dependiendo de cada los enlaces simbólicos necesarios para los
configuración. Si en nuestra red interna hay distintos niveles de ejecución. El proceso
Cada uno de los comandos debería devolver varias subredes, podemos añadirlas todas puede diferir dependiendo de la distribución
una respuesta Query OK. separándolas con comas. La entrada EXTER- de Linux que estemos usando.
En la segunda parte de la configuración le NAL_NET es un listado de direcciones espe-
pasamos al intérprete de MySQL un script cíficas que se considerarán externas. La Reglas para Snort
sencillo. Hemos de asegurarnos de que nos forma más sencilla de configurarla es Snort proporciona una selección de reglas de
encontramos en el directorio donde descom- usando el valor !$HOME_NET, que Snort filtrado para el tráfico no deseado. Las mayo-
primimos Snort. Ejecutamos entonces el entenderá como “cualquier dirección distinta ría de las reglas de Snort son de fácil com-
siguiente comando: de HOME_NET”. prensión y modificación. Cada regla consta
Especificamos la ubicación de las reglas de de dos secciones: la cabecera y las opciones.
mysql -u root -p schemasU Snort mediante el archivo de configuración. La cabecera describe el mensaje que se mos-
/create_mysql snort Suponiendo que hemos descargado las trará al dispararse la acción. La opción con-
reglas en /etc/snort/rules, añadimos esta tiene palabras clave para indicar a Snort
Una vez que hemos completado ambos misma ruta a la variable RULE_PATH. La
pasos, verificamos que todas las piezas se última variable a configurar, pero no menos
encuentran en su sitio. Para confirmar que importante, es la usada por el IDS para guar-
todo está bien, entramos en el intérprete de dar la información en la base de datos. Cerca
MySQL como el usuario de Snort que crea- del final del archivo snort.conf hay una sec-
mos antes. Comprobamos la base de datos y ción para configurar la salida de los plugins.
la estructura de tabla con los siguientes Debemos descomentar la línea output data-
comandos: base: log,mysql ~ y reemplazarla por la
localización de la base de datos MySQL
show databases; (Figura 2).
use snort; Una vez finalizada la configuración, ya
show tables; tenemos la base de un servidor funcional. De
exit todas formas, aún hay que configurar Snort
para que se inicie durante el arranque del sis-
Después de preparar la base de datos, ya esta- tema y asegurarnos de que se ejecuta bajo la
mos listos para empezar a configurar Snort. recién creada cuenta del usuario snortusr.
Llegados a este punto, podemos probar
Configuración de Snort Snort desde la línea de comandos con snort
Una vez finalizados todos los preparativos, -u snortusr -g snortgrp -c Figura 3: Snort muestra estadísticas sobre
ha llegado el momento de sumergirnos en la /etc/snort/snort.conf. Snort se ejecutará bajo la sesión al finalizar.

62 Número 46 WWW.LINUX-MAGAZINE.ES
Snort • ADMINISTRACIÓN

cómo debe inspeccionar el paquete, así El resto ya son las


como referencias útiles para la investigación, opciones de la regla.
que se mostrarán cada vez que se dispare La sección de opcio-
una alerta. nes comienza dicién-
Veamos un ejemplo: dole a Snort qué
mensaje mostrar en
alert tcp $EXTERNAL_NET anyU la alerta.
->$HTTP_SERVERS U En este caso, la
$HTTP_PORTS(msg:”WEB-IIS U regla insta a Snort a
unicode directorytraversal U mostrar WEB-IIS uni-
attempt”; flow:to_ U code directory traver-
server,established;content:”/ U sal attempt en el Figura 4: Configuración del acceso a MySQL desde la página de
..%c1%1c../”; nocase; U registro o la base de configuración BASE.
reference:cve,2000-0884; U datos, y también en
reference:nessus,10537;# la alerta. listado de reglas. Creando un listado más
classtype:U Después de este comando llega la parte centralizado reducimos la cantidad de
web-application-attack;# más importante de las opciones de la regla: paquetes perdidos y mejoramos el rendi-
sid:982; rev:13;) la parte encargada de decidir el tráfico a miento. Las reglas que dejaremos activas
seleccionar. La etiqueta flow indica a Snort serán las que dependan de la infraestructura
En la regla anterior, la cabecera incluye el que sólo debe examinar los paquetes envia- de nuestra red y nuestros requerimientos en
comando alert tcp $EXTERNAL_NET any dos al servidor de destino una vez iniciada la general. Para reducir una sobrecarga innece-
->$HTTP_SERVERS $HTTP_PORTS. Esta sesión. Este requisito evita que Snort exa- saria, desactivamos todas las reglas sobran-
cabecera le dice a Snort que alerte cuando se mine también el saludo de tres fases SYN, tes para servicios y protocolos que en reali-
dispare la regla y que examinte sólo el tráfico SYN-ACK, ACK que inicializa la conexión. En dad no usamos.
proveniente de las redes externas (desde un IDS con mucha carga, eliminar de la regla Por defecto ya hay varias reglas deshabili-
cualquier puerto) y dirigido a los servidores de comprobación el tráfico de los prelimina- tadas. Muchas de ellas pueden, ocasional-
http internos (a los puertos http configura- res puede suponer una mejora muy signifi- mente, causar falsos positivos, aunque es
dos). Aunque esta declaración de alerta cativa en el rendimiento del sistema. posible que queramos habilitar algunas para
podría parecer obvia, a veces puede que sólo En la sección content es donde verdadera- propósitos específicos. Una vez ajustada la
queramos registrar el tráfico en la base de mente radica el meollo de la regla. Dicho de lista a nuestras necesidades, invertimos algo
datos, o incluso hacer cosas más avanzadas otro modo, Snort tomará el valor de la eti- de tiempo proporcionando la información
con las acciones dynamic y activate. Si esta- queta content y la comparará con las peticio- sobre servicios específicos.
mos usando Snort como IPS (Intrusion Pre- nes enviadas al servidor. La regla del ejem- Como puede observarse, Snort ofrece una
vention System) integrado, podemos usar las plo anterior busca la cadena /..%c1%1c../. serie de variables para simplificar la tarea de
opciones Drop, Reject o Sdrop para gestionar Esta cadena utiliza unicode para ocultar un confeccionar las reglas. Sin dichas variables,
el tráfico no deseado. Snort puede compro- intento de acceso transversal a otro directo- si nuestra empresa tuviese varios servidores
bar paquetes TCP, UDP, IP e ICMP, depen- rio. La mayoría de los sistemas ya son inmu- http a la escucha en puertos distintos del 80
diendo de nuestras necesidades. Si la regla nes a este tipo de ataques, pero aún así se (por ejemplo, el 8080), tendríamos que edi-
especifica TCP, y entra un paquete UDP, siguen viendo muchos con la intención de tar cada una de las reglas de Snort para alte-
incluso aunque el resto de la cabecera de la explotar esta vulnerabilidad. El comando rar el puerto http y cambiarlo por el 8080. Es
regla y las opciones encajasen perfecta- nocase que sigue a la etiqueta content indica más, tendríamos que modificar cada regla en
mente, Snort no realizaría ninguna acción. a la regla que debe ignorar la capitalización cada actualización de un juego de reglas. En
Nuestra regla especifica TCP, perfectamente del texto a la hora de buscar las coinciden- vez de eso, podemos usar las variables de
estándar para el tráfico http. cias en el contenido. Snort para definir el valor de $HTTP_PORTS
La siguiente parte de la cabecera llama a La última etiqueta es classtype. La infor- a 8080. Así podemos ejecutar los servidores
algunas de las variables que definimos en el mación contenida en ella indica a Snort el en cualesquiera puertos sin tener que editar
archivo de configuración de Snort. La regla nivel de prioridad del evento. En este caso, el siempre las correspondientes reglas. Para
examinará el tráfico proveniente de la varia- classtype de web-application-attack indica cambiar el valor de $HTTP_PORTS a 8080,
ble $EXTERNAL_NET desde cualquier una prioridad alta. Estos niveles es más fácil editamos el archivo snort.conf del siguiente
puerto. La flecha “->” indica el sentido del explorarlos y configurarlos a través del modo:
tráfico. En este caso, la regla es aplicable a archivo classifications.config.
todo lo que venga desde cualquier dirección Para ver cómo queda el listado de reglas var HTTP_SERVERSU
de $EXTERNAL_NET y cualquier puerto de activas, echamos un ojo de nuevo a /etc/ [10.10.10.100/32,10.10.10.111/U
$HTTP_PORTS. snort/snort.conf y examinamos las reglas que 32]
El sentido del tráfico es muy importante. proporcionan una vista general del tráfico var HTTP_PORTS [80,8080]
En este caso, las respuestas provenientes de entrante.
los servidores $HTTP_SERVERS serán igno- Para ajustar las alertas hasta un nivel También es posible definir un rango de puer-
radas, ya que no concuerdan con el sentido manejable y garantizar que monitorizamos tos, en vez de una lista, usando dos puntos
indicado en la regla. los servicios correctos, podemos modificar el (por ejemplo, 8000:8080).

WWW.LINUX-MAGAZINE.ES Número 46 63
ADMINISTRACIÓN • Snort

El archivo snort.conf incluye también tema de detección por si el pro-


variables predefinidas para los servicios blema aparece.
HTTP, AIM y Oracle. Además podemos aña-
dir nuestras propias variables en caso de pla- Los Preprocesadores
near usarlas con otros servicios. de Snort
Proporcionar a Snort la información Los preprocesadores, los cuales
sobre dónde y cómo se configuran los ser- podemos activar y desactivar a
vicios de nuestra red permite a nuestro través de snort.conf, permiten a Figura 5: Arte ASCII de la vieja escuela: Ojo al cerdito de
IDS reducir la sobrecarga, restringiendo Snort la manipulación del tráfico la izquierda.
las comprobaciones de tráfico a una serie entrante. Snort activa automáti-
de paquetes determinados. ¿Para qué camente varios preprocesadores para el tra- muchos otros proyectos *nix, sin embargo,
vamos a comprobar el tráfico SMTP diri- tamiento del tráfico fragmentado, la inspec- es fácil hacer que Snort interactúe con otras
gido a un sistema que sólo ofrece servicios ción del flujo con control de estado, la moni- utilidades. Dos de los posibles candidatos
de SSH o FTP? En redes de mayor tamaño, torización del rendimiento, la decodificación son Swatch y Logsurfer.
nunca se puede estar seguro al 100% de del tráfico RPC, la monitorización del tráfico Hay otros productos disponibles para la
qué tráfico viaja por los cables. Podría ftp/telnet/SMTP/DNS/SMB y el escaneo de visualización de los datos de Snort en forma
resultar que hay un servicio SMTP ejecu- puertos. Hay incluso un preprocesador espe- de gráficos y estadísticas. Uno de los siste-
tándose en un esquivo servidor, en lo más cialmente diseñado para el troyano Back Ori- mas más populares es BASE [3] (Basic
recóndito de la empresa, desde los inicios fice. Cada preprocesador tiene su propio Analysis and Security Engine). Descargamos
de su historia. juego de opciones y configuraciones. Las la versión 1.3.9 de BASE desde el sitio web
Snort también nos permite crear reglas opciones y configuraciones predeterminadas del proyecto. Para comenzar con este sis-
personalizadas. La mejor forma de aprender deberían bastar como punto de partida, pero tema necesitamos tener instalado Apache y
a crear nuevas reglas es viendo una ya para sacar el máximo partido a nuestro IDS PHP en el servidor. BASE depende además
hecha. Después de examinar unas pocas, debemos invertir algún tiempo en la de ADOdb [4] para el acceso a la base de
podemos escoger alguna que se parezca configuración del preprocesador. En particu- datos a través de PHP. Por razones de seguri-
mucho a lo que necesitamos y modificarla. lar, el preprocesador sfPortscan puede gene- dad y rendimiento, siempre es mejor insta-
Lo más frecuente es añadir las nuevas reglas rar falsos positivos si se configura de forma larlo todo en un sistema distinto del sensor
personales al archivo local.rules para probar- inadecuada. Si comenzamos a recibir falsos de Snort.
las. Haciéndolo, las protegemos de sobrees- positivos, podemos deshabilitar fácilmente Ninguna consola de administración es
crituras producidas al actualizar un nuevo sfPortscan desde snort.conf. buena si no podemos acceder a ella cuando
juego de reglas. En el caso de servidores con poca RAM, el IDS está ocupado con otro tráfico. A veces
Las reglas personales nos vienen muy podríamos tener que ajustar algunas confi- lo mejor es tener una segunda interfaz de red
bien en situaciones en las que aún no se ha guraciones relacionadas con la memoria del en el sensor de Snort dedicada especial-
publicado el parche para alguna vulnerabili- preprocesador. Por ejemplo, el preprocesa- mente para la monitorización y la gestión.
dad conocida. Al añadir una de estas reglas, dor frag3 usa 64MB de RAM de forma prede- Una vez instalados los paquetes de Apache,
dotamos a nuestro IDS/IPS de una capa adi- terminada para el almacenamiento y reen- PHP y ADOdb, hemos de descomprimir los
cional de protección o, al menos, de un sis- samblado del tráfico fragmentado. Aunque fuentes de BASE en /var/www/base.
64MB no parezca mucho para un servidor LLegados a este punto, cambiamos los
Mejorando el Servidor de hoy día, se puede apreciar que, aña- permisos del directorio /var/www/base de
Para instalar un servidor de Snort es diendo varios procesadores, se puede llegar modo que todo el mundo pueda escribir en
importante tener en cuenta qué trafico a hacer mella en el rendimiento de un servi- él (chmod 777). Es una práctica terrible en
esperamos manejar. Snort puede ejecu- dor. Por contra, si se dispone de una canti- cuanto a seguridad se refiere, pero sólo lo
tarse en casi cualquier tipo de hard- dad de RAM más que suficiente, podemos necesitaremos así durante el proceso de
ware. Pero de todos modos, si quere- incrementar la memoria disponible para configuración. Luego podemos dirigirnos a
mos tener un IDS rápido y fiable sin un garantizar que el tráfico fragmentado no se nuestra página web de BASE, http://
alto porcentaje de paquetes perdidos, convierte en un problema en entornos con nuestro_servidor/base, y configurar el acceso
Snort necesitará un procesador relati-
una carga elevada.
vamente potente. Sobra decir que nece-
sitaremos además espacio de almace-
Listado 1: Dependencias de
Registros y Alertas Snort
namiento para los registros y alertas. El
elemento más crítico, sin embargo, es Nuestro IDS ya está marcando y registrando
• Libpcap
una buena interfaz de red. Siempre que tráfico, y guardando alertas en la base de
• Libpcap-dev
nos sea posible, nos aseguraremos de datos MySQL. Tener una base de datos llena
de alertas y tráfico registrado es estupendo, • PCRE
que la interfaz de red es dedicada, y
nunca integrada en la placa base. La sin embargo, recibir una alerta en nuestro • PCRE-dev
mayoría de los fabricantes actuales escritorio cuando alguien nos escanea los • Libnet-1.0.2.a
ofrecen una tarjeta de red especial para puertos es mejor aún. • MySQL-Server-5.0 (para MySQL)
servidores, con un procesador inte- Por desgracia, Snort no proporciona nin- • MySQL-client (para MySQL)
grado específicamente diseñado para el
guna solución integrada para enviar alertas a
procesamiento del tráfico de red. • MySQL-dev (para MySQL)
un escritorio remoto. Como ocurre con

64 Número 46 WWW.LINUX-MAGAZINE.ES
ADMINISTRACIÓN • Snort

a la base de datos (Figura 4). Habremos de tra lista blanca podría falsear ataques para
introducir la ruta a los archivos de ADOdb,
Listado 2: Dependencias de que pareciesen venir desde una dirección en
así como el nombre del servidor MySQL, el
BASE la que confiamos, sin temor a quedar blo-
nombre de usuario y la contraseña. • apache(-ssl) queado.
Si la página web de BASE dice que no • php5 La última opción es permitir a Snort des-
tiene permiso de escritura sobre los archivos • php5-mysql conectar las conexiones no deseadas
de configuración, comprobaremos el chmod • php5-gd mediante el envío de paquetes TCP-RST (a
que acabamos de ejecutar. BASE añade con- través del parche flexresp2). Con esto
• libphp-adodb
tenido a la base de datos MySQL para regis- podemos terminar una conexión no dese-
trar los reportes y, una vez completados ada desde ambos extremos de la misma.
éstos, la instalación estará completa. Si tene- snort -vd -rU De todas formas, esta solución provoca
mos problemas, probablemente tengamos snort.log.1206804587U una condición de carrera entre nuestro IPS
que descomentar la extensión mysql.so de not host 192.168.0.1 y el tráfico malicioso. El IPS tratará de
nuestro archivo php.ini. No hay que olvidar cerrar la conexión antes de que el atacante
restablecer los permisos al directorio /var/ Prevención o Detección complete el ataque. El atacante tiene una
www/base para que sea legible por nuestro Snort ofrece varias opciones para la preven- ventaja en este caso, debido a que el trá-
servidor Apache. Es importante que desta- ción (y detección) de intrusiones. Los tres fico malicioso ya se encuentra dentro de
quemos que BASE no proporciona ninguna modos principales para la prevención de nuestra red antes de que Snort pueda
seguridad integrada para la interfaz web. Por intrusiones son el filtrado integrado, la coo- actuar. Este modo de operar previene cier-
lo que, de ser posible, habilitaremos SSL y peración con un cortafuegos existente tos ataques, pero puede resultar menos fia-
nos aseguraremos de que hay un archivo basado en iptables y el modo TCP-RST. ble que las otras técnicas.
.htpasswd en el directorio de BASE. Cuando Snort trabaja como filtro inte- La configuración de nuestro IDS/IPS
Además de en la base de datos, encontra- grado, todo el tráfico debe pasar a través del dependerá de nuestros requisitos en materia
remos registros y alertas en /var/log/snort. sistema con Snort antes de que llegue a la de seguridad. Si pretendemos instalar un
Estos archivos de registro contienen los red interna. Si el tráfico dispara una regla de Snort como IPS, primero probaremos el ser-
datos de registro completos en formato Snort, se desechan los paquetes que la acti- vidor en modo IDS hasta haber ajustado
tcpdump. Si así lo quisiésemos, podríamos varon. La solución integrada ofrece seguri- bien la configuración y haber reducido el
escribir un script para informarnos cada vez dad avanzada a modo de cortafuegos con un número de falsos positivos.
que se registra una nueva alerta. Para traba- juego de reglas actualizado regularmente. Una vez satisfechos con la configuración,
jar con estos archivos, usamos snort -r para Aún con todo, la prevención de intrusiones ya podemos dejar que Snort asuma su nuevo
procesar el archivo tcpdump y convertirlo en puede impedir el acceso a los sistemas rol de sistema de prevención.
algo más comprensible. Los parámetros -vd debido a falsos positivos, o ralentizar la red
proporcionan información adicional. Para en caso de que haya más tráfico del que el Conclusión
facilitar un poco las cosas, Snort soporta ade- sensor de Snort fuese capaz de manejar. Para Snort tiene muchas otras funcionalidades
más el uso de BPF [5] (Berkeley Packet Fil- el modo integrado, tendremos que añadir — aún por descubrir. Por ejemplo, nunca men-
ter) para filtrar la salida de la línea de coman- enable-inline a la hora de hacer ./configure. cionamos el cerdito en arte ASCII retro
dos. Si ya disponemos de un cortafuegos (Figura 5).
basado en iptables, podemos configurar Hay muchos libros y recursos en línea que
snort -vd -rU Snort para modificar reglas dinámicamente. nos ayudarán a iniciarnos en el sistema de
snort.log.1206804587U La opción de iptables reduce algunos de los detección de intrusos Snort. El sitio web del
tcp and src port 22 retardos en el tráfico entrante, pero en gene- proyecto Snort contiene un gran número de
ral, el sistema será más lento en la respuesta documentos para ayudarnos a resolver pro-
¿Qué es MD5? a los ataques. Cada vez que el tráfico mali- blemas. También aqui disponemos de un
MD5 es una función de suma criptográ- cioso dispara una alerta, Snort envía un foro en el que encontraremos noticias y asis-
fica que proporciona una suma de 128 comando al sistema que tiene iptables para tencia al usuario. ■
bits basada en el contenido de un que bloquee al atacante. Este estilo de IPS, si
archivo. Al descargar un programa o un no se configura correctamente, podría ser RECURSOS
documento, podemos usar el comando manipulado por un atacante con dotes crea-
md5sum para garantizar que el archivo [1] Página de inicio de Snort: http://www.
tivas para provocar una denegación de servi- snort.org
descargado es idéntico al original.
cio a nuestros propios sistemas.
Md5sum compara el valor de la suma [2] Sourcefire: http://www.sourcefire.
Si un atacante falsease tráfico malicioso com
de la descarga con una suma MD5 pro-
porcionada por la versión oficial. Son para que pareciese provenir de la pasarela de
[3] BASE: Basic Analysis and Security
muchos los proyectos de software que nuestro proveedor de servicios de internet, o
Motor: http://base.secureideas.net
proporcionan sumas MD5 de sus bina- desde nuestro servidor de DNS, podría aca-
[4] ADOdb, librería de abstracción para
rios. El MD5 normalmente se encuentra bar poniendo servicios necesarios en la lista
bases de datos para PHP: http://
en la sección de descargas del sitio web negra. Para combatirlo, usamos una lista
adodb.sourceforge.net
del proyecto. Esta comprobación nos blanca con direcciones que nunca baneare-
puede ayudar a evitar la instalación de [5] BPF (Berkeley Packet Filter): http://
mos. Como contrapartida, un atacante que
software dañado o malicioso. tcpdump.org
conociese alguna de las direcciones de nues-

66 Número 46 WWW.LINUX-MAGAZINE.ES

Potrebbero piacerti anche