Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Instalar y configurar IDS/IPS Suricata en una RaspBerry Pi


En esta entrada del blog veremos los pasos que debemos seguir para dejar instalado Suricata en Debian pero usando una RaspBerry Pi. Suricata (tipo Snort) es un motor de red de alto rendimiento, como IDS (Intrusion Detection System), IPS (Intrusion Prevention System) y usado como sistema de monitorización de red, y por supuesto, ¡Open Source!. Hacía ya mucho tiempo que estaba esperando hablar de Suricata y qué mejor manera de hacerlo que instalando y configurando las reglas.



Este artículo detalla la instalación y configuración de IDS Suricata en una Raspberry Pi para monitorear una red local.

Detectar actividad anormal en su red local con el sistema de detección de intrusiones Suricata (IDS) en Raspberry Pi

Presentación

Suricata es un IDS (sistema de detección de intrusiones) de red basado en detecciones de firmas. Analiza el tráfico de la red para detectar actividades anormales e intentos de intrusión.

Una Raspberry Pi es un anfitrión perfecto para Suricata como parte de una pequeña red de área local.

Para monitorear todo el equipo en su red, el IDS debe poder analizar todo el tráfico en él. Esto es posible gracias al uso de un conmutador manejable que soporta la función de “duplicación de puertos” que permite duplicar el tráfico de todos los dispositivos y enviarlo al IDS.

Para poder monitorear también el tráfico de dispositivos inalámbricos, es necesario utilizar un pequeño enrutador WiFi. Este enrutador debe estar conectado a un puerto de conmutador para que el tráfico Wifi también se duplique en el IDS mediante la función de "duplicación de puertos".

Material necesario

  • Raspberry Pi 3B o Pi 4 - Modelo B
  • Switch administrado con puerto de duplicación Zyxel GS1200
  • Enrutador Wifi TP-LINK TL-WR902AC

Arquitectura

El IDS debe poder analizar las tramas provenientes de todos los dispositivos de su red.

Para hacer esto, todo su equipo debe estar conectado al conmutador que usa la función de duplicación de puertos para transmitir todas las tramas recibidas desde el "puerto duplicado" al "puerto de análisis". La Raspberry Pi en la que está instalado Suricata IDS, por supuesto, está conectada a este "puerto de análisis".

Si también desea monitorear su equipo conectado a través de la red Wifi, no tendrá que conectarlos a la red Wifi de la caja de Internet, sino que use un pequeño enrutador Wifi también conectado al interruptor en un "puerto espejo".

Mi red local es 192.168.1.0/24 y todos mis equipos, incluidos los conectados a través del punto de acceso Wifi, pertenecen a esta red local.


Instalación de Suricata en su Raspberry Pi


Instalar Raspberry Pi OS o Raspberry Pi OS Lite en su Raspberry Pi (Modelo 3B o 4) disponible en el sitio https://www.raspberrypi.org/software/

Instalar el IDS de código abierto de Suricata


Preparar la instalación instalando las dependencias necesarias:

sudo apt install libpcre3 libpcre3-dbg libpcre3-dev build-essential libpcap-dev libyaml-0-2 libyaml-dev pkg-config zlib1g zlib1g-dev make libmagic-dev libjansson-dev rustc cargo python-yaml python3-yaml liblua5.1-dev


Descarga las fuentes de Suricata:

wget https://www.openinfosecfoundation.org/download/suricata-6.0.1.tar.gz
Descomprime las fuentes:

tar -xvf suricata-6.0.1.tar.gz

Vaya a la carpeta Suricata:

cd $HOME/suricata-6.0.1/

Configure la instalación del software:

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

Compilar suricata:

make

Instalar suricata:

sudo make install

Vaya a la carpeta de actualización de suricata:

cd $HOME/suricata-6.0.1/suricata-update/

Compilar suricata-update:

sudo python setup.py build

Instalar suricata-update:

sudo python setup.py install

