La seguridad de las redes domésticas se ha convertido en una preocupación real.
Entre objetos conectados, asistentes de voz, cámaras IP, NAS, teléfonos inteligentes y equipos de automatización del hogar, nuestras redes locales se asemejan cada vez más a pequeñas redes corporativas.
Y no escaparemos de los ataques masivos de los ciberdelincuentes.
Después de varios años de actualizar mi sistema de automatización del hogar, quería agregar una capa de monitoreo de red pasiva:
- sin afectar al rendimiento;
- sin cambiar el tráfico;
- y sin convertir la red en una planta de gas.
🔍 ¿Por qué controlo mi red local?
La mayoría de los equipos conectados se comunican constantemente con Internet:
- Televisores conectados;
- asistentes de voz;
- tomas de corriente domótica;
- cámaras;
- objetos IoT;
- aplicaciones móviles;
- etc.
El problema:
- no siempre está claro lo que están enviando;
- ni a quién;
- y con qué frecuencia.
El seguimiento de la red permite, en particular:
- detección de productos desconocidos;
- identificar comportamientos sospechosos;
- para ver qué equipo habla hacia el exterior;
- identificar las exploraciones de red;
- identificar flujos anormales;
- o simplemente para entender mejor su red.
🎯 Mi objetivo con esta instalación
El objetivo era simple:
- observar el tráfico de la red;
- detectar comportamientos anormales;
- centralizar las alertas en Home Assistant;
- mientras que los restantes 100 % local.
Para ello, elegí una arquitectura basada en:
- un conmutador manejable con puerto espejo;
- una Raspberry Pi dedicada al análisis de redes;
- y la integración de Home Security Assistant para Home Assistant.
Pero quería una solución:
- pasivo;
- discreta;
- fiable;
- local;
- e independiente del router.
El principio adoptado es el que se utiliza en muchos entornos profesionales.
🌐 Mi arquitectura red
Mi red está organizada de la siguiente manera:
Internet ↓ Freebox (modo puente) ↓ Router Synology ↓ Switch manejable Zyxel GS1200-5 ├── otros switches └── espejo de puerto → Raspberry Pi IDS
🪞 I configuró el mirroring de puertos
El switch duplica el tráfico de red de un puerto específico y lo envía a otro puerto dedicado al análisis. Normalmente hablamos de Puerto de espejo, o SPAN.
Por ejemplo:
- la Raspberry Pi recibe una copia de los paquetes;
- sin ser visible en la red;
- sin cambiar el tráfico;
- y sin convertirse en un punto crítico de la infraestructura.
Y honestamente, si se cae, si se quema, si está cansado de trabajar para mí, no tendrá ningún impacto en la instalación de domótica de la casa.
Y para la buena salud de mis relaciones con el resto de mi pequeña familia, mis manualidades no deben evitar que las luces se enciendan o que el riego se apague.
💸 ¿Cuánto me costó?
Establecer una investigación de seguridad en mi casa no me iba a costar mucho, ya que el presupuesto familiar tenía muchas otras prioridades.
Por lo tanto, la única inversión financiera fue la adición de un interruptor manejable que detallo justo después. Me costó: 17,36 €.
Ya tenía los cables Ethernet y una vieja Raspberry Pi 3B+ en un cajón.
Si necesita comprar un Raspberry Pi 3B +, lo encontrará utilizado por alrededor de € 40. Yo tomaría nada menos que: 3B+ me parece el mínimo para este tipo de uso. Y si tiene una opción, prefiera directamente una Raspberry Pi 4.
Así que llegamos a un presupuesto total de alrededor de 60 € si tienes que comprar el interruptor y la frambuesa.
Y si reemplaza la tarjeta SD con un SSD SATA, no hay necesidad de tomar enormes: Un modelo de 20 a 32 GB es más que suficiente. En USB a través de una pequeña caja, es conveniente y fácil de usar.
🧰 El equipo que utilizo
🔌 Elijo el interruptor manejable Zyxel GS1200-5

Yo elegí:
Por qué este modelo:
- compacto;
- silenciador;
- bajo consumo;
- administración web sencilla;
- soporte para el puerto espejo;
- precio realmente muy razonable.
Este es un excelente compromiso para un laboratorio de automatización del hogar o una red residencial avanzada.
🥧 preparo el Raspberry Pi
La Raspberry Pi servirá como una sonda de red.
La frambuesa:
- no conduce nada;
- no filtra nada;
- no sirve como cortafuegos;
- simplemente escucha el tráfico del espejo enviado por el interruptor.
Recomiendo:
- Raspberry Pi 4 con un mínimo de 4 GB, aunque usé una Raspberry Pi 3B+ que ya tenía;
- Idealmente con un SSD USB.
Por qué evitar la tarjeta SD:
- Las herramientas de IDS escriben muchos registros;
- Las tarjetas SD se desgastan rápidamente.
🧠 ¿Por qué prefiero un mirror switch a un firewall IDS?
Algunas soluciones como:
- pfSense;
- OPNsense;
- o Suricata directamente en el router;
Son muy poderosos.
Pero en mi caso quería:
- separar el análisis de la red principal;
- evitar cualquier interrupción de la red vinculada al IDS;
- mantener una arquitectura modular;
- ser capaz de detener el análisis sin afectar a Internet.
El modo pasivo trae varias ventajas:
- sin latencia;
- ningún impacto en el tráfico;
- no hay dependencias de la red;
- simplicidad;
- seguridad.
Incluso si las plantas de frambuesa:
→ la red sigue funcionando normalmente.
🔧 Configurar el interruptor Zyxel GS1200-5

