<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Zenarmor on Adur</title><link>https://adurrr.github.io/tags/zenarmor/</link><description>Recent content in Zenarmor on Adur</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Fri, 03 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://adurrr.github.io/tags/zenarmor/index.xml" rel="self" type="application/rss+xml"/><item><title>OPNsense: segmentación de red, VLANs y hardening</title><link>https://adurrr.github.io/p/opnsense-segmentaci%C3%B3n-de-red-vlans-y-hardening/</link><pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate><guid>https://adurrr.github.io/p/opnsense-segmentaci%C3%B3n-de-red-vlans-y-hardening/</guid><description>&lt;h2 id="backups-cifrados-nativos"&gt;Backups cifrados nativos
&lt;/h2&gt;&lt;p&gt;Perder la configuración de OPNsense después de horas de ajustes es el tipo de desastre que solo pasa una vez. Después de esa vez, se configuran los backups automáticos.&lt;/p&gt;
&lt;p&gt;OPNsense tiene un sistema de backup nativo que exporta toda la configuración en un archivo XML. Desde la versión 24.1, estos backups se pueden cifrar directamente desde la interfaz web.&lt;/p&gt;
&lt;h3 id="configuración-de-backups-cifrados"&gt;Configuración de backups cifrados
&lt;/h3&gt;&lt;p&gt;En &lt;strong&gt;System &amp;gt; Configuration &amp;gt; Backups&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ir a la sección &lt;strong&gt;Google Drive / Nextcloud&lt;/strong&gt; si se quiere backup remoto, o quedarse con el backup local.&lt;/li&gt;
&lt;li&gt;Marcar la casilla &lt;strong&gt;Encrypt backup&lt;/strong&gt; e introducir una contraseña de cifrado. Esta contraseña es independiente de las credenciales del sistema. Guardarla en un gestor de contraseñas, porque sin ella el backup es irrecuperable.&lt;/li&gt;
&lt;li&gt;En la sección de backup automático (&lt;strong&gt;Scheduled&lt;/strong&gt;), configurar la frecuencia. Un backup diario es razonable para la mayoría de entornos.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="backup-manual-desde-la-interfaz"&gt;Backup manual desde la interfaz
&lt;/h3&gt;&lt;p&gt;En &lt;strong&gt;System &amp;gt; Configuration &amp;gt; Backups&lt;/strong&gt;, el botón &lt;strong&gt;Download configuration&lt;/strong&gt; genera un XML con toda la configuración actual. Si se marcó la opción de cifrado, el archivo descargado estará cifrado con AES-256-CBC.&lt;/p&gt;
&lt;h3 id="backup-desde-la-consola"&gt;Backup desde la consola
&lt;/h3&gt;&lt;p&gt;Para automatizar backups desde la línea de comandos:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Exportar la configuración&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp /conf/config.xml /root/backup_&lt;span class="k"&gt;$(&lt;/span&gt;date +%Y%m%d&lt;span class="k"&gt;)&lt;/span&gt;.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Cifrar con OpenSSL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;openssl enc -aes-256-cbc -salt -pbkdf2 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -in /root/backup_&lt;span class="k"&gt;$(&lt;/span&gt;date +%Y%m%d&lt;span class="k"&gt;)&lt;/span&gt;.xml &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -out /root/backup_&lt;span class="k"&gt;$(&lt;/span&gt;date +%Y%m%d&lt;span class="k"&gt;)&lt;/span&gt;.xml.enc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Eliminar el archivo sin cifrar&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm /root/backup_&lt;span class="k"&gt;$(&lt;/span&gt;date +%Y%m%d&lt;span class="k"&gt;)&lt;/span&gt;.xml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Es recomendable copiar los backups cifrados a un almacenamiento externo: un NAS, un bucket S3, o incluso un repositorio Git privado (el XML cifrado es pequeño, unos pocos cientos de KB).&lt;/p&gt;
&lt;h3 id="restauración"&gt;Restauración
&lt;/h3&gt;&lt;p&gt;Para restaurar, ir a &lt;strong&gt;System &amp;gt; Configuration &amp;gt; Backups&lt;/strong&gt;, subir el archivo y, si está cifrado, introducir la contraseña. OPNsense aplica la configuración y reinicia los servicios afectados.&lt;/p&gt;
&lt;h2 id="asignación-de-ips-estáticas"&gt;Asignación de IPs estáticas
&lt;/h2&gt;&lt;p&gt;Hay dispositivos que necesitan tener siempre la misma IP: servidores, NAS, impresoras, cámaras de vigilancia. Se puede hacer de dos formas: configurando la IP fija en el propio dispositivo o, lo que es más limpio, asignando reservas DHCP en OPNsense.&lt;/p&gt;
&lt;h3 id="reservas-dhcp-la-forma-recomendada"&gt;Reservas DHCP (la forma recomendada)
&lt;/h3&gt;&lt;p&gt;En &lt;strong&gt;Services &amp;gt; DHCPv4 &amp;gt; [interfaz]&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ir a la sección &lt;strong&gt;DHCP Static Mappings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Añadir una nueva entrada con:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MAC Address&lt;/strong&gt;: la dirección MAC del dispositivo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IP Address&lt;/strong&gt;: la IP que se quiere asignar siempre.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hostname&lt;/strong&gt;: un nombre descriptivo.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La ventaja de hacerlo así es que la gestión queda centralizada en OPNsense. Si cambias de router mañana, los dispositivos no necesitan reconfigurarse.&lt;/p&gt;
&lt;h3 id="convención-de-rangos"&gt;Convención de rangos
&lt;/h3&gt;&lt;p&gt;Una convención que funciona bien para organizar la red:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Rango&lt;/th&gt;
 &lt;th&gt;Uso&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;.1&lt;/td&gt;
 &lt;td&gt;Gateway (OPNsense)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;.2 - .19&lt;/td&gt;
 &lt;td&gt;Infraestructura (switches, APs, NAS)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;.20 - .49&lt;/td&gt;
 &lt;td&gt;Servidores y servicios&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;.50 - .99&lt;/td&gt;
 &lt;td&gt;Dispositivos con IP fija (impresoras, cámaras)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;.100 - .254&lt;/td&gt;
 &lt;td&gt;Pool DHCP dinámico&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Esto hace que con solo ver la IP de un dispositivo ya sepas en qué categoría cae.&lt;/p&gt;
