Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
qubes-mirage-firewall — Firewall unikernel mínimo para QubesOS que filtra el tráfico de red, implementa NAT y se comunica a través de Qubes DB y qrexec. | Kitploit
Herramientas/GitHubGitHub/mirage/qubes-mirage-firewall
Herramientas DefensivasControl de Acceso a la RedVirtualización de SeguridadSeguridad de Redes
GitHubmirage/qubes-mirage-firewall

qubes-mirage-firewall

Firewall unikernel mínimo para QubesOS que filtra el tráfico de red, implementa NAT y se comunica a través de Qubes DB y qrexec.

Ver Repositorio
239298hace 20 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

qubes-mirage-firewall

Un unikernel que puede ejecutarse como ProxyVM de QubesOS, reemplazando a sys-firewall. Utiliza la biblioteca mirage-qubes para implementar los protocolos de Qubes.

Consulte A Unikernel Firewall for QubesOS para más detalles.

Lanzamientos binarios

Los binarios precompilados están disponibles en la página de lanzamientos. Consulte la sección Deploy a continuación para las instrucciones de instalación.

Compilar desde el código fuente

Nota: La forma más fiable de compilar es usando Docker o Podman. Fedora 42 funciona bien para esto; Debian 12 también funciona, pero deberá seguir las instrucciones de docker.com para obtener Docker (no use la versión de Debian).

Cree una nueva AppVM Fedora-42 (o reutilice una existente). En los ajustes de la Qube (Basic / Disk storage), aumente el tamaño máximo de almacenamiento privado de los 2048 MiB predeterminados a 8192 MiB. Abra una terminal.

Clone este repositorio Git y ejecute el script build-with.sh con o como argumento (Nota: la llamada a es obligatoria en Fedora con las nuevas políticas de SELinux que no permiten mantener las imágenes de docker en el directorio personal de forma estándar):

docker
podman
chcon
root@kitploit:~
mkdir /home/user/docker
sudo ln -s /home/user/docker /var/lib/docker
sudo chcon -Rt container_file_t /home/user/docker
sudo dnf install docker
sudo systemctl start docker
git clone https://github.com/mirage/qubes-mirage-firewall.git
cd qubes-mirage-firewall
sudo ./build-with.sh docker

O

root@kitploit:~
sudo systemctl start podman
git clone https://github.com/mirage/qubes-mirage-firewall.git
cd qubes-mirage-firewall
./build-with.sh podman

Esto tardó unos 15 minutos en mi portátil (será mucho más rápido si lo vuelve a ejecutar). El paso del enlace simbólico al principio no es necesario si su VM de compilación es independiente. Le da a Docker más espacio en disco y evita perder la caché de imágenes de Docker cuando reinicia la Qube. No es necesario con Podman, ya que los contenedores viven en su directorio personal por defecto.

Nota: los archivos objeto se almacenan en el directorio _build para acelerar las compilaciones incrementales. Si cambia las dependencias, deberá eliminar este directorio antes de recompilar.

Está bien instalar el paquete de Docker o Podman en una VM plantilla si desea que permanezca después de un reinicio, pero la compilación del firewall en sí debe realizarse en una AppVM normal.

También puede compilar sin ese script, como para cualquier unikernel Mirage normal; consulte las instrucciones de instalación de Mirage para más detalles.

El script de compilación fija las versiones de las bibliotecas que utiliza, asegurando que obtendrá exactamente el mismo binario que está en el lanzamiento. Si compila sin él, se compilará contra las últimas versiones (y por lo tanto, el hash probablemente no coincidirá). Sin embargo, debería funcionar bien.

Deploy

Despliegue manual

Si desea realizar un despliegue manual, solo necesita descargar qubes-firewall.xen y qubes-firewall.sha256 en domU y comprobar que el archivo .xen tiene un hashsum correspondiente. qubes-firewall.xen es el unikernel en sí y debe copiarse a vmlinuz en el directorio /var/lib/qubes/vm-kernels/mirage-firewall en dom0, p. ej. (si dev es la AppVM donde lo compiló):

root@kitploit:~
[tal@dom0 ~]$ mkdir -p /var/lib/qubes/vm-kernels/mirage-firewall/
[tal@dom0 ~]$ cd /var/lib/qubes/vm-kernels/mirage-firewall/
[tal@dom0 mirage-firewall]$ qvm-run -p dev 'cat mirage-firewall/qubes-firewall.xen' > vmlinuz

