instalaciÓn, configuraciÓn y funcionamiento del...

27
INSTALACIÓN, CONFIGURACIÓN Y FUNCIONAMIENTO DEL IDS SNORT DANIEL SEBASTIAN TORRES VARGAS Código: 1150214 Trabajo presentado como parte del segundo previo Profesor: Jean Polo Cequeda Olago UNIVERSIDAD FRANCISCO DE PAULA SANTANDER FACULTAD DE INGENIERIAS INGENIERIA DE SISTEMAS SAN JOSÉ DE CÚCUTA 2012

Upload: truongnhan

Post on 15-Dec-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

INSTALACIÓN, CONFIGURACIÓN Y FUNCIONAMIENTO DEL IDS SNORT

DANIEL SEBASTIAN TORRES VARGAS Código: 1150214

Trabajo presentado como parte del segundo previo

Profesor: Jean Polo Cequeda Olago

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER FACULTAD DE INGENIERIAS INGENIERIA DE SISTEMAS

SAN JOSÉ DE CÚCUTA 2012

INTRODUCCIÓN

El presente documento trata acerca de un Sistema de Detección de Intrusos (IDS, siglas en

Inglés) llamado Snort desarrollado por SourceFire. Para llegar a hablar de dicho sistema se

definirá lo que es un IDS primeramente. A continuación, se hablará de lo que es Snort, como

funciona y todos los aspectos básicos del mismo.

Como requerimiento de la entrega de éste informe, se explicará detalladamente el proceso

de instalación y configuración de Snort, al mismo tiempo que se ilustrarán ejemplos de

algunos de los comandos que éste sistema IDS tiene como funcionalidades.

1. ¿QUÉ ES UN IDS?

Cortafuegos vs IDS

Un IDS es un sistema que intenta detectar y alertar sobre las intrusiones intentadas en un

sistema o en una red, considerando intrusión a toda actividad no autorizada o no que no

debería ocurrir en ese sistema. Según esta definición, muchos podrían pensar que ese

trabajo ya se realiza mediante los cortafuegos o firewalls.

La principal diferencia, es que un cortafuegos es una herramienta basada en la aplicación de

un sistema de restricciones y excepciones sujeta a muchos tipos de ataques, desde los

ataques “tunneling”(saltos de barrera) a los ataques basados en las aplicaciones. Los

cortafuegos filtran los paquetes y permiten su paso o los bloquean por medio de una tabla de

decisiones basadas en el protocolo de red utilizado. Las reglas verifican contra una base de

datos que determina si está permitido un protocolo determinado y permite o no el paso del

paquete basándose en atributos tales como las direcciones de origen y de destino, el número

de puerto, etc... Esto se convierte en un problema cuando un atacante enmascara el tráfico

que debería ser analizado por el cortafuegos o utiliza un programa para comunicarse

directamente con una aplicación remota. Estos aspectos se escapan a las funcionalidades

previstas en el diseño inicial de los cortafuegos. Es aquí dónde entran los IDS, ya que estos

son capaces de detectar cuando ocurren estos fallos.

Definición

Un sistema de detección de intrusos (o IDS de sus siglas en inglés Intrusion Detection

System) es un programa usado para detectar accesos no autorizados a un computador o a

una red. Estos accesos pueden ser ataques de habilidosos hackers, o de Script Kiddies que

usan herramientas automáticas.

El IDS suele tener sensores virtuales (por ejemplo, un sniffer de red) con los que el núcleo

del IDS puede obtener datos externos (generalmente sobre el tráfico de red). El IDS detecta,

gracias a dichos sensores, anomalías que pueden ser indicio de la presencia de ataques o

falsas alarmas.

Algunas de las características deseables para un IDS son:

• Deben estar continuamente en ejecución con un mínimo de supervisión.

• Se deben recuperar de las posibles caídas o problemas con la red.

• Debe poderse analizar él mismo y detectar si ha sido modificado por un atacante.

• Debe utilizar los mínimos recursos posibles.

• Debe estar configurado acorde con la política de seguridad seguida por la

organización.

• Debe de adaptarse a los cambios de sistemas y usuarios y ser fácilmente actualizable.

Funcionamiento

El funcionamiento de estas herramientas se basa en el análisis pormenorizado del tráfico de

red, el cual al entrar al analizador es comparado con firmas de ataques conocidos, o