🚀 I hace el primer comienzo del cambio
Antes de integrar el conmutador en la red principal, comencé haciendo una configuración inicial con una conexión directa a una computadora portátil.
Este método permite:
- para configurar el interruptor silenciosamente fuera de producción;
- evitar cualquier conflicto de red;
- acceso seguro inmediato del administrador;
- y preparar el puerto de duplicación antes de la integración en la red real.
Después del desembalaje:
- conexión de la fuente de alimentación;
- conexión del ordenador portátil al puerto 1 del interruptor;
- desactivación temporal de Wi-Fi en el ordenador;
- y configuración de una dirección IP estática en la tarjeta de red Ethernet.
De forma predeterminada, el conmutador Zyxel utiliza la dirección:
192.168.1.3
Por lo tanto, he configurado temporalmente el PC con:
| Parámetro | Valor |
|---|---|
| Dirección IP | 192.168.1.50 |
| Máscara | 24 |
| Puerta de enlace | 192.168.1.1 |
Una vez que ambos dispositivos están en la misma subred, el interruptor responde inmediatamente al ping.
La administración web solo funciona en HTTPS en firmwares recientes. Por lo tanto, la conexión se realiza a través de:
https://192.168.1.3
A continuación, el navegador muestra una advertencia de certificado SSL autofirmado, lo cual es perfectamente normal en este tipo de equipos.
En la primera conexión:
- el conmutador solicita inmediatamente que se cambie la contraseña de administrador;
- entonces el acceso a la interfaz de configuración está disponible.
Yo entonces:
- deshabilitar el cliente DHCP del switch;
- Asigné una dirección IP fija, opcional pero puse
192.168.1.11; - y guardó la configuración antes de la integración a la red principal.

Esta fase de preparación permite disponer inmediatamente de:
- un conmutador correctamente configurado;
- una dirección administrativa conocida;
- y una configuración estable antes de entrar en producción.
🌐 Accedo al switch de la red local
El switch ahora es accesible a través de HTTPS:
https://192.168.1.11
Puedo permanecer en mi computadora portátil en vivo o conectarla a la red local. El switch ahora tiene su IP fija, por lo que no hay conflicto.

🔀 I configurar puertos
Configuración elegida:
| Puerto | Uso |
|---|---|
| Puerto 1 | Router de Synology |
| Puerto 2 | Red local |
| Puerto 3 | Red local |
| Puerto 4 | Red local |
| Puerto 5 | Frambuesa Pi IDS |
Preparo una pequeña etiqueta que voy a pegar en el interruptor.

y aquí está el resultado:

🪞 Configurar el Port Mirroring
El principio:
- copiar el tráfico desde el puerto conectado al router;
- hacia el puerto de la Raspberry Pi.

Parámetros configurados:
| Parámetro | Valor |
|---|---|
| Espejo de puertos | Habilitar |
| Dirección del espejo | Ambos |
| Puerto de espejo | Puerto 1 |
| Puerto del monitor | Puerto 5 |
El modo «Ambos» es importante: le permite ver el tráfico entrante y saliente.
❓ ¿Por qué no me quedo con todos los puertos?
Esta es una pregunta que a menudo surge.
En la práctica:
- la supervisión del puerto del router es más que suficiente;
- esto ya permite observar todo el tráfico de Internet;
- sin sobrecargar innecesariamente la Raspberry Pi.
Reflejar todos los puertos:
- aumenta considerablemente el volumen de tráfico;
- genera duplicados;
- y puede saturar el sistema de análisis.
Para una red doméstica, la duplicación del puerto del router es en gran medida suficiente.
🏷 Dejo las VLAN por defecto

No se necesitaba ninguna configuración particular de VLAN, dejé todo por defecto.
Todos los puertos permanecen:
- en la VLAN 1;
- en modo sin etiquetar.
Para una instalación residencial clásica, funciona perfectamente.
⚙ Dejo QoS, LAG e IGMP casi por defecto

Las otras funciones avanzadas del switch se han dejado por defecto:
- no hay agregación de enlaces;
- ninguna calidad de servicio específica;
- IGMP Snooping activado;
- EEE para discapacitados.
El objetivo es mantener:
- comportamiento sencillo;
- stable;
- predecible.
🥧 I instala la monitorización de la red Raspberry Pi
Una vez configurado el switch manejable y puesto en funcionamiento el puerto mirroring, era necesario configurar el sensor de red capaz de analizar el tráfico de la red doméstica.
El objetivo no era bloquear el tráfico o reemplazar el router, sino simplemente establecer un sistema de monitoreo totalmente pasivo capaz de observar lo que está sucediendo en la red local.
La idea es simple: El conmutador Zyxel duplica el tráfico de red con el puerto de duplicación y, a continuación, envía esta copia a una Raspberry Pi dedicada al análisis.
La frambuesa se convierte entonces en una especie de «cámara de vigilancia de red», capaz de observar equipos conectados, conexiones externas, intercambios DNS, flujos TLS, comportamientos sospechosos o determinados ataques conocidos.
🤔 ¿Por qué uso una Raspberry Pi?
La Raspberry Pi es perfecta para este tipo de uso:
- bajo consumo de energía;
- funcionamiento completamente silencioso;
- reducción de costes;
- formato compacto;
- perfecto para la operación de 24 horas.
Tenía varios modelos disponibles en casa: Frambuesa Pi 3, 3B y 3B+.
La elección fue en última instancia una Raspberry Pi 3B+ que ofrece un buen compromiso entre potencia, estabilidad y consumo.

