monster    Nautopia    forum

 

ANILLO     CONTACTAR    CULTURALIA     DOWNLOADS    KIOSKO    FORO         HOME

 

Translate 

 
 

contacto de Alfon

 

TALLER de Sistemas de detección de intrusiones.

SNORT

 

CAPÍTULO I:

  • BREVE DESCRIPCIÓN
  • TIPOS DE IDS
  • ARQUITECTURA
  • DÓNDE COLOCAR UN IDS
  • INTRODUCCIÓN A SNORT

 

BREVE DESCRIPCIÓN

de un sistema de Detección de Intrusiones (IDS)

  • Un IDS o Sistema de Detección de Intrusiones es una herramienta de seguridad que intenta detectar o monitorizar los eventos ocurridos en un determinado sistema informático o red informática en busca de intentos de comprometer la seguridad de dicho sistema.
  • Los IDS buscan patrones previamente definidos que impliquen cualquier tipo de actividad sospechosa o maliciosa sobre nuestra red o host.
  • Los IDS aportan a nuestra seguridad una capacidad de prevención y de alerta anticipada ante cualquier actividad sospechosa. No están diseñados para detener un ataque, aunque sí pueden generar ciertos tipos de respuesta ante éstos.
  • Los IDS: aumentan la seguridad de nuestro sistema, vigilan el tráfico de nuestra red, examinan los paquetes analizándolos en busca de datos sospechosos y detectan las primeras fases de cualquier ataque como pueden ser el análisis de nuestra red, barrido de puertos, etc.

 

 

TIPOS DE IDS

  Según sus características

1. HIDS (Host IDS)

Protege contra un único Servidor, PC o host. Monitorizan gran cantidad de eventos, analizando actividades con una gran precisión, determinando de esta manera qué procesos y usuarios se involucran en una determinada acción. Recaban información del sistema como ficheros, logs, recursos, etc, para su posterior análisis en busca de posibles incidencias. Todo ello en modo local, dentro del propio sistema. Fueron los primeros IDS en desarrollar por la industria de la seguridad informática.


2. NIDS (Net IDS)

Protege un sistema basado en red. Actúan sobre una red capturando y analizando paquetes de red, es decir, son sniffers del tráfico de red. Luego analizan los paquetes capturados, buscando patrones que supongan algún tipo de ataque.

Bien ubicados, pueden analizar grandes redes y su impacto en el tráfico suele ser pequeño. Actúan mediante la utilización de un dispositivo de red configurado en modo promiscuo (analizan ,"ven" todos los paquetes que circulan por un segmento de red aunque estos nos vayan dirigidos a un determinado equipo). Analizan el trafico de red, normalmente, en tiempo real. No sólo trabajan a nivel TCP/IP, también lo pueden hacer a nivel de aplicación.

Las capas del TCP/IP y las del modelo OSI, y su correspondencia:

IMAGEN        IMAGEN

*A este tipo de IDS pertenece Snort.


3. DNIDS

Este tipo de IDS, más que proteger, monitoriza la actividad entre varias redes. Tiene una visión global.



  Por el tipo de respuesta

  • Pasivos

Son aquellos IDS que notifican a la autoridad competente o administrador de la red mediante el sistema que sea, alerta, etc. Pero no actúa sobre el ataque o atacante.

  • Activos

Generan algún tipo de respuesta sobre el sistema atacante o fuente de ataque como cerrar la conexión o enviar algún tipo de respuesta predefinida en nuestra configuración.

      Snort puede funcionar de las dos maneras.

 



ARQUITECTURA DE UN IDS

Normalmente la arquitectura de un IDS, a grandes rasgos, está formada:
 

  1. La fuente de recogida de datos. Estas fuentes pueen ser un log, dispositivo de red, o como en el caso de los IDS basados en host, el propio sistema.
     
  2. Reglas que contienen los datos y patrones para detectar anomalías de seguridad en el sistema.
     
  3. Filtros que comparan los datos snifados de la red o de logs con los patrones almacenados en las reglas.
     
  4. Detectores de eventos anormales en el tráfico de red.
     
  5. Dispositivo generador de informes y alarmas. En algunos casos con la sofisticación suficiente como para enviar alertas via mail, o SMS.

 

Esto es a modo general. Ya veremos que cada IDS implementa la arquitectura de manera diferente.

Snort, por ejemplo, tiene una arquitectura dividida en tres subsistemas:

  1. Decodificador de paquetes
     
  2. Motor de detección
     
  3. Loggins y alertas
     

