तुमच्या OpenVPN सर्व्हरवर एका क्लायंटने LAN प्रवेश गमावला पाहिजे आणि इतर सर्व टनेल सुरू राहिले पाहिजेत. हे शोधल्यास सर्वोत्तम उत्तर सहसा म्हणते की डीमन हे करू शकत नाही, जे अर्धेच खरे आहे: OpenVPN मध्ये प्रत्येक क्लायंटसाठी फायरवॉल नाही, पण टनेल संपवणारा होस्ट आधीच पॅकेट फिल्टर करतो. महत्त्वाचे दोन निर्णय म्हणजे तुम्ही ब्लॉक करत असलेली ओळख आणि नियमाची जागा. हे दोन्ही बरोबर केल्यास बदल ही एक ओळ होईल जी तुम्ही तपासू आणि काढू शकता.

नियम लिहिण्यापूर्वी क्लायंट पिन करा

OpenVPN पूलमधून टनेल पत्ते भाड्याने देते, त्यामुळे 10.8.0.6 ही व्यक्ती नाही, जागा आहे. सत्र संपल्यावर भाडे परत येते आणि पुढील कनेक्शनला दिले जाऊ शकते, म्हणजे त्या पत्त्याविरुद्ध लिहिलेला नियम जागेचा मागोवा घेतो, वापरकर्त्याचा नाही. म्हणून आधी ठरवा की तुम्ही प्रत्यक्षात काय ब्लॉक करत आहात: छोट्या प्रयोगासाठी पत्ता, की बाहेर ठेवायच्या व्यक्तीचे प्रमाणपत्र.

पत्ता प्रमाणपत्राशी बांधण्यासाठी, client-config-dir ने नमूद केलेल्या डिरेक्टरीत फाइल तयार करा आणि फाइलला प्रमाणपत्राचे common name अगदी तसेच द्या. त्यात एक सूचना ठेवा, ifconfig-push 10.8.0.6 255.255.255.0, आणि तो क्लायंट पुन्हा जोडल्यावरही तोच टनेल पत्ता ठेवतो. हे प्रभावी होण्यासाठी दोन सेटिंग असाव्यात: सर्व्हर कॉन्फिगरेशनमध्ये client-config-dir घोषित असावे, आणि पाठवलेला पत्ता सर्व्हर राउट करू शकणाऱ्या सबनेटमध्ये असावा. एकही चुकल्यास फाइल कोणत्याही त्रुटीशिवाय दुर्लक्षित होते, ज्यामुळे पुढील फायरवॉल चाचणी दिशाभूल करते.

तात्पुरता ब्लॉक पूलचा पत्ता वापरू शकतो, जर तिकिटात त्या वेळी कोणत्या सत्राकडे तो होता असे नोंदले असेल.

क्रम ठरवतो की ड्रॉप चालणार का

टनेल आणि LAN दरम्यान फॉरवर्ड करणाऱ्या Linux गेटवेवर पॅकेट FORWARD साखळीतून जातात. खालील आदेश वाक्य म्हणून वाचा: FORWARD च्या सुरुवातीला घाला, tun0 मधून येणारी, फक्त त्या एका होस्टची, LAN सबनेटकडे निर्देशित रहदारी जुळवा आणि टाका.

iptables -I FORWARD -i tun0 -s 10.8.0.6/32 -d 192.168.1.0/24 -j DROP

-I हा नियम चालवतो. -A ने जोडल्यास तो टनेल सबनेटसाठीच्या कोणत्याही व्यापक परवानगीखाली जातो आणि कधीही पॅकेट पाहत नाही. जागा iptables -vnL FORWARD --line-numbers ने तपासा आणि काउंटरही वाचा: वरचा ड्रॉप काहीही मोजत नसेल तर रहदारी दुसऱ्या मार्गाने येत आहे.

गेटवेचा स्वतःचा LAN पत्ता वेगळा मार्ग आहे. बॉक्सलाच पाठवलेले पॅकेट INPUT मध्ये जातात, FORWARD मध्ये नाही, त्यामुळे क्लायंट LAN होस्ट गमावूनही राउटरचे अॅडमिन पान उघडू शकतो. ते महत्त्वाचे असल्यास जुळणारा INPUT नियम जोडा.

फिल्टर काय पाहू शकत नाही

पॅकेटचे मूल्यांकन होताना फिल्टरिंग होते, त्यामुळे प्रस्थापित TCP सत्र बंद होईपर्यंत किंवा रीसेट होईपर्यंत चालू राहू शकते. ब्लॉकला लगेच परिणाम द्यायचा असल्यास नियम घातल्यानंतर त्या स्रोताचे ट्रॅक केलेले प्रवाह conntrack -D -s 10.8.0.6 ने साफ करा. काही सेकंदांचा ओव्हरलॅप स्वीकार्य असल्यास ती निवड नोंदवा, अप्रत्यक्ष ठेवू नका. कोणत्याही परिस्थितीत, पुढील व्यक्तीला हे माहीत असले पाहिजे की नियम जिवंत रहदारी थांबवतो की फक्त नवीन कनेक्शन.

