Los sistemas de detección de
intrusos se han convertido
en un componente importante
en la caja de herramientas
de un buen administrador de
seguridad. Algunos aún no lo
tienen claro, y piensan que
un IDS (Intrusión Detection
System) puede ser la panacea
que nos lleve a la más
absoluta tranquilidad y a
una irreal sensación de
seguridad, más peligrosa en
muchos casos que la
inseguridad en sí misma.
En resumen, un sistema de
detección de intrusos hace
exactamente eso. Detectar
posibles intrusiones.
Específicamente, pretende
detectar ataques o abusos al
sistema, alertando con los
pormenores del ataque.
Proporciona una seguridad
parecida a la que un sistema
de alarma instalado en casa
puede suponer. Mediante
varios métodos, ambos
detectan si un intruso,
atacante o ladrón está
presente, y en consecuencia
disparan una alarma. Por
supuesto, la alarma puede
saltar sin motivo, al igual
que el administrador puede
no llegar a oírla. Ante
estas irregularidades, solo
resta permanecer atento y
revisar frecuentemente con
cautela los avisos recibidos
y aprender a distinguir lo
importante de lo
prescindible. También cabe
la posibilidad de configurar
específicamente el detector
para que nos mande un correo
urgente, o envíe un mensaje
corto al móvil cuando
detecte movimientos
sospechosos. En estos casos,
recomiendo definir con
cautela lo que puede
resultar un ataque y lo que
no, pues puede causar muchos
falsos positivos y
relajarnos en exceso ante
tantas falsas alarmas.
Resulta imprescindible tomar
más medidas complementarias
al amparo de esta alarma que
salta. Un cortafuegos
añadido aporta en conjunto
una seguridad bastante
aceptable. Siguiendo la
analogía de la casa, el
cortafuegos sería la valla
protectora o el vigilante de
seguridad que controla en la
puerta quién entra, hacia
dónde se dirige y de dónde
viene. Los IDS por tanto no
garantizan la seguridad,
pero, dentro de una buena
política que incluya
autenticación de usuarios,
control de acceso,
cortafuegos, encriptación de
datos y evaluación de
vulnerabilidades, se puede
aumentar enormemente las
posibilidades de que tus
datos y tu sistema, sólo te
sigan perteneciendo a tí.
Los sistemas de detección de
intrusos proporcionan tres
funciones esenciales de
seguridad: monitorizan,
detectan y responden a la
actividad que consideran
sospechosa.
Monitorizan:
Esto es, el IDS mantiene
siempre un ojo en la red,
observando y escudriñando el
tráfico en busca de
cualquier paquete
susceptible de contener
código no deseado. Qué
visita quién y cuándo lo
hace en nuestra red, quién
viene desde el exterior y
qué busca... etc. En este
sentido actúa exactamente
igual que un sniffer. De
hecho, cabe la posibilidad
de utilzarlos como tal.
Detectan:
Usan políticas (totalmente
configurables) para definir
los actos sospechosos de
todo ese tráfico que
provocarán una alarma si
ocurren. Los patrones se
pueden actualizar cada
cierto tiempo si se
descubren nuevos tipos de
ataques.
Responden:
Esta alarma puede venir en
forma de archivos en el
sistema, páginas html
dinámicas con gráficos o
incluso correos con la
información necesaria.
También podría incluir la
expulsión de un usuario del
sistema... etc.
A la hora de realizar
labores de forense (tras un
ataque, determinar el
alcance, evaluar los daños,
e intentar cazar al autor)
resultan de gran ayuda. Un
elaborado registro de las
incidencias ocurridas en la
red, con el contenido de los
paquetes de cada "visita"
resulta imprescindible para
realizar una buena labor de
investigación, Pero para
ello, no se pueden alojar
los logs dentro de la propia
máquina. Todos sabemos lo
sencillo que resulta
borrarlos si un atacante
llega a tener el control del
servidor. Lo mejor es
instalar una base de datos
en un sistema remoto que
almacene los registros
ordenadamente, y de esta
forma, también puedan ser
consultados de manera
sencilla.
Daremos algunas pistas sobre cómo realizar esta tarea:
Lo que se necesita:
Un servidor web con soporte para php.
Se necesita, por supuesto, el detector de intrusos Snort, descargable desde www.snort.org
La base de datos Mysql, descargable desde www.mysql.com
En los siguientes paquetes no es necesario espeficicar plataforma, pues son simples ficheros php.
El analizador ACID en php, descargable desde: http://www.andrew.cmu.edu/~rdanyliw/snort/snortacid.html
El Active Data Objects Data Base, ADOdb, una extensión en php para manejar distintas APIs de las bases de datos. Descargable desde:.http://php.weblogs.com/adodb#downloads
Y la librería para las estadísticas phplot, descargable desde www.htmllot.com/
Configurando Snort
Snort es la herramienta de detección de intrusos por antonomasia. Es de código libre y gratuita. MySql es también un potente servidor de base de datos de entorno libre. Ambos son gratuitos y muy configurables. Las posibilidades de ambos productos por separado son infinitas, y juntos, forman también una gran pareja. Aquí daremos las nociones básicas para su instalación. Están disponibles para ambas plataformas.
Supongamos que tenemos la máquina SNORT 192.168.0.1, donde correrá el detector de intrusos y la máquina MYSQL 192.168.0.2, donde correrá el servidor de base de datos.
Lo primero es decargar una librería con la que Windows no viene por defecto y es imprescindible para realizar las labores de sniffer y poder absorver tráfico de la red. Se llama WinpCap y debe ser instalada tanto para usar snort como cualquier otro sniffer de red. Se basa en la librería libpcap de los sistemas Linux. Se puede descargar e instalar de forma sencilla desde este sitio: http://winpcap.polito.it/
Lo primero que pregunta Snort cuando se instala es si se quiere soporte para FlexResp. FlexResp permite cerrar conexiones cuando un patrón es reconocido. Lo demás es bien sencillo.