Vaya a la carpeta Suricata:

cd $HOME/suricata-6.0.1/

Finalice la instalación de suricata incluyendo sus reglas:

sudo make install-full

Actualiza las reglas de suricata:

sudo suricata-update

Configurar Suricata


Configura suricata editando el archivo suricata.yaml:

sudo vi /etc/suricata/suricata.yaml


Modifique la variable HOME_NET para que contenga su red local, por ejemplo:

HOME_NET: "[192.168.0.0/24]"

Iniciar Suricata


Iniciar suricata con el siguiente comando:

sudo suricata -c /etc/suricata/suricata.yaml -i eth0 -S /var/lib/suricata/rules/suricata.rules
Dónde:

  • -c <ruta>: archivo de configuración a usar
  • -i <interfaz>: interfaz Ethernet para monitorear
  • -S <ruta>: archivo que contiene las reglas a utilizar

Probar si Suricata funciona

Para probar el funcionamiento correcto de suricata, es útil agregar una regla que muestre una advertencia cada vez que se reciba un eco ICMP (ping). Esta regla debe eliminarse después de esta prueba.

Agregue la siguiente regla en /var/lib/suricata/rules/suricata.rules

alert icmp any any -&gt; any any (msg: "ICMP Packet found";)

Mostrar el contenido del archivo de registro:

sudo tail -f /var/log/suricata/fast.log

Debería ver la siguiente alerta en el archivo de registro:

01/23/2021-21:22:26.898963 [**] [1:0:0] ICMP Packet found [**] [Classification: (null)] [Priority: 3] {ICMP} 192.168.1.16:8 -&gt; 192.168.1.25:0

Aquí hay algunas otras formas de probar que Suricata está funcionando:

    Vaya a este sitio con un navegador desde un dispositivo en su red local:

http://testmyids.com/

Debe producir la siguiente alerta:

02/03/2021-16:13:42.020071 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 31.3.245.133:80 -&gt; 192.168.1.10:46196

    Ejecute el siguiente comando desde un shell de Linux:

dig a 3wzn5p2yiumh7akj.onion

Debe producir la siguiente alerta:

02/03/2021-16:19:40.496621 [**] [1:2022048:3] ET MALWARE Cryptowall .onion Proxy Domain [**] [Classification: A Network Trojan was detected] [Priority: 1] {UDP} 192.168.1.10:37423 -&gt; 192.168.1.1:53

Previamente hemos instalado Oinkmaster, lo utilizaremos para gestionar y mantener actualizadas las reglas. En su fichero de configuración (/etc/oinkmaster.conf) añadimos la siguiente URL:

url = http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz

 

Usar Suricata en modo de servicio


Para poder utilizar Suricata como servicio, debe crear el archivo "/etc/systemd/system/suricata.service":

sudo vi /etc/systemd/system/suricata.service

Con el siguiente contenido:

# Sample Suricata systemd unit file.
[Unit]
Description=Suricata Intrusion Detection Service
After=network.target syslog.target
[Service]
ExecStartPre=/bin/rm -f @e_rundir@suricata.pid
ExecStart=/usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 -S /var/lib/suricata/rules/suricata.rules --pidfile @e_rundir@suricata.pid
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target

Y luego activa este nuevo servicio con el comando:

sudo systemctl enable suricata.service

Ahora podemos usar Suricata como servicio e iniciarlo con el comando:
sudo systemctl start suricata.service

Para detenerlo:
sudo systemctl stop suricata.service

Para relanzarlo:

sudo systemctl restart suricata.service

Para comprobar el estado del servicio:

sudo systemctl status suricata.service

El servicio ahora se iniciará automáticamente cuando se inicie Raspberry Pi.

Evitar la pérdida de paquetes

Suricata puede requerir algunas optimizaciones para funcionar de manera óptima en su red. Por supuesto, esto depende de la cantidad de dispositivos a monitorear y del tráfico
generado.