पीअर्समधील रहदारी कधीही होस्ट फायरवॉलला स्पर्श करत नाही. client-to-client सक्षम असल्यास OpenVPN ती पॅकेट डीमनच्या आत पाठवतो, त्यामुळे FORWARD किंवा INPUT ती पाहत नाहीत. एकमेव उपाय client-to-client बंद करणे किंवा पीअर्स एकमेकांपर्यंत पोहोचू शकतात हे स्वीकारणे आहे; iptables नियम ती रहदारी पाहणार नाही.

IPv6, फर्मवेअर आणि रीबूट नंतरची टिकाऊपणा

IPv4 नियम IPv6 बद्दल काहीही सांगत नाही. टनेल आणि LAN दोन्ही कुटुंबे वाहत असल्यास, समतुल्य नियम ip6tables मध्ये किंवा त्या होस्टवर धोरण असलेल्या nftables नियमसंचात असावा. राउटर फर्मवेअर अनेकदा netfilter ला स्वतःच्या अमूर्तीमागे लपवते, त्यामुळे फोरमवरून कॉपी केलेला सिंटॅक्स आणि तक्त्यांची नावे लागू होणार नाहीत.

OpenWrt वर दस्तऐवजी मार्ग म्हणजे फायरवॉल कॉन्फिगरेशन नोंद, हाताने लिहिलेली iptables ओळ नाही, आणि हाताने लिहिलेली ओळ फायरवॉल पुन्हा लोड होताना नाहीशी होऊ शकते. इतर वितरणे नियम netfilter-persistent, बूट युनिट किंवा विक्रेत्याच्या साठवणीद्वारे पुनर्संचयित करतात, आणि ही यंत्रणा परस्पर बदलण्यायोग्य नाहीत. तुम्ही निवडलेली रीबूटने सिद्ध करा, कारण पुन्हा लोड होणे वेगळा मार्ग सरावते.

मार्गानुसार तपासा, नंतर स्वच्छ परत करा

प्रत्येक मार्ग स्वतंत्रपणे तपासा, कारण एक यशस्वी तपासणी इतर लपवते. ब्लॉक केलेल्या क्लायंटने टनेलमधून इंटरनेटपर्यंत पोहोचले पाहिजे पण LAN होस्टवर अपयशी व्हावे, दुसऱ्या क्लायंटने त्याच होस्टपर्यंत पोहोचले पाहिजे, आणि गेटवे पत्ता व पीअर मार्ग या प्रत्येकाला स्वतःचे निरीक्षण हवे. निकाल नियमाच्या शेजारी लिहा जेणेकरून पुढील बदलाला आधार मिळेल. खालील तक्ता तिकिटात ठेवण्यासारखा संच आहे.

मार्गनियमासह अपेक्षितअपयशी झाल्यावर
ब्लॉक केलेला क्लायंट LAN होस्टकडेउत्तर नाहीनियम परवानगीखाली आहे, किंवा स्रोत जुळत नाही
ब्लॉक केलेला क्लायंट इंटरनेटकडेtun0 मधून काम करतेनियम खूप व्यापक आहे, गंतव्य जुळणी नाही
दुसरा क्लायंट त्याच LAN होस्टकडेकाम करतेनियम इच्छित होस्टपेक्षा जास्त जुळला
ब्लॉक केलेला क्लायंट गेटवेच्या LAN पत्त्याकडेफक्त जुळणाऱ्या INPUT नियमासह ब्लॉकINPUT नियम नाही
ब्लॉक केलेला क्लायंट पीअर टनेल पत्त्याकडेतरीही काम करतेclient-to-client सक्षम आहे आणि फायरवॉलच्या व्याप्तीबाहेर

परत करणे म्हणजे तपशीलानुसार हटवणे, फ्लश नाही: iptables -D FORWARD -i tun0 -s 10.8.0.6/32 -d 192.168.1.0/24 -j DROP नेमकी ती नोंद काढते आणि साखळीचा उर्वरित भाग अभंग ठेवते. बूटवर नियम पुनर्संचयित करणाऱ्या कोणत्याही फाइलमधून तीच ओळ काढा, ती पुन्हा लोड करा, आणि क्लायंट पुन्हा LAN होस्टपर्यंत पोहोचतो याची खात्री करा. FORWARD फ्लश केल्यास तुम्ही न लिहिलेले नियमही रद्द होतील, ज्यामुळे परतावा दुसरी घटना होईल.

तिकीट बंद करण्यापूर्वी तीन गोष्टींची खात्री करा: पिन केलेला पत्ता प्रमाणपत्राशी जुळतो, नियम परवानग्यांच्या वर आहे आणि काउंटर शून्य नाही, आणि टिकाऊ फाइलमध्ये तुम्ही तपासलेला तोच नियम आहे. यापैकी काही नसल्यास, ब्लॉक हा shell सत्रातील भ्रम आहे.

संबंधित लेख