Ejecute este comando en dom0 para crear una VM mirage-firewall usando el kernel mirage-firewall que añadió anteriormente

root@kitploit:~
qvm-create \
  --property kernel=mirage-firewall \
  --property kernelopts='' \
  --property memory=32 \
  --property maxmem=32 \
  --property netvm=sys-net \
  --property provides_network=True \
  --property vcpus=1 \
  --property virt_mode=pvh \
  --property audiovm='' \
  --label=green \
  --class StandaloneVM \
  mirage-firewall

qvm-features mirage-firewall qubes-firewall 1
qvm-features mirage-firewall no-default-kernelopts 1
qvm-features mirage-firewall skip-update 1

Despliegue mediante saltstack

Si sabe cómo ejecutar estados de salt en Qubes, también puede usar el script SaltScriptToDownloadAndInstallMirageFirewallInQubes.sls para desplegar automáticamente la última versión de mirage firewall en su Qubes OS. Puede encontrar una introducción aquí y aquí. Siguiendo las instrucciones del primer enlace, puede ejecutar el script en dom0 con el comando sudo qubesctl --show-output state.apply SaltScriptToDownloadAndInstallMirageFirewallInQubes saltenv=user. El script comprueba el checksum del servidor de integración y lo compara con la última versión proporcionada en los lanzamientos de github. Puede ser necesario ajustar las plantillas de VM en el script que se utilizan para la descarga del unikernel de mirage, si sus plantillas predeterminadas no tienen las herramientas curl y tar instaladas por defecto. Tampoco olvide cambiar las VMs en las que se debe usar el uni kernel o ajustar los "Qubes Global Settings".

Actualización

Para actualizar desde una versión anterior, simplemente sobrescriba /var/lib/qubes/vm-kernels/mirage-firewall/vmlinuz con la nueva versión y reinicie la VM del firewall.

Configurar AppVMs para usarlo

Puede ejecutar mirage-firewall junto con su sys-firewall existente y puede elegir qué AppVMs usan cada firewall mediante la GUI. Para configurar una AppVM para que lo use, vaya a los ajustes de la VM de la aplicación en la GUI y cambie su NetVM de default (sys-firewall) a mirage-firewall.

También puede configurarlo ejecutando este comando en dom0 (reemplace my-app-vm con el nombre de la AppVM):

root@kitploit:~
qvm-prefs --set my-app-vm netvm mirage-firewall

Alternativamente, puede configurar mirage-firewall como su VM de firewall predeterminada.

Tenga en cuenta que, por defecto, dom0 usa sys-firewall como su "UpdateVM" (un proxy para descargar actualizaciones). mirage-firewall no puede usarse para esto, pero cualquier VM Linux debería ser suficiente. https://www.qubes-os.org/doc/software-update-dom0/ dice:

El rol de UpdateVM puede asignarse a cualquier VM en Qubes VM Manager, y no hay implicaciones de seguridad significativas en esta elección. Por defecto, este rol se asigna a la firewallvm.

Configurar el firewall con netvm estilo OpenBSD

