Suricata IPS y Mikrotik

Hola a tod@s, hoy os traigo un post bastante interesante de como integrar un IDS en este caso Suricata con los Routers Mikrotik, esto es algo bastante interesante ya que por defecto Mikrotik no trae muchas facilidades para realizar esta integración.

Para comenzar con este post tenemos que explicar los componentes básicos que forman está herramienta.

Índice

  1. ¿Qué es un IDS/IPS?
  2. ¿Qué es Suricata IDS/IPS?
  3. ¿Qué es Mikrotik?
  4. Instalación Suricata IDS.
    1. Configuración de red.
    2. Actualización del sistema e instalación de dependencias.
    3. Instalación de Suricata 6.0.3.
    4. Configuración de Suricata.
  5. Integración Suricata con Mikrotik.
    1. Instalación de trafr para la interpretación del tráfico de nuestro Mikrotik.
    2. Reenvío de tráfico nuestro Mikrotik a Suricata.
    3. Ejecución de Suricata en modo IDS analizando el tráfico de Mikrotik.
    4. Deshabilitando un conjunto de reglas.
  6. Mikrotik y Suricata IPS.

1. ¿Qué es un IDS/IPS?

Un sistema de detección de intrusiones (o IDS de sus siglas en inglés Intrusion Detection System) es un programa de detección de accesos no autorizados a un computador o a una red.


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, las anomalías que pueden ser indicio de la presencia de ataques y falsas alarmas.


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.


Existen dos tipos de sistemas de detección de intrusos:


HIDS (HostIDS): el principio de funcionamiento de un HIDS, depende del éxito de los intrusos, que generalmente dejaran rastros de sus actividades en el equipo atacado, cuando intentan adueñarse del mismo, con propósito de llevar a cabo otras actividades. El HIDS intenta detectar tales modificaciones en el equipo afectado, y hacer un reporte de sus conclusiones.


NIDS (NetworkIDS): un IDS basado en red, detectando ataques a todo el segmento de la red. Su interfaz debe funcionar en modo promiscuo capturando así todo el tráfico de la red.

2. ¿Qué es Suricata IDS/IPS?

Suricata es un motor de detección de amenazas de red libre rápido y sólido, de código libre y abierto.


El motor Suricata es capaz de detectar intrusiones en tiempo real (IDS), también es capaz de prevenir intrusiones en línea (IPS), monitoreo de seguridad de red (NSM) y procesamiento de pcap sin conexión.


Suricata inspecciona el tráfico de la red utilizando reglas potentes y extensas y lenguaje de firma, y tiene un poderoso soporte de secuencias de comandos Lua para la detección de amenazas complejas.


Con formatos de entrada y salida estándar como las integraciones YAML y JSON. Gracias a estas salidas y entradas podemos encontrar herramientas en internet que nos permiten construir un panel de visualización con facilidad como por ejempo, los SIEM existentes, Splunk, Logstash / Elasticsearch, Kibana y otras bases de datos.


El desarrollo impulsado por la comunidad Suricata avanza a un ritmo rápido y se centra en la seguridad, la usabilidad y la eficiencia.


El proyecto y el código de Suricata es propiedad y está respaldado por Open Information Security Foundation ( OISF ), una fundación sin fines de lucro comprometida con asegurar el desarrollo de Suricata y el éxito sostenido como un proyecto de código abierto.

3. ¿Qué es Mikrotik?

Mikrotīkls SIA, conocida internacionalmente como MikroTik, es una compañía letona proveedora de tecnología disruptiva de hardware y software para la creación de redes. Mikrotik RouterOS es un software que funciona como un Sistema Operativo para convertir un PC o una placa Mikrotik RouterBOARD en un router dedicado.

MikroTik se dedica principalmente a la venta de productos de hardware de red como routers denominados routerboards y switches también conocidos por el software que lo integra, denominado RouterOS y SwOS. La compañía fue fundada en el 1995, aprovechando el emergente mercado de la tecnología inalámbrica. En 2007, contaba con más de 70 empleados. Actualmente probablemente hayan superado este número con creces.

Una vez explicadas las tecnologías y el hardware donde vamos a trabajar e implementar Suricata IPS, procedemos a la explicación de la instalación y el entorno donde se despliega esta tecnología.

4. Instalación Suricata IDS

En esta ocasión vamos a instalar Suricata IPS sobre Debían 10, posteriormente de haber instalado Suricata IPS en nuestro servidor, procederemos a enlazarlo con nuestro rotúrela Mikrotik. A continuación comenzamos con el primer paso, que sería iniciar sesión con el usuario “root”:

4.1 Configuración de red

Tras iniciar el siguiente paso que deberemos realizar será configurar la tarjeta de red, asignando una IP fija, esto lo haremos accediendo al archivo de configuración “/etc/network/interfaces”:

nano /etc/network/interfaces