Para su configuración, sigue la filosofía Linux, y en el archivo snort.conf, que resulta bastante auto-explicativo, podremos encontrar la información necesaria para afinar la herramienta al gusto. Lo más importante es asegurarse de que Snort encuentra las reglas vigilando la variable
var RULE_PATH. La variable HOME_NET nos dice qué se quiere monitorizar. Si sólo se pretende monitorizar el propio host, es necesario indicarlo así 192.168.0.1/32.
La línea que indica el tipo de registro que realizará snort es la siguiente, que debe descomentarse:
output database: alert, MySQL, user=snortusr password=clave dbname=snort host=192.168.0.2
Aquí le indicamos el tipo de base de datos, el usuario y la contraseña para poder realizar cualquier acción sobre ella, el nombre de la base de datos y dónde está alojada. También el tipo de registro que queremos almacenar. En este caso, "alert", guardaría lo que el sistema detecte como amenaza.
Una vez esté preparada la base de datos para que el detector de intrusos se conecte, podremos comprobar que todo va bien así:
snort -W
nos dará las interfaces (tarjetas de red) que ha encontrado en nuestro equipo:
snort -v -vx
nos indicará que todo ha ido bien, siendo la x el número del dispositivo que queremos monitorizar... habrá que parar la ejecución con CTRL-C
La mayoría de las veces, si no arranca es debido a que no encuentra un archivo. Es una buena medida añadir las rutas absolutas de donde tengamos instalado snort a todos los módulos en snort.conf
Se puede añadir snort como un servicio de esta manera:
snort /SERVICE /INSTALL -de -c c:\snort\snort.conf -l c:\snort\log -ix
Añade al registro las instrucciones necesarias. Desde ahora:
net start snort
net stop snort
controlarán el servicio.
Si se quiere desinstalar el servicio:
snort /SERVICE /UNINSTALL
Configurando Mysql
Nos vamos a la máquina que alojará la base de datos. Instalar MySql para Windows resulta igualmente trivial. Se instalará como un servicio más en Windows que escuchará en el puerto 3306. El servicio lo único que hace es llamar a mysql-nt.exe dentro de bin. Para funciones de administrador de la base de datos, se puede ejecutar winmysqladmin.exe, aunque también resulta cómodo ejecutar c:\mysql\bin\mysql y tendremos acceso a la consola.
Lo primero es configurar un poco la seguridad, aunque es conveniente informarse de todas las posibilidades de la base de datos (puede ser muy estricta si se quiere). Para cambiar la contraseña de root:
mysql -D mysql -u root -p
E introduciremos la clave de root. Si más tarde queremos cambiarla:
mysql>update user set password=PASSWORD('clave') where user='root';
mysql> FLUSH PRIVILEGES;
Normalmente esto lo pregunta nada más instalar el programa, en una pantalla para introducir el login y la contraseña.
Ahora es necesario crear la base de datos en MYSQL para que aloje los datos de SNORT. Desde la línea de comandos, una vez ejecutado mysql:
mysql>create database snort;
Para asegurarnos de que trabajamos bajo la base de datos llamada snort, salimos y ejecutamos:
c:\mysql -D snort < c:\snort\contrib\create_mysql
Y con esto, dentro de la base de datos snort, habremos creado las tablas necesarias con la sintaxis propia de mysql para que el detector de intrusos pueda guardar información.
Desde el programa gráfico winmysqladmin podremos ver en la pestaña "Databases" cómo la base de datos snort ha sido creada y contiene todas las tablas que nos interesan.