Actualmente OpenBSD no puede usarse como netvm, así que si desea usar un BSD como su VM sys-net, deberá establecer su netvm a qubes-mirage-firewall (consulte https://github.com/mirage/qubes-mirage-firewall/issues/146 para más información). Eso significa que tendrá AppVMs -> qubes-mirage-firewall <- OpenBSD con la flecha representando el ajuste de la propiedad netvm.

En ese caso, tendrá que indicar a qubes-mirage-firewall qué cliente AppVM debe usarse como uplink:

root@kitploit:~
qvm-prefs --set mirage-firewall -- kernelopts '--ipv4=X.X.X.X --ipv4-gw=Y.Y.Y.Y'

con X.X.X.X como dirección IP para mirage-firewall e Y.Y.Y.Y como dirección IP de su HVM OpenBSD.

Componentes

Este diagrama muestra los componentes principales (cada caja corresponde a un archivo fuente .ml con el mismo nombre):

Las tramas Ethernet llegan desde qubes cliente (como work o personal) o desde sys-net. Los paquetes de Internet (IP) se envían a firewall, que consulta la tabla NAT y las reglas de QubesDB para decidir qué hacer con el paquete. Si debe reenviarse, usa router para enviarlo al destino elegido. client_net vigila la base de datos XenStore proporcionada por dom0 para saber cuándo es necesario añadir o eliminar clientes.

El proceso de arranque:

  • config.ml describe las bibliotecas utilizadas y los ajustes de configuración estática (tamaño de la tabla NAT). La herramienta mirage usa esto para generar main.ml.
  • main.ml inicializa los controladores seleccionados por config.ml y llama a la función start en unikernel.ml.
  • unikernel.ml conecta los agentes de Qubes, configura los componentes de red y luego espera una solicitud de apagado.

Despliegue sencillo para desarrolladores

Para el desarrollo, use los scripts de test-mirage para desplegar el unikernel (qubes-firewall.xen) desde su AppVM de desarrollo. La primera vez requiere un poco más de configuración, pero después será mucho más rápido. Por ejemplo:

root@kitploit:~
[user@dev ~]$ test-mirage dist/qubes-firewall.xen mirage-firewall
Waiting for 'Ready'... OK
Uploading 'dist/qubes-firewall.xen' (7454880 bytes) to "mirage-test"
Waiting for 'Booting'... OK
Connecting to mirage-test console...
Solo5: Xen console: port 0x2, ring @0x00000000FEFFF000
            |      ___|
  __|  _ \  |  _ \ __ \
\__ \ (   | | (   |  ) |
____/\___/ _|\___/____/
Solo5: Bindings version v0.7.3
Solo5: Memory map: 32 MB addressable:
Solo5:   reserved @ (0x0 - 0xfffff)
Solo5:       text @ (0x100000 - 0x319fff)
Solo5:     rodata @ (0x31a000 - 0x384fff)
Solo5:       data @ (0x385000 - 0x53ffff)
Solo5:       heap >= 0x540000 < stack < 0x2000000
2022-08-13 14:55:38 -00:00: INF [qubes.rexec] waiting for client...
2022-08-13 14:55:38 -00:00: INF [qubes.db] connecting to server...
2022-08-13 14:55:38 -00:00: INF [qubes.db] connected
2022-08-13 14:55:38 -00:00: INF [qubes.db] got update: "/mapped-ip/10.137.0.20/visible-ip" = "10.137.0.20"
2022-08-13 14:55:38 -00:00: INF [qubes.db] got update: "/mapped-ip/10.137.0.20/visible-gateway" = "10.137.0.23"
2022-08-13 14:55:38 -00:00: INF [qubes.rexec] client connected, using protocol version 3
2022-08-13 14:55:38 -00:00: INF [unikernel] QubesDB and qrexec agents connected in 0.041 s
2022-08-13 14:55:38 -00:00: INF [dao] Got network configuration from QubesDB:
            NetVM IP on uplink network: 10.137.0.4
            Our IP on uplink network:   10.137.0.23
            Our IP on client networks:  10.137.0.23
            DNS resolver:               10.139.1.1
            DNS secondary resolver:     10.139.1.2
2022-08-13 14:55:38 -00:00: INF [net-xen frontend] connect 0
2022-08-13 14:55:38 -00:00: INF [net-xen frontend] create: id=0 domid=1
2022-08-13 14:55:38 -00:00: INF [net-xen frontend]  sg:true gso_tcpv4:true rx_copy:true rx_flip:false smart_poll:false
2022-08-13 14:55:38 -00:00: INF [net-xen frontend] MAC: 00:16:3e:5e:6c:00
2022-08-13 14:55:38 -00:00: INF [ethernet] Connected Ethernet interface 00:16:3e:5e:6c:00
2022-08-13 14:55:38 -00:00: INF [ARP] Sending gratuitous ARP for 10.137.0.23 (00:16:3e:5e:6c:00)
2022-08-13 14:55:38 -00:00: INF [ARP] Sending gratuitous ARP for 10.137.0.23 (00:16:3e:5e:6c:00)
2022-08-13 14:55:38 -00:00: INF [udp] UDP layer connected on 10.137.0.23
2022-08-13 14:55:38 -00:00: INF [dao] Watching backend/vif
2022-08-13 14:55:38 -00:00: INF [memory_pressure] Writing meminfo: free 20MiB / 27MiB (72.68 %)

Probar que el firewall funciona

Hay un unikernel que prueba el firewall disponible en el subdirectorio test/. Para usarlo, ejecute test.sh y siga las instrucciones para configurar el entorno de pruebas.

Avisos de seguridad

Consulte problemas etiquetados como "security" para ver los avisos de seguridad que afectan al firewall.

LICENCIA

Consulte LICENSE.md

Descargar herramienta