💾 Yo elijo el almacenamiento
Quería evitar las tarjetas microSD clásicas.
Incluso si funcionan muy bien para proyectos simples, no admiten escrituras intensivas a largo plazo, especialmente cuando se trata de generar registros de red continuamente.
Por lo tanto, he optado por utilizar:
- una unidad SSD SATA 2.5;
- un adaptador USB a SATA;
- Raspberry Pi OS Lite de 64 bits.
El objetivo era obtener una instalación:
- más fiable;
- más rápido;
- más sostenible;
- y más estable con el tiempo.
🧰 I instalar el sistema
El sistema se instaló con Raspberry Pi Imager directamente en el SSD.
He elegido:
- Raspberry Pi OS Lite de 64 bits;
- conexión Wi-Fi preconfigurada;
- SSH activado en el momento de la instalación;
- nombre de host personalizado;
- Actualice automáticamente el sistema después del primer arranque.
Tan pronto como comenzó, la Raspberry apareció inmediatamente en la red Wi-Fi doméstica.
Luego se le asignó una IP fija desde el router Synology para facilitar la administración remota.
En este punto, establezco la dirección IP, cada uno su propio método, lo hago en el router Synology pero esto se puede hacer en el Raspberry, tenga en cuenta que desde aquí, cada vez que uso 192.168.1.222, será la IP de la Raspberry.
🩺 I comprueba que la base del sistema es saludable
Antes de instalar Suricata, preferí verificar que la base del sistema fuera sólida.
La idea era simple: Antes de convertir el Raspberry en una sonda de red de 24 horas, era necesario asegurarse de que el sistema se iniciara bien en el SSD, que la fuente de alimentación fuera estable, que la temperatura fuera correcta y que las interfaces de red estuvieran en el estado esperado.
📦 Actualización completa del sistema
sudo apt update && sudo apt full-upgrade -y
Después de la actualización, un reinicio permite reiniciar de forma limpia:
reinicio de sudo
💽 Comprobar que la frambuesa comienza bien en el SSD
lsblk
Resultado previsto:
sda ├─sda1 /boot/firmware └─sda2 /
El punto importante aquí es ver que la partición raíz / ha estado bien montado desde /dev/sda2.
Esto confirma que la Raspberry arranca bien en la SSD USB y no en una tarjeta microSD.
📊 I comprobar el espacio disponible en disco
df-h
Resultado previsto:
/dev/sda2 29G 3.0G 25G 11% / /dev/sda1 505M 65M 440M 13% /boot/firmware
En mi caso, el SSD de 32 GB ofrece mucho espacio para el sistema, Suricata y los registros, siempre que los archivos se giren automáticamente.
🌐 I comprueba las interfaces de red
ip a
Resultado esperado antes de conectar el puerto del espejo:
eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> wlan0: 192.168.1.22/24 <BROADCAST,MULTICAST,UP,LOWER_UP>
En esta arquitectura, Wi-Fi se utiliza para administrar la frambuesa en SSH.
La interfaz Ethernet eth0, se reservará para la captura de tráfico de red desde el puerto espejo del switch.
🌡 I comprobar la temperatura
vcgencmd medida_temp
Resultado obtenido:
temp=40,8'C
Una temperatura de alrededor de 40 a 60 ° C es perfectamente correcta para este tipo de uso.
Por lo tanto, la frambuesa podrá trabajar continuamente sin ningún problema en particular.
🔌 I comprobar alimentación y estrangulamiento
vcgencmd get_throttled
Resultado previsto:
estrangulado=0x0
Este es un punto muy importante.
Valor 0x0 significa que la frambuesa no detecta:
- ni la subtensión;
- ni limitación de frecuencia;
- sin problemas de alimentación.
« 🧠 I check that the system is 64 bits» (en inglés).
uname-a
Resultado previsto:
aarch64 GNU/Linux
La presencia de aarch64 Confirma que Raspberry Pi OS Lite 64-bit está instalado.
🛡 I instalar Suricata
Una vez que la Raspberry estaba en pleno funcionamiento, instalé el motor del Sistema de Detección de Intrusos (IDS), que analizará el tráfico de red: Suricata.
La elección de Suricata fue bastante natural:
- código abierto;
- ampliamente utilizado en el mundo profesional;
- análisis avanzado del protocolo;
- apoyo a los registros JSON;
- Compatibilidad con Home Assistant;
- detección de anomalías en la red;
- impresiones dactilares JA3 y JA4;
- actualización automática de las normas.
📦 Suricata instalación
sudo apt instalar suricata -y
Una vez completada la instalación, comprobé la versión y las funcionalidades compiladas:
suricata --build-info
Resultado previsto:
Este es el soporte de Suricata versión 7.x AF_PACKET: sí soporte eBPF: sí Soporte JA3: sí apoyo JA4: sí
Este paso permite confirmar:
- Suricata está bien instalado;
- El soporte de la red Linux está activo;
- Las impresiones JA3/JA4 están disponibles;
- que el motor está funcionando correctamente en Raspberry Pi.
✅ I comprobar el servicio Suricata
sudo systemctl status suricata
Resultado previsto:
Activo: activo (en funcionamiento)
El servicio se inicia automáticamente en el arranque de Raspberry.
📚 I instala las reglas de detección
Por defecto, Suricata casi no contiene reglas activas.
Por lo tanto, es necesario descargar una base de datos de firmas de red.
Elegí las reglas de la comunidad Emerging Threats Open.
📦 Instalación de suricata-update
sudo apt instalar suricata-update -y
✗ ✗ Descargando las reglas
sudo suricata-actualización
Resultado previsto:
Cargado 65950 reglas Escribir reglas en /var/lib/suricata/rules/suricata.rules
Más de 50.000 firmas de detección se instalaron automáticamente.
🔧 Configurar la red Raspberry
En esta etapa, hubo que abordar un punto extremadamente importante:
El Raspberry nunca debe comunicarse a través de la red a través de su interfaz de captura.
El puerto conectado al puerto espejo del switch solo debe escuchar el tráfico de red, sin enviar paquetes.
Para ello:
- ninguna dirección IP debe estar presente en
eth0; - ningún DHCP;
- ninguna pasarela;
- no hay tráfico saliente;
- modo PROMISC obligatorio.
🔎 I identificar el operador de red utilizado
Estado del dispositivo nmcli
Resultado obtenido:
eth0 ethernet conectado netplan-eth0 wlan0 wifi conectado netplan-wlan0
Esto confirma que el sistema utiliza NetworkManager.
🚫 I desactiva IPv4 e IPv6 en eth0
conexión sudo nmcli modificar netplan-eth0 ipv4.método desactivado conexión sudo nmcli modificar netplan-eth0 ipv6.método desactivado
🔄 I reiniciar la conexión de red
conexión sudo nmcli abajo netplan-eth0 conexión sudo nmcli arriba netplan-eth0
👂 Estoy activando constantemente el modo PROMISC
El modo promiscuo permite que la tarjeta de red reciba todos los paquetes copiados por el switch.
Creación de un servicio systemd:
sudo nano /etc/systemd/system/promisc-eth0.service
Contenido del fichero:
[Unidad] Descripción=Habilitar modo promiscuo en eth0 After=network.target [Servicio] Tipo=oneshot ExecStart=/usr/sbin/ip link set eth0 promisc en [Instalar] WantedBy=multi-user.target
▶▶ Activar el servicio
sudo systemctl permitir promisc-eth0 sudo systemctl inicio promisc-eth0
✅ I comprobar la interfaz de red
ip a
Resultado previsto:
eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP>
Muy importante:
- ninguna dirección IP;
- sin línea
inet; - modo
PROMISCactivo.
El Raspberry entonces se convierte en una verdadera sonda de red pasiva.
🔌 I enchufe el puerto del espejo
Una vez que la Raspberry estaba lista, el puerto 5 del conmutador Zyxel configurado como un puerto espejo se conectó directamente al puerto Ethernet de la Raspberry Pi.
A partir de este momento, el Raspberry comienza a recibir una copia del tráfico de red.