Ahora es necesario crear un usuario que tenga los permisos requeridos para usar la tabla:
mysql> grant insert,select,update on snort.* to snortusr@192.168.0.1 identified by 'clave';
Así tendrá permiso para añadir, observar y actualizar registros de todas las tablas dentro de la base de datos snort, sólo el usuario snortusr que venga de la máquina SNORT y se identifique con esa clave. Los datos deben coincidir con los que se añadieron en snort.conf.
Ya podemos comprobar que todo ha ido bien. Para ello, si no se dispone de otros clientes gráficos, podemos conectarnos desde cualquier máquina al servidor de base de datos de esta manera:
C:\mysql\bin>mysql -D snort -h 192.168.0.2 -u snortusr -pclave
Una vez conectados:
mysql> select * event;
En la tabla event se guardan los índices de los eventos. Si no hay ninguno, se debe esperar algunos minutos a que snort identifique un posible ataque. Si finalmente no se ha registrado nada, habría que repasar los pasos anteriores, verificando que ambos servicios permanecen activos.
Un administrador gráfico interesante para Windows es EMS-MySql Manager. Tienen una versión gratuita disponible desde http://ems-hitech.com/mymanager/.
Instalando ACID
Daremos por supuesto que se tiene Apache o IIS compatible con PHP instalado en el sistema. Recordar que es necesario modificar php.ini de esta manera:
max_execution_time = 60
descomentar extension=php_gd.dll
extension_dir = c:\php\extensions
session.save_path = c:\winnt\Temp
En algunas circunstancias, puede que tengamos que usar las barras "/" para especificar los directorios.
Ahora es necesario descomprimir Adodb en algún directorio, por ejemplo C: \snort\adodb, y preocuparse por añadir la ruta en el archivo adodb.inc.html
$ADODB_Database = 'C:\snort\adodb'.
Descomprimir phplot en C:\snort\phplot, no hace falta ningún otro cambio para este "plugin".
Copiar todo el contenido de Acid en un directorio llamado acid, dentro del raíz del servidor web (para que sea accesible vía web) y modificar acid_conf.html con los datos necesarios:
$DBlib_path = "C:\snort\adodb";
$alert_dbname = "snort";
$alert_host = "192.168.0.2";
$alert_port = "3306";
$alert_user = "snortusr";
$alert_password = "clave";
$ChartLib_path = "C:\snort\phplot"
Esta segunda base de datos será creada por acid para que el usuario pueda archivar alertas importantes. No es imprescindible, pero si se quiere, se puede crear otro usuario con permisos distintos para crearla:
/* Archive DB connection parameters */
$archive_dbname = "snort";
$archive_host = "localhost";
$archive_port = "";
$archive_user = "snort";
$archive_password = "snort";
Reiniciamos todos los servicios, por si acaso, y accedemos desde nuestro navegador a:
http://192.168.0.1/acid/
En un principio ACID devolverá un error, es normal. Hay que irse hasta "Select Setup Page" y luego "Create ACID AG", si se recarga la página todo debería ir bien.
Ni que decir tiene que es conveniente proteger con contraseña el directorio acid, para que sólo los que nosotros queramos puedan conectarse y visualizar las estadísticas.
Linux
El procedimiento es bastante similar, los pasos son análogos y las modificaciones las mismas, si bien hay que tener cuidado de indicarle a snort en la instalación que debe compilarse con soporte para mysql.
./configure --with-mysql=/usr/lib/mysql
Los usuarios de Debian deben confirmar que en el fichero /etc/mysql/my.cnf la línea skip_networking está comentada, si no, no funcionará correctamente.
Para arrancarlo los parámetros más usados son:
snort -D -b -c /snort.conf
Con "-D" se le indica que corra como demonio, con "-b" que registre los paquetes al estilo tcpdump, lo que lo hace más rápido, y con "-c" se le indica la situacion del archivo de configuración.
Recordar que hay que crear antes a mano el directorio para los logs:
mkdir /var/log/snort
Otros programas útiles
Tanto en Windows como en Linux, podremos encontrar programas que se encargan de estudiar los logs en tiempo real y lanzan alertas configurables cuando encuentran patrones predefinidos. No me extenderé mucho en el tema pero mis favoritos son swatch para Linux y eventsentry para Windows.
Swatch es una pequeña maravilla. Se puede encontrar en http://swatch.sourceforge.net/. Se arranca de esta manera:
swatch -c /etc/swatchrc -t /var/log/messages
que indican el archivo de configuración y desde donde almacena los registros. El archivo de configuración tiene un aspecto parecido a esto:
watchfor /IDS/
echo bold
mail addressess=admin,subject=--- Snort IDS Alert ---
exec echo $0 >> /var/log/IDS-scans
Swatch buscará el patrón IDS en los logs. Si lo encuentra, lo mostrará en negrita (bold), enviará un correo con un asunto y ejecutará lo que se le diga. En este caso, la línea que contenga el patrón será almacenada aparte en /var/log/IDS-scans.
Evensentry es una aplicación para Windows, muy intuitiva y fácil de usar. Descargable desde:
http://www.netikus.net/products_downloads.html?SESSION=
La versión mejorada es de
pago.
Más información y
referencias:
An Introduction to Intrusion Detection Systems
por Paul Innella y Oba McMillan
http://www.securityfocus.com/infocus/1520
SNORT+MYSQL+ACID: Sistema de detección de intrusos open source
http://linuca.org/body.phtml?nIdNoticia=13
Install powerful Snort IDS in Windows 2000
http://www.asia.cnet.com/itmanager/specialreports/0,39006603,39092892,00.htm
Sergio de los Santos



