Broker MQTT
Broker MQTT empresarial en producción (
broker.gilman.pro) con dashboard de administración, monitoreo en tiempo real, certificados TLS/mTLS por dispositivo y panel de control web. Construido con Mosquitto, FastAPI, nginx y Docker.
Tabla de Contenidos
- Pruébalo ahora
- En cifras
- Arquitectura
- Protocolos Soportados
- Seguridad
- Funcionalidad
- Stack Tecnológico
- Casos de Uso
- Validación y Resultados
- Cómo probarlo
- Recursos
🚀 Pruébalo ahora
| Vía | Cómo |
|---|---|
| Artículo técnico | MQTT en producción: pruebas reales — la técnica detrás del broker explicada, con validación 16/16 |
| Test-Broker (web) | test-broker.gilman.pro — solicita un usuario temporal por correo (/solicitar, validez 24 h) y prueba el broker desde el navegador, sin instalar nada |
| Kit descargable | ⬇️ kit-pruebas-mqtt.rar — scripts de validación, certificados mTLS, instalador de Mosquitto, guía PDF y README paso a paso |
📖 Guía larga de uso y pruebas: README del kit (incluido en el .rar) · Artículo técnico: MQTT en producción: pruebas reales
📊 En cifras
| Métrica | Valor |
|---|---|
| Protocolos MQTT | 5 (TCP · WS · TLS · mTLS · WSS) |
| Lenguajes con ejemplos | 6 (CLI, Python, Node.js, ESP32/Arduino, navegador, WSS) |
| Validación en vivo | 16/16 pruebas superadas (5 conexiones + 10 comunicaciones cruzadas + intrusión bloqueada) |
| Pruebas CLI mosquitto | 4/4 PASS (PUB/SUB de ida y vuelta en todos los protocolos) |
| Auditoría web/API | 19/21 (90%) — 0 vulnerabilidades críticas |
| Métodos gestionables | 6 (activar/desactivar en vivo desde el panel, sin tocar configuración) |
| Monitoreo | Tiempo real vía WebSocket + watcher automático de servicios |
🏗️ Arquitectura
graph TB
subgraph "Internet"
CLI[Dispositivos IoT]
WEB[Navegador Web]
end
subgraph "Capa Segura (TLS)"
NGX[Nginx<br/>broker.gilman.pro]
end
subgraph "Plataforma"
BROKER["Broker MQTT<br/>TCP · WS · TLS · mTLS"]
DASH["Dashboard de Administración<br/>Monitoreo en tiempo real"]
WATCH["Watcher<br/>Supervisión de servicios"]
DB[("Base de datos<br/>SQLite")]
end
CLI -->|TCP / TLS / mTLS| BROKER
CLI -->|WSS| NGX
WEB -->|HTTPS| NGX
NGX --> BROKER
NGX --> DASH
DASH -->|WebSocket| WEB
DASH --- DB
BROKER --- DASH
WATCH --- BROKER
🔌 Protocolos Soportados
| Protocolo | Puerto | Puerto Interno | Uso | Guía |
|---|---|---|---|---|
| TCP | 14769 |
1884 |
Conexión estándar IoT | Ver |
| WebSocket | 14770 |
8083 |
Navegadores y aplicaciones web | Ver |
| TLS | 14771 |
8883 |
Conexión cifrada (certificado servidor) | Ver |
| mTLS | 14772 |
8884 |
Autenticación mutua (máxima seguridad) | Ver |
| WSS | 443 |
nginx → 8083 |
WebSocket seguro para producción | Ver |
[!TIP] Los 5 métodos de conexión son gestionables desde el panel: se activan o desactivan en vivo sin tocar configuración manual, y el broker regenera su configuración automáticamente.
🛡️ Seguridad
Autenticación multicapa y hardening:
- ✅ JWT con cookies HttpOnly + Secure + SameSite y roles granulares (admin, editor, lector) con permisos heredados
- ✅ Rate limiting por IP contra fuerza bruta en login (verificado: HTTP 429 + cooldown)
- ✅ TLS/mTLS con CA interna y certificados por dispositivo — intrusos sin certificado son bloqueados (verificado)
- ✅ Headers de seguridad: CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy
- ✅ CORS restrictivo con orígenes permitidos específicos · bloqueo de rutas sensibles (
.env, secretos) - ✅ Pentest automatizado integrado en el flujo de trabajo + logging completo para auditoría
- ✅ Cifrado en tránsito en todos los protocolos (TLS 1.2/1.3) · menor privilegio con permisos heredados
Resultados del pentest (2026-08-12): TLS válido + HSTS ✅ · SQLi/XSS bloqueados ✅ · anti-enumeración ✅ · API protegida (401/404) ✅ · sin archivos sensibles expuestos ✅ · 0 vulnerabilidades críticas.
⚙️ Funcionalidad
- ✅ Monitoreo en tiempo real vía WebSocket (clientes conectados, tráfico, tópicos)
- ✅ Gestión de usuarios MQTT completa desde la interfaz
- ✅ Emisión y revocación de certificados por dispositivo desde el panel (365 días de validez, flujo de revocación verificado)
- ✅ Activación/desactivación de métodos de conexión en vivo (TCP, WS, TLS, mTLS, WSS, anónimo)
- ✅ Regeneración automática de configuración del broker al cambiar métodos
- ✅ Watcher automático que supervisa y recupera servicios
🧰 Stack Tecnológico
| Capa | Tecnología |
|---|---|
| Broker | Eclipse Mosquitto 2.0.12 |
| Dashboard | Python FastAPI + Uvicorn |
| Base de datos | SQLite (ligera, sin dependencias externas) |
| Monitoreo | Servicio watcher en contenedor |
| TLS | nginx (terminación SSL) |
| Orquestación | Docker Compose (3 servicios) |
🎯 Casos de Uso
| Sector | Uso | Protocolo |
|---|---|---|
| Doméstico | Casa inteligente (sensores, iluminación, clima) | TCP/TLS |
| Industrial | Monitoreo de máquinas, calidad, alarmas | TCP/TLS |
| Vehicular | Fleet management (GPS, telemetría, OBD) | TCP/TLS |
| Salud | Telemedicina, signos vitales, historial clínico | TLS/mTLS |
| Agrícola | AgTech (riego inteligente, sensores de suelo, drones) | TCP/TLS |
| Seguridad | Acceso crítico con identidad verificable | mTLS |
| Web | Dashboards en navegador, alertas en tiempo real | WSS |
Ejemplo: Despliegue típico en planta industrial
Sensores de temperatura → TCP/TLS → Broker MQTT
Controladores de máquinas → mTLS → Broker MQTT
Panel de operadores → WSS → Dashboard en tiempo real
- Cada dispositivo recibe usuario/contraseña y, si es crítico, un certificado firmado por la CA interna
- El broker enruta los mensajes por tópicos jerárquicos (
planta/prensa/temperatura) - El dashboard muestra en vivo: dispositivos conectados, tráfico, alertas y logs
- Ante un incidente, se puede revocar el acceso de un dispositivo en segundos desde el panel
✅ Validación y Resultados
Infraestructura MQTT — 16/16 PASS (2026-08-12)
| Prueba | Resultado |
|---|---|
| Conexión TCP (14769) · WebSocket (14770) · WSS (443) · TLS (14771) · mTLS (14772) | ✅ 5/5 |
| Comunicación cruzada (10 combinaciones entre protocolos) | ✅ 10/10 |
| Intrusión mTLS (cliente sin certificado) | ✅ Bloqueado (SSLError) |
CLI mosquitto — 4/4 PASS (2026-08-12)
PUB/SUB de ida y vuelta con mosquitto_pub/mosquitto_sub 2.1.2: TCP test/cli ✅ · TLS test/cli-tls ✅ · mTLS test02/cli ✅ · WSS test/cli-wss ✅
Auditoría web/API — 19/21 (90%)
TLS + HSTS ✅ · validación de entrada y SQLi ✅ · anti-enumeración ✅ · API sin token → 401/404 ✅ · rate limiting activo (429) ✅ · headers ✅ · CORS ✅
[!NOTE] Los 2 casos no superados corresponden a credenciales de prueba rotadas en producción (medida de seguridad) y al rate limit de la propia prueba — no son vulnerabilidades.
Otras pruebas realizadas
- ✅ Ciclo completo desactivar → reactivar de los 6 métodos de conexión (sin errores, estado restaurado)
- ✅ Certificados: generación,
openssl verify, integridad de pares y revocación - ✅ WSS: HTTP 101 Switching Protocols (TLS 1.3) + PUB/SUB completo
- ✅ Pentest automatizado: headers, TLS 1.2/1.3, CORS, rate limiting
- ✅ Autenticación: login con los 3 roles, credenciales incorrectas rechazadas, JWT con expiración
🧪 Cómo probarlo
Opción 1 — Desde el navegador (sin instalar nada): entra a test-broker.gilman.pro/solicitar, solicita un usuario temporal (llega por correo, 24 h) y crea un cliente MQTT hacia broker.gilman.pro.
Opción 2 — Kit descargable: ⬇️ kit-pruebas-mqtt.rar — descomprime, pip install paho-mqtt y ejecuta:
cd broker
python3 publicador_password.py # TCP (14769)
python3 publicador_certificado.py # mTLS (14772)
python3 validador_completo.py # 16/16 pruebas
Opción 3 — CLI mosquitto (instalador incluido en el kit): suscriptor en una terminal, publicador en otra, con -h broker.gilman.pro -p 14769.
📖 El detalle completo (todos los lenguajes, protocolos, scripts y resultados) está en el README incluido dentro del kit, y la versión resumida en el artículo técnico.
📚 Recursos
| Documento | Contenido |
|---|---|
| Artículo técnico (blog) | La técnica detrás del broker, explicada paso a paso |
| Proyecto Test MQTT | Tester web para probar el broker desde el navegador |
| Kit de pruebas (.rar) | Scripts, certificados, instalador y guías (README incluido) |
- Producción:
https://broker.gilman.pro· WSS:wss://broker.gilman.pro/mqtt - Autor: Gilberto Castillo · [GitHub] · [LinkedIn]
Última actualización: 2026-08-12 · Estado: Producción activa · Versión: v4.0