Saltar a contenido

03 aislamiento

Principio

SmallCountry no expone ningún servicio interno a Internet.
Todo acceso legítimo desde el exterior atraviesa un único punto de entrada: la malla NetBird, que redirige la autenticación a Authentik mediante OIDC (protocolo de autenticación OpenID Connect).
Una vez verificada la identidad, el tráfico se enruta internamente a través de Caddy como proxy inverso (intermediario que recibe peticiones y las deriva).
Pi-hole resuelve el DNS (servidor de nombres de dominio) local y la CA interna (autoridad certificadora propia) emite los certificados TLS (cifrado de comunicaciones) para el cifrado extremo a extremo.
Los servicios que requieren visibilidad pública se sirven desde un enclave externo, la Zona Cero, que recibe datos por sincronización unidireccional y no posee capacidad de conexión hacia el núcleo protegido.

Flujo de acceso desde el exterior

  1. **Conexión a la malla NetBird
    El usuario externo inicia la conexión a través del cliente NetBird.
    El único puerto abierto al exterior es el puerto UDP de NetBird.

  2. **Autenticación OIDC con Authentik
    NetBird redirige la autenticación a Authentik mediante OIDC.
    Authentik se sirve a través del proxy inverso del propio NetBird, sin exposición directa a Internet.
    Se valida la identidad, el segundo factor y los grupos del usuario.

  3. Establecimiento del túnel WireGuard
    Una vez autenticado, NetBird establece un túnel WireGuard entre el dispositivo externo y el núcleo de SmallCountry.

  4. Enrutamiento interno con Caddy
    Todo el tráfico de aplicación se enruta a través de Caddy, que actúa como proxy inverso interno.
    Caddy verifica la autenticación con Authentik mediante forward auth.
    El tráfico entre Caddy y los backends viaja cifrado con TLS, usando certificados emitidos por la
    CA interna**.

  5. Acceso a los servicios internos
    Los servicios internos (Forgejo, Nextcloud, Immich, etc.) solo son accesibles dentro de la malla.
    No tienen exposición directa a Internet.

La Zona Cero

Para los servicios que requieren visibilidad pública —blog, tienda, repositorio de ciencia abierta— SmallCountry utiliza un enclave externo aislado.

Propiedad Descripción
Ubicación Servidor externo (VPS o hardware dedicado) física y lógicamente separado del núcleo.
Sincronización Unidireccional push desde SmallCountry a través del túnel NetBird. La Zona Cero nunca inicia conexiones hacia el núcleo.
Credenciales La Zona Cero no posee credenciales ni capacidad de red para acceder a SmallCountry. Si se compromete, el núcleo sigue protegido.
Certificados Let's Encrypt automatizado en el servidor externo, independiente de la CA interna.

Defensa en profundidad

El perímetro único se apoya en múltiples capas de defensa coordinadas:

Capa Herramienta Función
Red Zero Trust (modelo de seguridad sin confianza implícita) NetBird Único punto de entrada, malla peer‑to‑peer, políticas de acceso.
Identidad y 2FA (autenticación en dos pasos) Authentik Federación OIDC, segundo factor obligatorio, segmentación por grupos.
Proxy inverso Caddy Enrutamiento interno, forward auth, TLS con CA interna.
DNS filtrado Pi-hole Resolución local, bloqueo de dominios maliciosos.
Firewall interno Proxmox VE Default Deny entre bridges, reglas explícitas como código.

Stack necesario

  • NetBird – Malla VPN (red privada virtual) Zero Trust, único puerto UDP abierto.
  • Authentik – Proveedor OIDC, 2FA, federación de identidad.
  • Caddy – Proxy inverso interno, forward auth, TLS.
  • Pi-hole – DNS local, filtrado de dominios.
  • CA interna – Emisión de certificados TLS (cifrado de comunicaciones) para el tráfico interno.
  • Zona Cero – Enclave externo con Caddy público, Let's Encrypt y sincronización push.
  • Proxmox VE – Firewall Default Deny entre bridges.

Relaciones con otros principios

Diagrama del flujo de acceso

graph TD
    subgraph Exterior [Exterior]
        direction TB
        U[Usuario remoto]
        Z[Zona Cero - servicios públicos]
    end

    subgraph Perimetro [Perímetro único]
        direction TB
        N[NetBird - Puerto UDP]
        A[Authentik - OIDC + 2FA]
    end

    subgraph Interno [Red interna]
        direction TB
        C[Caddy - Proxy inverso + TLS]
        P[Pi-hole - DNS local]
        CA[CA interna - Certificados]
        S1[Forgejo]
        S2[Nextcloud]
        S3[Immich]
    end

    U --> N
    N --> A
    A --> C
    C --> S1
    C --> S2
    C --> S3
    P --> C
    CA --> C

    Z -.->|Push unidireccional| N
    Z -.->|Sin acceso al núcleo| Interno

    style Exterior fill:#e1bee7,stroke:#8e24aa,color:#000
    style Perimetro fill:#90caf9,stroke:#1565c0,color:#000
    style Interno fill:#a5d6a7,stroke:#2e7d32,color:#000

Principio 2: Reconstruibilidad total   |   Principio 4: Segmentación de redes


Secciones relacionadas