कॉन्टेंट पर जाएँ
Secret Knock

Port knocking समझें

Port knocking किसी सेवा को तब तक अदृश्य रखता है, जब तक कोई यह साबित न कर दे कि वह एक रहस्य जानता है। इस गाइड में बताया गया है कि यह कैसे काम करता है, दो सामान्य इंप्लीमेंटेशन — knockd और fwknop — और व्यवहार में दस्तक क्यों विफल होती है।

Port knocking कैसे काम करता है

फ़ायरवॉल सुरक्षित पोर्ट के हर कनेक्शन को छोड़ देता है, इसलिए स्कैनर को कुछ नहीं दिखता। एक छोटा डेमन फ़ायरवॉल तक पहुँचने वाले ट्रैफ़िक को देखता है। जब एक स्रोत पता अपेक्षित पैटर्न बनाता है, तो डेमन एक फ़ायरवॉल नियम जोड़ता है जो उस पते को अनुमति देता है, आम तौर पर थोड़े समय के लिए।

यह पैटर्न ही दस्तक है। knockd में यह तय क्रम में और समय सीमा के भीतर विशिष्ट पोर्ट पर कनेक्शन प्रयासों का क्रम होता है। fwknop में यह एक एन्क्रिप्टेड पैकेट होता है।

knockd: दस्तक क्रम

knockd एक इंटरफ़ेस पर सुनता है और कनेक्शन प्रयासों को /etc/knockd.conf में दिए क्रम से मिलाता है। एक क्रम में TCP और UDP पोर्ट शामिल हो सकते हैं। मिलान होने पर, knockd एक कमांड चलाता है — आम तौर पर दस्तक देने वाले पते (%IP%) के लिए iptables या nftables नियम।

यह उदाहरण दस्तक देने वाले पते के लिए SSH खोलता है और 10 सेकंड बाद फिर बंद कर देता है। यदि आपका फ़ायरवॉल स्थापित कनेक्शन स्वीकार करता है, तो मौजूदा SSH सत्र काम करते रहते हैं।

[options]
    UseSyslog

[openSSH]
    sequence      = 7311:tcp,8822:tcp,9133:udp
    seq_timeout   = 10
    tcpflags      = syn
    start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    cmd_timeout   = 10
    stop_command  = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
/etc/knockd.conf — SSH को 10 सेकंड के लिए खोलें

अपने पोर्ट चुनें; प्रकाशित उदाहरणों के पोर्ट कभी दोबारा उपयोग न करें। tcpflags = syn, knockd को केवल SYN फ़्लैग वाले पैकेट गिनने देता है — कनेक्शन प्रयास का पहला पैकेट।

fwknop: Single Packet Authorization

fwknop क्रम के स्थान पर एक UDP पैकेट उपयोग करता है जो एन्क्रिप्टेड (AES) और प्रमाणित (HMAC) होता है। सर्वर, fwknopd, इसे निष्क्रिय रूप से कैप्चर करता है, सत्यापित करता है, जाँचता है कि यह दोबारा चलाया गया पैकेट नहीं है, और पैकेट के अंदर के पते के लिए अनुरोधित पोर्ट खोलता है।

fwknop --key-gen से कुंजियाँ बनाएँ और उन्हें सर्वर की access.conf में रखें। Secret Knock आपकी .fwknoprc से क्लाइंट वाला भाग आयात करता है।

SOURCE              ANY
OPEN_PORTS          tcp/22
KEY_BASE64          <output of fwknop --key-gen>
HMAC_KEY_BASE64     <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT   30
/etc/fwknop/access.conf — SPA कुंजी से SSH की अनुमति दें

क्योंकि अनुमति वाला पता एन्क्रिप्टेड पैकेट में जाता है, SPA पैकेट भेजने वाले पते से अलग पते के लिए पोर्ट खोल सकता है — यह तब उपयोगी है जब आप मोबाइल डेटा पर फ़ोन से कहीं और मौजूद लैपटॉप के लिए दस्तक देते हैं।

दस्तक क्यों विफल होती है

  • IPv4 बनाम IPv6: दस्तक एक एड्रेस फ़ैमिली पर गई और SSH दूसरी पर कनेक्ट होता है। फ़ायरवॉल ने उस पते के लिए दरवाज़ा खोला जिसका आप उपयोग नहीं कर रहे हैं।
  • अलग सार्वजनिक पता: मोबाइल डेटा, कैरियर NAT या VPN पर, सर्वर को आपकी अपेक्षा से अलग IP दिखता है। उस पते की जाँच करें जिससे आप दस्तक दे रहे हैं।
  • दोबारा भेजे गए SYN: यदि TCP दस्तक का उत्तर नहीं मिलता, तो क्लाइंट का ऑपरेटिंग सिस्टम वही SYN फिर भेजता है। हमारे परीक्षणों में knockd 0.8 ने ऐसे दोहराए गए SYN पर क्रम रीसेट कर दिया, इसलिए क्लाइंट को हर दस्तक एक बार भेजनी चाहिए और प्रयास जल्दी रोक देना चाहिए।
  • समय: seq_timeout के बाहर या गलत क्रम में आने वाली दस्तक क्रम को फिर से शुरू कर देती है।
  • मिडलबॉक्स: कुछ नेटवर्क असामान्य पोर्ट पर ट्रैफ़िक रोकते या बदलते हैं, इसलिए घर पर काम करने वाली दस्तक होटल या ऑफ़िस नेटवर्क पर विफल हो सकती है।

क्या यह सुरक्षित है?

knockd क्रम बिना एन्क्रिप्शन के भेजा जाता है; जो भी आपका ट्रैफ़िक देख सकता है, वह इसे दोबारा चला सकता है। स्कैनर से सेवा छिपाने के लिए इसे SSH कुंजियों के आगे उपयोग करें — उनके बजाय नहीं। fwknop SPA एन्क्रिप्शन, HMAC और रीप्ले सुरक्षा से इस कमी को दूर करता है, और ट्रैफ़िक देखे जाने की संभावना हो तो यह बेहतर विकल्प है।

iPhone, Mac और Apple Watch से दस्तक

Secret Knock iPhone, iPad और Mac से knockd क्रम और fwknop SPA पैकेट भेजता है, पोर्ट के जवाब की जाँच करता है और आपका SSH ऐप खोलता है। Apple Watch पेयर किए हुए iPhone के ज़रिए दस्तक देती है, क्योंकि watchOS ऐप को रॉ TCP या UDP पैकेट भेजने नहीं देता; iPhone से दूर होने पर यह HTTP पर उन सर्वरों को SPA भेज सकती है जो इसे सक्षम करते हैं।

आपके सेटअप के लिए गाइड

दरवाज़ा बंद रखें। दस्तक साथ रखें।

Secret Knock जल्द ही iPhone, iPad, Mac और Apple Watch के लिए App Store पर आ रहा है।

Secret Knock →