Está en la página 1de 18

Instalacin de Snort, MySQL y ACID para Windows

Introduccin Antes de iniciar Requerimientos y aplicaciones Proteccin del equipo Instalacin WinPcap Instalacin de Snort Configuracin de Snort MySQL IIS PHP, ADODB y PHPlot ACID JPGraph Notas finales Revisin histrica

Introduccin
Snort es un Sistema de Deteccin de Intrusiones (IDS), capaz de ejecutar anlisis de trfico y autentificacin de paquetes en tiempo real en redes TCP/IP. Snort realiza exploracin al contenido de paquetes y puede usarse para detectar una variedad de ataques y pruebas de intrusin como escaneo de puertos, ataques DoS, etc. Los eventos detectados por Snort pueden ser registrados en syslog o en alguna base de datos como Mysql o Postgres, para el anlisis del administrador de red. MySQL es un sistema de administracin de bases de datos muy potente. La principal virtud es que es totalmente gratuito, por lo que es una fuerte alternativa ante sistemas como SQL Server u Oracle. El servidor de bases de datos MySQL es muy rpido, seguro, y fcil de usar por lo que es la solucin adecuada para la implementacin de Snort con un modelo de base de datos que permita tener un registro y control del anlisis del trfico. ACID es una consola de anlisis Web que permite al administrador del sistema analizar los datos que fueron generados por Snort y almacenarlos en una base de datos (en este caso MYSQL), permitiendo ver la direccin IP del atacante, la fecha, el tipo de ataque, etc. ACID genera grficos y estadsticas, basados en tiempo, sensores, vulnerabilidad, protocolo, direccin IP, puertos TCP/UDP. El objetivo de este documento es servir como gua para la instalacin e implementacin del IDS Snort, con la base de datos MySQL y la consola de anlisis ACID para tener una herramienta de seguridad adicional que permita tener un control adecuado del trfico de red.

Antes de iniciar.

Requerimientos y aplicaciones usadas en este manual.


Sistema Windows 2000 Professional Windows XP Professional. Aunque la configuracin sencilla de Snort corre en prcticamente en cualquier versin de 32 bits de Windows, Windows 2000 Pro y XP Pro son ms seguros y estables que las "ediciones caseras" como Windows 98, ME XP Home Edition, esto ocurre principalmente por la falta de caractersticas como el sistema de archivos NTFS, el servidor Web IIS para ACID y soporte de ms de un procesador. Por otro lado, Windows 2000 y XP tienen soporte de Microsoft a diferencia de NT y son alternativas de mejor precio que Windows Server Windows Server 2003. Las versiones de servidor de Windows slo se recomiendan si se desea tener un mejor control del equipo, mayor capacidad de almacenamiento y lectura de paquetes. Una o ms interfaces de red (NICs) y conexin de red. Driver de captura de paquetes para Windows WinPcap 2.3 * http://windump.polito.it/misc/bin/ Snort 2.1.3 * http://www.snort.org/dl/binaries/win32/old/ Mysql 4.0.20d ** http://dev.mysql.com/downloads/mysql/4.0.html Acid 0.9.6b23 http://www.andrew.cmu.edu/user/rdanyliw/snort/snortacid.html Internet Information Server IIS 5.1 (Disco de instalacin de Windows) PHP 4.3.8 * http://mx.php.net/get/php-4.3.8-installer.exe/from/a/mirror MyODBC 3.51.06 * http://mirror.etf.bg.ac.yu/mysql/Downloads/MyODBC3/ ADODB 4.52 para PHP http://prdownloads.sourceforge.net/adodb/adodb452.zip?download PHPlot 4.4.6

http://sourceforge.net/project/showfiles.php?group_id=14653 jpGraph 1.16 http://www.aditus.nu/jpgraph/jpdownload.php Es recomendable utilizar como mnimo dos particiones, una con el sistema operativo y la otra para almacenar los resultados de la captura; su tamao depender de la cantidad de datos que se recopilen, as como del tamao de la red a analizar. * Instalacin automtica con el instalador. ** Contiene dentro del archivo comprimido el instalador.

Proteccin del equipo


