டவுன் ஸ்கிரிப்டா பயர்வால் விதியா: கசிவை எது நிறுத்துகிறது?
இணைப்பு துண்டிக்கப்படும்போது இடைமுகங்களைக் கீழிறக்குவது கடினமானது, பெரும்பாலும் அனுமதிகள் இல்லாமல் இயங்குகிறது. வீழ்ச்சிக்குப் பிறகும் நீடித்து இடைவெளியை மூடும் பயர்வால் விதியுடன் அதை ஒப்பிடுங்கள்.
இரண்டு வடிவமைப்புகள் ஒன்றையே உறுதி அளிக்கின்றன: சுரங்கப்பாதை விழும்போது, எதுவும் வெளிப்படையாக வெளியே போவதில்லை. ஒன்று டியர்டவுனில் ஸ்கிரிப்டை இயக்கி இடைமுகங்களை வெட்டுகிறது. மற்றொன்று பயர்வால் விதியை நடைமுறையில் வைத்து 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 ஒரு வதந்தி.