Volver a la wiki

Runbook · Endurecer firewall Hetzner: quitar whitelist de IPs personales y dejar admin solo por NetBird

Estado: propuesta, NO urgente. Ejecutar cuando baje el trabajo. Diseñado en s106 (03-06-2026). Toca acceso a PROD → consensuar y ejecutar con la consola de Hetzner verificada (lección footguns_ssh_lockout_s44).

Objetivo

Dejar de mantener la whitelist de IPs personales del staff en el firewall de Hetzner (hoy se autoriza un rango entero de la operadora de cada uno — allowlist amplio, frágil, cambia con la IP dinámica) y pasar la administración a solo NetBird, más estrecho y por identidad.

Aclaración técnica clave (no equivocarse)

Las IPs 100.x de NetBird NO se añaden al firewall de Hetzner: viajan cifradas dentro del túnel WireGuard; el firewall de borde nunca las ve. Doc oficial NetBird: “los peers no requieren puertos de entrada abiertos” (usan salida HTTPS 443 + UDP/STUN/TURN a Management/Signal/Relay). Por tanto:

End-state objetivo

⚠ Prerrequisitos OBLIGATORIOS (en este orden, lección s44)

  1. Verificar la consola de Hetzner DE VERDAD en cada servidor: es VNC web, la clave SSH no sirve → hace falta password de root puesta (o saber usar rescue mode). Probar el login por consola ANTES de quitar :22. Si no entras por consola, NO continuar.
  2. Confirmar SSH por NetBird funcionando para los 3 (Edu, Dani, Txell): ssh root@crearack-prod.netbird.cloud y ...staging....
  3. Regla 24 (acceso igualitario): si el salvavidas pasa a ser la consola de Hetzner y solo Edu la tiene, Dani/Txell se quedan sin red de seguridad si NetBird cae. Decidir: dar acceso a consola Hetzner a los 3, o asumir el riesgo explícitamente.
  4. No tocar :80/:443 (SaaS público) ni la salida.

Procedimiento (STAGE primero, luego PROD)

Firewall Hetzner = panel web o hcloud firewall. Cambio de acceso PROD → lo ejecuta Edu o Claude con Edu delante (feedback_consensuar_acciones_prod, feedback_prod_changes).

Fase 0 — preparar (sin cortar nada)

  1. Verificar consola Hetzner (prereq 1) en STAGE y PROD.
  2. En el panel NetBird: crear la ACL users → servers (TCP 22/8428/5432/3000, one-way) + posture check “última versión”. Dejar la “Default” activa todavía (no romper conectividad aún).
  3. (Opcional) habilitar SSH embebido NetBird en STAGE: netbird down && netbird up --allow-server-ssh y probar netbird ssh root@crearack-staging.

Fase 1 — STAGE 4. Auditar la regla actual: hcloud firewall describe <fw-stage> (o panel) — anotar la regla :22 con el rango de la operadora. 5. Quitar la regla :22 del firewall STAGE (dejar solo :80/:443). 6. Validar: los 3 hacen ssh root@crearack-staging.netbird.cloud (debe ir) · ssh root@178.104.131.173 (debe fallar/timeout — ya no hay :22 público) · el sitio STAGE responde en :443 · Dokploy/VM por NetBird OK. Confirmar consola Hetzner STAGE. 7. Desactivar la política “Default” de NetBird y dejar solo la ACL acotada. Re-validar acceso.

Fase 2 — PROD (solo si STAGE quedó perfecto, 24-48h después) 8. Repetir pasos 4-7 en PROD (<fw-prod>, crearack-prod.netbird.cloud, IP pública 116.203.31.166). 9. Validación final: SaaS público OK en crearack.com:443; admin solo por NetBird; :22 público muerto; consola Hetzner confirmada.

Rollback

Documentación a actualizar al ejecutar (Regla 24)

Por qué es mejor (resumen)

Un rango CGNAT de operadora = miles de IPs ajenas autorizadas. Cambiarlo por “túnel NetBird con ACL por identidad + posture check” reduce drásticamente la superficie y elimina el mantenimiento de IPs dinámicas. NetBird no necesita ningún puerto de entrada, así que no se añade superficie nueva.

Véase también

Subir