Homelab SOC #10 - Incorporando OPNsense: Construyendo el perímetro del laboratorio


Hasta este momento nuestro laboratorio ya es capaz de recopilar eventos provenientes de equipos Windows y Linux mediante Wazuh.

Sin embargo, todos los equipos continúan compartiendo una topología relativamente simple y aún no existe ningún dispositivo encargado de proteger el perímetro de la red, controlar el tráfico entre segmentos o registrar las conexiones que posteriormente analizará nuestro SOC.

En una infraestructura empresarial, esa responsabilidad recae sobre un Firewall.

Por este motivo, en este capítulo incorporaremos OPNsense, una distribución basada en FreeBSD orientada a seguridad perimetral, ampliamente utilizada tanto en entornos profesionales como en laboratorios de ciberseguridad.

Con esta incorporación nuestro laboratorio comienza a evolucionar desde un conjunto de máquinas virtuales hacia una arquitectura mucho más cercana a la utilizada en organizaciones reales.


Objetivo de este capítulo

La pregunta que responderemos será:

¿Cómo incorporar un Firewall profesional a nuestro Homelab SOC para comenzar a segmentar la red y preparar el laboratorio para IDS/IPS?

Al finalizar este capítulo tendremos:

  • Firewall OPNsense instalado.
  • Dos interfaces de red correctamente configuradas.
  • Segmentación entre WAN y LAN.
  • Acceso a la interfaz Web.
  • Servidor DHCP funcionando.
  • El laboratorio preparado para incorporar Suricata.

Arquitectura del laboratorio

Hasta el capítulo anterior la infraestructura tenía un aspecto similar al siguiente.

                    HOMELAB SOC

               Arch Linux (Host)

                     │

              VirtualBox NAT

                     │

          ┌──────────┴──────────┐

          │                     │

     Debian (Wazuh)        Windows 11

Aunque funcional, toda la infraestructura dependía de la conectividad proporcionada por VirtualBox y no existía ningún elemento encargado de controlar el tráfico entre redes.

Después de este capítulo, la arquitectura evolucionará hacia el siguiente diseño.

                      Internet
                          │
                   NAT VirtualBox
                          │
                     WAN (em0)
                    OPNsense FW
                     LAN (em1)
                          │
                  Red LAN-SOC
                  192.168.1.0/24
                          │
      ┌──────────┬────────┴───────┐
      │          │                │
  Kali Linux   (Equipos)     Servidores

Este firewall será el encargado de actuar como puerta de enlace entre Internet y nuestra red interna, permitiendo posteriormente incorporar reglas, políticas, VPN, IDS/IPS y múltiples mecanismos adicionales de seguridad.


Descargando OPNsense

