
Raspberry Pi como Sistema de Detección de Intrusos con Suricata, la opción económica para PYMEs
por Raúl UnzuéLa Solución de Ciberseguridad low-cost para PYMES
La seguridad informática ya no es un lujo reservado para grandes corporaciones, hoy cualquier PYME, por pequeña que sea, es objetivo de ataques. Según datos de la ENISA (Agencia de la Unión Europea para la Ciberseguridad), más del 40% de las empresas europeas pequeñas sufrieron algún incidente de ciberseguridad, y el 60% de ellas no tenían herramientas adecuadas de detección.
Montar un sistema de detección de intrusos (IDS) suele sonar a cosa de grandes empresas con presupuestos infinitos y equipos de seguridad enormes. Pero, como acabamos de comentar, la realidad es que las pequeñas y medianas empresas también están en el punto de mira de los ciberataques, y muchas veces sin la protección adecuada. Aquí es donde una Raspberry Pi se convierte en tu mejor aliada, barata, silenciosa y con la potencia suficiente para montar un IDS con Suricata que te avise de lo que pasa en tu red. Sí, esa misma plaquita que muchos usan para montar consolas retro o servidores caseros, puede ser tu centinela de seguridad.
Con este sistema, podremos ser capaces de analizar el tráfico de tu red y detectar intentos de ataques como escaneos, inyecciones SQL o malware.
Material necesario para montar IDS Suricata en una Raspberry Pi
Para este ejemplo usaremos el siguiente material:
- Raspberry Pi 4 en adelante, cuanto más potente mejor, pero para este ejemplo usaré una RPi 4 con 4G de RAM, tarjeta MicroSD de 128GB con Kali Linux preinstalado:
- IP: 192.168.2.130
- Cable de red
- Reenviaremos los ficheros de Logs a un NAS Asustor en un recurso NFS (esto es opcional)
- Dispondremos de un Router / Switch gestionable (en el ejemplo, usaré un Mikrotik), el cual redirigirá el tráfico capturado a la RPi:
- Interfaz "ether8": Es el puerto WAN de nuestra "Pyme" y el que queremos monitorizar
- Interfaz "ether7": Puerto donde va conectada nuestra Raspberry Pi
- Estación para lanzar pruebas:
- Windows 11, con IP: 192.168.2.138
Instalación Requerimientos Software en Raspberry Pi
- Arrancamos Kali Linux, en este caso, y actualizamos el sistema operativo a la última versión:
sudo apt update && sudo apt upgrade -y
- Instalamos dependencias:
sudo apt install suricata tcpdump rsync jq nfdump pmacct -y
- Revisión versionados. Debe mostrar versión y soporte de dependencias:
suricata --build-info | head -5nfdump -Vpmacct -V
Mecanismos para Capturar o Exportar Tráfico
Aunque no es necesario activar todos, dispondremos de tres mecanismos distintos para capturar o exportar tráfico, ya que cada uno tiene una funcionalidad diferente:
- Sniffer de Mikrotik:
- Es como un tcpdump embebido en el Router.
- Captura paquetes “tal cual” y los manda a un destino (puerto UDP de un analizador como Wireshark o Suricata).
- Nivel: Capa de red, ves cabeceras IP, TCP, payload crudo.
- Uso típico: Debug, forense, alimentar IDS/IPS (como nuestra Raspberry Pi con Suricata).
- No genera estadísticas de tráfico, solo clona paquetes.
- Traffic-Flow (NetFlow/IPFIX en Mikrotik):
- Es la implementación de NetFlow/IPFIX exporter.
- En lugar de enviar paquetes completos, el router genera resúmenes (flows):
- IP origen/destino
- Puerto origen/destino
- Bytes, paquetes, duración
- Nivel: Estadístico / Analítico.
- Uso típico: Monitoreo, Capacity Planning o Detección de anomalías de red.
- Mucho más ligero que el sniffer.
- Flujos en Suricata:
- Suricata, al recibir tráfico (desde el sniffer o interfaz local), reconstruye flujos internamente:
- Une los paquetes en conversaciones completas.
- Aplica reglas IDS/IPS sobre esos flujos.
- Nivel: Capa aplicación, Suricata puede inspeccionar HTTP, DNS, TLS, etc.
- Uso típico: Seguridad (detectar SQLi, XSS, malware).
- Suricata, al recibir tráfico (desde el sniffer o interfaz local), reconstruye flujos internamente:
Estos tres sistemas se complementan uno con otro:
- Sniffer alimenta el IDS/IPS (detección de ataques). Es como un micrófono que graba todo lo que dices.
- NetFlow alimenta tu sistema de métricas (qué IP habla más, cuántos bytes, tendencias...). Es como un acta de reunión resumida, "hiciste X, unas Y veces y eso ha transferido ZZ megabytes".
- Suricata correlaciona y te da alertas. Es como el detective que analiza lo que realmente dijiste y busca frases sospechosas.
Configuración Mikrotik para Exportar Tráfico
Configuración Traffic-Flow en Mikrotik
Accedemos a la consola de Mikrotik y configuramos los siguientes comandos (192.168.2.130 es la IP de la RPi, ether8 es el puerto WAN a monitorizar y 2055 el puerto UDP que usaremos):
/ip/traffic-flowset enabled=yes interfaces=ether8/ip/traffic-flow/target
add address=192.168.2.130:2055 version=9
Podéis también hacerlo vía gráfica:
El tráfico de NetFlow se considera tráfico de Control del propio router que sale por una de sus interfaces. Debes asegurarte de que las reglas de output no lo están bloqueando. Puedes crear una regla de cortafuegos para ello:
/ip firewall filter
add chain=output action=accept protocol=udp dst-address=192.168.2.130 dst-port=2055 comment="Permitir NetFlow saliente hacia Raspberry"
Configurar Sniffer integrado en Mikrotik
Lanzaremos los siguientes comandos:
/tool sniffer# Reemplaza [IP_DE_SU_RPI] con la IP real de tu Raspberry Pi
set filter-stream=yes streaming-enabled=yes streaming-server=[IP_DE_SU_RPI] filter-dst-port=37008 filter-interface=ether8
# Iniciamos el serviciostart# Verificamosprint
También se puede hacer vía gráfica:
En este momento, deberiáis ya ver captura de paquetes en vuestra Raspberry Pi:
┌──(kali㉿kali)-[~]└─$ sudo tcpdump -i eth0 -s 0 -w /tmp/raw.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
749 packets captured824 packets received by filter0 packets dropped by kernel
Si no veis nada habría que comprobar que la RPi no tiene ningún firewall adicional o las configuraciones de Mikrotik no están bien.
Por ejemplo, si filtramos unas líneas:
tcpdump -r /tmp/raw.pcap -nn -tt | head -n 30
Esto confirma que el Raspberry Pi recibe tráfico desde el MikroTik.
Configurar Suricata en Raspberry Pi
Editamos el fichero "/etc/suricata/suricata.yaml", sección af-packet:
af-packet: - interface: eth0 cluster-id: 99 cluster-type: cluster_flow
defrag: yes use-mmap: yesdefault-log-dir: /var/log/suricata
Revisaremos los parámetros:
outputs: - eve-log: enabled: yes filetype: regular
filename: eve.json types: [alert, http, dns, tls, flow, ssh]
Una vez modificado el fichero de configuración reiniciamos el servicio de Suricata:
sudo systemctl enable suricatasudo systemctl start suricata
Realizamos la siguiente prueba. Si todo es correcto aparecerá un mensaje tipo:
sudo journalctl -u suricata --no-pager | tail -10
Debe decir algo como: suricata: all 1 packet processing threads, 4 management threads initialized
Y comprueba que existen logs en tiempo real:
tail -f /var/log/suricata/eve.json
Activamos las reglas de Suricata:
sudo suricata-updatesudo systemctl restart suricata
Una vez arrancado Suricata genera 4 archivos de registro en la ruta "/var/log/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
Pruebas en Suricata
Con todo configurado, y el tráfico llegando a nuestra Raspberry, realizamos varias pruebas.
Arrancamos un servidor HTTP de forma temporal en Raspberry:
sudo python3 -m http.server 80
Dejamos el comando corriendo, y desde otra máquinas comprobamos que llegamos:
curl.exe "http://192.168.2.130/"
Ahora generamos tráfico sospechoso desde otro equipo, para comprobar que Suricata trabaja adecuadamente. Lo podemos hacer lanzando desde la máquina de pruebas hacia la Raspberry Pi, el siguiente comando:
curl "http://192.168.2.130/?id=%27%20or%201%3D1%20--"ó
Invoke-WebRequest -Uri "http://192.168.2.130/?id=' or 1=1 --"
Deberíamos ver estos acceso desde el log:
grep -i sql /var/log/suricata/eve.json
o
sudo tail -F /var/log/suricata/fast.log
Si queréis hacerlo de una forma más interactiva, podéis abrir dos consolas de RPi, una con el servidor web y otra con un tcpdump escuchando con un filtro de la máquina desde donde lo lanzas:
sudo tcpdump -i eth0 host 192.168.2.138 and tcp port 80 -n -vv
En cuanto lances el ataque de SQL Injection, se imprimirá en pantalla:
Montaje recurso NFS en NAS Asustor
Una buena idea, si vais a generar mucho tráfico, es que los eventos se exporten de forma automática a un recurso compartido, como una carpeta compartida por NFS en un NAS Asustor.
Generamos el share:
Le damos permisos a la IP de la RPi:
Montaje NFS en Raspberry Pi
Instalamos los paquetes necesarios y generamos las carpetas:
sudo apt install nfs-common -ysudo mkdir -p /mnt/nas
sudo mount -t nfs nascasika.negu.local:/volume1/SURICATA /mnt/nas
Comprobamos que share está montado:
df -h | grep nas
Debe listar el punto de montaje.
Enviar los Logs con RSYNC
Para automatizar el copiado de ficheros, usaremos CRON (el parámetro "--remove-source-files" elimina los ficheros originales, podéis omitirlo si no lo veis necesario):
sudo nano /etc/crontab
*/5 * * * * root rsync -av --remove-source-files /var/log/suricata /mnt/nas/suricata/
Comprobamos manualmente que funciona:
sudo /usr/bin/rsync -av --remove-source-files /var/log/suricata /mnt/nas/suricata/
El archivo debe aparecer en el NAS.
ls -l /mnt/nas/suricata/
Nos aseguramos de que el servicio CRON esté corriendo:
Podéis también hacer un enlace simbólico, pero si vuestro NAS no funciona os puede dar problemas, creo que la opción RSYNC + CRON es más segura:
sudo systemctl stop suricatasudo rm -rf /var/log/suricata
sudo ln -s /mnt/nas/suricata /var/log/suricatasudo systemctl start suricata
Puedes también hacer que trabaje directamente con tu NAS cambiando el directorio en Edita /etc/suricata/suricata.yaml y cambia:
default-log-dir: /mnt/nas/suricata/
Seguridad real para PYMEs sin arruinarse
Invertir en un firewall o un WAF suele ser caro, pero un IDS con Raspberry Pi y Suricata es una alternativa perfecta para PYMEs que quieren visibilidad sobre lo que pasa en su red sin gastar miles de euros.
Con esta solución puedes:
- Detectar accesos sospechosos en tiempo real.
- Recibir alertas en Telegram, Syslog o SIEM.
- Centralizar logs en tu NAS o servidor para auditorías futuras.
- Crecer fácilmente, ya que Suricata es escalable y puedes integrarlo con soluciones de análisis como ELK (Elasticsearch, Logstash, Kibana) o Grafana.
En pocas palabras, por menos de 100€ puedes tener una solución de ciberseguridad de nivel empresarial, adaptable a tus necesidades, con un consumo eléctrico mínimo y sin dependencias de terceros.
La Raspberry Pi deja de ser un simple juguete para "makers" y se convierte en un aliado estratégico para proteger tu negocio.
Fin del Artículo. ¡Cuéntanos algo en los Comentarios!