Compruebe que la variable capture.kernel_drops en el archivo /var/log/suricata/stats.log no sea demasiado alta. Idealmente, debería permanecer en 0 y, por lo tanto, no aparecer en la lista de contadores.

5/9/2024 -- 11:27:52 - <Notice> - Stats for 'eth0':  pkts: 2142456, drop: 45765 (2.14%), invalid chksum: 0


En el caso anterior, se perdieron 21.617 de los 2.310.188 paquetes, o aproximadamente el 1%. Esto es
aceptable, pero esta pérdida puede evitarse.

Por ejemplo, puede aumentar el valor de la variable " ring-size " en el archivo de configuración " /etc/suricata/suricata.yaml ". Atención, por supuesto, debe eliminar el "#" delante de la variable en el archivo suricata.yaml . Este cambio suele ser suficiente para evitar la pérdida de paquetes.

Modifique el valor del tamaño del anillo cambiando la siguiente línea en el archivo /etc/suricata/suricata.yaml :
#ring-size: 2048

por :

ring-size: 30000

Después de aumentar esta variable a 30.000, ya no observo la pérdida de paquetes incluso con 7,8 millones de paquetes recibidos.




Te invito a leer la documentación de Suricata para afinar los parámetros de configuración que tienen un impacto en el rendimiento del software.

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

1/5/2024 -- 20:51:47 - <Notice> - Stats for 'eth0':  pkts: 1610546, drop: 104011 (6.46%), invalid chksum: 0

Ver archivos de registro Logs de Suricata


Suricata genera archivos de registro en el directorio /var/log/suricata . Además del tráfico de red y la actividad sospechosa que detecta, Suricata también registra información de servicio y estadísticas sobre el tráfico de red. En una Raspberry Pi, debe prestar atención al tamaño de los registros generados que pueden saturar rápidamente la tarjeta SD utilizada para su almacenamiento. Será necesario configurar un mecanismo de rotación de troncos para evitar cualquier problema.

Los diferentes archivos de registro

Aquí están los 4 archivos de registro generados por Suricata:

  • suricata.log : mensajes de inicio de Suricata
  • stats.log : estadísticas sobre el tráfico de su red
  • fast.log : actividad sospechosa descubierta por Suricata
  • eve.json : tráfico de tu red local, así como actividad sospechosa en formato JSON

Archivo de registro de actividad sospechosa


Para ver la actividad sospechosa detectada por Suricata en vivo, solo echa un vistazo al archivo fast.log 
sudo tail -n 100 -f /var/log/suricata/fast.log

A continuación, se muestra un ejemplo de actividad sospechosa detectada por Suricata registrada en el archivo fast.log :

01/29/2021-19:25:45.132975 [**] [1:2025012:3] ET MALWARE Powershell commands sent B64 3 [**] [Classification: A Network Trojan was detected] [Priority: 1] {TCP} XXX.XXX.XXX.XXX:80 -&gt; 192.168.1.22:45986
01/29/2021-19:26:10.183249 [**] [1:2013147:3] ET SHELLCODE Possible %u4141%u4141 UTF-16 Heap Spray Attempt [**] [Classification: Executable code was detected] [Priority: 1] {TCP} XXX.XXX.XXX.XXX:80 -&gt; 192.168.1.22:45986
01/31/2021-10:08:08.889128 [**] [1:2002157:12] ET CHAT Skype User-Agent detected [**] [Classification: Potential Corporate Privacy Violation] [Priority: 1] {TCP} 192.168.1.2:53937 -&gt; XXX.XXX.XXX.XXX:80

Rotación de archivos de registro


El tamaño del archivo de registro eve.json puede volverse muy grande rápidamente y ocupar todo el espacio de la tarjeta SD. Usar el mecanismo logrotate integrado en Linux es muy útil para evitar esto. Lo configuraremos para registrar registros de Suricata durante 10 días y limitar el tamaño de cada archivo a 1 GB. Así los logs no podrán ocupar más de 10 GB en la tarjeta SD mientras tengan un historial de los últimos 10 días. Los historiales más antiguos se eliminan automáticamente.

