LinuxParty
Qué es y para qué sirve
Snort es un Sistema de Detección de Intrusos (IDS) basado en red (IDSN). Dispone de un lenguaje de creación de reglas en el que se pueden definir los patrones que se utilizarán a hora de monitorizar el sistema. Además, ofrece una serie de reglas y filtros ya predefinidos que se pueden ajustar durante su instalación y configuración.
Se trata de un sistema basado en red que monitoriza todo un dominio de colisión y funciona detectando usos indebidos. Estos usos indebidos (o sospechosos) se reflejan en una base de datos formada por patrones de ataques. Dicha base de datos se puede descargar también desde la propia página web de Snort, donde además se pueden generar bases de patrones "a medida" de diferentes entornos (por ejemplo, ataques contra servidores web, intentos de negaciones de servicio, exploits...).
Este enlace contiene ejemplos y configuraciones más recientes que el de éste artículo. Entre y revíselo. |
En la página oficial de snort (http://www.snort.org) se puede comprobar que es uno de los IDS más usados y populares entre los sistemas de detección de intrusos, ya que cuenta con multitud de descargas diarias. Esta popularidad puede ser debida a que se puede adquirir mediante licencia GPL gratuita ya que es código abierto y funciona bajo plataformas Unix/Linux y Windows.
Es usual utilizarlo en combinación con herramientas del tipo Honeyput (tarro de miel) con el fín de monitorizar e interpretar ataques reales en un escenario controlado.
IDS
Un Sistema de Detección de Intrusos (IDS) es una herramienta de seguridad que trata de detectar y monitorizar cualquier intento de comprometer la seguridad en un sistema o una red. Se pueden definir previamente una serie dereglas que impliquen una actividad sospechosa en dicho sistema o red y generar una alerta en consecuencia.
Los IDS incrementan la seguridad de nuestro sistema o red y, aunque no están diseñados para detener un determinado ataque, si que se pueden configurar para responder activamente al mismo.
Tipos de IDS
Los IDS se pueden clasificar según el alcance de su protección:
- HIDS (Host IDS): Protege contra un Host (Servidor o PC). Posibilita la monitorización de gran cantidad de eventos para un posterior análisis detallado de las actividades sospechosas de manera que se determina con precisión cuan involucrados se encuentran los usuarios en una determinada acción. Todo ello ocurre en modo local, dentro del propio sistema.
- NIDS (Net IDS): Protege un sistema basado en red. Son sniffers del tráfico de red, ya que capturan los paquetes de red y los analizan, normalmente en tiempo real, según las reglas con las que ha sido configurado en busca de algún tipo de ataque.
- DIDS (Distributed IDS) Protege un sistema con una arquitectura basada en cliente-servidor formada por un conjunto de NIDS que actúan recopilando toda la información en una base de datos central. La ventaja de este sistema es que cada NID se puede configurar con las reglas específicas de control que se aplicarán a un determinado segmento de red.
También se pueden clasificar según el tipo de respuesta que generan:
- Pasivos: En este tipo de IDS, la herramienta recopila los datos que se generan como consecuencia de las reglas que se han configurado y genera las alertas pertinentes, notificando de posibles ataques al administrador de red, en su caso, pero no actúa en consecuencia para evitar el ataque por si mismo.
- Activos: Los IDS activos sí que responden a las actividades sospechosas que han sido configuradas, tratando de evitar el posible ataque, cerrando la conexión, reprogramando el cortafuegos, etc.
Como funciona
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
Como crear reglas con Snort
Los reglas en snort se dividen en dos secciones: la cabecera y las opciones.
La cabecera define el tipo de alerta que se va a generar, el protocolo y las direcciones IP. La cabecera se puede ver como metadatos que permiten saber bajo que situaciones se aplicarán las reglas. La sintaxis de la cabecera es la siguiente:
acción protocolo origen_IP puerto_origen operador_dirección destino_IP puerto_destino
- Acción: Permite saber qué hacer cuando un paquete cumple la regla. Hay tres opciones:
- Alert, usado en las reglas que supongo un intento crítico de vulnerar la seguridad del sistema. Esta acción genera una alerta en el mecanismo que ha sido de alertas configurado y un log del paquete.
- Log, almacena los datos del paquete sin generar alerta alguna.
- Pass, se utiliza para que snort se despreocupe de los paquetes que cumplan dicha regla. Normalmente se usa para eliminar falsas alarmas aunque puede ser peligroso.
- Protocolo: Sirve para identificar qué protocolo o conjunto de protocolos se les va a aplicar la regla. TCP, UDP, ICMP.
- Operador dirección: Indica en que dirección se aplicará la regla. Si es unidireccional se pondrá ->, en ambas direcciones <> y si se quiere aplicar en sentido contrario, <-.
- IP origen y destino: Se deben especificar la IP o rango de IPS a la que Snort aplicará la regla. Ejemplo para especificar un rango de direcciones: 192.168.1.1/15. También se podrán especificar varias direcciones separandolas por comas o especificándolas en una variable previamente definida. Si quieres que Snort vigile cualquier IP, se usará la palabra any.
- Puerto de origen y destino: Similar a la anterior. Para especificar un rago de puertos se usará el operador ':' 1:8080
Ejemplo de cabecera:
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS
Opciones: Esta parte es muy extensa, veamos algunos ejemplos:
- Generar el mensaje "ping" como alerta, ante la presencia de ICMP
alert icmp any any -> any any
(msg: "Ping";)
Palabras reservadas en las opciones:
- msg: texto de alerta que se genera.
- content: sirve para machear si el contenido especificado esta presente en el paquete y generar una alerta en su caso. Es sensible a mayúsculas. También se puede crear una lista de palabras que generan una misma alerta y especificarlas mediante la palabra reservada 'content_list: "nombre_fichero.txt"'
- priority: se usa para asignar la prioridad a la regla. (recibe un entero)
- flow: se utiliza para especificar la dirección del tráfico (from_client, to_server...), o el estado la sesion (established, stateless).
Pruebas reales
Hemos preparado dos máquinas de prueba dentro de un segmento de red en explotación en un entorno real.
En una de las máquinas (ip 10.31.245.28) hemos instalado nmap y en la otra (ip 10.31.244.24) hemos realizado la instalación de Snort.
En este caso, no hemos utilizado una base de datos para almacenar los logs, mostrándolos en modo consola. A continuación hemos realizado la instalación de WinPcap, tal como nos pide el propio programa.
Una vez preparado el entorno, hemos ejecutado Snort como sniffer en línea de comandos de la siguiente forma:
C:\Snortin>snort.exe -A full -v -i2
La utilidad de los parámetros empleados es la siguiente:
- -A full => Modo de alerta para que presente toda la información.
- -v => Verbose activado para mostrar por pantalla.
- -i2 => Escucha en el interface 2 (depende de las tarjetas de red del equipo)
Hemos realizado tres test de prueba. En los tres, hemos mantenido aproximadamente 10 segundos en funcionamiento el programa y hemos valorado a continuación los resultados.
El primer test es el de referencia, no hemos realizado ninguna manipulación artificial, escuchando simplemente el trafico habitual de la red.
Como curiosidad, hemos detectado un exagerado trafico de tramas ARP contra el Call Manager que se encuentra funcionado en la red para controlar la voz sobre Ip. Investigar este extremo lo dejamos para los administradores de la misma.
En el segundo test, lanzamos un nmap desde la segunda máquina de la prueba contra la que está ejecutando el Snort con el siguiente comando:
nmap.exe -T4 -F 10.31.244.24
Filtrando Snort los puertos configurados, como si de un cortafuegos se tratara.
Un segundo entorno de pruebas, han sido nuestras propias máquinas del máster.
Una vez instalado Snort (y por supuesto WinPcap), modificamos el fichero de configuración snort.conf añadiendole la siguiente regla orientada a detectar pings procedentes de máquinas Windows.
alert ICMP $EXTERNAL_NET any -> $HOME_NET any
(msg: "ICMP ping en Windows 2000."; dsize: 32;sid: 123123123123; itype: 8;
content: "abcdefghijklmnopqrstuvwabcdefghi"; depth: 32;)
Ejecutamos a continuaciónSnort en modo IDS en la máquina (156.35.98.129) con el siguiente comando:
C:\Snortin>Snort -l log -dev -h 156.35.98.129/24 -c ../etc/snort.conf -i4
En la otra máquina (156.35.98.134) lanzamos un ping con el siguiente comando:
C\:>ping -t 156.35.98.129
Valoración de los resultados
En la primera prueba de referencia, podemos observar que el programa consigue analizar la mayor parte del tráfico (80%), sin encontrar ningún paquete sospechoso.
En la segunda prueba, la actividad del nmap, consigue sobrecargar al Snort haciendo que solo sea capaz de analizar el 14% del trafico que detecta, también sin detectar ningún paquete sospechoso.
El la tercera prueba, se mantiene la sobrecarga de la segunda, pero ya el IDS detecta un elevado porcentaje de tramas sospechosas (13,98%) que descarta y elimina debido a su tamaño.
En la prueba realizada en modo IDS, apreciamos que se ha generado un fichero de log donde se puede ver la traza de las tramas que pretendíamos filtrar. Cada una de estas genera un registro similar al siguiente:
[**] [1:2864038835:0] ICMP ping en Windows 2000. [**]
[Priority: 0]
04/20-19:33:05.854505 0:40:F4:EB:50:95 -> 0:40:F4:EB:50:A3 type:0x800 len:0x4A
156.35.98.134 -> 156.35.98.129 ICMP TTL:128 TOS:0x0 ID:11061 IpLen:20 DgmLen:60
Type:8 Code:0 ID:1024 Seq:58629 ECHO
Herramientas similares
Según la lista publicada en insecure.org (http://sectools.org/ids.html) de los 5 principales IDS's, Snort aparece clasificada en primera posición, siendo los otros cuatro los siguientes:
- USSEC HIDS - Herramienta libre (GNU) basada en servidor (HIDS).
- Fragroute/Fragrouter - Permite interceptar, modificar y reescribir tráfico destinado a un host específico.
- BASE - No es un IDS, se trata de un analizador basado en PHP que busca y procesa una base de datos de eventos de seguridad generados por otras herramientas.
- Sguil - Tampoco se trata de un IDS propiamente dicho, sino de un Front/End para Snort.
Bibliografía
- Scott, C.; Wolfe, P.; Hayes, B. (2004) Snort for dummies / by Charlie Scott, Paul Wolfe, and Bert Hayes. Wiley Publishing, Inc., Indianapolis, Indiana, USA
- Alder, R.; Babbin, J.; Beale, J.; Doxatater, A.; Foster, J.C.; Kohlenberg, T.; Rash, M. (2004) Snort 2.1 Intrusion Detection, Second Edition. Syngress Publishing Inc., Rockland, MA, USA
- Archivald, N.; Ramirez, G.; Rathaus, N. (2005) Nessus, Snort, & Ethereal Power Tools: Customizing Open Source Security Applications. Syngress Publishing Inc., Rockland, MA, USA
- Koziol, J. (2003) Intrusion Detection with Snort. Sams, Indianapolis, Indiana, USA
- Rehman, R. (2003) Intrusion Detection with SNORT: Advanced IDS Techniques Using SNORT, Apache, MySQL, PHP, and ACID. Pearson Education Inc., Upper Saddle River, New Jersey, USA
Referencias
- Snort (http://www.snort.org) Página oficial del programa.
- WinPcap (http://www.winpcap.org/) Página oficial del programa.
- WikiSnort (http://www.wikilearning.com/introduccion_a_snort-wkccp-4735-7.htm) Un manual básico sobre los IDS y Snort.
- [ Algunas antiguas referencias han sido borradas, porque no están ya disponibles)
-
Seguridad
- Snort para Windows, detección de Intrusos y seguridad.
- Detección de Intrusiones con las herramientas: BASE y Snort.
- El Sistema de Detección de Intrusos: Snort. ( Windows y Linux )
- Configuración con Ejemplos de Snort para Windows, detección de intrusiones
- ¿El gobierno de EE. UU. ignoró la oportunidad de hacer que TikTok fuera más seguro?
- ¿Qué es SSH y cómo se utiliza? Los conceptos básicos de Secure Shell que necesitas saber
- Asegurar memcached del servidor, para evitar amplificar ataques DDoS
- Consejos de Seguridad para Pagos Móviles en España: Protege tus Transacciones con Estos Consejos Prácticos
- 22 herramientas de seguridad de servidores Linux de código abierto en 2023
- 8 hábitos que deben tomar los teletrabajadores altamente seguros
- 7 cosas que incluso los nuevos usuarios de Linux pueden hacer para proteger mejor el sistema operativo
- Recuperar contraseñas de archivos comprimidos en 3 pasos
- Administración: Glances - herramienta de monitoreo y supervisión para Linux
- Cómo monitorear sistemas Linux remotos con Glances
- Los 5 mejores VPN del momento
Comentarios
esta muy bien pero no me ha ayudado. Necesitaría en comando para determinar una alerta de intento acceso a Facebook
Pero gracias esta muy bien