Contactar →
01

La postura por defecto

Todo lo demás en esta página es una variación de una sola regla: el tráfico entre redes gestionadas se deniega por defecto, y cada excepción es una regla explícita y nombrada — un origen, un destino, un puerto. Nada es alcanzable porque dos cosas compartan red; es alcanzable porque existe una regla para exactamente ese flujo en el router.

Eso se aplica al propio router, no solo a lo que pasa a través de él. El acceso directo se limita a conexiones ya establecidas, los dos túneles VPN, el acceso admin desde una allow-list explícita, e ICMP — todo lo demás se descarta antes incluso de considerarse.

Entrada permitida al routerOrigenPuerto / protocolo
Establecidas/relacionadas/no rastreadasConexiones existentescualquiera
WireGuard (wg-corp)WANudp, no publicado
WireGuard (wg-admin)WANudp, no publicado
Acceso adminadmin-access-nets22, 80, 443/tcp
ICMPcualquier ruta aceptadaicmp

Todo lo demás: descartado — primero el tráfico inválido, después un descarte de entrada por defecto.

El tráfico saliente no está tan cerrado: las redes gestionadas tienen egress general a internet por diseño, porque CI necesita descargar dependencias y los hosts necesitan llegar a los servidores de actualizaciones, y poner en allow-list cada destino legítimo no compensaba el coste. El tráfico entrante es una allow-list estricta; el saliente es una excepción deliberada a esa misma regla.

Nada es alcanzable porque dos cosas compartan red. Es alcanzable porque una regla para exactamente ese flujo quedó escrita.

Eso es el perímetro de red. Cada host también aplica su propia base mínima, antes de que se confíe en él para ejecutar nada: SSH solo con clave, sin login como root, sin fallback a contraseña — el mismo bootstrap por el que pasa cada máquina en /operations, aplicado tanto por consistencia como por seguridad.

Ruta de decisión del router: conexión establecida → regla de permiso explícita → drop.
02

Entrar en remoto

El acceso remoto corre sobre dos túneles WireGuard separados en lugar de una sola VPN con niveles de permisos: wg-corp para uso normal, wg-admin para administración de la infraestructura. Ninguno se une a una VLAN directamente — un dispositivo que se conecta recibe una dirección en un overlay enrutado, y el router filtra sobre esa dirección exactamente igual que haría con cualquier otra red.

La separación tiene que ver tanto con quién está al otro lado como con a qué puede llegar. Colaboro con gente que no soy yo, y wg-corp es por donde se conectan — llega a las herramientas internas y nada más allá de eso. wg-admin es el único camino al control plane de la infraestructura, y ningún colaborador lo tiene nunca. Un dispositivo comprometido en wg-corp no puede llegar a una consola de hipervisor; ese es todo el sentido de la separación.

Un peer es un dispositivo, no una persona — mi móvil y mi portátil son dos peers separados aunque los dos sea «yo», que es justo lo que hace precisa la revocación: pierdes un dispositivo, desactivas un peer, todo lo demás sigue funcionando. Si alguna vez se sospecha que una clave está comprometida, la respuesta siempre es un peer nuevo, nunca reutilizar el antiguo.

Access model
wg-corp  → internal apps        allowed as needed
wg-corp  → Proxmox / router     denied by default

wg-admin → management systems   allowed as needed
wg-admin → internal apps        allowed only when useful

Direccionamiento ilustrativo a continuación — no son los rangos reales.

TúnelSubredEndpointPropósito
wg-corp10.20.30.0/24Un único endpoint WAN, no publicadoAcceso remoto normal — apps internas, dashboards, documentación
wg-admin10.20.99.0/24Un único endpoint WAN, no publicadoAcceso privilegiado — Proxmox, router, switch, iDRAC

Merece la pena señalarlo: un handshake de WireGuard exitoso solo significa que el dispositivo llegó al router — no dice nada sobre qué se le permite hacer a partir de ahí. Eso está deliberadamente estratificado en capas, no reducido a una sola comprobación:

CapaDecide
WireGuardSi el dispositivo puede siquiera construir el túnel cifrado
Rutas del cliente (AllowedIPs)Qué redes de destino llegan siquiera a entrar en el túnel
Firewall del routerQué combinaciones de origen/destino/puerto están permitidas
DNSQué nombres resuelven a direcciones internas, para empezar
Auth de la aplicaciónSi el usuario ya autenticado puede usar la app a la que llegó

Esa última fila es el traspaso a la siguiente sección — un túnel VPN pone al dispositivo en el camino correcto, es la capa de aplicación la que decide si la persona al otro lado es de verdad quien dice ser.

Dispositivo remoto → router → enrutado y firewall → redes permitidas.
03