La imagen oficial puede descargarse directamente desde el sitio web del proyecto (https://opnsense.org/download/).

En la página de descargas seleccionamos:

  • System Architecture: amd64
  • Image Type: VGA
  • Mirror: el más cercano a nuestro país
¿Por qué utilizar la imagen VGA?

La distribución de OPNsense ofrece distintos formatos de descarga dependiendo del entorno donde será instalada.

Para VirtualBox, VMware, Hyper-V o Proxmox, la imagen VGA es la opción recomendada por el propio proyecto, ya que está diseñada para utilizar una consola gráfica durante el proceso de instalación.

Las imágenes Nano están orientadas a dispositivos embebidos, mientras que Serial está pensada para equipos administrados mediante consola serie.

Por este motivo utilizaremos la variante VGA.

Después de descargar el archivo obtendremos algo similar a:

OPNsense-26.7-vga-amd64.img.bz2

Una vez descomprimido tendremos:

OPNsense-26.7-vga-amd64.img

En este punto pensé que podía utilizar directamente dicha imagen como disco duro virtual de VirtualBox.

Sin embargo, descubriría más adelante que este enfoque no era el más adecuado.


Primer intento: convertir la imagen a VDI

Como VirtualBox no permite utilizar directamente archivos .img como disco virtual, decidí convertir la imagen utilizando la utilidad VBoxManage.

Convirtiendo la imagen a formato VDIzsh / user
VBoxManage convertfromraw \
OPNsense-26.7-vga-amd64.img \
OPNsense.vdi \
--format VDI

La salida obtenida fue similar a:

Converting from raw image...

Creating dynamic image...

2521 MB

Podemos comprobar posteriormente la información del disco utilizando:

Comprobando el disco virtualzsh / user
VBoxManage showhdinfo OPNsense.vdi

Obtendremos una salida similar a:

Capacity : 2520 MB
Storage format : VDI
Type : Dynamic

Hasta este punto ya disponemos de un disco virtual basado en la imagen descargada desde OPNsense.

Sin embargo, antes de crear la máquina virtual observé que el tamaño del disco apenas era de 2.5 GB, capacidad suficiente para arrancar el sistema Live, pero insuficiente para el laboratorio que construiremos más adelante.

Por ello, antes de continuar decidí ampliar el tamaño del disco virtual.


Ampliando el disco virtual

VirtualBox permite redimensionar discos dinámicos utilizando nuevamente VBoxManage.

Ampliando el disco virtualzsh / user
VBoxManage modifymedium OPNsense.vdi --resize 51200

Con ello el disco pasa a tener una capacidad de 50 GB, más que suficiente para las pruebas que realizaremos durante el laboratorio.

Podemos comprobar nuevamente el resultado ejecutando:

Verificando el nuevo tamañozsh / user
VBoxManage showhdinfo OPNsense.vdi

La salida mostrará algo similar a:

Capacity : 51200 MB

Storage format : VDI

Type : Dynamic

Aunque el tamaño lógico ahora es de 50 GB, el archivo continúa ocupando únicamente unos pocos gigabytes en disco gracias al formato dinámico de VirtualBox.


Creando la máquina virtual

Con el disco preparado procedemos a crear una nueva máquina virtual.

La configuración utilizada fue la siguiente:

ParámetroValor
NombreFirewallOPNsense
TipoBSD
VersiónFreeBSD (64-bit)
Memoria RAM4096 MB
Procesadores2
Imagen ISONinguna
DiscoOPNsense.vdi

En lugar de crear un disco nuevo, simplemente seleccionamos el disco virtual que acabamos de generar.

Posteriormente agregaremos una segunda interfaz de red para separar la WAN de la LAN.


Iniciando OPNsense

Al arrancar la máquina virtual aparece una pantalla solicitando autenticación.

El sistema ofrece dos posibilidades.

Usuario : root
Password : opnsense

para utilizar el sistema en modo Live.

O bien:

Usuario : installer

Password : opnsense

para iniciar el proceso de instalación.

Seleccionamos la segunda opción.

El instalador solicita inicialmente la distribución del teclado.

En mi caso simplemente acepté la configuración por defecto (US) y posteriormente seleccioné:

Install (ZFS)

Todo parecía ir perfectamente…

…hasta que apareció el primer problema.


Primer inconveniente

Después de seleccionar la instalación mediante ZFS, el instalador mostró el siguiente mensaje:

No disk(s) present to configure

Es decir, OPNsense no detectaba ningún disco donde realizar la instalación.

Después de revisar varias veces la configuración de la máquina virtual descubrí que el problema no estaba relacionado con ZFS, sino con la forma en que VirtualBox había conectado el disco.

El disco se encontraba conectado a un controlador IDE, mientras que FreeBSD esperaba encontrarlo mediante un controlador SATA (AHCI).


Cambiando el disco de IDE a SATA

La solución consiste simplemente en modificar el controlador de almacenamiento desde VirtualBox.

El procedimiento fue el siguiente:

  1. Desconectar el disco virtual del controlador IDE.
  2. Crear un nuevo controlador SATA (AHCI).
  3. Asociar nuevamente el disco OPNsense.vdi al nuevo controlador.

El lector de CD puede permanecer conectado al controlador IDE sin ningún inconveniente.

Una vez realizado este cambio reinicié nuevamente la instalación esperando que el problema hubiese quedado resuelto.

Sin embargo…

todavía quedaba un inconveniente más.


Un error mucho más interesante

Ahora el disco sí aparecía correctamente.

El instalador permitía seleccionarlo.

ZFS comenzaba el proceso de creación de particiones.

Pero finalmente aparecía un error similar a este:

Operation not permitted

Después de investigar bastante tiempo comprendí finalmente qué estaba ocurriendo.

En otras palabras… el procedimiento funcionaba técnicamente… pero nunca iba a permitir instalar OPNsense sobre ese mismo disco.


La solución correcta

Llegados a este punto decidí abandonar completamente este enfoque.

En lugar de seguir utilizando la imagen VGA (.img) regresé nuevamente a la página oficial de descargas para buscar otra alternativa.

Fue entonces cuando encontré la imagen de instalación tradicional:

OPNsense-26.7-dvd-amd64.iso

A diferencia de la imagen anterior, esta ISO está diseñada específicamente para arrancar el instalador desde un medio independiente y posteriormente copiar el sistema operativo hacia un disco duro completamente vacío.

Exactamente igual que ocurre con cualquier distribución de Linux.


Creando nuevamente la máquina virtual

Con la imagen ISO descargada decidí comenzar nuevamente desde cero.

Esta vez la configuración fue prácticamente la misma:

ParámetroValor
NombreOPNsense
TipoBSD
VersiónFreeBSD (64-bit)
Memoria RAM4096 MB
CPU2
Disco duroNuevo (50 GB dinámico)
Imagen ISOOPNsense-26.7-dvd-amd64.iso

Además, antes de iniciar la instalación aproveché para configurar las dos interfaces de red que utilizará el firewall:

  • Adaptador 1 → NAT de VirtualBox (WAN)
  • Adaptador 2 → Red Interna (LAN-SOC)

Con esta configuración ya estábamos listos para realizar la instalación definitiva de OPNsense.

Instalando OPNsense

Una vez iniciada la máquina virtual desde la imagen DVD, volvemos a autenticarnos utilizando el usuario destinado a la instalación.

Usuario : installer

Password : opnsense

El instalador solicitará inicialmente la distribución del teclado.

En mi caso mantuve la opción por defecto:

US

A continuación seleccionamos el sistema de archivos:

Install (ZFS)

Configurando ZFS

El asistente preguntará qué tipo de configuración deseamos utilizar para el almacenamiento.

Como el laboratorio utilizará un único disco virtual, seleccioné:

stripe (no redundancy)

Esta opción distribuye la información sobre un único disco sin proporcionar redundancia.

En un entorno de producción probablemente optaríamos por un esquema RAID con varios discos, pero para un laboratorio esta configuración resulta más que suficiente.

Después seleccionamos el disco:

ada0

El instalador mostrará una advertencia indicando que toda la información almacenada será eliminada.

WARNING

This operation will destroy all data on the selected disk.

Proceed?

YES

Confirmamos la instalación y esperamos unos minutos mientras OPNsense copia todos los archivos al nuevo disco.

opnsense-zfs-install.png


Finalizando la instalación

Una vez concluida la copia de archivos, el asistente ofrece la posibilidad de modificar la contraseña del usuario root.

Aunque este paso es opcional, recomiendo realizarlo inmediatamente para evitar mantener las credenciales por defecto.

Después simplemente seleccionamos:

Complete Installation

Reboot

Primer inicio

Después del reinicio iniciamos sesión utilizando la contraseña definida anteriormente.

La consola principal de OPNsense mostrará un menú similar al siguiente.

1) Assign Interfaces

