
Proxy bastión SSH de confianza cero con gestión de claves respaldada por Vault, aplicación de políticas RBAC, grabación completa de sesiones y TUI de administración para acceso auditable a infraestructura de producción.
ZTTP es un proxy bastión SSH de confianza cero, autoalojado y reforzado, construido en Golang con gestión de claves respaldada por HashiCorp Vault, aplicación de políticas RBAC, grabación completa de sesiones y una TUI de administración interactiva — diseñado para equipos que necesitan acceso auditable de confianza cero a la infraestructura de producción.
Los equipos de ingeniería modernos necesitan una forma de dar a los desarrolladores el mínimo acceso necesario para realizar su trabajo — ni más, ni menos. La distribución tradicional de claves SSH es propensa a errores: las claves se comparten, se olvidan en los portátiles y se revocan días demasiado tarde.
El proxy SSH ZTTP resuelve esto actuando como la única puerta de confianza cero hacia tu infraestructura:
| Problema | Solución de ZTTP |
|---|---|
| Claves SSH compartidas en portátiles | Las claves residen únicamente en HashiCorp Vault — nunca en disco |
| Sin visibilidad de quién hizo qué | Cada pulsación de tecla se graba en formato .ttyrec |
| Acceso indiscriminado a producción | El motor de políticas basado en roles aplica reglas por entorno |
| Sin forma de detener una sesión activa | El endpoint gRPC de interrupción (kill-switch) termina cualquier sesión activa |
| Acceso opaco para los auditores | TUI de administración con reproducción de sesiones, registros de texto y registros de acciones administrativas |
Developer Laptop
│
│ zttp
│ (Under the hood: SSH over port 2224)
▼
┌─────────────────────────────────────────────────────────┐
│ ZTTP Proxy │
│ │
│ ① Auth Gate — bcrypt/Argon2id login TUI │
│ ② RBAC Engine — environment-aware policy check │
│ ③ Vault Fetch — ephemeral SSH key retrieval │
│ ④ Bridge — transparent TCP tunnel │
│ ⑤ Audit Writer — ttyrec frame recorder │
└──────────┬──────────────────────────────────────────────┘
│ ssh (private IP, ephemeral key)
▼
Target Server
Servicios de infraestructura (Docker Compose):
| Servicio | Propósito |
|---|---|
zttp-proxy | El proxy bastión SSH central de ZTTP (binario de Golang) |
zttp-postgres | Base de datos del plano de control (usuarios, servidores, políticas RBAC) |
zttp-vault | HashiCorp Vault — almacena las claves privadas SSH |
zttp-nginx | Sirve los instaladores de la CLI en /release/ |
zttp-init-audit | Contenedor de ejecución única que corrige los permisos de los volúmenes |
.ttyrec con fotogramas con marca de tiempoServidor (host del proxy):
2224make (opcional, pero recomendado)Desarrollador (cliente):
ssh)git clone https://gitlab.com/Nihal799/zttp.git
cd zttp
cp .env.example .env
Edita .env y configura como mínimo:
PROXY_NODE_IP=<your-server-public-ip>
POSTGRES_PASSWORD=<a-strong-password>
VAULT_TOKEN=<a-strong-vault-token>
⚠️ Nunca hagas commit de tu archivo
.env. Está listado en.gitignore.
make docker-up
# or directly:
docker compose -f deploy/docker-compose.yml up -d --build
make docker-ps
curl http://localhost:8080/healthz
make release PROXY_ADDR=<your-server-ip>:2224
Esto compila de forma cruzada los clientes para todas las plataformas y actualiza automáticamente dist/install.sh y dist/install.ps1 con la URL correcta del servidor. El contenedor Nginx sirve estos en http://<your-server-ip>:8555/.
curl -fsSL http://<proxy-ip>:8555/install.sh | bash
irm http://<proxy-ip>:8555/install.ps1 | iex
Una vez instalado, conéctese a la puerta de enlace ZTTP:
zttp
# or directly:
ssh -p 2224 <your-username>@<proxy-ip>
Se le presentará una pantalla de inicio de sesión de terminal. Tras la autenticación, verá una lista de servidores a los que está autorizado a acceder.
Toda la configuración se realiza mediante variables de entorno (o un archivo .env). Consulte .env.example para la referencia completa.