3 पॉइंट द्वारा GN⁺ 2023-12-25 | 1 टिप्पणियां | WhatsApp पर शेयर करें

HTTPS के जरिए SSH ट्रांसपोर्ट करना

  • SSH को HTTPS के जरिए ट्रांसपोर्ट करने के लिए क्लाइंट और सर्वर, दोनों तरफ समायोजन करना पड़ता है।
  • क्लाइंट कॉन्फ़िगरेशन उदाहरण में ~/.ssh/config फ़ाइल में ProxyCommand और ServerAliveInterval सेट किए जाते हैं।
  • इस्तेमाल की जाने वाली ~/.ssh/https-tunnel.bash स्क्रिप्ट CONNECT मेथड को हेडर के साथ भेजते हुए socat का उपयोग कर TLS कनेक्शन बनाती है।

सर्वर कॉन्फ़िगरेशन उदाहरण

  • Apache2 HTTPS सर्वर कॉन्फ़िगरेशन में proxy_connect_module लोड किया जाता है और AllowCONNECT निर्देश का उपयोग कर विशेष लक्ष्यों के लिए CONNECT HTTP मेथड की अनुमति दी जाती है।
  • सर्वर पक्ष में https-server पर केवल एकल लक्ष्य ssh-server होस्ट के लिए ही CONNECT मेथड उपयोग करने की अनुमति दी जाती है।

पृष्ठभूमि

  • अस्पताल में रहते हुए ऐसे अस्पताल Wi-Fi के जरिए रिमोट काम करना था, जहाँ अधिकतर कनेक्शन प्रकार ब्लॉक थे।
  • अस्पताल नेटवर्क केवल HTTP और HTTPS कनेक्शन की अनुमति देता है, और SSH पूरी तरह ब्लॉक है।
  • SSH को HTTP या HTTPS के जरिए ट्रांसपोर्ट करने के तरीकों की खोज।

संभावित तरीके

  • एक ही पोर्ट पर SSH और HTTPS प्रोटोकॉल को साथ होस्ट करके पारदर्शी रूप से बाँटने वाला sslh प्रोजेक्ट।
  • sslh प्रोटोकॉल को किसी दूसरे प्रोटोकॉल के भीतर एन्कैप्सुलेट नहीं करता, बल्कि विभिन्न heuristics का उपयोग कर सही बैकएंड तक रीडायरेक्ट करता है।
  • openssh के ProxyCommand निर्देश का उपयोग कर SSH प्रोटोकॉल को किसी दूसरे प्रोटोकॉल के भीतर पूरी तरह एन्कैप्सुलेट करने की विधि।

SSH over HTTP

  • सरल SSH over HTTP प्रयास के लिए Apache2 को इस तरह कॉन्फ़िगर किया जाता है कि CONNECT मेथड एकल लक्ष्य ssh-server:22 के लिए अनुमत हो।
  • क्लाइंट पक्ष को socat के उपयोग से आसानी से समायोजित किया जाता है।
  • ServerAliveInterval का उपयोग कर HTTP कनेक्शन को idle स्थिति में भी टूटने से बचाया जाता है।

SSH over HTTPS

  • socat HTTPS proxy को सपोर्ट नहीं करता, लेकिन TLS encapsulation को सपोर्ट करता है।
  • CONNECT आधारित मेथड को मैन्युअली लागू करना आसान है।
  • ~/.ssh/https-tunnel.bash स्क्रिप्ट का उपयोग कर SSH over HTTPS tunneling लागू की जाती है।

समापन

  • HTTPS की सर्वव्यापक मौजूदगी बहुत सीमित मध्यवर्ती डिवाइसों के जरिए भी डेटा ट्रांसपोर्ट करना संभव बनाती है।
  • CONNECT मेथड TCP payload stream को TLS host stream में रैप करने की एक उपयोगी हैक है।
  • ServerAliveInterval का उपयोग ऐसे निचले ट्रांसपोर्ट पर कनेक्शन बनाए रखने के लिए किया जाता है जो idle कनेक्शन के लिए अनुकूल नहीं हैं।