comportamientos sospechosos, como puede ser el escaneo de puertos, paquetes

malformados, etc. El IDS no sólo analiza qué tipo de tráfico es, sino que también revisa el

contenido y su comportamiento.

Normalmente esta herramienta se integra con un firewall. El detector de intrusos es incapaz

de detener los ataques por sí solo, excepto los que trabajan conjuntamente en un dispositivo

de puerta de enlace con funcionalidad de firewall, convirtiéndose en una herramienta muy

poderosa ya que se une la inteligencia del IDS y el poder de bloqueo del firewall, al ser el

punto donde forzosamente deben pasar los paquetes y pueden ser bloqueados antes de

penetrar en la red.

Los IDS suelen disponer de una base de datos de “firmas” de ataques conocidos.

Dichas firmas permiten al IDS distinguir entre el uso normal del PC y el uso fraudulento, y/o

entre el tráfico normal de la red y el tráfico que puede ser resultado de un ataque o intento

del mismo.

Tipos de IDS

Existen varios tipos de IDS, clasificados según el tipo de situación física, del tipo de

detección que posee o de su naturaleza y reacción cuando detecta un posible ataque.

Clasificación por situación

Según la función del software IDS, estos pueden ser:

• NIDS (Network Intrusion Detection System)

• HIDS (Host Intrusion Detection System)

Los NIDS analizan el tráfico de la red completa, examinando los paquetes individualmente,

comprendiendo todas las diferentes opciones que pueden coexistir dentro de un paquete de

red y detectando paquetes armados maliciosamente y diseñados para no ser detectados por

los cortafuegos. Pueden buscar cual es el programa en particular del servidor de web al que

se está accediendo y con que opciones y producir alertas cuando un atacante intenta

explotar algún fallo en este programa. Los NIDS tienen dos componentes:

Un sensor: situado en un segmento de la red, la monitoriza en busca de tráfico sospechoso

Una Consola: recibe las alarmas del sensor o sensores y dependiendo de la configuración

reacciona a las alarmas recibidas.

Las principales ventajas del NIDS son:

Detectan accesos no deseados a la red.

No necesitan instalar software adicional en los servidores en producción.

Fácil instalación y actualización por que se ejecutan en un sistema dedicado.

Como principales desventajas se encuentran:

Examinan el tráfico de la red en el segmento en el cual se conecta, pero no puede detectar

un ataque en diferentes segmentos de la red. La solución más sencilla es colocar diversos

sensores.

Pueden generar tráfico en la red.

Ataques con sesiones encriptadas son difíciles de detectar.

En cambio, los HIDS analizan el tráfico sobre un servidor o un PC, se preocupan de lo que

está sucediendo en cada host y son capaces de detectar situaciones como los intentos

fallidos de acceso o modificaciones en archivos considerados críticos. Las ventajas que

aporta el HIDS son:

Herramienta potente, registra comandos utilizados, ficheros abiertos,...

Tiende a tener menor número de falsos-positivos que los NIDS, entendiendo falsos-positivos

a los paquetes etiquetados como posibles ataques cuando no lo son.

Menor riesgo en las respuestas activas que los IDS de red.

Los inconvenientes son:

Requiere instalación en la máquina local que se quiere proteger, lo que supone una carga

adicional para el sistema.

Tienden a confiar en las capacidades de auditoria y logging de la máquina en sí.

Clasificación según los modelos de detecciones

Los dos tipos de detecciones que pueden realizar los IDS son:

• Detección del mal uso.

• Detección del uso anómalo.

La detección del mal uso involucra la verificación sobre tipos ilegales de tráfico de red, por

ejemplo, combinaciones dentro de un paquete que no se podrían dar legítimamente. Este

tipo de detección puede incluir los intentos de un usuario por ejecutar programas sin permiso

(por ejemplo, “sniffers”). Los modelos de detección basado en el mal uso se implementan

observando como se pueden explotar los puntos débiles de los sistemas, describiéndolos

mediante unos patrones o una secuencia de eventos o datos (“firma”) que serán

interpretados por el IDS.

La detección de actividades anómalas se apoya en estadísticas tras comprender cual es el

tráfico “normal” en la red del que no lo es. Un claro ejemplo de actividad anómala sería la

detección de tráfico fuera de horario de oficina o el acceso repetitivo desde una máquina

