
शून्य-विश्वास SSH बास्टियन प्रॉक्सी जिसमें Vault-आधारित कुंजी प्रबंधन, RBAC नीति प्रवर्तन, पूर्ण सत्र रिकॉर्डिंग, और उत्पादन बुनियादी ढांचे तक ऑडिट योग्य पहुंच के लिए एडमिन TUI शामिल है।
ZTTP एक सुदृढ़, स्व-होस्टेड ज़ीरो-ट्रस्ट SSH बास्टियन प्रॉक्सी है जो Golang में बनाया गया है, जिसमें HashiCorp Vault-समर्थित कुंजी प्रबंधन, RBAC नीति प्रवर्तन, पूर्ण सत्र रिकॉर्डिंग, और एक इंटरैक्टिव एडमिन TUI शामिल है — उन टीमों के लिए डिज़ाइन किया गया है जिन्हें उत्पादन अवसंरचना तक ऑडिट-योग्य, ज़ीरो-ट्रस्ट पहुँच की आवश्यकता होती है।
आधुनिक इंजीनियरिंग टीमों को डेवलपर्स को उनके काम करने के लिए आवश्यक न्यूनतम पहुँच देने का एक तरीका चाहिए — न अधिक, न कम। पारंपरिक SSH कुंजी वितरण त्रुटिप्रवण है: कुंजियाँ साझा हो जाती हैं, लैपटॉप पर भूल जाती हैं, और बहुत देर से रद्द की जाती हैं।
ZTTP SSH प्रॉक्सी आपकी अवसंरचना में एकल ज़ीरो-ट्रस्ट द्वार के रूप में कार्य करके इसे हल करता है:
| समस्या | ZTTP समाधान |
|---|---|
| लैपटॉप पर साझा की गई SSH कुंजियाँ | कुंजियाँ केवल HashiCorp Vault में रहती हैं — कभी डिस्क पर नहीं |
| किसने क्या किया, इसकी कोई दृश्यता नहीं | प्रत्येक कीस्ट्रोक .ttyrec प्रारूप में रिकॉर्ड किया जाता है |
| उत्पादन तक व्यापक पहुँच | भूमिका-आधारित नीति इंजन प्रति-पर्यावरण नियम लागू करता है |
| सक्रिय सत्र को रोकने का कोई तरीका नहीं | किल-स्विच gRPC एंडपॉइंट किसी भी लाइव सत्र को समाप्त करता है |
| ऑडिटरों के लिए अपारदर्शी पहुँच | सत्र प्लेबैक, टेक्स्ट लॉग, और एडमिन क्रिया लॉग के साथ एडमिन TUI |
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
इंफ्रास्ट्रक्चर सेवाएँ (Docker Compose):
| सेवा | उद्देश्य |
|---|---|
zttp-proxy | मुख्य ZTTP SSH बास्टियन प्रॉक्सी (Golang बाइनरी) |
zttp-postgres | कंट्रोल-प्लेन डेटाबेस (उपयोगकर्ता, सर्वर, RBAC नीतियाँ) |
zttp-vault | HashiCorp Vault — SSH निजी कुंजियाँ संग्रहीत करता है |
zttp-nginx | /release/ पर CLI इंस्टॉलर परोसता है |
zttp-init-audit | वॉल्यूम अनुमतियाँ ठीक करने वाला वन-शॉट कंटेनर |
.ttyrec प्रारूप में रिकॉर्ड किए जाते हैंसर्वर (प्रॉक्सी होस्ट):
2224 पर एक सार्वजनिक या LAN-सुलभ IPmake (वैकल्पिक, लेकिन अनुशंसित)डेवलपर (क्लाइंट):
ssh कमांड)git clone https://gitlab.com/Nihal799/zttp.git
cd zttp
cp .env.example .env
.env को संपादित करें और न्यूनतम रूप से सेट करें:
PROXY_NODE_IP=<your-server-public-ip>
POSTGRES_PASSWORD=<a-strong-password>
VAULT_TOKEN=<a-strong-vault-token>
⚠️ अपनी
.envफ़ाइल को कभी कमिट न करें। यह.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
यह सभी प्लेटफ़ॉर्म के लिए क्लाइंट्स को क्रॉस-कंपाइल करता है और dist/install.sh तथा dist/install.ps1 को सही सर्वर URL के साथ स्वतः अपडेट करता है। Nginx कंटेनर इन्हें http://<your-server-ip>:8555/ पर सर्व करता है।
curl -fsSL http://<proxy-ip>:8555/install.sh | bash
irm http://<proxy-ip>:8555/install.ps1 | iex
इंस्टॉल होने के बाद, ZTTP गेटवे से कनेक्ट करें:
zttp
# or directly:
ssh -p 2224 <your-username>@<proxy-ip>
आपको एक टर्मिनल लॉगिन स्क्रीन प्रस्तुत की जाएगी। प्रमाणीकरण के बाद, आपको उन सर्वरों की सूची दिखाई देगी जिन तक पहुँचने के लिए आप अधिकृत हैं।
सभी कॉन्फ़िगरेशन पर्यावरण चर (या .env फ़ाइल) के माध्यम से किए जाते हैं। पूर्ण संदर्भ के लिए .env.example देखें।
| चर | डिफ़ॉल्ट | विवरण |
|---|---|---|
PROXY_LISTEN_ADDR | 0.0.0.0:2222 | SSH प्रॉक्सी बाइंड पता |
HTTP_LISTEN_ADDR | 0.0.0.0:8080 | हेल्थ चेक HTTP पता |
GRPC_LISTEN_ADDR | 0.0.0.0:9090 | किल-स्विच gRPC पता |
PROXY_NODE_IP | 127.0.0.1 | CLI बाइनरीज़ में एम्बेड किया गया बाहरी IP |
DATABASE_URL | postgres://zttp:... | PostgreSQL कनेक्शन स्ट्रिंग |
VAULT_ADDR | http://localhost:8201 | Vault सर्वर URL |
VAULT_TOKEN | dev-root-token-zttp | Vault रूट टोकन (केवल dev — प्रोडक्शन में AppRole का उपयोग करें) |
MAX_FAILED_ATTEMPTS | 5 | लॉकआउट सीमा |
LOCKOUT_DURATION | 15m | खाता लॉकआउट की अवधि |
RATE_LIMIT_PER_MIN | 10 | प्रति IP प्रति मिनट अधिकतम लॉगिन प्रयास |
AUDIT_LOG_DIR | /var/log/zttp/audit | सत्र रिकॉर्डिंग निर्देशिका का पथ |
SOC_WEBHOOK_URL | (खाली) | SOC अलर्टिंग के लिए वैकल्पिक वेबहुक |
ZTTP एक भूमिका-आधारित मॉडल का उपयोग करता है। प्रत्येक उपयोगकर्ता को एक भूमिका सौंपी जाती है; प्रत्येक भूमिका की एक नीति होती है जो परिभाषित करती है कि वह किन सर्वर पर्यावरणों तक पहुँच सकती है।
| भूमिका | पहुँच |
|---|---|
security-admin | सभी पर्यावरणों तक पूर्ण पहुँच + Admin Console |
sre-tier1 | प्रोडक्शन सहित सभी पर्यावरण |
sre-tier2 | केवल स्टेजिंग और डेवलपमेंट |
dev | केवल डेवलपमेंट पर्यावरण |
readonly | डेवलपमेंट पर्यावरण, प्रतिबंधित कमांड सेट |
भूमिकाएँ और सर्वर असाइनमेंट Admin Console (नीचे देखें) के माध्यम से प्रबंधित किए जाते हैं। RBAC इंजन सभी जाँचें एक ही PostgreSQL क्वेरी में करता है — यह क्लाइंट को कभी उजागर नहीं करता कि पहुँच क्यों अस्वीकृत हुई (गणना सुरक्षा)।