Quién eres una vez dentro

Existen dos proveedores de identidad y los dos funcionan hoy, por motivos distintos. Authentik es el objetivo a largo plazo — todo en esta plataforma está pensado para acabar autenticándose a través de él. Zitadel existe por un motivo más concreto y de cara al futuro: está listo para cuando una app expuesta al público necesite su propia capa de identidad, con soporte multi-tenant real (usuarios, proyectos y configuración aislados por organización) integrado desde el principio.

Lo que de verdad sigue en curso es qué servicios están realmente detrás del SSO de Authentik — hoy eso es el stack de observability, con MFA forzado por encima a través de una app autenticadora. El resto no es solo un problema de backlog: las integraciones de SSO de algunos servicios solo existen en un tier de pago, una limitación real sobre la velocidad del rollout, no simplemente algo que se dejó sin hacer. La identidad aquí es una pieza real y funcionando de la plataforma, y también una pieza sin terminar, y las dos cosas son ciertas a la vez.

ServicioQué esSe accede víaEstado
AuthentikProveedor de identidad principal — el objetivo a largo plazo para todoSolo proxy internoEn marcha; hoy el stack de observability, MFA vía app autenticadora
ZitadelProveedor de identidad secundario — multi-tenant, reservado para futuras apps públicasProxy públicoEn marcha; todavía sin uso en producción
El traspaso por capas: proxy → comprobación de SSO (si ya está conectado) → login → sesión.
04

Dónde viven los secrets

Infisical corre como un servicio real y accesible de gestión de secrets, solo interno — el objetivo es simple: dejar de guardar credenciales en texto plano dentro de archivos de config y compose repartidos por los hosts, y darles en su lugar un único hogar gestionado.

La migración es deliberada y está en curso, no terminada: decidir qué secrets se mueven, y luego actualizar lo que los consume para tratar Infisical como la fuente de verdad solo una vez que realmente lo es. Esto importa más justo donde más arriesgado es equivocarse — CI. Los build agents viven en su propio segmento de red aislado con reglas de salida estrictas y explícitas, y nada permite que un build comprometido llegue a nada del management plane.

Cómo consigue una credencial un deployment: la app se la pide a Infisical, y a ningún otro sitio.
05

Vigilando problemas

Seguridad y observability no son stacks separados aquí — el mismo monitoring que se cubre en /operations es también lo que primero notaría la mayoría de problemas relacionados con acceso. Las comprobaciones activas corren tanto desde fuera de la red como desde dentro, así que una mala configuración aparece independientemente de lo que reporte el pipeline de métricas. Las alertas van a un único teléfono, con las críticas disparándose más rápido y los avisos duplicados para el mismo host suprimidos — un problema real se oye una vez, alto y claro, no disperso por varios sistemas.

La carencia honesta: nada de esto es monitoring de seguridad construido a propósito. Hoy no hay alertas dedicadas para logins fallidos repetidos, actividad inusual de un peer VPN, o drift en las reglas del firewall — la observability general probablemente detectaría mucho de eso de forma incidental, pero «probablemente lo notaría» y «lo está vigilando explícitamente» son afirmaciones distintas, y esta página pretende seguir siendo honesta sobre cuál de las dos es realmente cierta.

06

Qué sigue abierto

Consolidando en un solo sitio la honestidad de cada sección anterior, porque enterrar las carencias entre cinco subsecciones anularía el sentido de tener esta página.

Sin ruta de recuperación probada

Hoy no hay ningún sistema de backup fuera del nodo para esta plataforma. Si algún host llega a estar tan comprometido que haya que reconstruirlo desde cero, no hay una ruta de restauración probada a la que recurrir — hoy recuperar significa reconstruir a partir de la documentación, no restaurar desde un backup conocido y bueno. Está registrado en /operations; se repite aquí porque es un hecho de seguridad tanto como operativo.

La adopción de SSO es parcial

Authentik y Zitadel funcionan los dos hoy, pero todavía no todo se autentica a través de ellos. El rollout es deliberado y está en curso, servicio a servicio.

La migración de secrets es parcial

Infisical es real y accesible, pero todavía no todas las credenciales de esta plataforma viven ahí — algunas siguen en archivos de config en los hosts, exactamente lo que Infisical existe para reemplazar.

Sin monitoring de seguridad dedicado

La observability general existe y es realmente útil, pero hoy no hay alertas construidas a propósito para anomalías de autenticación, actividad de peers VPN, o drift en las reglas del firewall.

Nada de esto está aquí para alarmar — una página de seguridad que solo listara lo que está bien cerrado y se saltara lo que no lo está sería marketing, no documentación. Ver /system para lo que está realmente desplegado, /operations para cómo se mantiene funcionando día a día.