Crear un archivo "/etc/logrotate.d/suricata" con el siguiente contenido:

{
    daily
    maxsize 1G
    rotate 10
    missingok
    nocompress
    create
    sharedscripts
    postrotate
    systemctl restart suricata.service
    endscript
}
Para comprobar que la rotación está correctamente configurada y que funciona, puedes forzarla manualmente con el comando:
sudo logrotate -f /etc/logrotate.conf


Archivo de registro de tráfico de red


El tamaño del archivo de registro de tráfico de red "eve.json" puede aumentar dependiendo del tráfico de tu red.

Si solo le interesan las alertas del archivo fast.log , desactiva los registros del archivo eve.json en el archivo de configuración /etc/suricata/suricata.yaml . Pero ojo, no tendrás registros que te permitan analizar la causa de las alertas.

- eve-log:

   enabled: no


Gestionar las reglas de Suricata

La eficacia de IDS Suricata se basa en una buena gestión de las reglas. Es necesario tanto para evitar falsos positivos como para asegurar que las reglas utilizadas estén actualizadas y permitan la detección de amenazas recientes.

Las reglas de Suricata activadas por defecto generan muchos falsos positivos (alertas que no son problemas reales). Recomiendo dejar que Suricata se ejecute durante unas horas usando tu equipo normalmente y analizar cuidadosamente las alertas en el archivo fast.log y deshabilitar ciertas reglas. Por ejemplo, si utiliza Dropbox o Skype en tu red, deberá desactivar las reglas correspondientes para no generar alertas innecesarias para tu red.

Para aumentar la seguridad de tus instalaciones, es posible que también deba agregar nuevas fuentes de reglas o crear tus propias reglas.

Veremos cómo manejar esto en los siguientes capítulos.

Formato de reglas


  •     Action (drop, alert, or pass)
  •     Header (protocol, ip address(es), ports)
  •     Options (additional qualification values to determine if the packet/flow/whatever match)


Cada regla de Suricata se compone de la siguiente manera:


 opciones de encabezado de   acción

  • La acción corresponde a la acción realizada en caso de detección (alerta, caída, pase, etc.).
  • El encabezado sirve para definir el protocolo (tcp, http, ftp, dns, tls…) así como la dirección IP y el puerto de origen y destino del tráfico involucrado en la alerta.
  • Las opciones de la regla se muestran entre paréntesis y separadas por comas. Algunas opciones tienen parámetros, que se especifican mediante tu palabra clave seguida de dos puntos y el valor del parámetro.

Las reglas se identifican por tu identificador de firma, el parámetro sid .

Por ejemplo, aquí está la regla 2012647 para usar Dropbox:

# alert tls

[108.160.162.0/20,162.125.0.0/16,192.189.200.0/23,199.47.216.0/22,205.189.0.0/24,209.99.70.0/24,45.58.64.0/20] 443 -&gt; $HOME_NET any (msg:"ET POLICY Dropbox.com Offsite File Backup in Use"; flow:established,from_server; content:"|55 04 03|"; content:"|0d|*.dropbox.com"; distance:1; within:14; threshold: type limit, count 1, seconds 300, track by_src; reference:url,www.dropbox.com; reference:url,dereknewton.com/2011/04/dropbox-authentication-static-host-ids/; classtype:policy-violation; sid:2012647; rev:5; metadata:created_at 2011_04_07, updated_at 2019_01_16;)


Puede ver las reglas editando el archivo de reglas Suricata:

sudo vi /var/lib/suricata/rules/suricata.rules

Deshabilitar ciertas reglas

Dependiendo de su uso, algunas reglas deben deshabilitarse. Por ejemplo, si permite el uso de Dropbox dentro de la red, la regla para el SID 2012647 debe estar deshabilitada.