Limitar acceso fsico. Colocar Snort en un rea segura, accesible slo por el personal autorizado. Configurar el sistema para que inicie slo desde disco duro. Control de acceso. Limitar el nmero de usuarios que pueden ingresar al sistema utilizando una directiva de contraseas adecuada. Instalar nicamente componentes necesarios para el funcionamiento del sistema operativo y no instalar componentes adicionales. Terminar todos los servicios que no se desean utilizar. Deshabilitar protocolos de red no necesarios. Establecer comunicaciones remotas si son necesarias con protocolos y aplicaciones seguras como IPSec SSH. Aplicar actualizaciones de seguridad, parches, Services Packs.

Instalacin WinPcap
WinPcap es un driver de captura de paquetes, esto significa que WinPcap puede tomar paquetes de una red y colocarlo en Snort. Sus funciones son: Obtener una lista de adaptadores de red y salvar esa informacin. Sniffer de paquetes usando ms de un adaptador seleccionado.

Almacenar paquetes en disco duro (En este caso a Snort) La versin de WinPcap que se utiliz en este tutorial es la 2.3, debido a que las versiones 3.0 y superiores presentan algunas deficiencias al trabajar con Snort mientras que versiones inferiores como la 2.3 trabajan de forma adecuada. Para su instalacin nicamente ejecute el programa de instalacin (WinPcap_2_3.exe). D clic en el botn Next y automticamente se instalar en donde corresponde.

Snort llama a WinPcap de forma automtica, por lo tanto si al momento de ejecutar Snort, ste no funciona adecuadamente, puede ser que WinPcap no haya sido debidamente instalado.

Instalacin de Snort
Como ya se mencion, Snort es un IDS (Intrution Detection System), capaz de ejecutar anlisis de trfico y autentificacin de paquetes en tiempo real en redes TCP/IP. Para su instalacin, Snort.org tiene una distribucin de instalacin automtica para Windows, la cual puede ser utilizada de forma sencilla. Ejecute el programa de instalacin (snort-2_1_3.exe) y aparece la ventana de la Licencia Pblica GNU. De clic en I agree. En la ventana Installation Options seleccione I do not plan to log to a database, or I am planning to log to one of the databases listed above. Presione el botn Next para continuar.

Esta opcin es la adecuada si desea utilizar el soporte para la base de datos Mysql utilizada en este tutorial. Posteriormente aparece la ventana Chose Components. Seleccione los componentes que desea instalar; de preferencia instale todas las opciones posibles. Una vez hecho esto, debe de indicar el lugar donde se instalar Snort, la opcin predeterminada es en "C:\Snort", esta ruta se considera como SnortPath. Presione Install.

De esta forma queda instalado Snort en el equipo, ahora es necesario configurar Snort para que trabaje adecuadamente.

Configuracin de Snort
Para que Snort comience a trabajar es necesario modificar algunos archivos especiales ubicados en SnortPath. Localice el archivo SnortPath\etc\snort.conf y bralo con algn editor de texto que no corrompa el formato original como Notepad o Wordpad.

Configuracin de red. De forma predeterminada Snort.conf contiene la siguiente lnea, la cual indica el rango de monitoreo. var HOME_NET any Para monitorear una IP o un segmento especfico, inserte el rango de direcciones IP y la subred de la red del host en snort.conf. Para hacer esto reemplace la configuracin de esta forma: var HOME_NET IPAddressRange/Subnet Ejemplos: Para una red completa de clase C. var HOME_NET 192.168.10.0/24 Para monitorear un host especfico de la red de clase C. var HOME_NET 192.168.10.2/32 Tres hosts especficos de la red de clase C. var HOME_NET 192.168.10.2/32,192.168.10.3/32,192.168.10.6/32 Nota: Recuerde no colocar espacios entre cada coma. Configuracin de reglas. Para que Snort detecte y avise sobre posibles intentos de ataques es necesario que se le diga un conjunto de reglas a seguir. De forma predeterminada la base de estas reglas esta en SnortPath\rules. Para indicar esto, en el archivo snort.conf, reemplace la lnea varRULE_PATH por: var RULE_PATH SnortPath\rules Configuracin de salida La configuracin de la salida de Snort es muy importante ya que define cmo se presenta la informacin al usuario. Existen muchas caractersticas sobre la salida de Snort, pero para esta implementacin se utilizar la salida de una alerta en una base de datos. Para configurarlo se debe localizar la siguiente lnea: # output log_tcpdump; tcpdump.log Modificarla de la siguiente forma:

