WireGuard को सुरक्षित करने के लिए IPv6 ब्लॉक करना होस्ट तोड़ देता है
सारा IPv6 गिराने वाला इनपुट नियम पड़ोसी खोज और Packet Too Big को भी हटा देता है। तीन ज़िम्मेदारियाँ अलग रखें, फिर जाँचें कि होस्ट अब भी काम करता है।
लक्ष्य उचित है: इस मशीन की सेवाओं तक केवल टनल उपयोगकर्ता ही पहुँचें। जिस कार्यान्वयन को लोग अपनाते हैं वह एक IPv6 इनपुट चेन है जो WireGuard के अलावा सब कुछ गिरा देती है, और इससे वह ट्रैफ़िक भी गिर जाता है जो होस्ट को उसकी अपनी लिंक से जोड़े रखता है। पड़ोसी खोज और पथ-रखरखाव संदेश सेवा-पहुँच नहीं हैं, और उन्हें हटाने से ऐसी मशीन बनती है जो आपकी नीति से असंबंधित कारणों से अगम्य है। टनल ऊपर आती है, सेवाएँ ठीक से सीमित हैं, और लिंक पर बाकी कुछ नहीं चलता।
तीन ज़िम्मेदारियाँ, एक नियम-समूह
पहली ज़िम्मेदारी बाहरी नेटवर्क का संचालन है: होस्ट को अपनी लिंक पर बना रहना चाहिए, पड़ोसियों को हल करना चाहिए और उस लिंक की पथ-सीमाएँ सीखनी चाहिए। दूसरी एन्क्रिप्टेड श्रोता है, जो आपके चुने हुए पते और पोर्ट पर UDP स्वीकार करती है। तीसरी उन डिक्रिप्ट की गई सेवाओं का समूह है जहाँ आप टनल उपयोगकर्ताओं को पहुँचाना चाहते हैं।
ये तीन अलग नीतियाँ हैं, और केवल दूसरी और तीसरी VPN से जुड़ी हैं। जो नियम-समूह इन्हें एक मानता है वह ऐसी विफलता विरासत में पाता है जहाँ एप्लिकेशन सीमा कसने से होस्ट का जुड़ाव चुपचाप टूट जाता है।
इन्हें अलग चेन या कम से कम अलग टिप्पणियों में रखें, ताकि अगला व्यक्ति देख सके कि कौन-सी पंक्ति किस कारण से है।
ICMPv6 होस्ट के लिए क्या करता है
IPv6 केवल इको से कहीं अधिक के लिए ICMPv6 पर निर्भर है। पड़ोसी अनुरोध और घोषणा ARP की जगह लेते हैं और स्थानीय डिलीवरी के लिए आवश्यक हैं। Packet Too Big पथ MTU की जानकारी लाता है, और उसे अनदेखा करने से बड़े पैकेट पर अटकने वाले स्थानांतरण बनते हैं। जब लिंक स्वचालित कॉन्फ़िगरेशन इस्तेमाल करता है तो राउटर घोषणाएँ डिफ़ॉल्ट मार्ग और प्रीफ़िक्स जानकारी लाती हैं।
RFC 4890 उन संदेशों को अलग करता है जिन्हें होस्ट फ़िल्टर को अनुमति देनी ही है, उनसे जो प्रशासनिक विकल्प हैं, और यह होस्ट अनुभाग में करता है जो नेटवर्क के बीच अग्रेषित करने वाले राउटर के नियमों से भिन्न है। केवल अग्रेषण अनुभाग पढ़ने से ऐसी इनपुट नीति बनती है जो उस होस्ट के लिए बहुत कड़ी है जिसकी वह रक्षा करती है।
व्यावहारिक नियम यह है कि आवश्यक त्रुटि और कॉन्फ़िगरेशन संदेशों को उस इंटरफ़ेस पर अनुमति दें जिसे उनकी ज़रूरत है, जहाँ प्लेटफ़ॉर्म अनुमति दे वहाँ प्रकार और स्रोत से सीमित करें, और शेष के बारे में स्पष्ट निर्णय लें।
इन सबको सर्वव्यापी ICMPv6 अनुमति से बदलना उपलब्धता की समस्या हल करता है और फ़िल्टरिंग छोड़ देता है। इसे सर्वव्यापी ड्रॉप से बदलना फ़िल्टरिंग की समस्या हल करता है और होस्ट छोड़ देता है।
पहले टनल को अनुमति दें, फिर सेवा को
इच्छित बाहरी पते और UDP पोर्ट पर WireGuard ट्रांसपोर्ट स्वीकार करें, और कनेक्शन ट्रैकिंग के माध्यम से वापसी ट्रैफ़िक स्वीकार करें। फिर टनल इंटरफ़ेस से एप्लिकेशन सेवाओं को अनुमति दें, उन स्रोतों से जिन्हें आप वास्तव में अधिकृत करते हैं।
बाहरी UDP पोर्ट की अनुमति उसके भीतर के डिक्रिप्ट किए गए अनुरोधों को अधिकृत नहीं करती। यही अंतर सेवा-नियमों में टनल इंटरफ़ेस दिखने का पूरा कारण है।
फ़ाइल जैसा वर्णन करती है वैसा नहीं, नियम-समूह जैसा है वैसा पढ़ें:
sudo nft list ruleset
ip -6 addr show
ip -6 route show default
भौतिक पते पर श्रोता टनल पते पर उसी सेवा से अलग एक्सपोज़र है। यदि बॉक्स दूसरी मशीन पर भी ट्रैफ़िक अग्रेषित करता है, तो वह इस इनपुट नीति का नहीं बल्कि अग्रेषण चेन का निर्णय है, और उसे अपना तर्क चाहिए।
लिंक की जाँच करें, केवल टनल की नहीं
बदलाव के बाद चलती टनल दिखने से कम साबित करती है, क्योंकि मौजूदा पड़ोसी प्रविष्टि और स्थापित कनेक्शन ऐसा नियंत्रण संदेश छिपा सकते हैं जिसे नीति अब गिरा रही है।
जुड़ाव को सीधे जाँचें, फिर जाँचें कि बाहर रखा गया पथ अब भी विफल होता है:
ip -6 neigh show
ping -6 -c 3 2001:db8:1::1
sudo nft -c -f /etc/nftables.conf
रीबूट के बाद भी पड़ोसी तालिका पूरी रहना इस बात का संकेत है कि खोज अब भी काम करती है। जो तालिका खाली हो जाए और फिर कभी न भरे, वह संकेत है कि आपने उसे फ़िल्टर कर दिया। तीसरा आदेश नियम-समूह के सिंटैक्स को लागू किए बिना सत्यापित करता है, जो सत्र बचे रहने तक करना उचित है।
जिस होस्ट से आपने खुद को बाहर बंद कर लिया, उसे बहाल करें
अपना प्रशासनिक सत्र ढोने वाले फ़ायरवॉल नियम बदलने से पहले दूसरा चैनल रखें: कंसोल, सीरियल कनेक्शन, या निर्धारित रोलबैक जो रद्द न करने पर नए नियम हटा देता है।
यदि बदलाव वाकई आपको बाहर बंद कर दे, तो बहाली उसी चैनल से होती है, अभी हटाए गए नेटवर्क से नहीं। सहेजी गई प्रति से पिछला नियम-समूह बहाल करें, पुष्टि करें कि होस्ट फिर पहुँच-योग्य है, और तभी इच्छित नीति को छोटे टुकड़ों में लागू करें।
अंतिम नीति सार्वभौमिक नहीं है। पता, रूटिंग और फ़ायरवॉल कार्यान्वयन परिनियोजन के इनपुट हैं, पर सीमा हर जगह एक ही है: अनधिकृत एप्लिकेशन पहुँच अस्वीकार करें और अधिकृत टनल ढोने वाला नियंत्रण ट्रैफ़िक बनाए रखें।