Edite el archivo que contiene las reglas para desactivar:

sudo vi /etc/suricata/disable.conf

Agregue la lista de reglas para desactivar, identificadas por su identificador de firma (SID).

Aquí hay un ejemplo de reglas que desactivé en mi instalación:

# suricata-update - disable.conf

1:2012647 # Dropbox

1:2013504 # APT package management

1:2210044 # SURICATA STREAM Packet with invalid timestamp

1:2029706 # COVID

1:2029707 # COVID

1:2029709 # COVID

1:2027865 # DNS Query to .cloud

1:2210054 # SURICATA STREAM excessive retransmissions

1:2260000 # Applayer Mismatch protocol both directions

1:2210020 # STREAM ESTABLISHED packet out of window

1:2016150 # INFO Session Traversal Utilities for NAT

1:2027758 # DNS Query for .cc

1:2002157 # CHAT Skype User-Agent detected

Si es necesario, es posible desactivar todas las reglas que pertenecen al mismo tipo de clasificación de clases. Por ejemplo, la clasificación de decodificación de comandos de protocolo genérico genera demasiadas alertas para mi gusto y es posible deshabilitar todas las reglas en esta clasificación.


# suricata-update - disable.conf

# Disable all rules from protocol command decode class type

re:classtype:protocol-command-decode


Luego, debe actualizar las reglas (consulta Actualización de las reglas).

Agregar una nueva fuente de reglas

Es posible agregar nuevas reglas de una fuente en particular.

Primero actualice la lista de fuentes disponibles:

sudo suricata-update update-sources

Luego vea las fuentes disponibles:

sudo suricata-update list-sources

Para verificar qué fuentes ya están activadas, ejecute el siguiente comando:

sudo suricata-update list-enabled-sources

Active una nueva fuente, por ejemplo, la fuente de las reglas oisf / trafficid .

sudo suricata-update enable-source oisf/trafficid

Luego, debe actualizar las reglas (consulte Actualización de las reglas).

Actualizar las reglas

Para integrar la detección de las últimas amenazas, es necesario actualizar periódicamente las reglas de Suricata ejecutando el siguiente comando:

sudo suricata-update --disable-conf=/etc/suricata/disable.conf

Entonces todo lo que tiene que hacer es reiniciar el servicio Suricata:

sudo systemctl restart suricata.service

Puedes ver cómo exportar los datos recolectados por Suricata a Elasticsearch, y así, con Kibana o Grafana poder visualizar dicho tráfico.


Otros IDS a tener en cuenta:


  • Snort : Se trata de un NIDS de código abierto, libre y gratuito, mantenido por la empresa Cisco Systems, capaz de operar tanto en dispositivos Windows como Linux y Unix y que dispone de tres modos de operación: “packet sniffer”, “packet logger” e “intrusion detection”. 
  • Bro (Zeek) : Anteriormente conocida con el nombre de “Bro”, se trata de un NIDS de código abierto que ofrece dos modos de operación diferentes, como son el “traffic logging” y el “analysis”. Una de sus principales características es que se puede ejecutar en la capa de aplicación de la capa OSI, ofreciendo la capacidad de analizar servicios y protocolos como DNS, HTTP o SNMP, entre otros.
  • Security Onion : Este NIDS de código abierto basado en Linux proporciona visibilidad sobre el tráfico de red, detección de intrusiones y administración de registros, además de ser capaz de alertar sobre actividades sospechosas. Combina varias de las funcionalidades de otras herramientas como Snort, Zeek, Suricata, Sguil o Squert, entre otras.
  • OSSEC:  es de tipo HIDS, de código abierto y gratuito. Además, es multiplataforma, y sus registros incluyen también FTP, datos del servidor web y email.

Fuentes:

https://www.framboise314.fr/detection-dintrusion-ids-avec-suricata-sur-raspberry-pi/
https://www.bujarra.com/instalando-suricata/


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.