output alert_fast: alert.ids No olvide eliminar el comentario (#) al inicio de la lnea para evitar que Snort la ignore. Configuracin para la integracin con la base de datos. Para poder utilizar las caractersticas de almacenamiento en MySQL es necesario contar con la siguiente informacin antes de poder continuar. User. Usuario MySQL de la base de datos donde Snort almacenar informacin. Password. Contrasea del usuario. Dbname. Nombre de la base de datos en MySQL donde Snort almacenar las alertas. YourHostName. Nombre del host del servidor de base de datos Port. Puerto en el cual se establecer la comunicacin Snort - MySQL Sensor_name: Nombre del sensor de Snort. Es posible obtener el nombre del host (hostname) con el comando hostname en el command prompt (smbolo del sistema). Recuerda no usar nombres de usuarios, bases de datos y passwords predeterminados para evitar se comprometido. Una vez obtenida esta informacin, localizar en el archivo snort.conf la siguiente lnea: # output database: log, mysql, user=root password=test dbname=db host=localhost Utilizando su propia informacin, modifique la lnea para que quede de la siguiente forma: output database: log, mysql, user=User password=Password dbname=Dbname host=YourHostName port=Port sensor_name=Sensor_name output database: log, mysql, user=snortusr password=P@zzm0Rd dbname=snortdb host=localhost port=3006 sensor_name=snort_sensor Incluir archivos especiales Dos archivos de configuracin deben ser referenciados para que Snort pueda clasificar y generar alertas adecuadas. Estos son classification.config y reference.config. Para incluirlos se debe localizar la siguiente lnea en snort.conf Include classification.config Modificar de la siguiente forma: Include SnortPath\etc\classification.config

De igual forma localizar en snort.conf Include reference.config Modificar de la siguiente forma: Include SnortPath\etc\reference.config Probar configuracin Para verificar que se configur de forma adecuada, puede desplazarse a SnorthPath\bin dentro de una ventana de lnea de comandos y ejecutar snort -v Este comando ejecuta Snort como sniffer de paquetes con la opcin verbose para desplegar todos los resultados en la pantalla.

Con el comando snort -W se determina el nmero de adaptadores utilizados y si se desea especificar, se puede utilizar el comando snort -v -i#, donde # es el nmero del adaptador de red (tal cual lo muestra la salida con la opcin -W). Para probar la habilidad de registrar en los discos duros, se puede utilizar la opcin -l indicando la ruta adecuada de la siguiente forma: Snort-l SnortPath\log Se puede aadir y quitar snort como un servicio de esta manera desde SnortPath: snort /SERVICE /INSTALL -de-c SnortPath\etc\snort.conf -l SnortPath\log snort /SERVICE /UNINSTALL

MySQL
MySQL es la base de datos relacional que utilizaremos para controlar y almacenar los registros de las alertas o capturas que Snort realice. Instalacin Por cuestiones de compatibilidad con diferentes equipos, se sugiere la instalacin por separado del driver ODBC para MySQL. Para este tutorial se utiliz la versin MyODBC 3.51.06. Para instalarlo nicamente se debe de ejecutar el programa de instalacin, en este caso MyODBC-3.51.06.exe y dar clic en instalar. La instalacin ser de forma automtica. Usualmente dentro del archivo comprimido de MySQL se encuentra el archivo de instalacin llamado setup.exe. Al momento de ejecutarlo aparece la ventana de bienvenida, dar clic en Next. Posteriormente aparece la ventana de informacin. Si deseas instalar MySQL en otro directorio diferente de C:\MySQL, se debe de crear un archivo de inicializacin, la ventana de informacin describe el proceso. Se debe de aclarar que en algunas versiones como la utilizada, el archivo de configuracin my.ini se genera de forma automtica al iniciar el programa por primera vez, pero no est de ms aclarar que se puede modificar siguiendo el proceso descrito. Para continuar presiona el botn Next.

Una vez indicada la ruta en donde se instal MySQL, la tomaremos como referencia de MySQLPath. Configuracin Para empezar a utilizar MySQL es necesario realizar algunas configuraciones iniciales y para hacerlo debes desplazarte a la carpeta MySQLPath\bin y ejecutar el siguiente comando. winmysqladmin

Al hacer esto se abre la consola grfica de administracin de la base de datos y solicita configuracin para la autenticacin. Puede utilizar cualquier nombre de usuario y contrasea que desee y presione el botn OK. Debe aparecer un icono de semforo en la parte inferior derecha con la luz verde encendida, esto indica que el servidor MySQL puede ser utilizado y que arranc de forma adecuada, en caso de que no sea as y la luz sea de color rojo, es necesario revisar la configuracin del archivo my.ini en %systemroot% (C:\Windows para XP y C:\WinNT para 2000) o desde la consola grfica de administracin en la pestaa my.ini Setup. El formato del archivo debe ser similar a este: #This File was made using the WinMySQLAdmin 1.4 Tool #24/08/2004 01:27:16 p.m. #Uncomment or Add only the keys that you know how works. #Read the MySQL Manual for instructions [mysqld] basedir=C:/mysql bind-address=localhost datadir=C:/mysql/data #language=C:/mysql/share/your language directory #slow query log#= #tmpdir#= port=3306 set-variable=key_buffer=16M [WinMySQLadmin] Server=C:/mysql/bin/mysqld-nt.exe user=root password=Password Una vez que MySQL funciona adecuadamente, es necesario configurarlo para que pueda trabajar con los datos de Snort. Antes es recomendable verificar que en la pestaa Start Check de la consola de administracin, la lnea de my.ini tenga un yes como valor y las lneas siguientes indiquen OK. Esto indica de

forma ms clara que MySQL funciona apropiadamente.

El primer paso para configurar MySQL para trabajar con Snort es agregar un poco de seguridad, con lo cual cambiaremos la contrasea de administrador. En el directorio MySQLPath\bin debemos ejecutar el siguiente comando: Mysql -u root -p E introducimos el password del usuario root, en caso de que no tenga el password se omite la opcin -p. De esta forma accedemos con el cliente al servicio de MySQL. Para realizar el cambio de contrasea, ya una vez ingresado ejecutamos el siguiente comando: mysql>update user set password=PASSWORD('clave') where user='root'; mysql> FLUSH PRIVILEGES; Nota: Es importante recordar que en MySQL cada comando que ejecutemos debe de terminar con el smbolo de punto y coma (;). Ahora es necesario eliminar cuentas y bases de datos predeterminadas para evitar posibles problemas de seguridad. Primero indicamos el uso de la base de datos de administracin: use mysql; Para eliminar usuarios y equipos: delete from user where host = "%"; delete from user where host = "%";

Al ejecutar select * from user; nicamente debe existir el usuario root. Para eliminar bases de datos, el comando show databases; debe mostrar las bases de datos actuales. nicamente debe de quedar mysql como base de datos, as que para eliminar las dems ejecutamos: Drop database BaseDeDatos; Por ltimo, creamos la base de datos para Snort, as como un usuario que pueda acceder a ella. mysql>create database snort; Desde MySQLPath\bin le indicamos que utilice el formato de creacin de la base de datos de Snort. C:\mysql -D snort < SnortPath\contrib\create_mysql Para crear el usuario : mysql> grant insert,select,update,create,delete on Dbname.* to User@YourHostName identified by 'clave'; Nota: Los datos del usuario debieron ser definidos en el punto 3.2 Instalacin de Snort en el apartado Configuracin para la integracin con la base de datos. Para verificar estos permisos: Show grants for User@YourHostName; Por ltimo se verifica su funcionamiento junto con Snort, y para esto levantamos el servicio de Snort ya ingresado en el registro desde el command prompt. net start snort Para detenerlo: net stop snort Posteriormente nos desplazamos a MySQLPath\bin y tratamos de ingresar con el usuario User e ingresamos la contrasea. mysql -D snort -h YpurHostName -u User -p Password: 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, habra que repasar los pasos anteriores, verificando que ambos servicios permanecen activos.

IIS
En este momento ya es posible trabajar con Snort y con MySQL pero de una manera un poco difcil, por lo cual existen herramientas como ACID que permiten analizar los resultados de una manera ms sencilla y rpida. ACID es un sistema basado en Web, el cual utiliza PHP como lenguaje de programacin, por lo cual es necesario tener instalado un servidor Web en el equipo que permita la ejecucin de cdigo PHP. En este tutorial utilizamos IIS 5.1 de Windows, pero puede utilizarse cualquier servidor Web como Apache. Para instalarlo debemos ir a Panel de Control / Agregar o Quitar Programas / Agregar o Quitar Componentes de Windows y seleccionar la pestaa Servicios de Internet Information Server (IIS).Presiona Siguiente para Instalar.

Una vez instalado podemos comprobar su adecuada instalacin al escribir en algn navegador de Internet el URL http://localhost. Deber aparecer una pgina de bienvenida de Windows. Asegurar IIS IIS ha presentado algunos problemas de seguridad, por lo cual es necesario endurecer las aplicaciones que corren en l, as como el propio servicio. En la siguiente liga se dan algunas recomendaciones sobre cmo mantener IIS de forma segura.

http://www.microsoft.com/windows2000/en/server/iis/default.asp?url=/windows2000/en/server/iis/htm/core/iisckl.htm

PHP, ADODB y PHPlot


Para que el servidor Web pueda interpretar cdigo escrito en PHP como ACID, es necesario instalar los componentes adecuados de PHP. La instalacin de PHP puede ser hecha usando el instalador automtico o de forma manual. Este manual describe el proceso usando el programa de instalacin y se debe sealar que para ambas opciones es requisito que ACID cuente con soporte para MySQL y elaboracin de grficas (extensin php_gd.dll). Ejecutamos el programa de instalacin (php-4.3.8-installer.exe) y aparece la ventana de bienvenida, y posteriormente la ventana de licencia de uso, damos clic en Next para continuar. Se debe de escoger un tipo de instalacin, la estndar es la ms prctica para este caso. Por ltimo, indicamos datos como ruta de la carpeta PHP, la cual nombraremos como PHPPath, despus configuracin de correo y tipo de servidor. Se seleccionan las que estn de acuerdo a nuestro planteamiento y comienza la instalacin. En cualquier modo de instalacin se debe de tener un archivo en %SystemRoot% llamado PHP.ini en la cual se deben modificar algunas lneas de la siguiente forma: max_execution_time = 60 descomentar: extension=php_gd2.dll extension_dir = PHPPath\extensions session.save_path = %SystemRoot%Temp Nota: En el caso de una instalacin hecha por el instalador, no se incluye la carpeta de extensiones, por lo cual es necesario descargar la versin binaria y descomprimir la carpeta extensions en el directorio de PHPPath. Al momento de instalar PHP, el manejo de errores y avisos manda la salida al explorador de forma predeterminada, y debido a que existen muchos mdulos que no sern utilizados, es preferible desplegar nicamente los reportes de errores y no de avisos o advertencias. Para hacer esto, en el archivo PHP.ini se debe sustituir la lnea: error_reporting = E_ALL; display all errors, warnings and notices por la siguiente: error_reporting = E_ALL & ~E_NOTICE; display only errors Ahora es necesario descomprimir Adodb en algn directorio, como puede ser SnortPath\adodb. Descomprimir phplot en SnortPath\phplot, ser suficiente para la instalacin de este componente.

ACID
Para la instalacin de ACID es necesario nicamente copiar todo el contenido del archivo comprimido de ACID en un directorio llamado ACID, dentro de la raz del servidor Web (para que sea accesible va Web) y modificar acid_conf.php con los siguientes datos. $DBlib_path = "SnortPath\adodb"; $alert_dbname = "Dbname"; $alert_host = "YourHostName"; $alert_port = "3306"; $alert_user = "User"; $alert_password = "Password"; $ChartLib_path = "SnortPath\phplot" ACID crea tablas adicionales para que el usuario pueda archivar alertas importantes. Se puede indicar otro usuario para acceder a ellas. /* Archive DB connection parameters */ $archive_dbname = "snort"; $archive_host = "localhost"; $archive_port = ""; $archive_user = "snort"; $archive_password = "snort"; Se reinician los servicios para prevenir posibles errores y se accede al servidor Web con la siguiente ruta (localhost si esta en equipo local o direccin IP del servidor): http://localhost/acid/index.html La primera vez que se accede indica un error pues todava no crea las nuevas tablas. Para hacerlo selecciona Select Setup Page y luego Create ACID AG, esto debe de crear las tablas adicionales y desplegar correctamente la pgina inicial.

JPGraph
Para la instalacin de ACID basta con copiar todo el contenido del archivo comprimido de ACID en un directorio llamado ACID, dentro de la raz del servidor Web (para que sea accesible va Web) y modificar acid_conf.php con los siguientes datos. En las versiones de PHP que utilizan el instalador, no se tienen incluidos los mdulos de las extensiones, por lo cual no se podr trabajar con el mdulo de gd, el cual es necesario para la visualizacin de grficas. Para poder utilizarlo, use las versiones binarias para la instalacin de PHP y en el archivo de configuracin PHP.ini verifique que tenga las siguientes modificaciones: descomentar extension=php_gd2.dll extension_dir = PHPPath\extensions De esta forma se cargar la extensin para la visualizacin de grficos para PHP. Una vez descargado el archivo comprimido de JPGraph, descomprima la carpeta de PHP denominada previamente PHPPath. En ella encontrar la carpeta donde se encuentra el archivo jpgraph.php, copia la ruta. Posteriormente en el archivo de configuracin de ACID acid_conf.php ubica la lnea con la variable $ChartLib_path. sta se debe modificar y debe quedar como el siguiente ejemplo: $ChartLib_path = "E:\PHP\jpgraph-1.16\src"; Por ltimo, para asegurar que se carga de forma adecuada, debemos definir algunas variables para la carga de JPGraph. Abrir el archivo jpgraph.php de la ruta antes mencionada, y definir lo siguiente: DEFINE("cache_dir", "[Drive]/Temp");

DEFINE("TTF_DIR","%SystemRoot%/Fonts"); DEFINE('USE_TRUECOLOR',true); DEFINE("USE_LIBRARY_GD2",true); DEFINE("USE_CACHE",true); En donde %SystemRoot% usualmente sera C:/Windows y Drive sera la unidad C: / De esta forma quedara instalada la funcionalidad grfica para generar resultados ms claros del funcionamiento y trfico en la red como la siguiente:

Para obtener las grficas es necesario contar con un AG (Alert Group), el cual puede ser creado desde el botn AG Maintenance y agregando un rango de lecturas o directamente de un sensor.

Notas finales
En caso de desplegar correctamente la pgina de ACID y tener levantados los servicios Snort y MySQL debidamente, el sistema de Snort ya puede ser utilizado para analizar el trfico en la red. Existe documentacin extensa sobre el funcionamiento y sobre la implementacin de reglas para Snort en el sitio Snort.org, aunado a su manejo con MySQL y ACID.

Revisin histrica Liberacin original: 7 de Septiembre de 2004 ltima revisin: 1 de octubre de 2010 La Subdireccin de Seguridad de la Informacin/UNAM-CERT agradece el apoyo en la elaboracin y revisin de este documento a:

Omar Senz Herrera Jess Ramn Jimnez Rojas Galvy Cruz Valencia Andrs Leonardo Hernndez Bermdez Para mayor informacin acerca de ste documento de seguridad contactar a: UNAM-CERT Equipo de Respuesta a Incidentes UNAM Subdireccin de Seguridad de la Informacin Direccin General de Cmputo y de Tecnologas de Informacin y Comunicacin Universidad Nacinal Autnoma de Mxico E-Mail: seguridad@seguridad.unam.mx http://www.cert.org.mx http://www.seguridad.unam.mx ftp://ftp.seguridad.unam.mx Tel: 56 22 81 69 Fax: 56 22 80 43