Evidentemente, son parte de la arquitectura global de un IDS que hemos comentado líneas más arriba.

 

 

DÓNDE COLOCAR EL IDS

Una actitud paranoica por nuestra parte nos podría llevar a instalar un IDS en cada host ó en cada tramo de red. Esto último sería un tanto lógico cuando se trata de grandes redes, no es nuestro caso ahora. Lo lógico sería instalar el IDS en un dispositivo por donde pase todo el tráfico de red que nos interese.

 

  Dificultades

  • Un problema de los IDS es cuando queremos implementarlos en redes commutadas ya que no hay segmento de red por donde pase todo el tráfico.
  • Otro problema para un IDS son las redes con velocidades de tráfico muy altas en las cuales es difícil procesar todos los paquetes.

 

  Posición de IDS

IMAGEN

  • Si colocamos el IDS antes del cortafuegos capturaremos todo el tráfico de entrada y salida de nuestra red. La posibilidad de falsas alarmas es grande.
  • La colocación detrás del cortafuegos monitorizará todo el tráfico que no sea detectado y parado por el firewall o cortafuegos, por lo que será considerado como malicioso en un alto porcentaje de los casos . La posibilidad de falsas alarmas muy inferior.
  • Algunos administradores de sistemas colocan dos IDS, uno delante y otro detrás del cortafuegos para obtener información exacta de los tipos de ataques que recibe nuestra red ya que si el cortafuegos está bien configurado puede parar o filtras muchos ataques.

En ambientes domésticos, que es el propósito de este taller sobre IDS y Snort, podemos colocar el IDS en la misma máquina que el cortafuegos. En este caso actúan en paralelo, es decir, el firewall detecta los paquetes y el IDS los analizaría.

 

 

INTRODUCCION A SNORT

Snort es un IDS o Sistema de detección de intrusiones basado en red (NIDS). Implementa un motor de detección de ataques y barrido de puertos que permite registrar, alertar y responder ante cualquier anomalía previamente definida como patrones que corresponden a ataques, barridos, intentos aprovechar alguna vulnerabilidad, análisis de protocolos, etc conocidos. Todo esto en tiempo real.

Snort (www.snort.org) está disponible bajo licencia GPL, gratuito y funciona bajo plataformas Windows y UNIX/Linux. Es uno de los más usados y 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.

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, escaneos 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).

En este taller daremos una importancia mayor a su funcionamiento como NIDS y, sobre todo, a la creación personalizada de reglas e interpretación de las alertas.

La colocación de Snort en nuestra red puede realizarse según el tráfico quieren vigilar: paquetes que entran, paquetes salientes, dentro del firewall, fuera del firewall... y en realidad prácticamente donde queramos.

Una característica muy importante e implementada desde hace pocas versiones es FlexResp. Permite, dada una conexión que emita tráfico malicioso, darla de baja, hacerle un DROP mediante el envío de un paquete con el flag RST activa, con lo cual cumpliría funciones de firewall, cortando las conexiones que cumplan ciertas reglas predefinidas. No sólo corta la conexiones ya que puede realizar otras muchas acciones. Veremos más adelante su funcionamiento y ejemplos.

 

  Formato de la cabecera (header) del TCP

Cabecera paquete TCP

 

  • Puerto origen (16 bits). Puerto de la máquina origen. Al igual que el puerto destino es necesario para identificar la conexión actual.
     
  • Puerto destino (16 bits). Puerto de la máquina destino.
     
  • Número de secuencia (32 bits). Indica el número de secuencia del primer byte que trasporta el segmento.
     
  • Número de acuse de recibo (32 bits). Indica el número de secuencia del siguiente byte que se espera recibir. Con este campo se indica al otro extremo de la conexión que los bytes anteriores se han recibido correctamente.
     
  • Posición de los datos (4 bits). Longitud de la cabecera medida en múltiplos de 32 bits (4 bytes). El valor mínimo de este campo es 5, que corresponde a un segmento sin datos (20 bytes).
     
  • Reservado (6 bits). Bits reservados para un posible uso futuro.
     
  • Bits de código o indicadores (6 bits). Los bits de código determinan el propósito y contenido del segmento. A continuación se explica el significado de cada uno de estos bits (mostrados de izquierda a derecha) si está a 1:
URG. El campo Puntero de urgencia contiene información válida.

ACK. El campo Número de acuse de recibo contiene información válida, es decir, el segmento actual lleva un ACK. Observemos que un mismo segmento puede transportar los datos de un sentido y las confirmaciones del otro sentido de la comunicación.