&lt;h2 id="zenarmor-sensei"&gt;Zenarmor (Sensei)
&lt;/h2&gt;&lt;p&gt;Zenarmor es un plugin de deep packet inspection (DPI) para OPNsense. Va más allá de lo que hacen Suricata o CrowdSec porque inspecciona el tráfico a nivel de aplicación: puede distinguir entre Netflix y YouTube, entre Telegram y WhatsApp, entre tráfico legítimo y aplicaciones potencialmente peligrosas.&lt;/p&gt;
&lt;h3 id="qué-hace-exactamente"&gt;Qué hace exactamente
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clasificación de tráfico por aplicación&lt;/strong&gt;: identifica más de 300 aplicaciones y protocolos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filtrado de contenido por categorías&lt;/strong&gt;: permite bloquear categorías enteras (gambling, malware, adult content) sin necesidad de mantener listas manualmente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis de tráfico cifrado (TLS)&lt;/strong&gt;: Zenarmor puede clasificar tráfico HTTPS sin descifrarlo, utilizando metadatos como SNI, JA3 fingerprints y patrones de conexión.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reporting detallado&lt;/strong&gt;: dashboards con el consumo por dispositivo, aplicación y categoría.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="instalación"&gt;Instalación
&lt;/h3&gt;&lt;p&gt;En &lt;strong&gt;System &amp;gt; Firmware &amp;gt; Plugins&lt;/strong&gt;, buscar &lt;code&gt;os-sunnyvalley&lt;/code&gt; e instalar. Tras la instalación, Zenarmor aparece en el menú principal.&lt;/p&gt;
&lt;p&gt;Al iniciar Zenarmor por primera vez, se ejecuta un asistente de configuración:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Modo de despliegue&lt;/strong&gt;: elegir &lt;strong&gt;Routed Mode&lt;/strong&gt; para inspeccionar todo el tráfico que pasa por OPNsense. El modo &lt;strong&gt;Bridge&lt;/strong&gt; es para casos específicos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Motor de base de datos&lt;/strong&gt;: Zenarmor usa una base de datos local para los logs. Para hardware modesto (N100), seleccionar &lt;strong&gt;SQLite&lt;/strong&gt;. Para hardware más potente, &lt;strong&gt;Elasticsearch&lt;/strong&gt; da mejor rendimiento en las consultas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interfaces a proteger&lt;/strong&gt;: seleccionar las interfaces LAN que se quieren inspeccionar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Política por defecto&lt;/strong&gt;: empezar con una política permisiva (solo monitorizar) y ajustar después de ver el tráfico real.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="configuración-de-políticas"&gt;Configuración de políticas
&lt;/h3&gt;&lt;p&gt;En &lt;strong&gt;Zenarmor &amp;gt; Policies&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Las políticas se aplican por interfaz o por grupo de dispositivos. Una configuración razonable:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Política general (LAN principal)&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bloquear categorías: Malware, Phishing, Cryptomining, C2 (Command &amp;amp; Control).&lt;/li&gt;
&lt;li&gt;Monitorizar pero permitir: Streaming, Social Media, Gaming.&lt;/li&gt;
&lt;li&gt;Permitir todo lo demás.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Política para IoT&lt;/strong&gt; (la crearemos con VLANs más adelante):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bloquear todo excepto los dominios necesarios para cada dispositivo.&lt;/li&gt;
&lt;li&gt;Los dispositivos IoT no deberían poder acceder a internet libremente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Política para invitados&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bloquear: P2P, Tor, VPN (para evitar bypass del filtrado).&lt;/li&gt;
&lt;li&gt;Limitar ancho de banda por dispositivo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="diferencia-con-suricata-y-crowdsec"&gt;Diferencia con Suricata y CrowdSec
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Característica&lt;/th&gt;
 &lt;th&gt;Suricata (IDS/IPS)&lt;/th&gt;
 &lt;th&gt;CrowdSec&lt;/th&gt;
 &lt;th&gt;Zenarmor&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Inspección&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Paquetes y firmas&lt;/td&gt;
 &lt;td&gt;Logs y patrones&lt;/td&gt;
 &lt;td&gt;Aplicación (DPI)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Qué detecta&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Exploits, malware, C2&lt;/td&gt;
 &lt;td&gt;Fuerza bruta, escaneos&lt;/td&gt;
 &lt;td&gt;Aplicaciones, categorías&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Bloqueo&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Por firma/regla&lt;/td&gt;
 &lt;td&gt;Por IP (ban temporal)&lt;/td&gt;
 &lt;td&gt;Por aplicación/categoría&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Recurso principal&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;CPU (alto)&lt;/td&gt;
 &lt;td&gt;CPU (bajo)&lt;/td&gt;
 &lt;td&gt;CPU (medio) + RAM&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Complementarios&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Sí&lt;/td&gt;
 &lt;td&gt;Sí&lt;/td&gt;
 &lt;td&gt;Sí&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Los tres se complementan. Suricata busca amenazas conocidas en el tráfico. CrowdSec detecta comportamientos maliciosos en los logs y comparte inteligencia. Zenarmor clasifica y filtra a nivel de aplicación. Usarlos juntos da una cobertura de seguridad difícil de superar en un equipo doméstico.&lt;/p&gt;