Otro punto bastante importante dentro de la configuración de red, es configurar una DNS adecuados, para una correcta resolución de los repositorios a la hora de instalar los paquetes necesarios, esto se hará modificando el fichero de configuración “/etc/resolv.conf”:

nano /etc/resolv.conf

A continuación, mediante el gestor de servicios systemctl, reiniciar el servicio de red para aplicar las configuraciones realizadas:

Comprobamos que realmente se han establecido las configuraciones con el comando “ip”:

ip addr

4.2 Actualización del sistema e instalación de dependencias.

El primer paso que vamos a realizar es la actualización de repositorios e instalación de nuevas actualizaciones:

apt -y update && apt -y upgrade

Instalamos las dependencias necesarias para poder instalar Suricata:

apt -y install wget curl make libpcre3 libpcre3-dbg libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config cargo libnetfilter-queue-dev libcap-ng0 libnss3-dev libgeoip-dev liblua5.1-dev libhiredis-dev libevent-dev

Instalamos los paquetes necesarios para dar soporte a Rust, eliminamos rust de nuestro sistema para instalar la versión manualmente:

apt remove —purgue rustí -y

Descargamos el instalador de Rust y lo ejecutamos:

curl -sSf https://sh.rustup.es | sh

Especificamos en el asistente la opción por defecto, que es realizar la instalación:

Y cargamos la ruta de Rust al sistema:

4.3 Instalación de Suricata 6.0.3.

A continuación, lo que vamos a realizar en primera instancia es la descarga del paquete de instalación de Suricata desde el repositorio oficial:

wget https://www.openinfosecfoundation.org/download/suricata-6.0.3.tar.gz

Descomprimimos el paquete anteriormente descargado:

tar xvf suricata-6.0.3.tar.gz

Construimos el paquete de instalación de Suricata con las capacidades que especificamos a continuación:

./configure –enable-nfqueue –prefix=/usr –sysconfdir=/etc –localstatedir=/var –enable-rust

Finalmente, ejecutamos la construcción de la instalación:

make

Instalamos Suricata:

make install

Instalamos la configuración de Suricata:

make install-conf

Actualizamos la lista de librerías para que integre las de Suricata:

/sbin/ldconfig

Lo siguiente que vamos hacer es instalar las herramientas y paquetes para poder actualizar las reglas de Suricata, para empezar instalamos la herramienta pip de Python:

apt install python-pip

Instalamos el paquete suricata-python con pip:

pip install —upgrade suricata-update

Lanzamos el comando suricata-update para actualizar las reglas actuales de suricata:

Finalmente, veremos algo parecido a la siguiente captura de pantalla donde la ejecución del comando nos mostrará información detallada de las reglas de Suricata:

4.4 Configuración de Suricata.

A continuación, vamos a configurar Suricata, esto se hará a través del fichero de configuración “suricata.yaml”, donde haremos en primera instancia, añadir nuestras redes privadas para que las tenga en cuenta a la hora de las excepciones:

nano /etc/suricata/suricata.yaml

A continuación, en el mismo fichero de configuración, vamos a establecer el fichero por defecto donde se almacenarán las reglas:

También vamos a establecer un fichero de configuración donde irán las reglas que queramos deshabilitar, esto será una parte importante a la hora de implementar un IPS en nuestra red, ya que en varias ocasiones el IPS bloqueará peticiones legítimas, lo que se suele conocer como falsos positivos, dando como daño colateral, el bloqueo de una petición legítima:

Este fichero de configuración no está creado por defecto, entonces lo que vamos hacer será crearlo:

touch /etc/suricata/disable.conf

Finalmente, podemos comprobar que nuestra instalación de Suricata, funciona correctamente, esto lo vamos a realizar lanzando el siguiente comando, donde haremos referencia a la configuración previamente establecida:

/usr/bin/suricata -c /etc/suricata/suricata.yaml -i ens18 —pidfile /var/run/suricata.pid

Comprobamos que realmente este comprobando los paquetes de la red y mostrando los resultados en los logs, en este caso el log que vamos a revisar, para saber si realmente hay actividad es “eve.json”, donde se registra todo el tráfico analizado de Suricata en formato JSON:

tail -f /var/log/suricata/eve.json

5. Integración Suricata con Mikrotik.

En este apartado lo que vamos a realizar principalmente es acomodar el sistema operativo para que sea capaz de recolectar e interpretar el tráfico proporcionado desde nuestro router Mikrotik y finalmente que Suricata sea capaz de analizar este tráfico para compararlo con su base de datos de firmas y así finalmente identificar todo aquel tráfico que supuestamente sea malicioso.

5.1 Instalación de trafr para la interpretación del tráfico de nuestro Mikrotik.

En primera instancia, lo que vamos hacer es instalar los paquetes necesarios para poder ejecutar el software que será capaz de hacer que nuestra máquina pueda interpretar el tráfico de nuestro Mikrotik:

dpkg –add-architecture i386
apt -y update
apt -y install libc6:i386