GN⁺ की राय

  • इस लेख की सबसे अहम बात यह है कि यह प्रतिबंधित नेटवर्क माहौल में भी SSH कनेक्शन संभव बनाने का एक रचनात्मक समाधान प्रस्तुत करता है।
  • SSH और HTTPS को संयोजित करने का तरीका नेटवर्क सुरक्षा से जुड़ी विशेषज्ञता रखने वाले लोगों के लिए खास तौर पर दिलचस्प हो सकता है।
  • ProxyCommand और ServerAliveInterval सेटिंग्स के जरिए नेटवर्क प्रतिबंधों को बायपास करने का तरीका नेटवर्क एडमिनिस्ट्रेटर या सुरक्षा विशेषज्ञों के लिए उपयोगी जानकारी देता है।

1 टिप्पणियां

 
GN⁺ 2023-12-25
Hacker News टिप्पणियाँ
  • नीदरलैंड्स के इंटरनेट प्रदाता XS4ALL ने पहले SSH एक्सेस को port 80 के जरिए उपलब्ध कराया था। यह फीचर होटल Wi‑Fi जैसी जगहों पर उपयोगी था, जहाँ दूसरे ports ब्लॉक कर दिए जाते थे.
  • HTTPS की सर्वव्यापक मौजूदगी बहुत सीमित मध्यवर्ती डिवाइसेज़ के जरिए भी डेटा ट्रांसफ़र करना संभव बनाती है। यही मुख्य कारण है कि SSL VPN कहलाने वाले proprietary VPN protocols, HTTPS के जरिए tunnel शुरू करने वाला mode implement करते हैं.
  • SSH को port 80 या 443 पर रखकर किसी दूसरे host के जरिए ProxyJump इस्तेमाल करने, या SOCKS के जरिए कम प्रतिबंधित इंटरनेट कनेक्शन पाने का तरीका भी है। DNS को TLS के जरिए SSH कनेक्शन पर forward करना भी संभव है.
  • Adaptive नाम की एक कंपनी HTTP3 के जरिए SSH और कई अन्य protocols उपलब्ध कराने वाला data security infrastructure बना रही है। इसके जरिए उपयोगकर्ता external ports के माध्यम से databases, servers और अन्य resources से जुड़ सकते हैं.
  • वास्तव में, ज़्यादातर firewalls को सिर्फ इस बात से bypass किया जा सकता है कि openssh port 443 पर listen कर रहा हो.
  • CONNECT method को forward proxy की बजाय reverse proxy की तरह सोचना दिलचस्प है। लेकिन केवल CONNECT काफ़ी नहीं है, इसलिए corporate proxies को bypass करने के लिए WebSocket के जरिए SSH का उपयोग किया जाता है.
  • इन “नई” solutions पर बार-बार आने वाली पोस्ट्स असुविधाजनक लगती हैं। ये ideas नए नहीं हैं, और बहुत से लोग इन्हें पहले से जानते हैं.
  • अच्छा होता अगर SSH जैसी identity management system browser में built-in होती। जब मैंने पहली बार hobo नाम के public key HTTP authentication proposal के बारे में पढ़ा था तो मैं उत्साहित हुआ था, लेकिन बाद में पता चला कि इसका कोई server implementation नहीं है और न ही कोई client (browser) implementation मौजूद है.
  • लगभग 20 साल पहले corporate firewall पार करने के लिए मैंने corkscrew नाम का tool इस्तेमाल किया था। इस tool का स्वतंत्र implementation और उसका विवरण प्रभावशाली है.
  • HTTP2 के जरिए tunneling एक शानदार विकल्प है। gRPC नाम का एक RPC protocol है जो HTTP2 पर बना है। HTTP2, TCP connection का उपयोग करके कई data structures को एक साथ भेजने और प्राप्त करने में बेहतरीन है। लेकिन शायद HTTP3 की ज़रूरत न हो, क्योंकि QUIC खुद ही multiplexing प्रदान करता है.