&lt;h2 id="deshabilitar-ssh-inseguro"&gt;Deshabilitar SSH inseguro
&lt;/h2&gt;&lt;p&gt;SSH es la forma habitual de acceder a la consola de OPNsense de forma remota. Pero la configuración por defecto tiene aspectos que conviene cambiar.&lt;/p&gt;
&lt;h3 id="configuración-segura-de-ssh"&gt;Configuración segura de SSH
&lt;/h3&gt;&lt;p&gt;En &lt;strong&gt;System &amp;gt; Settings &amp;gt; Administration&lt;/strong&gt;, sección SSH:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Deshabilitar el login de root por SSH&lt;/strong&gt;. Crear un usuario específico con acceso SSH y permisos de sudo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cambiar el puerto por defecto&lt;/strong&gt;. El puerto 22 es el primero que escanean los bots. Cambiar a un puerto alto (por ejemplo, 2222 o algo menos predecible).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deshabilitar autenticación por contraseña&lt;/strong&gt;. Usar exclusivamente claves SSH:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# En tu máquina local, generar un par de claves si no tienes uno&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh-keygen -t ed25519 -C &lt;span class="s2"&gt;&amp;#34;opnsense-admin&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Copiar la clave pública&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat ~/.ssh/id_ed25519.pub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start="4"&gt;
&lt;li&gt;Pegar la clave pública en el perfil del usuario en &lt;strong&gt;System &amp;gt; Access &amp;gt; Users &amp;gt; [usuario] &amp;gt; Authorized Keys&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;En la configuración SSH, desmarcar &lt;strong&gt;Permit Password Login&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="restricción-de-acceso-ssh-por-firewall"&gt;Restricción de acceso SSH por firewall
&lt;/h3&gt;&lt;p&gt;Crear una regla de firewall que solo permita SSH desde IPs específicas:&lt;/p&gt;
&lt;p&gt;En &lt;strong&gt;Firewall &amp;gt; Rules &amp;gt; LAN&lt;/strong&gt;, crear una regla:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Acción: Pass&lt;/li&gt;
&lt;li&gt;Protocolo: TCP&lt;/li&gt;
&lt;li&gt;Origen: alias con las IPs de administración&lt;/li&gt;
&lt;li&gt;Destino: This Firewall&lt;/li&gt;
&lt;li&gt;Puerto destino: el puerto SSH configurado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Y otra regla que bloquee SSH desde cualquier otro origen.&lt;/p&gt;
&lt;h2 id="vlans-segmentación-de-red"&gt;VLANs: segmentación de red
&lt;/h2&gt;&lt;p&gt;La segmentación con VLANs es probablemente el cambio más importante que se puede hacer en la seguridad de una red doméstica. Sin segmentación, una bombilla WiFi comprometida tiene acceso directo al NAS con las fotos familiares. Con VLANs, cada tipo de dispositivo vive en su propio segmento aislado.&lt;/p&gt;
&lt;h3 id="diseño-de-vlans"&gt;Diseño de VLANs
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;VLAN ID&lt;/th&gt;
 &lt;th&gt;Nombre&lt;/th&gt;
 &lt;th&gt;Subred&lt;/th&gt;
 &lt;th&gt;Propósito&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;10&lt;/td&gt;
 &lt;td&gt;Main&lt;/td&gt;
 &lt;td&gt;192.168.10.0/24&lt;/td&gt;
 &lt;td&gt;Dispositivos de confianza: portátiles, sobremesas, móviles personales&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;20&lt;/td&gt;
 &lt;td&gt;Guests&lt;/td&gt;
 &lt;td&gt;192.168.20.0/24&lt;/td&gt;
 &lt;td&gt;Dispositivos de invitados, sin acceso a la red interna&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;30&lt;/td&gt;
 &lt;td&gt;IoT&lt;/td&gt;
 &lt;td&gt;192.168.30.0/24&lt;/td&gt;
 &lt;td&gt;Dispositivos IoT: cámaras, sensores, bombillas, aspiradoras&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;40&lt;/td&gt;
 &lt;td&gt;Servers&lt;/td&gt;
 &lt;td&gt;192.168.40.0/24&lt;/td&gt;
 &lt;td&gt;Servidores, NAS, servicios auto-alojados&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;50&lt;/td&gt;
 &lt;td&gt;Management&lt;/td&gt;
 &lt;td&gt;192.168.50.0/24&lt;/td&gt;
 &lt;td&gt;Gestión de infraestructura: switches, APs, el propio OPNsense&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="creación-de-vlans-en-opnsense"&gt;Creación de VLANs en OPNsense
