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 टिप्पणियां
Hacker News टिप्पणियाँ