Una vez hemos ejecutado e instalado estos paquetes, lo que hemos hecho es adaptar nuestro servidor para poder ejecutar librerías de 32 bits, con esto finalmente podremos ejecutar el software de Mikrotik. Seguidamente, lo que vamos a realizar, será la descarga de dicho software:

wget http://www.mikrotik.com/download/trafr

Descomprimimos el paquete descargado:

tar zxf trafr.tgz

Movemos el ejecutable al directorio local de los binarios, para que no tengamos que especificar la ruta completa del mismo a la hora de invocar el comando:

mv trafr /usr/local/bin/

Y finalmente, comprobamos que funcione el comando:

5.2 Reenvío de tráfico nuestro Mikrotik a Suricata.

Nos vamos a dirigir a través de Winbox al apartado de “Tools”:

Vamos a la herramienta “Packet Sniffer”:

Y configuramos el asistente para que pueda reenviar el tráfico a nuestro servidor con Suricata instalado:

Establecemos que el tráfico de la interfaz que deseamos reenviar, en mi caso sería todo el tráfico de la tarjeta de red WAN:

Y finalmente, iniciamos el reenvío del tráfico:

Ahora, para comprobar que realmente llega el tráfico a nuestro Suricata, vamos a utilizar la herramienta tcpdump y trafr para ver el tráfico que llega a nuestro equipo desde Mikrotik:

trafr -s | tcpdump -r – -n

Si está todo correcto, deberemos ver algo parecido a lo siguiente, donde veremos varias IP’s según el tráfico que tengamos:

5.3 Ejecución de Suricata en modo IDS analizando el tráfico de Mikrotik.

A continuación, lo que vamos hacer es lanzar Suricata en modo IDS analizando el tráfico de nuestro Mikrotik a través del siguiente comando:

/usr/local/bin/trafr -s | /usr/bin/suricata -c /etc/suricata/suricata.yaml —pidfile /var/run/suricata.pid -r /del/stdin

Si todo está funcionando correctamente, si visualizamos el log rápido de Suricata, veremos las alertas que genera el tráfico de nuestro Router Mikrotik:

5.4 Deshabilitando un conjunto de reglas.

En caso de necesitar deshabilitar un conjunto de reglas, se haría añadiendo por ejemplo una categoría entera, cabe destacar que hay diferentes métodos de deshabilitar una regla de Suricata, desde nivel individual hasta el nivel de categoría:

Una vez hemos añadido la categoría al fichero de configuración “disable.conf” tendremos que actualizar las reglas con:

suricata-update

Y deberíamos ver un resumen de las reglas que han sido deshabilitadas de nuestro Suricata:

Una vez realizado esto, tendremos un Suricata IDS completamente funcional con nuestro router Mikrotik pero lo interesante está en que sea IPS, es decir que no solo alerte si no que bloquee el tráfico malicioso de manera automática sin que nosotros tengamos que intervenir.

6. Mikrotik y Suricata IPS.

Para realizar la integración de estas dos tecnologías, donde de por sí Mikrotik no da una facilidad de integración sencilla con un IPS/IDS, he realizado mi propio script el cual permite convertir esta integración en un IPS completamente funcional, para comenzar está integración, se deberá realizar el siguiente proceso, comenzando por la creación de un usuario nuevo para poder conectarnos por SSH al Mikrotik a través del script, esto lo haremos accediendo a “System” – “Users” y añadir uno nuevo con los permisos “Write”.

Otro requisito importante, será la comprobación de que nuestro Mikrotik tiene habilitado el servicio de SSH, donde habrá que ir a “IP” – “Services” y ver que está habilitado:

El script que he creado, tiene la capacidad de mandar mensajes a un grupo de Telegram con un bot, cuando se bloquea una IP en nuestro Mikrotik, en la configuración del script, se tendrá que establecer la URL del chat+bot de Telegram, directorio del fichero log “eve.json” (este se especifica debido a que es necesario para el script), IP de nuestro Mikrotik, usuario y contraseña.

Para más información sobre el script o el código fuente del mismo, por favor ponte en contacto conmigo: CONTACTO

Para finalizar, ejecutamos tanto Suricata en modo IDS y el script, el cual hará que tengamos una integración con Suricata + Mikrotik y sea capaz de bloquear todas aquellas IPS que sean maliciosas o que hagan saltar alguna alerta de Suricata:

En caso de una alerta, recibiremos un mensaje en nuestro Telegram como el siguiente:

Y en nuestro Mikrotik en la “Address List” que se crea para para almacenar las IP’s se verá algo parecido a esto:

Con esto finalizamos la entrada de hoy, cabe destacar que la integración de Mikrotik con Suricata ha sido completamente detallada, en caso de querer integrar Mikrotik con Suricata y hacer que sea modo IPS, hará falta el script, en ese caso, no olvides ponerte en contacto conmigo para poder proporcionarte información con más detalle.

Espero que os haya gustado este tipo de post y nos vemos en la siguiente entrada. Un saludo, David.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.