remota (rastreo de puertos). Este modelo de detección se realiza detectando cambios en los

patrones de utilización o comportamiento del sistema. Esto se consigue realizando un

modelo estadístico que contenga una métrica definida y compararlo con los datos reales

analizados en busca de desviaciones estadísticas significantes.

Clasificación según su naturaleza

Un tercer y último tipo básico de clasificación sería respecto a la reacción del IDS frente a un

posible ataque:

Pasivos.

Reactivos.

Los IDS pasivos detectan una posible violación de la seguridad, registran la información y

genera una alerta.

Los IDS reactivos están diseñados para responder ante una actividad ilegal, por ejemplo,

sacando al usuario del sistema o mediante la reprogramación del cortafuegos para impedir el

tráfico desde una fuente hostil.

2. ¿QUÉ ES SNORT?

Snort es un sniffer de paquetes y un detector de intrusos basado en red (se monitoriza todo

un dominio de colisión). Es un software muy flexible que ofrece capacidades de

almacenamiento de sus bitácoras tanto en archivos de texto como en bases de datos

abiertas como lo es MySQL. Implementa un motor de detección de ataques y barrido de

puertos que permite registrar, alertar y responder ante cualquier anomalía previamente

definida. Así mismo existen herramientas de terceros para mostrar informes en tiempo real

(ACID) o para convertirlo en un Sistema Detector y Preventor de Intrusos.

Este IDS implementa un lenguaje de creación de reglas flexible, potente y sencillo. Durante

su instalación ya nos provee de cientos de filtros o reglas para backdoor, DDoS, finger, FTP,

ataques web, CGI, Nmap...

Puede funcionar como sniffer (podemos ver en consola y en tiempo real qué ocurre en

nuestra red, todo nuestro tráfico), registro de paquetes (permite guardar en un archivo los

logs para su posterior análisis, un análisis offline) o como un IDS normal (en este caso

NIDS). Cuando un paquete coincide con algún patrón establecido en las reglas de

configuración, se logea. Así se sabe cuándo, de dónde y cómo se produjo el ataque.

Aún cuando tcpdump es considerada una herramienta de auditoría muy útil, no se considera

un verdadero IDS puesto que no analiza ni señala paquetes por anomalías. tcpdump imprime

toda la información de paquetes a la salida en pantalla o a un archivo de registro sin ningún

tipo de análisis. Un verdadero IDS analiza los paquetes, marca las transmisiones que sean

potencialmente maliciosas y las almacena en un registro formateado, así, Snort utiliza la

biblioteca estándar libcap y tcpdump como registro de paquetes en el fondo.

Snort está disponible bajo licencia GPL, gratuito y funciona bajo plataformas Windows y

UNIX/Linux. Dispone de una gran cantidad de filtros o patrones ya predefinidos, así como

actualizaciones constantes ante casos de ataques, barridos o vulnerabilidades que vayan

siendo detectadas a través de los distintos boletines de seguridad.

La característica más apreciada de Snort, además de su funcionalidad, es su subsistema

flexible de firmas de ataques. Snort tiene una base de datos de ataques que se está

actualizando constantemente y a la cual se puede añadir o actualizar a través de la Internet.

Los usuarios pueden crear 'firmas' basadas en las características de los nuevos ataques de

red y enviarlas a la lista de correo de firmas de Snort, para que así todos los usuarios de

Snort se puedan beneficiar. Esta ética de comunidad y compartir ha convertido a Snort en

uno de los IDSes basados en red más populares, actualizados y robustos.

3. ¿CÓMO FUNCIONA SNORT?

En la versión de Windows, es necesario instalar WinPcap. Este software consiste en un

driver que extiende el sistema operativo para permitir un acceso de bajo nivel a la red y una

librería que facilita a las aplicaciones acceder a la capa de enlace saltándose la pila de

protocolos.

Snort puede funcionar en:

• Modo sniffer, en el que se motoriza por pantalla en tiempo real toda la actividad en la

red en que Snort es configurado.

• Modo packet logger (registro de paquetes), en el que se almacena en un sistema de

log toda la actividad de la red en que se ha configurado Snort para un posterior análisis.

• Modo IDS, en el que se motoriza por pantalla o en un sistema basado en log, toda la

actividad de la red a través de un fichero de configuración en el que se especifican las reglas

