Infraestructura segura y autohospedada: cómo la tengo montada (y por qué)
Introducción
Este artículo documenta cómo está planteada una infraestructura autohospedada con foco en seguridad, control y reducción deliberada de superficie de ataque. El enfoque se integra en un stack basado en reverse proxy, autenticación centralizada y monitorización activa, donde cada componente cumple una función clara y no existe confianza implícita entre capas.
No se trata de paranoia ni de complejidad gratuita, sino de asumir que cualquier servicio expuesto será tocado, escaneado o forzado en algún momento, y diseñar el sistema para resistir, avisar y desgastar al atacante.
Infraestructura básica
Authentik: el portero de la fiesta
- Punto central de autenticación para subdominios y servicios internos.
- Nada accede directamente a las aplicaciones sin pasar por identidad previa.
- Uso sistemático de 2FA y autenticación fuerte.
- Integración con llaves físicas (YubiKey) para eliminar ataques basados únicamente en credenciales.
La autenticación no se delega en cada servicio, se centraliza y se endurece.
Cloudflare: la muralla exterior
- Oculta la IP real del servidor.
- Filtrado automático de DDoS, bots y tráfico genérico no deseado.
- Reglas personalizadas por país, ASN y patrones habituales de abuso.
La mayor parte del ruido muere antes de tocar infraestructura propia.
CrowdSec: la segunda línea
- Bloqueo activo de escaneos, fuzzing y rutas comunes de ataque.
- Protección de tráfico que no pasa por Cloudflare o llega por rutas laterales.
- Integración directa con el reverse proxy.
- Volumen real de bloqueo mensual del orden de millones de eventos.
No actúa como parche, sino como parte del flujo normal de tráfico.
Gestión de datos sensibles
Contraseñas a nivel absurdo con KeePass
- Gestor de contraseñas principal.
- Contraseñas largas, únicas y sin reutilización.
- Base de datos cifrada y sincronizada entre dispositivos propios.
La idea no es memorizar, sino hacer inviable la adivinación.
Códigos 2FA con Aegis
- Aplicación open‑source y local.
- Base de datos cifrada.
- Sin dependencia de servicios externos.
El segundo factor no vive en la nube de terceros.
Syncthing: sincronización sin nube
- Sincronización cifrada punto a punto.
- Control total de nodos y versiones.
- Sin proveedores intermedios.
No existe el concepto de “restaurar desde otro”.
Monitorización y buenas prácticas
Wazuh: ojos en todas partes
- Servidor central autohospedado.
- Agentes en máquinas propias y entornos controlados.
- Alertas en tiempo real ante eventos sospechosos.
- Correlación y visibilidad sin depender de SaaS.
No se confía en que no pase nada: se vigila para saber cuándo pasa.
Revisión de logs
- Authentik, Cloudflare, Caddy y Wazuh revisados con regularidad.
- Las anomalías no se buscan manualmente: saltan solas.
Actualizaciones constantes
- Servicios siempre al día.
- Sin convivir con versiones obsoletas.
- Lo que no se mantiene, se elimina.
Políticas mínimas de seguridad en el reverse proxy (Caddy)
El reverse proxy no actúa únicamente como terminador TLS, sino como una capa defensiva activa:
- Geobloqueo local por allowlist, aplicado antes de servir contenido y sin depender exclusivamente del CDN.
- TLS estricto, sin negociación con versiones antiguas.
- Headers de seguridad coherentes y agresivos incluso en dominios inexistentes (HSTS, CSP, Permissions‑Policy, anti‑clickjacking).
- Catch‑all hostil por defecto para subdominios no definidos, evitando enumeración y fingerprinting.
- Métodos HTTP limitados y respuestas explícitas para tráfico no esperado.
- Integración nativa con CrowdSec y logging estructurado orientado a análisis, no a volumen.
- Endpoints de monitorización protegidos, incluso para health checks internos.
El proxy frontal está diseñado para frustrar reconocimiento, reducir superficie de ataque y filtrar antes de delegar.
Ejemplo práctico: acceso a Gitea
- Cloudflare filtra tráfico global y aplica reglas perimetrales.
- CrowdSec bloquea escaneos y comportamiento anómalo que llega al servidor.
- Caddy aplica geobloqueo, políticas HTTP y validaciones mínimas.
- Authentik exige identidad, 2FA y llave física.
- Gitea añade su propia autenticación y segundo factor.
El resultado es una cadena de obstáculos diseñada para frustrar y desgastar.
Resumen breve
Infraestructura basada en capas claras, sin confianza implícita y con fricción intencionada. La seguridad no es reactiva ni decorativa: es parte del diseño, está integrada y se mantiene activa en todo el flujo de acceso.