Así decide Albgott quién tiene acceso.
No es un documento de políticas — son las reglas reales que una conexión tiene que superar antes de llegar a nada. /system cubre lo que está desplegado; esto es lo que decide quién puede tocarlo, trabajo en curso incluido.
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 router | Origen | Puerto / protocolo |
|---|---|---|
| Establecidas/relacionadas/no rastreadas | Conexiones existentes | cualquiera |
| WireGuard (wg-corp) | WAN | udp, no publicado |
| WireGuard (wg-admin) | WAN | udp, no publicado |
| Acceso admin | admin-access-nets | 22, 80, 443/tcp |
| ICMP | cualquier ruta aceptada | icmp |
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.
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.
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 usefulDireccionamiento ilustrativo a continuación — no son los rangos reales.
| Túnel | Subred | Endpoint | Propósito |
|---|---|---|---|
| wg-corp | 10.20.30.0/24 | Un único endpoint WAN, no publicado | Acceso remoto normal — apps internas, dashboards, documentación |
| wg-admin | 10.20.99.0/24 | Un único endpoint WAN, no publicado | Acceso 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:
| Capa | Decide |
|---|---|
| WireGuard | Si 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 router | Qué combinaciones de origen/destino/puerto están permitidas |
| DNS | Qué nombres resuelven a direcciones internas, para empezar |
| Auth de la aplicación | Si 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.
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.
| Servicio | Qué es | Se accede vía | Estado |
|---|---|---|---|
| Authentik | Proveedor de identidad principal — el objetivo a largo plazo para todo | Solo proxy interno | En marcha; hoy el stack de observability, MFA vía app autenticadora |
| Zitadel | Proveedor de identidad secundario — multi-tenant, reservado para futuras apps públicas | Proxy público | En marcha; todavía sin uso en producción |
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.
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.
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.
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.
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.
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.
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.