
Proxy bastion SSH à confiance zéro avec gestion des clés basée sur Vault, application des politiques RBAC, enregistrement complet des sessions et interface TUI d’administration pour un accès auditable à l’infrastructure de production.
ZTTP est un proxy bastion SSH Zero-Trust auto-hébergé et durci, écrit en Golang, avec gestion des clés assurée par HashiCorp Vault, application des politiques RBAC, enregistrement complet des sessions et une TUI d'administration interactive — conçu pour les équipes qui ont besoin d'un accès auditable et zero-trust à leur infrastructure de production.
Les équipes d'ingénierie modernes ont besoin d'un moyen de donner aux développeurs le minimum d'accès nécessaire à l'exercice de leurs fonctions — ni plus, ni moins. La distribution traditionnelle de clés SSH est source d'erreurs : les clés sont partagées, oubliées sur des ordinateurs portables et révoquées des jours trop tard.
Le proxy SSH ZTTP résout ce problème en agissant comme l'unique porte zero-trust vers votre infrastructure :
| Problème | Solution ZTTP |
|---|---|
| Clés SSH partagées sur les ordinateurs portables | Les clés résident uniquement dans HashiCorp Vault — jamais sur disque |
| Aucune visibilité sur qui a fait quoi | Chaque frappe est enregistrée au format .ttyrec |
| Accès global à la production | Le moteur de politiques basé sur les rôles applique des règles par environnement |
| Aucun moyen d'arrêter une session active | Un point de terminaison gRPC kill-switch met fin à toute session en cours |
| Accès opaque pour les auditeurs | TUI d'administration avec relecture des sessions, journaux texte et journaux des actions d'administration |
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
Services d'infrastructure (Docker Compose) :
| Service | Objectif |
|---|---|
zttp-proxy | Le proxy bastion SSH ZTTP principal (binaire Golang) |
zttp-postgres | Base de données du plan de contrôle (utilisateurs, serveurs, politiques RBAC) |
zttp-vault | HashiCorp Vault — stocke les clés privées SSH |
zttp-nginx | Sert les installateurs CLI à l'adresse /release/ |
zttp-init-audit | Conteneur à exécution unique qui corrige les permissions des volumes |
.ttyrec avec des trames horodatéesServeur (hôte proxy) :
2224make (facultatif, mais recommandé)Développeur (client) :
ssh)git clone https://gitlab.com/Nihal799/zttp.git
cd zttp
cp .env.example .env
Modifiez .env et définissez au minimum :
PROXY_NODE_IP=<your-server-public-ip>
POSTGRES_PASSWORD=<a-strong-password>
VAULT_TOKEN=<a-strong-vault-token>
⚠️ Ne validez jamais votre fichier
.env. Il est listé dans.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
Cela compile de manière croisée les clients pour toutes les plateformes et met automatiquement à jour dist/install.sh et dist/install.ps1 avec l'URL du serveur correcte. Le conteneur Nginx sert ces fichiers à l'adresse http://<your-server-ip>:8555/.
curl -fsSL http://<proxy-ip>:8555/install.sh | bash
irm http://<proxy-ip>:8555/install.ps1 | iex
Une fois installé, connectez-vous à la passerelle ZTTP :
zttp
# or directly:
ssh -p 2224 <your-username>@<proxy-ip>
Vous serez accueilli par un écran de connexion au terminal. Après authentification, vous verrez une liste des serveurs auxquels vous êtes autorisé à accéder.
Toute la configuration se fait via des variables d'environnement (ou un fichier .env). Consultez .env.example pour la référence complète.