2) Set interface IP address

3) Reset web GUI password

...

13) Reboot

14) Shutdown

A partir de este momento comenzaremos a configurar nuestro Firewall.

opnsense-inicio.png


Asignando las interfaces

El primer paso consiste en asignar correctamente las interfaces de red.

Seleccionamos:

1) Assign Interfaces

El asistente preguntará inicialmente si deseamos configurar:

LAGGs

Respondemos:

No

Posteriormente preguntará si deseamos configurar:

VLANs

Nuevamente respondemos:

No

Finalmente asignamos las dos interfaces físicas detectadas por el sistema.

El objetivo es obtener una topología similar a la siguiente.

                    Internet

                        │

                 NAT VirtualBox

                 WAN (em0)

                 10.0.2.15

                        │

                 OPNsense

                 192.168.1.1

                 LAN (em1)

                        │

                 Red LAN-SOC

                        │

                  Kali Linux

Una vez aplicada esta configuración el firewall ya es capaz de:

  • Obtener conectividad hacia Internet mediante la interfaz WAN.
  • Proporcionar direcciones IP mediante DHCP sobre la LAN.
  • Actuar como puerta de enlace para los equipos internos.

Un problema bastante curioso

Durante las primeras pruebas encontré un comportamiento bastante extraño.

Aunque VirtualBox tenía correctamente configuradas las dos tarjetas de red, OPNsense decidió asignarlas en el orden contrario.