y patrones a filtrar para estudiar los posibles ataques.

Una vez hemos instalado correctamente el programa y lo ponemos en funcionamiento,

debemos introducir en la base de patrones de ataques los que queremos utilizar para

detectar actividades sospechosas contra nuestra red.

Intuitivamente, el usuario tiende a utilizar un elevado número patrones para protegerse, pero

paradójicamente esto puede perjudicar la seguridad, ya que no todos los ataques que Snort

es capaz de detectar son útiles (para el atacante) en el segmento de red que monitorizamos

y en cambio corremos el riesgo de sobrecargar la herramienta, que dejará pasar todos los

paquetes que no pueda analizar.

Para utilizarlo correctamente, también es necesario estudiar los patrones de tráfico que

circulan por el segmento donde el sensor escucha para detectar falsos positivos y, o bien

reconfigurar la base de datos, o bien eliminar los patrones que los generan.

En definitiva, pese a todas las facilidades y automatizaciones y como casi todas las

herramientas de seguridad, es un apoyo que no puede sustituir la tarea del responsable de

seguridad que es quien debe analizar toda la información de forma minuciosa y continuada.

Funcionamiento del motor de Snort

El motor de Snort se divide en los siguientes componentes:

• Decodificador del paquete.

• Preprocesadores.

• Motor de detección (Comparación contra firmas).

• Loggin y sistema de alerta.

• Plugins de salida.

• El decodificador de paquete, toma los paquetes de diferentes tipos de interfaces de

red, y prepara el paquete para ser preprocesado o enviado al motor de detección.

Los preprocesadores son componentes o plugins que pueden ser usados con Snort para

arreglar, rearmar o modificar datos, antes que el motor de detección haga alguna operación

para encontrar si el paquete esta siendo enviado por un intruso. Algunos preprocesadores

realizan detección buscando anomalías en las cabeceras de los paquetes y generando

alertas. Son muy importantes porque preparan los datos para ser analizados contra reglas en

el motor de detección.

El motor de detección es la responsable de detectar si alguna actividad de intrusión existe en

un paquete. El motor utiliza las reglas que han sido definidas para este propósito. Las reglas

(o cadenas) son macheadas contra todos los paquetes. Si un paquete machea una regla, la

acción configurada en la misma es ejecutada.

Dependiendo que detecte el motor dentro de un paquete, el logging y sistema de alerta, se

encarga de loguear o generar una alerta. Los logs son almacenados en archivos de texto,

archivos con formato tcpdump u otro formato.

Los plugins de salida toman la salida del sistema de alerta y permiten almacenarlas en

distintos formatos o reaccionar antes el mismo. Por ejemplo: enviar emails, traps SNMP,

syslog, insertar en una base de datos, etc. Plugins de salida:

• Bases de datos (MySql, Postgres, etc)

• Syslog

• XML

• Traps SNMP

• Mensajes SMB

4. COMANDOS DE SNORT

Los siguientes son los comandos que se pueden utilizar en Snort para obtener las diferentes

funcionalidades:

-A Set alert mode: fast, full, console, or none //(alert file alerts only)//

-b Log packets in tcpdump format //(much faster!)//

-c <rules> Use Rules File <rules>

-C Print out payloads with character data only //(no hex)//

-d Dump the Application Layer

-e Display the second layer header info

-E Log alert messages to NT Eventlog. //(Win32 only)//

-f Turn off fflush() calls after binary log writes

-F <bpf> Read BPF filters from file <bpf>

-h <hn> Home network = <hn>

-i <if> Listen on interface <if>

-I Add Interface name to alert output

-k <mode> Checksum mode //(all,noip,notcp,noudp,noicmp,none)//

-l <ld> Log to directory <ld>

-L <file> Log to this tcpdump file

-n <cnt> Exit after receiving <cnt> packets

-N Turn off logging (alerts still work)

-o Change the rule testing order to Pass|Alert|Log

-O Obfuscate the logged IP addresses

-p Disable promiscuous mode sniffing

-P <snap> Set explicit snaplen of packet //(default: 1514)//

-q Quiet. Don't show banner and status report

-r <tf> Read and process tcpdump file <tf>

-R <id> Include 'id' in snort_intf<id>.pid file name

-s Log alert messages to syslog

-S <n=v> Set rules file variable n equal to value v

-T Test and report on the current Snort configuration