PSH. La aplicación ha solicitado una operación push (enviar los datos existentes en la memoria temporal sin esperar a completar el segmento).

RST. Interrupción de la conexión actual.

SYN. Sincronización de los números de secuencia. Se utiliza al crear una conexión para indicar al otro extremo cual va a ser el primer número de secuencia con el que va a comenzar a transmitir (veremos que no tiene porqué ser el cero).

FIN. Indica al otro extremo que la aplicación ya no tiene más datos para enviar. Se utiliza para solicitar el cierre de la conexión actual.
  • Ventana (16 bits). Número de bytes que el emisor del segmento está dispuesto a aceptar por parte del
    destino.
     
  • Suma de verificación (24 bits). Suma de comprobación de errores del segmento actual. Para su cálculo se utiliza una pseudo-cabecera que también incluye las direcciones IP origen y destino.
     
  • Puntero de urgencia (8 bits). Se utiliza cuando se están enviando datos urgentes que tienen preferencia sobre todos los demás e indica el siguiente byte del campo Datos que sigue a los datos urgentes. Esto le permite al destino identificar donde terminan los datos urgentes. Nótese que un mismo segmento puede contener tanto datos urgentes (al principio) como normales (después de los urgentes).
     
  • Opciones (variable). Si está presente únicamente se define una opción: el tamaño máximo de segmento que será aceptado.
     
  • Relleno. Se utiliza para que la longitud de la cabecera sea múltiplo de 32 bits.
     
  • Datos. Información que envía la aplicación.
     

También se puede usar junto a MySQL o Microsoft SQL, ejecutando consultas SQL a una base de datos. Guarda logs también en formato XML.

 

No se limita sólo al análisis de los protocolos típicos como ftp, smtp, http, pop3, telnet ... , además analiza otros: ethernet, arp, decnet, lat, rarp ...

IMAGEN
 

Recompone tráfico fragmentado, analiza tráfico tipo BackOrifice (independientemente del puerto usado), es capaz de "ver" datos del tipo decode o unicode, traceroute, pings.....

Puede actuar como antivirus, aunque esta opción no es muy recomendable. Es mejor dejar esta tarea a aplicaciones preparadas para ello.

Snort como sniffer se basa en las librerías de captura de paquetes libcap que provee a snort de la capacidad de sniffer de paquetes. En windows la librería sería WinPCAP http://winpcap.polito.it/ .

Snort puede, para su fácil configuración y gestión, usarse mediante una interfaz gráfica. Aquí hablaremos de IDScenter.

IMAGEN

 

IDSCenter, ahora en su versión 1.09 Beta 2, es una interface gráfica que nos sirve para configurar todas las características de Snort como las alertas, tests, reglas, variables, funcionamiento junto a MySQL o BlackIce Defender, rotación de logs, notificaciones via mail o sonido, plugins, preprocesadores, FlexResp ...

 

 

  EJEMPLO de funcionamiento básico en los tres modos:

  • Usando Snort en modo IDS:

Snort -l log -dev -h 192.168.4.0/24 -c snort.conf

(Revisemos el contenido de la carpeta log)

  • Usando Snort en modo sniffer:

Snort -dev

  • Usando Snort en modo Packet Logger (registro de paquetes):

Snort -dev -l log

(Revisemos el contenido de la carpeta log)

 

       EXPLICACIÓN DE LAS OPCIONES UTILIZADAS:

-l log lo usamos para volcar la información la carpeta log que se supone está ubicada en C:\Snort\log. En esta carpeta se estructurarán una serie de directorios con el nombre de la dirección IP del host que genere el tráfico o intrusión. También creará en esta carpeta un archivo (alert.ids) donde registrará las alarmas que genere así como un archivo de registro de escaneado de puertos (si se da el caso), etc.

Contenido de un alert.ids:

IMAGEN

 

-dev imprime en pantalla la dirección IP y cabeceras TCP/UDP/ICMP, los datos que pasan por la interface de red con información bastante detallada.

-h 192.168.4.0/24 es el home network (nuestra red).

-c snort.conf indicamos que SNORT use el fichero de configuración de Snort con la lista de archivos de reglas y otros parámetros. Esta opción tiene una variante al cambiarse el archivo snort.conf por uno de reglas o rules personalizada.

Snort puede obtener los datos desde una interface de red -i eth0 o desde un archivo -r nombarchivo. Normalmente no hará fata indicarle la interface de red.

 

-Taller IDS-

 

 

 

 
 

NAUTOPIA © 2002. Reservados todos los derechos.