डाउन स्क्रिप्ट की फायरवॉल नियम: गळती कोण थांबवते?
डिस्कनेक्टच्या वेळी इंटरफेस खाली करणे कठोर आहे आणि बहुतेक वेळा विशेषाधिकारांशिवाय चालते. तुटल्यानंतरही टिकणाऱ्या आणि अंतर बंद करणाऱ्या फायरवॉल नियमाशी त्याची तुलना करा.
दोन रचना एकच गोष्ट वचन देतात: बोगदा पडल्यावर, काहीही उघड्या स्वरूपात बाहेर जात नाही. एक टिअरडाउनला स्क्रिप्ट चालवते आणि इंटरफेस कापते. दुसरे फायरवॉल नियम लागू ठेवते आणि VPN क्लायंटकडे काहीही मागत नाही. ते कोणाकडे कृतीचा अधिकार आहे, अंतराच्या काळात काय घडते आणि नंतर मशीन पुन्हा ऑनलाइन कशी येते यात वेगळे आहेत. या तीन मुद्द्यांवर त्यांची तुलना करणे कोणते कडक आहे यावर वाद घालण्यापेक्षा उपयुक्त आहे.
एकच काम, दोन मार्ग
प्रोफाइल स्क्रिप्ट चालवण्यास परवानगी देत असेल, तर क्लायंट बोगदा उभा राहिल्यावर आणि टिअरडाउन होताना हुक चालवू शकतो. तो हुक क्लायंटच्या जीवनचक्रात, कनेक्शन बंद होण्याच्या नेमक्या क्षणी चालतो. फायरवॉल नियम मात्र प्रणालीचा असतो आणि क्लायंट चालू आहे, कोसळला की ठार झाला याची त्याला पर्वा नसते.
| Property | Teardown script | Firewall unit |
|---|---|---|
| Runs when the client is killed | No | Yes |
| Needs privilege at teardown time | Usually yes | Configured once, at boot |
| Acts on the whole machine | Often, including recovery paths | Only on the flows it matches |
तीच तक्ता संपूर्ण युक्तिवाद आहे. फक्त स्वच्छ बंदीत चालणारी स्क्रिप्ट तुम्हाला सर्वात कमी काळजी असलेली गोष्ट झाकते; महत्त्वाची गोष्ट म्हणजे क्रॅश किंवा नेटवर्कचे अदृश्य होणे, आणि दोन्हीही स्वच्छ टिअरडाउन देत नाहीत.
टिअरडाउन हुक काय करू शकतो आणि काय करू शकत नाही
नोंदवलेली पद्धत नेटवर्क इंटरफेसवरून जाते आणि loopback सोडून सर्व खाली करते. भौतिक उपकरण खाली असताना बोगद्याबाहेर काहीही पळू शकत नाही, आणि हाच नेमका हेतू आहे.
#!/bin/sh
for dev in /sys/class/net/*; do
name=$(basename "$dev")
[ "$name" = lo ] || ip link set dev "$name" down
done
ते स्थानिक नेटवर्क, मशीन होस्ट करत असलेली प्रत्येक सेवा आणि समस्या सोडवण्यासाठी वापरता तो मार्गही खाली करते. लॅपटॉपवर वायरलेस उपकरणाला नंतर कधीकधी हाताने टॉगल करावे लागते, त्यामुळे छोटा व्यत्यय दुरुस्तीचे सत्र बनतो. त्याहून वाईट, हुकला हे काहीही करण्याची परवानगी नसू शकते: क्लायंट विशेषाधिकार सोडतो तेव्हा टिअरडाउन स्क्रिप्ट विशेषाधिकार नसलेल्या खात्यात चालते, आणि प्रत्येक इंटरफेस बदल परवानगीच्या त्रुटीने अयशस्वी होतो जी कोणी लॉग वाचत नाही अशाच क्षणी लिहिली जाते.
हुकवर विश्वास ठेवण्यापूर्वी क्लायंट कसा सुरू होतो ते तपासा. root म्हणून हाताने चालवल्यावर जी स्क्रिप्ट काम करते ती बूटवर सुरू होणाऱ्या सेवेबद्दल काहीही सिद्ध करत नाही.
फायरवॉल नियम काय वेगळे करतो
फक्त बोगद्याच्या रहदारीला परवानगी देणारा नियम क्लायंट प्रक्रिया गेल्यावरही चालू राहतो, कारण कर्नेल त्या प्रक्रियेवर अवलंबून नसतो. नियम अधिक अरुंदही आहे: जुळणाऱ्या प्रवाहांनाच तो अडवतो आणि loopback, स्थानिक सबनेट व पुनर्प्राप्तीचा मार्ग शांत ठेवतो, म्हणूनच मशीन अडकून पडत नाही.
किंमत ही आहे की नियम होस्ट फायरवॉलच्या मालकाने लिहावा व सांभाळावा, आणि त्याला क्लायंट प्रत्यक्षात तयार करतो त्या बोगदा उपकरणाचे नाव द्यावे लागते. म्हणजे नियम व प्रोफाइल एकत्र सांभाळावे लागतात; नाव बदललेला इंटरफेस सर्व अडवणारा आणि काहीही स्पष्ट न करणारा फायरवॉल मागे ठेवतो.
कोणताही मार्ग दुसऱ्याला अनावश्यक करत नाही. संपादनानंतर कधीही पुन्हा लोड न होणारा फायरवॉल नियम कधीही न चालणाऱ्या स्क्रिप्टइतकाच काल्पनिक आहे.
अंतर आहे की नाही हे persist-tun ठरवते
बोगदा उपकरण डिस्कनेक्ट टिकून राहिल्यास त्याच्याकडे जाणारे मार्गही टिकतात. मग रहदारी पुनर्निर्देशित होण्याऐवजी टाकून दिली जाते, त्यामुळे डीफॉल्ट मार्ग भौतिक गेटवेवर परत पडत नाही. कोणताही फायरवॉल नियम सहभागी होण्यापूर्वीच हे वर्तन गळती असंभवनीय करते.
या सेटिंगशिवाय उपकरण व त्याबरोबर मार्ग काढून टाकले जातात, आणि डीफॉल्ट मार्ग पुन्हा भौतिक गेटवेकडे जाऊ शकतो. तसे होईल की नाही हे प्लॅटफॉर्म व क्लायंटवर अवलंबून आहे, आणि म्हणूनच स्थिती गृहीत धरण्याऐवजी निरीक्षण करावी. सेटिंगला kill switch चा भाग माना, कार्यक्षमतेचा पर्याय नाही.
पुनर्जोडणीचा मार्ग जिवंत ठेवा, मग चार स्थिती तपासा
कडक अडवणूक क्लायंटला पुन्हा जोडण्यापासूनही रोखू शकते, कारण बाकी सर्व नाकारले जात असतानाही क्लायंटला भौतिक गेटवेमार्गे सर्व्हरपर्यंत मार्ग हवा असतो. बोगदा उभा राहण्यापूर्वी त्या एका पत्त्यासाठी होस्ट मार्ग बसवा, आणि आधी नाव सोडवा, कारण तुम्हाला त्याची गरज असेपर्यंत DNS अडवलेले असू शकते.
ip route add 198.51.100.20/32 via 192.168.0.1 dev wlan0
मग लेबल नाही, स्थिती पडताळा. चार क्षण जाणीवपूर्वक अनुभवा: बोगद्याशिवाय थंड सुरुवात, निरोगी सत्र, कोणीही न मागितलेला व्यत्यय, आणि सावरण्यानंतरचे सत्र. प्रत्येक क्षणी डीफॉल्ट मार्ग वाचा आणि निर्गम पत्ता दिसणारी एक विनंती करा. बोगदा खाली असताना हार मानणारे अनुप्रयोग मेल क्लायंट किंवा अद्ययावतकर्त्याबद्दल काहीही सांगत नाही, म्हणून शेवटची तपासणी एका पार्श्वभूमी अनुप्रयोगासह पुन्हा करा. नियम, इंटरफेसची नावे आणि पुनर्प्राप्तीचे टप्पे लिहून ठेवा, कारण कोणीही पडताळू न शकणारा kill switch ही अफवा आहे.