- Go 60.8%
- HTML 14.8%
- Python 12.9%
- Shell 5.4%
- CSS 3.1%
- Other 3%
| cliente-sec | ||
| clienteFIltroSImulado | ||
| controller | ||
| filtro | ||
| filtroRabbit | ||
| filtroVacio | ||
| FWs | ||
| schemes | ||
| scripts | ||
| servidorLocal | ||
| LICENSE | ||
| README.md | ||
Diseño e implementación de un prototipo de pasarela segura basada en ruptura de protocolo y separación de dominios de confianza
Trabajo de Fin de Grado - Grado en Ingeniería Informática, Universidade de Santiago de Compostela (Junio 2026).
Autora: Carla África Fernández-Posse López Tutores: María Purificación Cariñena Amigo, Bruno Seoane Lamata, Pedro Otero García
Descripción
Este repositorio contiene el código, certificados y scripts desarrollados para implementar y evaluar dos prototipos de pasarela de seguridad con ruptura de protocolo (basados en Spool y en RabbitMQ), orientados a tráfico HTTPS, conforme a la definición del CCN-STIC-302. Incluye también una implementación de referencia sin ruptura de protocolo y el conjunto de herramientas usadas para las pruebas de rendimiento y seguridad. Para más detalle sobre el diseño, la metodología y los resultados, consultar la memoria del TFG.
Estructura del repositorio
clienteFiltroSimulado/: certificados necesarios para enviar peticiones al servidor real suplantando al cliente de la pasarela, usados en pruebas de conexión directa (sin pasarela).cliente-sec/: certificados mTLS del cliente real, necesarios para autenticarse frente al Firewall Low / servidor de la pasarela.controller/: implementación del controlador (Go + Bubble Tea TUI) que permite configurar en tiempo real el servidor y cliente de la pasarela, y añadir/eliminar reglas en los cortafuegos OPNsense. Incluye los certificados mTLS necesarios para autenticarse con cada componente.filtro/: implementación principal de la pasarela con Spool. Contiene:client/- cliente de la pasarela, reenvía las peticiones al servidor real.server/- servidor de la pasarela, recibe las peticiones del cliente real.mtls/- certificados de la infraestructura PKI usada por ambos componentes.docker-compose.yml- despliegue conjunto de todos los componentes.
filtroRabbit/: misma arquitectura quefiltro/, pero usando RabbitMQ (protocolo AMQP) como mecanismo de ruptura de protocolo en lugar de un Spool.filtroVacio/: implementación de referencia sin ruptura de protocolo, usada para medir el coste en rendimiento de la pasarela. Solo dispone de un únicoserverque actúa como cliente y servidor a la vez, sin ninguna medida de seguridad adicional.FWs/: API keys generadas en los cortafuegos OPNsense (Firewall Low y Firewall High) del prototipo, usadas por el controlador para autenticarse contra su API REST.scripts/: herramientas de evaluación del prototipo y script de generación de certificados:- certGen.sh y cerGenPQC.sh son los scripts de generación de certificados
pruebas/carga/- scripts de prueba de carga/rendimiento (miden latencia, throughput y tasa de errores frente a distintos niveles de concurrencia).pruebas/carga/- scripts de generación de gráficas y las gráficas resultantes (las mismas incluidas en el capítulo de resultados de la memoria).pruebas/sec/- script de prueba de seguridad (simula los vectores de ataque descritos en la memoria: spoofing, DoS, inyección, path traversal, etc.).pruebas/carga/graficas/- gráficas resultadas de las pruebas de rendimientopruebas/carga/comparativas/- gráfica comparativa de la pérdida de rendimiento del Spool frente a la conexión directa con renegociación mTLS
servidorLocal/: servidor HTTPS destino (en Go) situado tras la pasarela, junto con el contenido web usado como servicio de prueba ("Refugio Colas y Bigotes") y los certificados mTLS necesarios.schemes/: diagramas de la estructura de la arquitectura de la pasarela.
Puesta en marcha
La configuración completa de la arquitectura física (Raspberry Pi CM4, cortafuegos OPNsense, generación de certificados, despliegue de contenedores, etc.) está documentada en el Apéndice C (Manuales técnicos) de la memoria. El Apéndice D (Manuales de usuario) describe el uso de la pasarela desde el punto de vista del cliente y del administrador (controlador).
Licencia
Código distribuido bajo licencia GNU GPL-3.0. Ver LICENSE.