El resultado era el siguiente.

Adaptador VirtualBoxOPNsense
Adaptador 1 (NAT)LAN
Adaptador 2 (LAN-SOC)WAN

Evidentemente esto impedía que el laboratorio funcionara correctamente.

Después de revisar varias veces la configuración descubrí que la solución era mucho más sencilla de lo que parecía.

Simplemente volví a ejecutar:

Assign Interfaces

y reasigné manualmente las interfaces.

La configuración final quedó de la siguiente forma.

InterfazAdaptadorFunción
em0Adaptador 1 (NAT)WAN
em1Adaptador 2 (LAN-SOC)LAN

Probando la red interna

Una vez corregidas las interfaces cambié la tarjeta de red de mi máquina Kali Linux para conectarla a la red interna:

LAN-SOC

Al iniciar nuevamente Kali obtuvo automáticamente una dirección IP mediante DHCP.

192.168.1.188

Con ello pude comprobar que:

  • El servidor DHCP funcionaba correctamente.
  • Existía conectividad entre Kali y el Firewall.
  • La interfaz LAN estaba operativa.

Accediendo a la interfaz Web

Una de las mayores ventajas de OPNsense es que prácticamente toda la administración puede realizarse desde una interfaz gráfica.

Desde Kali simplemente abrimos el navegador y accedemos a:

https://192.168.1.1

Introducimos las credenciales configuradas durante la instalación y aparecerá el Dashboard principal.

opnsense-login.png

A partir de aquí podremos comenzar la configuración inicial mediante el asistente integrado.


Estado actual del laboratorio

La incorporación de OPNsense supone un cambio importante en la arquitectura del Homelab SOC. Hasta ahora dependíamos exclusivamente de la red proporcionada por VirtualBox.

A partir de este momento disponemos de un firewall dedicado capaz de controlar el tráfico entre redes, aplicar políticas de seguridad y convertirse en el punto central de comunicación de toda la infraestructura.


¿Qué sigue?

Con el firewall ya instalado y funcionando correctamente, el siguiente paso será comenzar a inspeccionar el tráfico que circula por nuestra red.

En el próximo capítulo integraremos Suricata dentro de OPNsense para convertir nuestro firewall en un sistema IDS/IPS, capaz de detectar escaneos de puertos, intentos de explotación y otras amenazas en tiempo real.

Esta incorporación marcará un punto de inflexión en el laboratorio, ya que dejaremos de monitorizar únicamente los equipos para comenzar también a analizar el tráfico que circula entre ellos.


Lo aprendido

En este capítulo incorporamos el primer dispositivo de seguridad perimetral del Homelab SOC.

Más allá de la instalación de OPNsense, el proceso permitió comprender varios aspectos importantes relacionados con la virtualización y la arquitectura de un firewall moderno.

Durante el despliegue aprendimos la diferencia entre las imágenes Live (.img) y las imágenes de instalación DVD (.iso), resolvimos problemas relacionados con los controladores de almacenamiento de VirtualBox y configuramos correctamente las interfaces WAN y LAN para segmentar la red del laboratorio.

Con este nuevo componente dejamos atrás una infraestructura plana basada únicamente en máquinas virtuales y damos el primer paso hacia una arquitectura mucho más cercana a la utilizada en entornos empresariales.

A partir de ahora todo el tráfico del laboratorio atravesará OPNsense, convirtiéndolo en el punto ideal para aplicar políticas de seguridad, registrar conexiones y, en los próximos capítulos, incorporar capacidades de detección mediante Suricata.