&lt;/h3&gt;&lt;p&gt;Para cada VLAN:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ir a &lt;strong&gt;Interfaces &amp;gt; Other Types &amp;gt; VLAN&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Crear una nueva VLAN:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Parent interface&lt;/strong&gt;: la interfaz física a la que se conecta el switch gestionable (por ejemplo, &lt;code&gt;igb1&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VLAN tag&lt;/strong&gt;: el ID de la tabla anterior (10, 20, 30, 40, 50).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Description&lt;/strong&gt;: el nombre de la VLAN.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ir a &lt;strong&gt;Interfaces &amp;gt; Assignments&lt;/strong&gt; y asignar cada VLAN como una nueva interfaz.&lt;/li&gt;
&lt;li&gt;Configurar cada interfaz:
&lt;ul&gt;
&lt;li&gt;Habilitar la interfaz.&lt;/li&gt;
&lt;li&gt;Asignar IP estática: la IP del gateway para esa subred (por ejemplo, &lt;code&gt;192.168.10.1/24&lt;/code&gt; para VLAN 10).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Configurar DHCP en &lt;strong&gt;Services &amp;gt; DHCPv4&lt;/strong&gt; para cada VLAN con su rango correspondiente.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="configuración-del-switch"&gt;Configuración del switch
&lt;/h3&gt;&lt;p&gt;El switch gestionable necesita configurarse para que entienda las VLANs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El &lt;strong&gt;puerto troncal&lt;/strong&gt; (trunk) que va a OPNsense debe ser &lt;strong&gt;tagged&lt;/strong&gt; para todas las VLANs (10, 20, 30, 40, 50).&lt;/li&gt;
&lt;li&gt;Los &lt;strong&gt;puertos de acceso&lt;/strong&gt; se configuran como &lt;strong&gt;untagged&lt;/strong&gt; en la VLAN correspondiente. Por ejemplo, el puerto donde se conecta un AP para invitados se pone untagged en VLAN 20.&lt;/li&gt;
&lt;li&gt;Si el AP soporta múltiples SSIDs con VLANs (como los Ubiquiti o TP-Link Omada), se puede crear un SSID por VLAN y el AP se encarga de tagear el tráfico.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="reglas-de-firewall-entre-vlans"&gt;Reglas de firewall entre VLANs
&lt;/h3&gt;&lt;p&gt;Este es el punto donde se define realmente la segmentación. Sin reglas de firewall, las VLANs comparten el mismo router y pueden comunicarse entre sí. Hay que crear reglas explícitas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Principio general&lt;/strong&gt;: denegar todo entre VLANs por defecto y permitir solo lo necesario.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VLAN 10 (Main)&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Acción&lt;/th&gt;
 &lt;th&gt;Origen&lt;/th&gt;
 &lt;th&gt;Destino&lt;/th&gt;
 &lt;th&gt;Puerto&lt;/th&gt;
 &lt;th&gt;Descripción&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;Main net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;Acceso completo a internet&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;Main net&lt;/td&gt;
 &lt;td&gt;Servers net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;Acceso a servicios internos&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Block&lt;/td&gt;
 &lt;td&gt;Main net&lt;/td&gt;
 &lt;td&gt;Management net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;No acceder directamente a gestión&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Block&lt;/td&gt;
 &lt;td&gt;Main net&lt;/td&gt;
 &lt;td&gt;IoT net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;Aislamiento de IoT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;VLAN 20 (Guests)&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Acción&lt;/th&gt;
 &lt;th&gt;Origen&lt;/th&gt;
 &lt;th&gt;Destino&lt;/th&gt;
 &lt;th&gt;Puerto&lt;/th&gt;
 &lt;th&gt;Descripción&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;Guests net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;80, 443, 53&lt;/td&gt;
 &lt;td&gt;Solo navegación web y DNS&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Block&lt;/td&gt;
 &lt;td&gt;Guests net&lt;/td&gt;
 &lt;td&gt;RFC1918&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;Sin acceso a redes internas&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;VLAN 30 (IoT)&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Acción&lt;/th&gt;
 &lt;th&gt;Origen&lt;/th&gt;
 &lt;th&gt;Destino&lt;/th&gt;
 &lt;th&gt;Puerto&lt;/th&gt;
 &lt;th&gt;Descripción&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;IoT net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;443, 8883&lt;/td&gt;
 &lt;td&gt;Solo HTTPS y MQTT para cloud&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;IoT net&lt;/td&gt;
 &lt;td&gt;IoT gateway&lt;/td&gt;
 &lt;td&gt;53&lt;/td&gt;
 &lt;td&gt;DNS&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Block&lt;/td&gt;
 &lt;td&gt;IoT net&lt;/td&gt;
 &lt;td&gt;RFC1918&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;Sin acceso a redes internas&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;VLAN 40 (Servers)&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Acción&lt;/th&gt;
 &lt;th&gt;Origen&lt;/th&gt;
 &lt;th&gt;Destino&lt;/th&gt;
 &lt;th&gt;Puerto&lt;/th&gt;
 &lt;th&gt;Descripción&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;Servers net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;80, 443, 53&lt;/td&gt;
 &lt;td&gt;Acceso a internet para actualizaciones&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;Servers net&lt;/td&gt;
 &lt;td&gt;Servers net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;Comunicación entre servicios&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Block&lt;/td&gt;
 &lt;td&gt;Servers net&lt;/td&gt;
 &lt;td&gt;Main net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;Los servidores no inician conexiones a Main&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;VLAN 50 (Management)&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Acción&lt;/th&gt;
 &lt;th&gt;Origen&lt;/th&gt;
 &lt;th&gt;Destino&lt;/th&gt;
 &lt;th&gt;Puerto&lt;/th&gt;
 &lt;th&gt;Descripción&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Pass&lt;/td&gt;
 &lt;td&gt;Management net&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;*&lt;/td&gt;
 &lt;td&gt;Acceso total (solo admins)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Para implementar la regla de bloqueo de redes RFC1918 (que cubre todas las subredes privadas), crear un alias en &lt;strong&gt;Firewall &amp;gt; Aliases&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nombre: &lt;code&gt;RFC1918&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Tipo: Network&lt;/li&gt;
&lt;li&gt;Contenido: &lt;code&gt;10.0.0.0/8&lt;/code&gt;, &lt;code&gt;172.16.0.0/12&lt;/code&gt;, &lt;code&gt;192.168.0.0/16&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este alias se usa como destino en las reglas de bloqueo para evitar que VLANs como Guests o IoT accedan a cualquier red interna.&lt;/p&gt;
&lt;h2 id="hardening-y-buenas-prácticas"&gt;Hardening y buenas prácticas
&lt;/h2&gt;&lt;h3 id="actualizaciones"&gt;Actualizaciones
&lt;/h3&gt;&lt;p&gt;Lo primero y lo más básico: mantener OPNsense actualizado. Las actualizaciones de seguridad se publican con regularidad y los parches se aplican rápido.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configurar notificaciones de actualización por email.&lt;/li&gt;
&lt;li&gt;Aplicar las actualizaciones en horarios de bajo uso.&lt;/li&gt;
&lt;li&gt;Antes de actualizar, hacer un backup (ya está automatizado si se siguió la primera sección).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="dns-sobre-tls-dot"&gt;DNS sobre TLS (DoT)
&lt;/h3&gt;&lt;p&gt;Configurar Unbound (el resolver DNS de OPNsense) para usar DNS sobre TLS:&lt;/p&gt;
&lt;p&gt;En &lt;strong&gt;Services &amp;gt; Unbound DNS &amp;gt; General&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Habilitar &lt;strong&gt;DNS over TLS&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;En &lt;strong&gt;Custom forwarding&lt;/strong&gt;, añadir servidores DNS que soporten DoT:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Quad9 (filtrado de malware incluido)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9.9.9.9@853#dns.quad9.net
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;149.112.112.112@853#dns.quad9.net
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Cloudflare
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1.1.1.1@853#cloudflare-dns.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1.0.0.1@853#cloudflare-dns.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto cifra las consultas DNS entre OPNsense y el resolver, evitando que el ISP vea qué dominios consulta cada dispositivo.&lt;/p&gt;
&lt;h3 id="deshabilitar-servicios-innecesarios"&gt;Deshabilitar servicios innecesarios
&lt;/h3&gt;&lt;p&gt;En &lt;strong&gt;System &amp;gt; Settings &amp;gt; Administration&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deshabilitar &lt;strong&gt;UPnP&lt;/strong&gt; salvo que sea estrictamente necesario (y aun así, limitarlo a interfaces específicas).&lt;/li&gt;
&lt;li&gt;Deshabilitar &lt;strong&gt;SNMP&lt;/strong&gt; si no se usa para monitorización.&lt;/li&gt;
&lt;li&gt;Revisar los plugins instalados y desinstalar los que no se usen.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="logging-centralizado"&gt;Logging centralizado
&lt;/h3&gt;&lt;p&gt;OPNsense puede enviar logs a un servidor syslog externo. Si se tiene un stack de monitorización (Grafana + Loki, o ELK), configurar el envío en &lt;strong&gt;System &amp;gt; Settings &amp;gt; Logging &amp;gt; Remote&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Servidor: la IP del servidor syslog.&lt;/li&gt;
&lt;li&gt;Protocolo: TCP con TLS si es posible.&lt;/li&gt;
&lt;li&gt;Facility: seleccionar qué logs enviar (firewall, sistema, IDS).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="auditoría-regular"&gt;Auditoría regular
&lt;/h3&gt;&lt;p&gt;Establecer una rutina de revisión:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Semanal&lt;/strong&gt;: revisar los logs de IDS/IPS y CrowdSec. Buscar patrones recurrentes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mensual&lt;/strong&gt;: revisar las reglas de firewall. ¿Hay reglas que ya no tienen sentido? ¿Se ha añadido algún dispositivo nuevo que necesita reglas específicas?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trimestral&lt;/strong&gt;: revisar los usuarios y permisos. ¿Sigue siendo necesario cada usuario? ¿Las claves SSH están vigentes?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En el tercer y último post de la serie repasaremos todo lo configurado, revisaremos la postura de seguridad en conjunto y veremos prácticas avanzadas.&lt;/p&gt;</description></item></channel></rss>