
Single Packet Authorization > Port Knocking
fwknop एक प्राधिकरण योजना लागू करता है जिसे एकल पैकेट प्राधिकरण (SPA) के रूप में जाना जाता है, जो मजबूत सेवा गोपन के लिए है। SPA के लिए केवल एक एकल पैकेट की आवश्यकता होती है जो एन्क्रिप्टेड, पुन: प्रस्तुत न किया जा सकने वाला और HMAC के माध्यम से प्रमाणित होता है, ताकि एक फ़ायरवॉल के पीछे छिपी सेवा तक वांछित पहुंच संप्रेषित की जा सके, जो डिफ़ॉल्ट-ड्रॉप फ़िल्टरिंग स्थिति में है। SPA का मुख्य अनुप्रयोग SSH जैसी सेवाओं से कनेक्ट करने के सभी प्रयासों को ड्रॉप करने के लिए फ़ायरवॉल का उपयोग करना है, ताकि कमजोरियों (दोनों 0-दिन और अप्रबंधित कोड) का शोषण करना कठिन हो सके। चूंकि कोई खुले पोर्ट नहीं हैं, SPA द्वारा छिपी किसी भी सेवा को Nmap के साथ स्कैन नहीं किया जा सकता है। fwknop परियोजना चार अलग-अलग फ़ायरवॉल का समर्थन करती है: iptables, firewalld, PF, और ipfw Linux, OpenBSD, FreeBSD, और Mac OS X पर। कस्टम स्क्रिप्ट के लिए भी समर्थन है ताकि fwknop को ipset या nftables जैसे अन्य बुनियादी ढांचे का समर्थन करने के लिए बनाया जा सके।
SPA मूलतः अगली पीढ़ी का पोर्ट नॉकिंग (PK) है, लेकिन PK की कई सीमाओं को हल करता है जबकि इसके मुख्य लाभों को बनाए रखता है। PK सीमाओं में पुन: प्रस्तुति हमलों से बचाव की सामान्य कठिनाई शामिल है, आमतौर पर असममित सिफर और HMAC योजनाओं का विश्वसनीय रूप से समर्थन करना संभव नहीं है, और PK सर्वर के विरुद्ध DoS हमला करना केवल एक अतिरिक्त पैकेट को PK अनुक्रम में स्पूफ करके आसानी से किया जा सकता है क्योंकि यह नेटवर्क पर यात्रा करता है (जिससे PK सर्वर को विश्वास हो जाता है कि क्लाइंट सही अनुक्रम नहीं जानता)। SPA द्वारा इन सभी कमियों को हल किया जाता है। साथ ही, SPA डिफ़ॉल्ट-ड्रॉप फ़ायरवॉल नीति के पीछे सेवाओं को छिपाता है, SPA डेटा को निष्क्रिय रूप से प्राप्त करता है (आमतौर पर libpcap या अन्य माध्यमों से), और SPA पैकेट प्रमाणीकरण और एन्क्रिप्शन/डिक्रिप्शन के लिए मानक क्रिप्टोग्राफ़िक संक्रियाएँ लागू करता है।
fwknop द्वारा उत्पन्न SPA पैकेट एन्क्रिप्ट-फिर-प्रमाणित मॉडल में प्रमाणित एन्क्रिप्शन के लिए HMAC का लाभ उठाते हैं। यद्यपि HMAC का उपयोग वर्तमान में वैकल्पिक है (--use-hmac कमांड लाइन स्विच के माध्यम से सक्षम), इसे तीन कारणों से अत्यधिक अनुशंसित किया जाता है:
उपरोक्त अंतिम कारण यह है कि HMAC का उपयोग तब भी किया जाना चाहिए जब SPA पैकेट को GnuPG के साथ एन्क्रिप्ट किया जाए, क्योंकि SPA डेटा को libgpgme फ़ंक्शन के माध्यम से तब तक नहीं भेजा जाता जब तक कि HMAC पहले जांच न लिया जाए। GnuPG और libgpgme अपेक्षाकृत जटिल कोड निकाय हैं, और इसलिए एक HMAC ऑपरेशन के माध्यम से संभावित हमलावर की इस कोड के साथ बातचीत करने की क्षमता को सीमित करना एक मजबूत सुरक्षा स्थिति बनाए रखने में मदद करता है। SPA संचार के लिए HMAC उत्पन्न करने के लिए सामान्य एन्क्रिप्शन कुंजी के अतिरिक्त एक समर्पित कुंजी की आवश्यकता होती है, और दोनों को --key-gen विकल्प से उत्पन्न किया जा सकता है।
fwknop SPA पैकेट को या तो Rijndael ब्लॉक सिफर के साथ या GnuPG और संबंधित असममित सिफर के माध्यम से एन्क्रिप्ट करता है। यदि सममित एन्क्रिप्शन विधि चुनी जाती है, तो हमेशा की तरह एन्क्रिप्शन कुंजी क्लाइंट और सर्वर के बीच साझा की जाती है (विवरण के लिए /etc/fwknop/access.conf फ़ाइल देखें)। Rijndael एन्क्रिप्शन के लिए उपयोग की जाने वाली वास्तविक एन्क्रिप्शन कुंजी मानक PBKDF1 कुंजी व्युत्पत्ति एल्गोरिथ्म के माध्यम से उत्पन्न होती है, और CBC मोड सेट किया जाता है। यदि GnuPG विधि चुनी जाती है, तो एन्क्रिप्शन कुंजी GnuPG कुंजी रिंग से प्राप्त होती हैं।
एकल पैकेट प्राधिकरण (SPA) या इसके सुरक्षा-चुनौतीपूर्ण चचेरे भाई पोर्ट नॉकिंग (PK) का उपयोग करने वाले लोग आमतौर पर उसी सिस्टम पर चलने वाले SSHD तक पहुँचते हैं जहाँ SPA/PK सॉफ़्टवेयर तैनात किया गया है। अर्थात्, एक होस्ट पर चलने वाला फ़ायरवॉल सभी आने वाले SSH कनेक्शनों के विरुद्ध डिफ़ॉल्ट-ड्रॉप नीति रखता है ताकि SSHD को स्कैन नहीं किया जा सके, लेकिन एक SPA डेमॉन फ़ायरवॉल को पुन: कॉन्फ़िगर करके अस्थायी रूप से एक निष्क्रिय रूप से प्रमाणित SPA क्लाइंट तक पहुँच प्रदान करता है:
"SSHD तक पहुँचने के लिए मूल SPA उपयोग"
fwknop उपरोक्त का समर्थन करता है, लेकिन इससे भी आगे जाकर NAT का मजबूत उपयोग करता है (iptables/firewalld फ़ायरवॉल के लिए)। आखिरकार, महत्वपूर्ण फ़ायरवॉल आमतौर पर नेटवर्क के बीच गेटवे होते हैं, न कि केवल स्टैंडअलोन होस्ट पर तैनात होते हैं। ऐसे फ़ायरवॉल पर NAT का आमतौर पर उपयोग किया जाता है (कम से कम IPv4 संचार के लिए) RFC 1918 पता स्थान पर आंतरिक नेटवर्क को इंटरनेट तक पहुँच प्रदान करने के लिए, और बाहरी होस्ट को आंतरिक सिस्टम पर होस्ट की गई सेवाओं तक पहुँचने की अनुमति देने के लिए भी।
क्योंकि fwknop NAT के साथ एकीकृत होता है, SPA का लाभ उठाकर बाहरी इंटरनेट पर उपयोगकर्ता फ़ायरवॉल के माध्यम से आंतरिक सेवाओं तक पहुँच सकते हैं। हालांकि आधुनिक पारंपरिक नेटवर्क पर इसके कई अनुप्रयोग हैं, यह fwknop को Amazon के AWS जैसे क्लाउड कंप्यूटिंग वातावरण का समर्थन करने की भी अनुमति देता है:
"Amazon AWS क्लाउड वातावरण पर SPA उपयोग"
आधिकारिक क्रॉस-प्लेटफ़ॉर्म fwknop क्लाइंट उपयोगकर्ता इंटरफ़ेस fwknop-gui
(डाउनलोड, github)
को Jonathan Bennett द्वारा विकसित किया गया है। अधिकांश प्रमुख क्लाइंट-साइड SPA मोड समर्थित हैं, जिनमें NAT अनुरोध, HMAC और Rijndael कुंजियाँ (GnuPG अभी तक समर्थित नहीं है), fwknoprc स्टैन्ज़ा सेविंग, और बहुत कुछ शामिल है। वर्तमान में fwknop-gui Linux, Mac OS X, और Windows पर चलता है - यहाँ OS X से एक स्क्रीनशॉट है:
"Mac OS X पर fwknop-gui"
इसी तरह, एक अद्यतन
Android क्लाइंट भी
उपलब्ध है।
fwknop पर एक व्यापक ट्यूटोरियल यहाँ पाया जा सकता है:
http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html
fwknop परियोजना द्वारा समर्थित सुविधाओं की पूरी सूची निम्नलिखित है:
tcpdump -w <file> के साथ), iptables ULOG pcap लेखक से, या --udp-server मोड में सीधे UDP सॉकेट के माध्यम से लिखी गई फ़ाइल से पैकेट डेटा प्राप्त कर सकता है।fwknop परियोजना GNU जनरल पब्लिक लाइसेंस (GPL v2) या (आपके विकल्प पर) किसी भी बाद के संस्करण की शर्तों के तहत ओपन सोर्स सॉफ़्टवेयर के रूप में जारी की गई है। नवीनतम रिलीज़ यहाँ पाई जा सकती है: http://www.cipherdyne.org/fwknop/
यह README फ़ाइल जुलाई 2013 में किए गए 2.5 रिलीज़ के अनुसार fwknop परियोजना की वर्तमान स्थिति का वर्णन करती है। वर्तमान में, हमारे पास फ़ायरवॉल नॉक ऑपरेटर लाइब्रेरी; libfko, साथ ही fwknop क्लाइंट और सर्वर एप्लिकेशन का कार्यान्वयन है। लाइब्रेरी fwknop के अन्य घटकों द्वारा उपयोग किए जाने वाले एकल पैकेट प्राधिकरण (SPA) डेटा के प्रबंधन के लिए API और बैक-एंड कार्यक्षमता प्रदान करती है। इसका उपयोग अन्य प्रोग्रामों द्वारा भी किया जा सकता है जिन्हें SPA कार्यक्षमता की आवश्यकता है (उदाहरण के लिए FKO पर्ल मॉड्यूल के लिए perl निर्देशिका देखें, और python निर्देशिका में पायथन बाइंडिंग भी हैं)।
यदि आप fwknop के किसी पुराने संस्करण से अपग्रेड कर रहे हैं (और इसमें मूल पर्ल कार्यान्वयन भी शामिल है), तो आप fwknop-2.5 या बाद के संस्करण में सहज संक्रमण सुनिश्चित करने के लिए निम्नलिखित लिंक पढ़ना चाहेंगे:
http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html#backwards-compatibility
यह वितरण बिल्ड सेट करने के लिए GNU autoconf का उपयोग करता है। कृपया autoconf का उपयोग करने की सामान्य मूल बातों के लिए INSTALL फ़ाइल देखें।
कुछ "configure" विकल्प हैं जो fwknop के लिए विशिष्ट हैं। वे इस प्रकार हैं (./configure --help से निकाले गए):
--disable-client fwknop क्लाइंट घटक का निर्माण न करें।
डिफ़ॉल्ट क्लाइंट का निर्माण करना है।
--disable-server fwknop सर्वर घटक का निर्माण न करें।
डिफ़ॉल्ट सर्वर का निर्माण करना है।
--with-gpgme libgpgme का उपयोग करके gpg एन्क्रिप्शन के लिए समर्थन
[डिफ़ॉल्ट=जाँच]
--with-gpgme-prefix=PFX वह उपसर्ग जहाँ GPGME स्थापित है (वैकल्पिक)
--with-gpg=/path/to/gpg gpg निष्पादन योग्य का पथ निर्दिष्ट करें जिसका gpgme उपयोग करेगा
[डिफ़ॉल्ट=पथ जाँच]
--with-firewalld=/path/to/firewalld
firewalld निष्पादन योग्य का पथ निर्दिष्ट करें
[डिफ़ॉल्ट=पथ जाँच]
--with-iptables=/path/to/iptables
iptables निष्पादन योग्य का पथ निर्दिष्ट करें
[डिफ़ॉल्ट=पथ जाँच]
--with-ipfw=/path/to/ipfw
ipfw निष्पादन योग्य का पथ निर्दिष्ट करें [डिफ़ॉल्ट=पथ जाँच]
--with-pf=/path/to/pfctl
pf निष्पादन योग्य का पथ निर्दिष्ट करें [डिफ़ॉल्ट=पथ जाँच]
--with-ipf=/path/to/ipf
ipf निष्पादन योग्य का पथ निर्दिष्ट करें [डिफ़ॉल्ट=पथ जाँच]
उदाहरण:
./configure --disable-client --with-firewalld=/bin/firewall-cmd
./configure --disable-client --with-iptables=/sbin/iptables --with-firewalld=no
जो लोग वर्तमान में पर्ल संस्करण का उपयोग कर रहे हैं और इस संस्करण पर स्थानांतरित होने की योजना बना रहे हैं, उन्हें कुछ बातों का ध्यान रखना चाहिए:
पर्ल-आधारित fwknop की सभी सुविधाओं और कार्यक्षमता को इस कार्यान्वयन में पोर्ट नहीं किया गया था। हमने C संस्करण को यथासंभव दुबला और हल्का रखना महत्वपूर्ण समझा। अधिकांश छोड़ी गई सुविधाओं/कार्यों (जैसे ईमेल अलर्ट) को अन्य माध्यमों से पूरा किया जा सकता है (जैसे उपयुक्त लॉग संदेशों के आधार पर लॉग फ़ाइलों की निगरानी और अलर्ट करने के लिए बाहरी स्क्रिप्ट का उपयोग करना)।
fwknop कॉन्फ़िगरेशन और एक्सेस फ़ाइल निर्देशों और मानों में कुछ अंतर हैं। उनमें से कुछ काफी सूक्ष्म हैं। आपको उन फ़ाइलों में दस्तावेज़ीकरण और टिप्पणियों पर सावधानीपूर्वक ध्यान देना चाहिए।
यदि आप इस वितरण को git से खींच रहे हैं, तो आपको autoconf फ़ाइलें उत्पन्न करने के लिए autogen.sh स्क्रिप्ट चलानी चाहिए। यदि आपको लापता निर्देशिकाओं या फ़ाइलों के बारे में त्रुटियाँ मिलती हैं, तो autogen.sh को फिर से चलाने का प्रयास करें। उसके बाद जब आप कॉन्फ़िगरेशन को पुन: उत्पन्न करना चाहें तो आप autoreconf -i चला सकते हैं। यदि, किसी कारण से, autoreconf आपके लिए काम नहीं करता है, तो autogen.sh स्क्रिप्ट पर्याप्त होनी चाहिए।
fwknop और fwknopd मैन पेज nroff स्रोत उनके संबंधित निर्देशिकाओं (क्लाइंट और सर्वर) में शामिल हैं। ये nroff फ़ाइलें 'docs' निर्देशिका में asciidoc स्रोतों से प्राप्त हुई हैं। विवरण के लिए docs में README देखें।