-U Use UTC for timestamps

-v Be verbose

-V Show version number

-W Lists available interfaces. //(Win32 only)//

-w Dump 802.11 management and control frames

-X Dump the raw packet data starting at the link layer

-y Include year in timestamp in the alert and log files

-z Set assurance mode, match on established sesions //(for TCP)//

-? Show this information

4. INSTALACIÓN Y CONFIGURACIÓN DEL IDS SNORT

La instalación se realizó una distribución Linux (Ubuntu 12.04 propiamente dicho) por medio

de la terminal de línea de comandos.

Se siguieron los siguientes pasos:

1. Abrir una terminal

2. Escribir el comando de instalación de paquete

sudo apt-get install snort

Dando permisos de superusuario para poder realizar la instalación (debido al sistema

de permisos utilizado por las distribuciones de Linux), escribiendo la contraseña en la

siguiente línea.

En seguida se iniciará la instalación.

3. A continuación pedirá la siguiente opción de configuración

En este paso pide la dirección de red local (la cual va a ser la que se estará

monitoreando). En este punto puede haber 3 opciones de configuración:

Si es una única dirección se colocará con máscara de sub red /32

Si es un bloque de 256 IPs se utilizará la máscara /24

Si es una red más amplia se utilizará la máscara /16

4. Una vez finalizado el proceso de instalación se puede realizar la configuración

completa por medio del comando.

Lo cual hará que se pidan las configuraciones, que serán guardadas en el archivo

/etc/snort/snort.debian.conf

5. Preguntará que opción de arranque se desea configurar:

Se ve explicado claramente qué es cada tipo de arranque. En este caso se escogerá

la configuración del arranque manual.

6. Siguiente viene una ventana de explicación de lo que será el próximo requisito a pedir,

la interface de red que se escaneará.

Se explica que se puede utilizar el siguiente comando para encontrar la interface

Con lo cual se nota que la interface necesaria en la wlan0 (ya que la conexión se está

realizando de manera inalámbrica).

7. En la siguiente opción se escribe la interface obtenida en la anterior instrucción

8. Ahora se deberá escribir la dirección de red que se desea escanear (paso similar al

realizado durante la instalación, paso 3).

9. Opción de habilitar o deshabilitar el “Modo promiscuo”

Modo Promiscuo significa que se analizará todos los paquetes que pasen por el segmento aunque no sean de una conexión propia.

10.

11. Recibir resúmenes electrónicos por correo de las alertas encontradas.

12. Se especifica el correo electrónico en que se desea recibir los resúmenes diarios.

13. Ahora se pregunta la cantidad de informes que se incluyen por alerta

14. Finalmente la solicitud del comando al finalizar para recargar las configuraciones

hechas.

15. Una vez finalizado el asistente de configuración, se ejecuta el comando mostrado en la anterior instrucción

PROCESO PARA LA INSERCIÓN DE UNA NUEVA REGLA 1. Crear un nuevo archivo .rules en la carpeta /etc/snort/rules/

En este ejemplo se está creando el archivo sites.rules el cual contendrá reglas sobre:

El usuario ingresa a la página de google

El usuario ingresa a la página de facebook

Se está realizando un ping sobre la máquina host.

2. El anterior comando abrirá un nuevo archivo del programa gedit con el nombre dado.

Como se dijo en el anterior paso se está realizando las 3 reglas. Se guarda y se cierra el archivo.

3. De vuelta en la terminal se abrirá ahora el archivo de configuración de snort. El cual se encuentra en la ruta mostrada en la siguiente imagen.

4. Al ejecutar el comando se abrirá nuevamente gedit con el archivo de configuración de snort.

De esta manera se ingresa la regla recientemente creada en el archivo de configuración y ya está cargada para ser revisada.

5. Ejemplo de las reglas anteriormente creadas en funcionamiento:

En este ejemplo se pueden notar tanto la regla de Facebook como la regla de Ping en funcionamiento.

Ejecución de snort

1. Nos dirigimos hacia el directorio de snort

2. Ejecutamos snort

En éste caso estamos utilizando los comandos –A, -c y –i con lo cuales estamos estableciendo las salidas, el archivo de configuración a utilizar y la interface a escanear.

3. Inicia el proceso de snort

4. Nuevamente se muestra la aplicación mostrando las reglas establecidas anteriormente