📡 Realizo una primera prueba de captura de red
Antes de lanzar Suricata, preferí comprobar que el espejo realmente funcionaba.
📦 Instalación de tcpdump
sudo apt instalar tcpdump -y
🧪 captura prueba
sudo tcpdump -i eth0 -nn -c 20
Resultado obtenido:
IP 192.168.1.x > 192.168.1.x UDP, longitud 70 ICMP echo request Tráfico HTTPS Tráfico DNS
El tráfico de red inmediatamente comenzó a desplazarse:
- consultas DNS;
- tráfico HTTPS;
- comunicaciones de IoT;
- los flujos internos;
- ICMP;
- Varias conexiones de red.
Esto confirmó que:
- el puerto espejo Zyxel funcionó perfectamente;
- la frambuesa recibió una copia del tráfico;
- La captura pasiva estaba operativa.
⚙ I configurar Suricata
El archivo de configuración principal se puede encontrar aquí:
/etc/suricata/suricata.yaml
🏠 Declaro la red local
Adapté la red local a mi instalación:
HOME_NET: "[192.168.1.0/24]"
Esto mejora:
- la exactitud de las descripciones;
- rendimiento;
- detección de flujos internos y externos.
🧬 I activa las huellas dactilares JA3 y JA4
Las huellas dactilares JA3/JA4 permiten identificar ciertos comportamientos TLS con mucha precisión.
Activación en el bloque TLS:
huellas dactilares ja3: sí ja4-huellas dactilares: sí
✅ I validar la configuración
sudo suricata -T -c /etc/suricata/suricata.yaml
Resultado previsto:
La configuración proporcionada se cargó correctamente
Este comando es extremadamente útil:
- detección de errores YAML;
- validación de las normas;
- control de carreteras;
- Verificación de configuración global.
🚀 Empiezo Suricata
🔄 Estoy reiniciando el servicio
sudo systemctl reiniciar suricata
📊 I comprobar el estado
sudo systemctl status suricata
Resultado previsto:
Activo: activo (en funcionamiento)
📜 I validar registros de red
El núcleo del sistema se basa en el archivo JSON generado por Suricata:
/var/log/suricata/eve.json
👀 Visualización en tiempo real
cola de sudo -f /var/log/suricata/eve.json
A través de la generación de tráfico de red (YouTube, navegación web, objetos conectados a …), los primeros eventos aparecen inmediatamente:
"event _type":"flow" "event _type":"dns" "event _type":"tls" "event _type":"http"
Esto confirma que:
- Suricata analiza los paquetes correctamente;
- se decodifican los protocolos;
- Los registros JSON son utilizables;
- La supervisión de la red realmente funciona.
🗂 I instaló una rotación automática de troncos
Un sistema de monitoreo de red genera muchos registros.
Por lo tanto, es esencial establecer una rotación automática para evitar el llenado de la SSD.
⚙ Configuration logrotate
sudo nano /etc/logrotate.d/suricata
Configuración utilizada:
/var/log/suricata/*.log /var/log/suricata/*.json { rotar diariamente 14 missingok notifempty comprimir delaycompress copytruncate sharedscripts postrotate /bin/kill -HUP $(cat /var/run/suricata.pid) 2>/dev/null || true endscript }
Esta configuración:
- mantiene 14 días de historia;
- comprime troncos viejos;
- evita errores si Suricata se reinicia;
- limita severamente el desgaste de la SSD.
📡 I exporta flujos de red a Home Assistant con softflowd
Una vez que Suricata estaba operativo en modo IDS pasivo, el siguiente objetivo era transmitir metadatos de red al Home Assistant para poder crear paneles inteligentes, gráficos de actividad y alertas.
Con este fin, añadí: softflowd, un exportador ligero de NetFlow perfectamente adecuado para una Raspberry Pi 3B+.
La idea es simple:
- Suricata inspecciona los paquetes;
- softflowd observa los flujos de red;
- Home Assistant centraliza y visualiza la actividad.
Este enfoque permite una supervisión avanzada de la red sin convertir el Raspberry en un router o firewall activo.
📦 I instalar softflowd
La instalación es muy sencilla:
sudo apt instalar softflowd -y
Una vez instalado, era necesario identificar qué interfaz de red recibía tráfico espejo del conmutador Zyxel.
Como antes, el siguiente comando se utiliza para comprobar el estado de la red:
ip a
Resultado observado:
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP>
La interfaz eth0 por lo tanto, es bueno:
- conectados;
- activo;
- en modo PROMISC;
- sin una dirección IP.
Esto es exactamente lo que estaba buscando:
- eth0 solo recibe tráfico de espejo del conmutador;
- wlan0 Se utiliza para administrar la frambuesa y enviar los datos a Home Assistant.
🧪 Hago una primera prueba manual
Antes de cualquier automatización, empecé softflowd manualmente para comprobar la operación:
sudo softflowd -i eth0 -n 192.168.1.222:2055
La frambuesa casi no devuelve mensajes a la pantalla, lo cual es normal.
El programa se inicia directamente en segundo plano.
Para verificar que los flujos se exportaron a Home Assistant, abrí una segunda sesión de SSH y luego lancé:
sudo tcpdump -i wlan0 puerto udp 2055
Resultado:
IP Suricata.42399 > 192.168.1.222.2055: UDP
Esta línea confirma varios puntos importantes:
- obras de flujo suave;
- Los flujos de NetFlow están bien generados;
- El Asistente del Hogar recibe los paquetes;
- El enrutamiento a través de Wi-Fi es correcto.
🛠 I crear un servicio systemd dedicado
El servicio Debian proporcionado con softflowd resultó poco fiable en este contexto específico.
Así que preferí crear mi propio servicio systemd.
Creación del fichero:
sudo nano /etc/systemd/system/softflowd-ids.service
Configuración utilizada:
[Unit] Descripción=softflowd NetFlow export for IDS mirror interface After=network-online.target promisc-eth0.service Wants=network-online.target [Service] Type=simple ExecStart=/usr/sbin/softflowd -d -i eth0 -n 192.168.1.222:2055 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
A continuación, activación del servicio:
sudo systemctl daemon-reload sudo systemctl permitir softflowd-ids sudo systemctl reiniciar softflowd-ids
✅ I comprobar el correcto funcionamiento
Para confirmar el correcto funcionamiento:
estado sudo systemctl softflowd-ids
Resultado:
Activo: Active (running) softflowd v1.1.1 start data collection Exportación de flujos de eth0 a [192.168.1.222]:2055
En esta fase, la arquitectura de red es plenamente operativa:
- el conmutador Zyxel duplica el tráfico;
- la frambuesa recibe copias de los paquetes;
- Suricata analiza el tráfico;
- flujos blandos de exportaciones;
- Home Assistant centraliza los datos.
Lo más interesante es que este monitoreo permanece completamente pasivo:
- ningún impacto en la red;
- ninguna modificación del equipo;
- ninguna posible interrupción del tráfico;
- consumo de energía extremadamente bajo.
La Raspberry se convierte así en una verdadera sonda de red doméstica capaz de ofrecer una visibilidad muy avanzada sobre toda la automatización del hogar y la instalación de TI de la casa.
🏠 I integra el Asistente de Seguridad en el Hogar en el Asistente en el Hogar
Una vez que Suricata estaba en funcionamiento y los flujos de NetFlow se exportaban correctamente a Home Assistant a través de softflowd, el siguiente paso era explotar todos estos datos.
El objetivo ya no era simplemente capturar el tráfico de red, sino:
- correlacionar eventos de seguridad;
- identificar el equipo activo;
- detectar comportamientos anormales;
- ver la red doméstica en tiempo real;
- transformar Home Assistant en un verdadero centro de supervisión de seguridad.
Para ello, instalé la excelente integración Asistente de seguridad para el hogar por domo-monstruo.
Esta integración permite centralizar:
- troncos de Suricata;
- Flujos de NetFlow;
- estadísticas de la red;
- sucesos sospechosos;
- las detecciones de vulnerabilidades;
- comportamiento inusual de la red.
En mi caso, HACS ya estaba instalado en Home Assistant, lo que simplifica enormemente la instalación.
➕ Añado el repositorio personalizado en HACS
Asistente en el hogar:
HACS → Integraciones → ⋮ (menú superior derecho) → Depósitos personalizados
Adición del repositorio GitHub:
https://github.com/domo-monster/HomeSecurityAssistant
A continuación, selección de la categoría:
Integración
Por último:
Añadir

📦 I instala la integración
Una vez que se ha agregado el depósito:
HACS → Integraciones
Buscar por:
Asistente de seguridad para el hogar
Luego instale la última versión disponible.

Después de la descarga, Home Assistant solicita un reinicio completo.
🔌 Añado integración en Home Assistant
Después de reiniciar:
Configuración → Dispositivos y servicios → Añadir integración
A continuación, busque:
Asistente de seguridad para el hogar
⚙ Configurar Asistente de seguridad para el hogar

Después de instalar la integración, Home Assistant abre automáticamente la ventana de configuración de Home Security Assistant.
Esta configuración seguirá siendo accesible en todo momento:
Configuración → Dispositivos y servicios → Asistente de seguridad para el hogar → Configuración (rueda rayada)
La mayoría de los ajustes propuestos se pueden dejar por defecto.
La integración ya está diseñada para funcionar de manera efectiva en un entorno doméstico estándar.

En mi caso, solo unos pocos parámetros realmente requerían una atención especial.
🌐 Listening Host
0.0.0.0
Este valor debe conservarse.
Permite que Home Security Assistant escuche transmisiones de NetFlow en todas las interfaces de red del servidor Home Assistant.
Esto es particularmente útil cuando:
- Home Assistant tiene varias interfaces de red;
- los flujos llegan de otros equipos;
- La telemetría es exportada por una sonda IDS remota como aquí con el Raspberry.
📡 puerto escucha UDP
2055
Este puerto debe corresponder exactamente al configurado previamente en softflowd:
softflowd -i eth0 -n 192.168.1.222:2055
El puerto 2055 es un estándar muy común para NetFlow.
🏠 Redes internas
192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,fd00::/8,fe80::/10
Mantuve voluntariamente esta configuración predeterminada.
Aunque mi red actual funciona principalmente por:
192.168.1.0/24
La configuración predeterminada sigue siendo más flexible y escalable.
En particular, permite:
- la futura incorporación de VLAN;
- separación de objetos IoT;
- gestión de redes de invitados;
- Compatibilidad con IPv6;
- el desarrollo futuro de la infraestructura.
En un entorno doméstico moderno, generalmente es mejor mantener esta configuración extensa.
« 🕵 Port Scanning Detection Window» (Ventana detección escaneo puerto
600 segundos
Este valor corresponde a:
- 10 minutos de vigilancia resbaladiza;
- buena sensibilidad de detección;
- un cargo razonable para Home Assistant.
El objetivo es evitar:
- falsos positivos demasiado agresivos;
- advertencias innecesarias;
- la sobrecarga del motor de análisis.
Para una red doméstica, el valor predeterminado es muy correcto.
« 🚪 Unique Ports Before Scan Alert» (en inglés).
100
Este valor determina a partir de cuántos puertos diferentes se considerará que un dispositivo puede realizar un análisis de red.
Una vez más, el valor predeterminado es adecuado para uso doméstico.
Un valor demasiado bajo podría causar muchos falsos positivos con:
- Chromecast;
- Apple TV;
- objetos conectados;
- mDNS;
- UPnP;
- Descubrimiento automático de la red.
📈 Alto umbral de tráfico saliente
50000000
Este parámetro define el volumen de datos que se considera anormalmente alto durante un período de tiempo determinado.
En mi caso, mantuve el valor predeterminado.
El objetivo principal es detectar:
- equipos comprometidos;
- una carga masiva inusual;
- exfiltración de datos;
- un dispositivo IoT extremadamente hablador.
📋 Activar panel lateral
Opción dejada encendida.
Esto agrega directamente el Asistente de seguridad para el hogar a la barra lateral del Asistente para el hogar.
Esto es extremadamente conveniente.
🔐 Derechos de administrador para el panel lateral
La opción también se mantuvo habilitada.
Esto limita el acceso a la información confidencial de la red solo a los administradores de Home Assistant.
En un entorno multiusuario, es una buena práctica de seguridad.
🔎 Escáner red activa
Dejé el escáner activo.
Este componente permite al Asistente de seguridad para el hogar:
- descubrir equipos de red;
- identificar los hosts activos;
- correlacionar direcciones IP;
- enriquecer la información de la red.
Esta característica complementa perfectamente los análisis pasivos realizados por Suricata.

⏱ Intervalo de Escaneo Activo
3000 segundos
Este valor corresponde aproximadamente a:
50 minutos
Por lo tanto, el escáner activo no se ejecuta continuamente.
Esto es una gran cosa en un ambiente doméstico.
Esto permite:
- limitar la carga de la red;
- evitar exploraciones agresivas;
- no perturbar determinados objetos sensibles de la IoT;
- mantener un enfoque discreto.
Para un laboratorio muy dinámico o una red profesional, este valor podría reducirse.
Pero para una casa conectada, el valor predeterminado es muy razonable.
🚪 Puertos para escanear
La lista proporcionada por defecto se puede mantener.
Contiene los puertos más comunes.
El propósito del escáner no es realizar un escaneo de seguridad ofensivo integral, sino más bien:
- identificar el equipo;
- detectar los servicios expuestos;
- cartografiar la red;
- alimentar las correlaciones de seguridad.
En mi caso, no cambié nada.
🚫 Escáner Excepciones
Este campo permite excluir algunas IP de los análisis activos.
Por defecto, puede permanecer vacío.
Sin embargo, esta característica puede ser útil para:
- equipos frágiles;
- determinadas impresoras;
- objetos IoT no robustos;
- equipos industriales;
- dispositivos que son muy sensibles a los escaneos de red.
En mi entorno, ningún equipo requería exclusión.
📛 Habilitar resolución DNS inversa
Es evidente que esta opción merece ser activada.
Permite transformar IPs de bajo sonido en nombres de host mucho más legibles.
Por ejemplo, en lugar de mostrar:
192.168.1.42
El Asistente de Seguridad en el Hogar a veces puede mostrar:
nas.maison.local printer.local apple-tv.local
Esto mejora en gran medida:
- legibilidad;
- análisis de los acontecimientos;
- identificación rápida de los equipos.
🧠 Flujo Inteligencia Amenazas
Las URLs ofrecidas por defecto pueden ser retenidas.
Home Security Assistant descarga automáticamente varias listas de reputación y bloqueo de fuentes reconocidas:
- Abuse.ch;
- SSLBL;
- AdGuard;
- otros flujos comunitarios.
Estos flujos se utilizan para:
- identificar IP maliciosas;
- identificación de zonas sospechosas;
- detectar determinados comportamientos conocidos;
- alertas de seguridad de alimentación.
Este es uno de los aspectos más interesantes de la integración: Enriquece automáticamente los datos de red recopilados localmente con inteligencia externa.
🌍 Proxy DNS
En mi caso, esta opción permaneció deshabilitada.
El proxy DNS permitiría al Asistente de seguridad para el hogar:
- interceptar solicitudes de DNS;
- llevar un diario de los dominios consultados;
- aplicar el bloqueo de DNS;
- llevar a cabo un análisis más detallado.
Pero esto implica:
- privilegios de red más elevados;
- una arquitectura más intrusiva;
- dependencia adicional.
Para un primer despliegue doméstico, preferí mantenerme simple y estable.
🔢 puerto proxy DNS
53
Valor estándar del protocolo DNS.
Como el proxy DNS permanece deshabilitado, este parámetro no tiene impacto.
☁ Resoluciones DNS ascendentes
1.1.1.1
Cloudflare se utiliza aquí como un resolutor de DNS aguas arriba.
Este valor se puede reemplazar según las preferencias:
- DNS de Google;
- Quad9;
- AdGuard DNS;
- Pi-agujero;
- Local sin consolidar.
En mi caso, mantuve el valor propuesto.
🗃 Retención registro DNS
24 horas
Este valor define cuánto tiempo permanecen almacenados los registros DNS.
Para un entorno doméstico:
- 24 horas ya proporcionan buena visibilidad;
- esto limita el consumo de memoria;
- esto evita la acumulación innecesaria de datos.
Una conservación más prolongada podría ser relevante en un contexto profesional o forense.

🚫 Fuentes amenaza-inteligencia utilizadas para el bloqueo
Este campo permite definir qué fuentes de inteligencia se utilizarán para alimentar los mecanismos de bloqueo.
En mi caso, lo dejé vacío. Siempre prefiero comenzar en modo observador antes de automatizar las contramedidas.
Categorías DNS bloqueadas ⛔
Este campo permite bloquear ciertas categorías de dominios:
- adultos;
- juegos de azar;
- programas maliciosos;
- seguimiento;
- phishing;
- etc.
Una vez más, lo dejé vacío para este primer despliegue.
Esta característica se puede activar más tarde, una vez que se entiende el comportamiento normal de la red.
Ya uso Safe Access integrado en mi router Synology para filtrar el equipo utilizado por mis hijas.
Lo hace a través de una interfaz gráfica muy agradable. Veremos más adelante si también vengo aquí para hacer el bloqueo de DNS.
Ÿ Redirecciones de DNS locales
Esta característica permite que algunos dominios sean redirigidos a IPs específicas.
Por ejemplo:
monservice.local=192.168.1.10
o bien:
ads.example.com=0.0.0.0
En mi caso, no fue necesaria ninguna redirección. Por lo tanto, el campo ha permanecido vacío.
🦠 Creo una cuenta VirusTotal y obtengo mi clave API
VirusTotal enriquece la información de seguridad con datos de reputación sobre IP, dominios, URL o archivos sospechosos.

Para usarlo con Home Security Assistant, debe crear una cuenta gratuita en:
https://www.virustotal.com


Una vez conectado:
Perfil de usuario → Clave API
VirusTotal indica que la clave API pública está disponible en el menú de la cuenta de usuario una vez iniciada la sesión. Esta clave debe permanecer privada y, obviamente, nunca debe publicarse en un artículo, una captura de pantalla o un repositorio Git.

Asistente en el hogar:
Configuración → Dispositivos y servicios → Asistente de seguridad para el hogar → Configurar
Luego relleno el campo:
clave API VirusTotal
Luego mantuve el presupuesto diario propuesto:
500
Para mi uso doméstico, esto es más que suficiente.
El objetivo no es consultar constantemente VirusTotal, sino solo enriquecer elementos sospechosos para comprender mejor lo que detecta Home Security Assistant.
🚨 Creo una cuenta AbuseIPDB y obtengo mi clave API
AbuseIPDB complementa VirusTotal muy bien.

Cuando VirusTotal da una reputación global, AbuseIPDB es particularmente útil para identificar direcciones IP conocidas para:
- exploraciones de la red;
- los intentos de uso de la fuerza bruta;
- conducta abusiva;
- actividades maliciosas reportadas por la comunidad.
Por lo tanto, estoy creando una cuenta gratuita en:
https://www.abuseipdb.com

Una vez conectado:
Cuenta → API → Crear clave

Le doy un nombre a la clave, por ejemplo:
Asistente de seguridad para el hogar
Luego copio la clave API generada.

Al igual que con VirusTotal, esta clave debe permanecer estrictamente privada. AbuseIPDB también señala que las claves API no deben ser divulgadas públicamente.
Asistente en el hogar:
Configuración → Dispositivos y servicios → Asistente de seguridad para el hogar → Configurar
Luego relleno el campo:
Abuso de la clave API de IPDB
Mantuve el presupuesto diario:
1000
Y dejé el umbral de confianza AbuseIPDB antes de consultar VirusTotal en un valor razonable.
El principio es interesante: Si AbuseIPDB considera una IP suficientemente sospechosa, Home Security Assistant puede enriquecer el análisis con VirusTotal.
Esto evita:
- llamadas API innecesarias;
- consumo excesivamente rápido de cuotas;
- y enriquecimientos en PI perfectamente banales.
🧠 ¿Por qué añado estos dos servicios?
Inicialmente, Home Security Assistant ve principalmente:
- PI;
- los flujos;
- volúmenes de tráfico;
- comportamiento de la red.
Con VirusTotal y AbuseIPDB, esta información se vuelve mucho más legible.

En lugar de simplemente tener:
P.I. sospechosa: 185.xxx.xxx.xxx
Home Security Assistant puede enriquecer la información con elementos de reputación:
- IP ya notificada;
- puntuación de confianza;
- categoría de amenaza;
- historial de descripciones;
- contexto de seguridad.
Para una instalación doméstica, esto permite una mejor comprensión de lo que se observa, sin automatizar inmediatamente los bloqueos.
Y ese es exactamente el enfoque que prefiero:
- observar en primer lugar;
- entender a continuación;
- Automatizar solo si es realmente necesario.
🎯 Confidence AbuseIPDB antes de la consulta VirusTotal
Este control deslizante define desde qué puntuación de AbuseIPDB una IP se considerará lo suficientemente sospechosa como para desencadenar una consulta de VirusTotal.
El principio es inteligente:
- evitar llamadas innecesarias;
- reducir el consumo de API;
- Priorice las IP genuinamente sospechosas.
🧹 Retención de PI propias
5 horas
Las IP consideradas normales se mantienen por un corto tiempo.
Esto es consistente:
- el tráfico legítimo es extremadamente grande;
- no es necesario conservarlo durante demasiado tiempo;
- ahorra memoria y almacenamiento.
⚠ Retención de IP sospechosas
48 horas
Los PI sospechosos permanecen visibles durante más tiempo para:
- facilitar el análisis;
- identificar comportamientos repetitivos;
- correlacionar ciertos eventos.
Este valor me parece especialmente relevante para el uso doméstico.
☠ Retención de PI malintencionadas
168 horas
O bien:
7 días
Las IP identificadas como genuinamente maliciosas se mantienen mucho más tiempo.
Esto permite:
- identificar ataques repetidos;
- hacer un seguimiento de determinados intentos persistentes;
- para mantener una historia explotable.
Para una Raspberry Pi doméstica, este valor sigue siendo razonable.
Caché enriquecimiento TTL 🧠
1440 minutos
O bien:
24 horas
Este parámetro evita el reexamen de los servicios de inteligencia externos en todo momento.
Esto permite:
- limitar las llamadas a la API;
- reducir la carga;
- hacer que la integración sea más fluida;
- evitar determinados bloqueos relacionados con las cuotas.
Una vez más, el valor predeterminado está muy bien pensado.

📊 Daily Virus consulta presupuestoTotal
500
Esta configuración limita el número de solicitudes diarias enviadas a VirusTotal.
📈 Presupuesto diario de las solicitudes de AbusoIPDB
1000
La misma lógica aquí. Este parámetro establece el número máximo de consultas a AbuseIPDB.
🗃 URL de la API NVD
https://services.nvd.nist.gov/rest/json/cves/2.0
Esta URL apunta a la base de datos oficial de NVD:
Base de datos nacional de vulnerabilidades
gestionado por el NIST americano.
Es uno de los puntos de referencia mundiales para:
- vulnerabilidades de CVE;
- puntuaciones del CVSS;
- referencias de seguridad;
- seguimiento de las deficiencias públicas.
Home Security Assistant puede usar esta base de datos para:
- identificar los productos vulnerables;
- correlacionar determinados equipos;
- identificar los riesgos potenciales.
Obviamente, la URL predeterminada debe conservarse.
NVD Cache TTL ⏳
12:00
Esta configuración define la frecuencia con la que se actualiza la información de CVE.
Una actualización demasiado frecuente:
- aumentaría innecesariamente el tráfico;
- consumir más recursos;
- no aportaría ningún beneficio real.
El valor propuesto representa un compromiso excelente.
📅 Año mínimo VEC
2020
Esta opción es particularmente interesante.
Limita el análisis a vulnerabilidades recientes.
¿Por qué es útil?
Porque la base de datos CVE contiene decenas de miles de entradas históricas.
Sin embargo, en un entorno doméstico:
- las vulnerabilidades muy antiguas suelen ser menos pertinentes;
- los equipos recientes se ven más afectados por las VEC modernas;
- Esto reduce en gran medida el ruido.
Por lo tanto, el valor de 2020 es coherente:
- conserva varios años de historia;
- sin sobrecargar innecesariamente el sistema.
🔍 Palabras clave de búsqueda NVD
Este campo contiene una lista de productos y servicios que deben supervisarse en las bases de datos de CVE:
OpenSSH Android Debug Bridge Apache HTTP Server nginx MySQL MariaDB ...
Esta lista permite al Asistente de seguridad para el hogar:
- identificar determinadas tecnologías presentes en la red;
- buscar vulnerabilidades asociadas;
- para generar alertas contextualizadas.
Acerca a Home Assistant a una lógica de:
- gestión de vulnerabilidades;
- inventario de superficie de ataque;
- higiene ciberdoméstica.
En mi caso, mantuve la lista propuesta por defecto.
Ya cubre muchos servicios frecuentemente presentes en laboratorios domésticos y entornos auto-alojados.
📉 Statistics (Estadísticas de ): mostrar las primeras N entradas
El cursor le permite elegir cuántos elementos se mostrarán en las estadísticas y paneles.
Por ejemplo:
- los principales PI activos;
- Fuentes sospechosas;
- puertos más utilizados;
- vulnerabilidades detectadas;
- Actividades importantes de la red.
El valor intermedio por defecto propuesto está muy bien equilibrado:
- información suficiente para ser útil;
- sin sobrecargar la interfaz del Home Assistant.
✅ Validación de la configuración final
Una vez que se valida esta última página, Home Security Assistant se vuelve completamente operativo.

Unos minutos después de comenzar, los primeros indicadores ya están comenzando a aparecer en Home Assistant.
Este es probablemente uno de los momentos más satisfactorios del proyecto:
finalmente ver la red doméstica cobrar vida como datos de seguridad utilizables.
Después de:
- configuración del puerto del espejo;
- la instalación de Suricata;
- recogida de los flujos de la red;
- la configuración softflowd;
- integración en Home Assistant;
el sistema finalmente está empezando a producir una visión coherente de la actividad de la red doméstica.
Aquí están, por ejemplo, los primeros sensores que aparecieron unos momentos después de la puesta en marcha:
- Dispositivos activos HSA : número de equipos activos detectados en la red;
- HSA Fuentes de Alto Egreso : fuentes que generan un volumen inusualmente alto de tráfico saliente;
- HSA NVD Palabras clave : palabras clave y tecnologías supervisadas en la base de datos de vulnerabilidades de NVD;
- Hallazgos abiertos de la HSA : alertas y elementos de seguridad actualmente abiertos;
- Dispositivos escaneados HSA : número de equipos analizados por el escáner activo;
- Fuentes sospechosas de HSA : fuentes de la red consideradas sospechosas de acuerdo con las normas de detección y los flujos de inteligencia;
- Flujos totales de HSA : número total de flujos de red observados;
- Vulnerabilidades de la HSA : vulnerabilidades detectadas o correlacionadas a partir de la información recopilada.
En mi caso, los números comenzaron a subir muy rápidamente. Antes de escribir esta página, dejé que el sistema funcionara de la noche a la mañana:
- más de 150 000 flujos de red detectados;
- más de 60 equipos activos;
- docenas de vulnerabilidades identificadas;
- varias fuentes consideradas sospechosas.
Y aquí es precisamente donde el proyecto se vuelve emocionante.
De repente nos damos cuenta de cuánta actividad genera una red doméstica moderna:
- objetos conectados;
- asistentes de voz;
- teléfonos inteligentes;
- NAS;
- servicios en la nube;
- Televisores conectados;
- servicios de streaming;
- contenedores;
- domótica.
Incluso en un entorno personal, la superficie de la red se vuelve rápidamente muy compleja.
Y eso es lo que Home Security Assistant finalmente hace visible.
Cambie el nombre de todos los sensores dándoles títulos en francés.

👀 Primeras impresiones después de la puesta en marcha
Por ahora, la información en HA está limitada a números, así que fui a la interfaz HSA.
Lo que me llamó la atención de inmediato fue la cantidad de información disponible sin ninguna configuración compleja adicional.
Muy rápidamente, Home Assistant mostró:
- aparatos activos;
- volúmenes de tráfico;
- IP sospechosas;
- importantes intercambios de redes;
- estadísticas de seguridad legibles;
- los inicios de la correlación de amenazas.
Lo más importante es que todo esto se integra directamente en el ecosistema de automatización del hogar existente.
Esto es probablemente lo que hace que este proyecto sea particularmente interesante: llevar mecanismos avanzados de ciberseguridad a un entorno de Home Assistant, sin tener que desplegar una infraestructura profesional pesada y compleja.
El resultado es a la vez:
- pedagógica;
- visual;
- útil;
- evolutiva.
En esta etapa, estoy muy feliz y extremadamente curioso por continuar con el descubrimiento de Home Security Assistant.
Ni siquiera puedo imaginar cuánto tiempo pasó el domo-monstruo haciendo este trabajo, que, una vez configurado, se ilumina y cobra vida casi por sí solo.
La pantalla Mapa es vivo, legible y realmente impresionante de observar.
Francamente: Felicidades.

🎯 Conclusión
Esta arquitectura proporciona una capa real de visibilidad de la red:
- sin complicar la instalación;
- sin cambiar el tráfico;
- sin depender del router.
La pareja:
- Interruptor manejable + puerto de espejo + Raspberry Pi
proporciona una base excelente para construir un SDI doméstico de alto rendimiento y totalmente local.
Y sobre todo:
- el análisis sigue siendo completamente pasivo;
- Esto asegura una excelente estabilidad de la red.
Para un laboratorio de domótica avanzado o una red residencial moderna, es una solución particularmente elegante.
A partir de ahora me divierto mucho durante unos fines de semana … o noches de insomnio 😄
«Honestamente, no pensé que este RetEx se convertiría en un … tan largo y denso, pero al final lo hice.
Así que si has leído hasta ahora: Bravo 😅
Me detendré en este punto para este artículo, pero es muy probable que publique el resto con otros RetEx alrededor de Home Security Assistant y su operación diaria.
Y, por supuesto, termino con un gran agradecimiento a Monstruo de domo, lo que nos trae aquí en bandeja de plata el fruto de probablemente muchos años de experiencia e inversión en el campo de la ciberseguridad.
El resultado es realmente impresionante.

¿Una pregunta? ¿Necesitas ayuda?
He publicado un mensaje en el foro de la communaté francophone de Home Assistant, no dudes en utilizarlo para hacerme preguntas o aportar tu experiencia:



