| Formulario de acceso |
|---|
| Anuncios |
|---|
|
|
| Sistema de detección de intrusos con Snort |
|
|
| sábado, 28 de abril de 2007 | |
|
Un IDS (Intrusion Detection System) es una herramienta que se engloba dentro de las aplicaciones de seguridad y que trata de monitorizar eventos sospechosos ocurridos en un sistema informático determinado. Dichos eventos tendrían como finalidad el compromiso de la seguridad del sistema auditado, lo cual puede evitarse si el sistema de detacción funciona adecuadamente y está bien configurado. Snort es un sniffer de paquetes de red que se adapta a la perfección a la definición de un IDS. Escenario Implementaremos un entorno IDS basado en el software Snort, un sistema de mensajes de funcionamiento y alertas que utilizará MySQL para su almacenamiento y consulta y un sistema basado en el programa BASE (Basic Analysis and Security Engine) que nos permitirá analizar gráficamente los eventos procedentes del software Snort. Instalación del software Si bien podemos descargar y compilar todo el software necesario, cualquiera de las distribuciones linux actuales disponen de paquetes precompilados que proveerán a nuestro sistema de todo lo necesario para el correcto funcionamiento de todo nuestro sistema IDS. Daremos igualmente por hecho que disponemos ya de una instalación completa de MySQL y un servidor web bien configurado (por ejemplo, Apache). A continuación se apuntan los distintos paquetes y sus versiones disponibles en el momento de escritura de este artículo:
Comenzaremos por la instalación de Snort desde cualquier herramienta de paquetería automática (tipo yum o apt-get) que hará por nosotros el trabajo de descarga de binarios y de resolución de dependencias: [root@annie ~]# yum install snort snort-mysql php-gd Este comando dejará instalado el paquete base de Snort, el soporte para MySQL y las librerías (si no están ya instaladas) libpcap y libpcre. Si queremos tener un control mayor sobre la instalación o las opciones de compilación, tendremos que descargar el programa de la página oficial (www.snort.org) y compilarlo he instalarlo "a mano" (teniendo en cuenta la instalación de las diferentes dependencias tal que libpcap o pcre): [root@annie ~]# ./configure --with-mysql Seguidamente descargaremos e instalaremos las reglas (de la página oficial www.snort.org): [root@annie /]# cd /etc/snort/ El siguiente paso será la descarga e instalación del programa BASE (secureideas.sourceforge.net) y la herramienta ADOdb (adodb.sourceforge.net): [root@annie snort]# cd /var/www Nótese que para la instalación de los dos programas se sigue la estructura de directorios de una instalación de Apache bajo Fedora Core/Red Hat (/var/www/) y que dicha estructura puede variar dependiendo de la distribución. Configuración de Snort En primer lugar, vamos a modificar el fichero principal de configuración de Snort (/etc/snort/snort.conf) en lo que se refiere a las órdenes siguientes (si no existen ya, las crearemos tal cual): var HOME_NET 10.0.0.0/24 (siguiendo la notación de prefijos CIDR) Básicamente lo que hacemos con este conjunto de líneas es adaptar el programa Snort a nuestra red local (10.0.0.0/24) y no filtrar tráfico que no pertenezca a dicha red (!$HOME_NET). Con RULE_PATH establecemos el directorio donde hemos almacenado las reglas y con output database indicamos la cadena de conexión al servidor de MySQL para la escritura de mensajes. Para no hacer uso del usuario root, crearemos igualmente el grupo y el usuario snort para utilizarlo posteriormente en tareas de acceso y administración: [root@annie snort]# groupadd snort Para ejecutar Snort bastará con teclear lo siguiente en una consola de administración y comprobar que todo arranca sin errores (una vez hayamos visto que todo está correcto, podemos añador la opción -D para correr Snort como demonio): [root@annie ~]# /usr/sbin/snort -c /etc/snort/snort.conf -i eth0 -g snort [-D] Si queremos arrancar Snort con el inicio del sistema, bien podemos utilizar los scripts del paquete precompilado (por ejemplo /etc/init.d/snortd en Fedora Core) o añadir una línea con la orden anterior al fichero /etc/rc.local. Se recomienda utilizar ésta última opción o repasar detenidamente el script que se instala junto al paquete, pues puede interesarnos arrancar Snort con opciones distintas a las mostradas (por ejemplo, el script de inicio por defecto de Fedora Core no atiende a la existencia de un usuario llamado snort). Obviamente, basta con mirar por encima el fichero de configuración snort.conf para percatarse de que las opciones de personalización son mucho más extensas de lo que hemos explicado aquí. Si bien el programa es perfectamente funcional dejando las opciones del fichero por defecto, no estaría de más leerse las páginas del manual y aprender algo más a cerca del uso de los preprocesadores (que permiten una extensión de la funcionalidad de Snort al permitir el acceso a los paquetes antes de que éstos sean procesados por el motor de detección), los plugins de salida y la propia personalización de las reglas. Creación de la base de datos en MySQL Crearemos a continuación las tablas necesarias dentro de MySQL, las cuales permitirán la consulta de toda la información proporcionada por Snort. Como hemos dicho anteriormente, se supone MySQL ya instalado y dadas de alta las contraseñas de administración. En el punto anterior, también hemos creado un usuario y un grupo específicos (snort) para acceder a la información e interactuar con el IDS: [root@annie snort]# mysql -u root -p Un vez creada la tabla y dado acceso al usuario, usaremos el script create_mysql para completar la estructura de la tabla snort. Dicho script se encuentra en la rama de instalación del programa Snort o en la rama de documentación del mismo (por ejempo, en la instalación del paquete rpm de Fedora Core, el script se sitúa en /usr/share/doc/snort-x.x.x/create_mysql): [root@annie snort]# mysql -u root -p < /usr/share/doc/snort-2.6.1.1/create_mysql snort Para comprobar que todo se ha creado de forma correcta, ejecutaremos las órdenes siguientes dentro del intérprete de MySQL: [root@annie snort]# mysql -u root -p Podemos observar claramente cómo la base de datos llamada snort aparece en el listado de la consola y nos fijaremos también en la estructura de la misma, creada por el script en el paso anterior. Configuración del entorno BASE Atenderemos ahora a la configuración del programa BASE. Como hemos dicho antes, damos por hecho que un servidor de páginas web está correctamente instalado y funcionando. El fichero principal de configuración de BASE es base_conf.php. Dicho fichero se puede encontrar con el nombre base_conf.php.dist en el directorio raíz de la instalación, así que lo renombraremos quitando la extensión .dist y lo editaremos para cambiar algunos parámetros y ajustarlos a nuestras necesidades. A continuación se escriben las líneas básicas a cambiar (o a incluir), sin perjuicio de que el lector cambie cualquier otra que se adapte bien a sus necesidades: $BASE_urlpath = '/base'; Aunque las opciones modificadas no necesitan demasiada explicación, cada una de las mismas viene bien documentada en el fichero de ejemplo, así que remitiremos al mismo para la búsqueda de cualquier tipo de información. Si todo ha quedado bien configurado, estaremos en condiciones de introducir la ruta de BASE en la barra de direcciones de un navegador (por ejemplo http://localhost/base) y obtener una pantalla similar a la siguiente:
Para terminar la configuración, es necesaria la creación de una serie de tablas que den funcionalidad al programa BASE. Esto se hace pulsando sobre el link Setup page de la pantalla anterior y seguidamente sobre el botón Create BASE AG de la nueva pantalla. Así quedará instalado el programa por completo. Comprobar la configuración A continuación, vamos a abrir una consola con el usuario root y procederemos a comprobar que todo funciona correctamente. En primer lugar, será necesario comprobar que todos los servicios que hacen falta están corriendo: [root@annie snort]# ps -ef|grep snort && ps -ef|grep httpd && ps -ef|grep mysqld Ahora es el momento de monitorizar los eventos y ver si Snort funciona bien. La forma más sencilla de hacer esto es dejar una consola abierta con el fichero de mensajes del IDS y ejecutar alguna herramienta de escaneo de puertos y vulnerabilidades que nos permita ver las respuestas de Snort, como pudiera ser Nessus (www.nessus.org), un potente programa para auditoría de seguridad. Veamos la respuesta de Snort a un escaneo de puertos desde el exterior: [**] [122:1:0] (portscan) TCP Portscan [**] O a un ataque directo contra el servidor de FTP: [**] [1:1748:8] FTP command overflow attempt [**] Sólo los usuarios registrados pueden escribir comentarios. Powered by AkoComment 2.0! |
| < Anterior | Siguiente > |
|---|








