jueves, 8 de marzo de 2012

Instalación y configuración de Snort

2.- Snort

2.1.- Instalación

Para instalar snort en Ubuntu (versión 9.10), simplemente ejecutamos:
apt-get install snort
Durante la instalación se ejecutará un script de ayuda de configuración que entre otros nos pedirá los siguientes datos:
  • interfaz que escuchará snort (se pueden introducir varios separados por espacios), en mi caso: eth0.
  • Intervalo de red de la red local en formato CIDR: 192.168.0.0/24
    image

Al finalizar la instalación podremos simplemente comprobar la versión instalada ejecutando en una consola: snort -V

2.2.- Funcionamiento

Para comprobar el correcto funcionamiento del programa, realizo una captura en modo detallado especificando una interfaz distinta desde línea de comandos: snort -v -i eth1
image
También podríamos testear el fichero de configuración: snort -T -c /etc/snort/snort.conf
 

image

2.3.- Alertas con snort

Snort dispone de siete modos de alertas en la línea de ordenes, completo, rápido, socket, syslog, smb (WinPopup), consola y ninguno:
  • Fast: El modo Alerta Rápida nos devolverá información sobre: tiempo, mensaje de la alerta, clasificación, prioridad de la alerta, IP y puerto de origen y destino.
  • Full: El modo de Alerta Completa nos devolverá información sobre: tiempo, mensaje de la alerta, clasificación, prioridad de la alerta, IP y puerto de origen/destino e información completa de las cabeceras de los paquetes registrados.
  • Socket: Manda las alertas a través de un socket, para que las escuche otra aplicación. Está opción es para Linux/UNIX.
  • Console: Imprime las alarmas en pantalla.
  • None: Desactiva las alarmas.
  • SMB: Permite a Snort realizar llamadas al cliente de SMB (cliente de Samba, en Linux), y enviar mensajes de alerta a hosts Windows (WinPopUp). Para activar este modo de alerta, se debe compilar Snort con el conmutador de habilitar alertas SMB (enable -smbalerts). Evidentemente este modo es para sistemas Linux/UNIX. Para usar esta característica enviando un WinPopUp a un sistema Windows, añadiremos a la línea de comandos de snort: -M WORKSTATIONS.
  • Syslog: Envía las alarmas al syslog
  • Eventlog: Registra las alertas para visualizarse a través del visor de sucesos de un sistema windows. Esta opción se activará mediante -E y sólo para Win32.
Para nuestro caso, tras editar el fichero snort.conf -dónde indicaremos la dirección de la red local y externa y las reglas que deseamos cargar- ejecutamos:
snort -A full -i eth1 -c /etc/snort/snort.conf
tras ello en el fichero /var/log/snort/alert nos aparecerán los avisos de tráfico generado, indicándonos, entre otras cosas:
    • Identificador de la alerta: un número que nos servirá para buscar más información relativa a la alerta generada, muy útil para ello es la página www.snortid.com, que nos mostrará toda la información relativa al mismo, junto con las medidas correctoras.
    • Breve descripción en texto del tipo de alerta
    • Clasificación de la alerta si está disponible
    • la prioridad de la alerta
    • fecha y hora de la misma
    • ip y puertos de origen y de destino del mensaje
    • Protocolo del mensaje que ha generado la alerta
    • Time to Live
    • Type of Service
    • Identificador
    • Longitud
    • Además, si hemos empleado el modo de alerta full para cada protocolo empleado especificará datos relativos al mismo, por ejemplo, en el caso de tcp:
      • Bits activos (emplea la inicial para notificarlos): URG, ACK, PSH, RST, SYN, FIN
      • Número de secuencia
      • Número de acuse de recibo
      • Tamaño de la ventana
      • Longitud de la cabecera (el valor mínimo correspondiente a un paquete sin datos serían 20 bytes).
    • Finalmente si está disponible, nos ofrece un enlace con información adicional
Para realizar la prueba de funcionamiento lanzo una prueba de escaneo desde nessus sobre el equipo configurado con snort y podemos ver algunos ejemplos de resultado dónde se ve cómo ha detectado los distintos escaneos realizados con nessus:
Tráfico icmp:
image
En este caso vemos cómo detecta un intento de escaneo del sistema mediante nmap usando el protocolo icmp, con la finalidad de obtener información del sistema. También observamos, en este caso la información relativa al protocolo icmp:
    • Tipo de icmp: en este caso 8 que se corresponde con una solicitud de echo.
    • Campo code (código): 123 (0x7b) que es el código por defecto de una solicitud de echo normal
    • Identificador
    • Número de secuencia.
Podemos ver parte de la información relativa a este tráfico:
image
Tráfico UDP:
image
En este caso detecta un intento de descubrimiento de un sistema AFS, que es un sistema de distribución de ficheros en múltiples plataformas y que puede ser empleado -según el enlace referenciado- para, a partir de la versión del cliente detectado obtener información sobre el tipo de sistema que están atacando.
Podemos ver la información relativa a la misma que nos muestra la página www.snortid.com
image
Tráfico TCP:
image
Este caso se corresponde con lo explicado al principio del apartado de alertas. En este caso detecta un paquete erróneo ya que lleva activos los bits ACK y Reset, siendo el número de secuencia 0 y la ventana 0.
image

2.4.- Reglas con snort

Como ya vimos en la actividad dedicada a snort, la gestión de las reglas se simplifica con el uso de Snort, por ejemplo, para comprobar únicamente paquetes que tengan activado el indicador SYN creo un fichero misnort.rule que contenga unicamente la siguiente linea:
alert tcp any any -> any any (msg:"Sólo está activado SYN"; flags: S; sid:10001 ;)
y ejecutamos snort añdiendo previamente en el fichero /etc/snort/snort.conf la ruta hasta el fichero misnort.rule en el apartado dedicado a las reglas, al final del mismo.

1 comentario:

Anónimo dijo...

Hola, es muy útil la información expuesta. Me va ser de gran utilidad para un proyecto que tengo en mente.

Gracias!!!