OpenVPN client-connect ஹூக்: உங்கள் முகவரி உண்மையில் எங்கு செல்கிறது
client-connect ஸ்கிரிப்ட் அச்சிட்டு முகவரியைத் திருப்பித் தர முடியாது. ஹூக்கின் தற்காலிகக் கோப்பு, வெளியேறும் நிலை மற்றும் டோபாலஜி வாடிக்கையாளரின் IP-ஐ எவ்வாறு தீர்மானிக்கின்றன என்பதைப் பார்க்கவும்.
client-connect ஸ்கிரிப்டிலிருந்து முகவரியைத் திருப்பித் தருவது வாடிக்கையாளரின் IP-ஐ அமைக்க வேண்டும் போல் தோன்றுகிறது. ஆனால் அது செய்யாது: ஹூக்கின் சேவையகத்திற்கான ஒரே வழி ஒரு தற்காலிகக் கோப்பு, அதன் பாதை ஸ்கிரிப்டின் கடைசி அர்கியுமெண்டாக வருகிறது, முகவரி அங்கே ifconfig-push தொடரியலில் எழுதப்பட வேண்டும். முகவரியை அச்சிடும் அல்லது எதுவும் எழுதாமல் பூஜ்ஜியத்துடன் வெளியேறும் ஸ்கிரிப்ட், தொகுப்பிலிருந்து முகவரி பெற்ற இணைக்கப்பட்ட வாடிக்கையாளரை உருவாக்குகிறது, சேவையகப் பதிவு முற்றிலும் ஆரோக்கியமாகத் தெரிகிறது.
குழப்பம் நியாயமானது, ஏனெனில் பல ஹூக்குகள் வெளியேறும் குறியீடுகள் அல்லது சூழல் மாறிகளின் மூலம் உண்மையில் பதிலளிக்கின்றன. இந்த ஹூக்கிற்கு அதன் சொந்த ஒப்பந்தம் உள்ளது, ஒப்பந்தம் ஒரு கோப்பு பெயரில் தொடங்குகிறது.
ஹூக் கோப்பை எழுதுகிறது, திருப்பி அளிக்கும் மதிப்பை அல்ல
அறிவிப்பு இரண்டு வரிகள்: அழைப்பை அனுமதிக்க script-security 2, பின்னர் client-connect /etc/openvpn/server/assign-address.sh. வாடிக்கையாளர் அங்கீகரிக்கப்படும்போது, சேவையகம் அந்த ஸ்கிரிப்டை உருவாக்கப்பட்ட கோப்புப் பாதையைக் கடைசி அர்கியுமெண்டாகச் சேர்த்து இயக்குகிறது, அறிவிப்பு தனது கூடுதல் அர்கியுமெண்டுகளை அனுப்பாவிட்டால் மட்டுமே அது $1 ஆகும். அந்த வாடிக்கையாளருக்குப் பயன்படுத்தப்படும் அனைத்தும் அந்தக் கோப்பில் சாதாரண வழிமுறைகளாக, ஒரு வரிக்கு ஒன்று, உள்ளமைவில் தோன்றும் அதே வழியில் எழுதப்படுகிறது. தனது சொந்த அளவுருக்களைச் சேர்க்கும் மேலட்டை நிலையை நகர்த்துகிறது, வழக்கமான அறிகுறி --verbose போல் தெரியும் பாதைக்கு எழுதும் ஸ்கிரிப்ட்.
வெளியேறும் நிலை ஒப்பந்தத்தின் மறு பாதி. பூஜ்ஜியம் என்பது ஏற்றுக்கொண்டு கோப்பைப் படி; வேறு எதுவும் இணைப்பை நிராகரிக்கிறது, மேப் செய்யப்படாத அடையாளம் அமைதியாகத் தொகுப்பிற்குத் திரும்புவதற்குப் பதிலாக இப்படித்தான் நிராகரிக்கப்படுகிறது. வெற்றியைத் திருப்பித் தரும் முன் முழு வழிமுறையையும் எழுதுங்கள், பாதி எழுதப்பட்ட கோப்பு ஒருபோதும் வாடிக்கையாளரின் உள்ளமைவாக மாறாதபடி.
இரண்டு வழிமுறைகள் கவனத்திற்குரியவை, ஏனெனில் அவை மற்ற அனைத்துடனும் தொடர்பு கொள்கின்றன. ifconfig-push முகவரியை நிர்ணயிக்கிறது, அனுப்பப்பட்ட route சுரங்கப்பாதை வழியாக எது அணுகக்கூடியது என்பதை வாடிக்கையாளருக்குச் சொல்கிறது; முதலாவதைத் திருப்பித் தந்து இரண்டாவதை மறந்தால் முகவரி இருந்தும் செல்ல இடமில்லாத வாடிக்கையாளர் கிடைப்பார். கோப்பிற்குள் வரிசை முக்கியமல்ல, முழுமை முக்கியம். எந்தச் சகாவும் அடைய முடியாத முன்னொட்டுக்கு வழியை அனுப்பும் ஹூக் மறு முனையிலிருந்து பார்க்கப்படும் அதே தவறு.
உள்ளீடுகள் சூழல் மாறிகள் மூலம் வருகின்றன: common_name, trusted_ip, ifconfig_pool_remote_ip மற்றும் மற்றவை. அவை அனைத்தையும் சேவையகத்திற்கு வெளியேயிருந்து வரும் சரங்களாகக் கருதுங்கள், ஒருபோதும் ஷெல் துண்டுகளாக அல்ல.
முகவரி மேப்பிங் ஒரு கொள்கை, கணிதம் அல்ல
ஒரு கவர்ச்சிகரமான குறுக்குவழி சான்றிதழின் பெயரைப் பகுத்து அதன் இலக்கங்களைக் கடைசி ஆக்டெட்டாகப் பயன்படுத்துவது. அது ஒரு ஒதுக்கீட்டாளர் அல்ல, வழக்கமான வழிகளில் தோல்வியடைகிறது: ஒரே பின்னொட்டைக் கொண்ட இரண்டு பெயர்கள் மோதுகின்றன, 300 இல் முடியும் பெயர் முகவரி அல்ல, நிர்வாகி மறுபெயரிட்ட சான்றிதழ் ஒரு சாதனத்தை அமைதியாக நகர்த்துகிறது. ஒவ்வொரு அழைப்பிலும் சப்நெட் உறுப்பினர், பயன்படுத்தக்கூடிய ஹோஸ்ட் வரம்பு, ஒதுக்கப்பட்ட முகவரிகள் மற்றும் தனித்துவத்தைச் சரிபார்க்கவும், மேப்பிங்கை மனிதர் படிக்கக்கூடிய அட்டவணையில் வைத்திருங்கள்.
பெயரைக் கட்டுப்படுத்துபவர் முகவரியைக் கட்டுப்படுத்துகிறார், எனவே இந்தப் பயன்பாட்டில் common_name உண்மையில் எதைக் குறிக்கிறது என்பதை முடிவு செய்யுங்கள். username-as-common-name இயக்கப்பட்டால், அடையாளம் உள்நுழைவு, சான்றிதழ் பொருள் அல்ல. அந்த மதிப்பை ஒருபோதும் ஷெல் மதிப்பீட்டிற்கு அனுப்பாதீர்கள், வாடிக்கையாளர் கோப்புப் பாதையைப் பாதிக்க அனுமதிக்காதீர்கள்.
பதிவேட்டை அடிப்படையாகக் கொண்ட ஒதுக்கீட்டாளர் ஒருங்கிணைப்பைத் தாங்க வேண்டும். முகவரியை அணு ரீதியாக ஒதுக்குங்கள், பாதி உள்ளமைக்கப்பட்ட வாடிக்கையாளரை அனுமதிக்காமல் தோல்வியடைந்த எழுத்தைக் கையாளுங்கள், ஒவ்வொரு ஒதுக்கீட்டையும் அதைச் சொந்தமாகக் கொண்ட இணைப்புடன் குறியிடுங்கள், பழைய அமர்வின் தாமதமான துண்டிப்பு புதியது ஏற்கனவே வைத்திருக்கும் முகவரியை விடுவிக்க முடியாதபடி. ஒரு தொகுப்பைப் பகிரும் பல சேவையக நிகழ்வுகள் இந்தத் தேவையை விருப்பமின்றி கூர்மையாக்குகின்றன.
ifconfig-push என்ன அர்த்தம் என்பதை டோபாலஜி தீர்மானிக்கிறது
10.77.0.0/24 இல் topology subnet உடன், ifconfig-push 10.77.0.20 255.255.255.0 ஒரு முகவரி மற்றும் அதன் நெட்மாஸ்க். topology net30 கீழ் இரண்டாவது அர்கியுமெண்ட் மாஸ்க் அல்ல, சகாவின் முகவரி, எனவே சப்நெட் வடிவத்தை net30 சேவையகத்திற்கு நகலெடுத்தால் இணைக்கும் ஆனால் போக்குவரத்தைக் கடத்த முடியாத வாடிக்கையாளர் கிடைப்பார். டோபாலஜியை வேண்டுமென்றே மாற்றுங்கள், உதாரணம் சீரானதாகத் தெரிவதற்காக ஒருபோதும் அல்ல. ஏற்கனவே net30 இயங்கும் சேவையகத்திற்கு பழைய முகவரியீட்டில் உயிருள்ள வாடிக்கையாளர்கள் உள்ளனர், எனவே மாற்றம் பராமரிப்பு சாளரத்துடன் கூடிய இடம்பெயர்வு, ஒரு வரி திருத்தம் அல்ல.
நிலையான முகவரிகள் மாறும் தொகுப்பிற்கு வெளியேயும் மற்ற ஒவ்வொரு நிலையான ஒதுக்கீட்டிற்கும் வெளியேயும் இருக்க வேண்டும், சாதாரண client-config-dir கோப்புகள் வழங்குவதும் உட்பட. இரண்டு பொறிமுறைகள் வெவ்வேறு வாடிக்கையாளர்களுக்கு ஒரே முகவரியை உருவாக்க முடிந்தால், அவற்றில் ஒன்று இறுதியில் அப்படிச் செய்யும்.
அதை நம்பும் முன் நான்கு நிகழ்வுகளைச் சோதிக்கவும்
அதே சோதனைகளை மேப் செய்யப்பட்ட அடையாளம், மேப் செய்யப்படாதது, மறுஇணைப்பு மற்றும் உருவகப்படுத்தப்பட்ட பதிவேட்டுத் தோல்வியில் இயக்கவும். openvpn --config client.ovpn --verb 4 ஒதுக்கப்பட்ட முகவரியை push பதிலில் காட்டுகிறது, சேவையகத்தில் grep -A2 PUSH_REPLY /var/log/openvpn/openvpn.log உண்மையில் என்ன அனுப்பப்பட்டது என்பதை உறுதிசெய்கிறது. மேப் செய்யப்படாத அடையாளத்திற்கு எதிர்பார்க்கப்படும் முடிவு நிராகரிக்கப்பட்ட இணைப்பு, தொகுப்பு முகவரி அல்ல.
பின்னர் டீமன் அந்தத் தற்காலிகக் கோப்புகளை எழுதும் அடைவைப் பார்வையிடுங்கள். ஸ்கிரிப்ட் தாழ்ந்த சேவைச் சூழலில் இயங்குகிறது, எனவே root எழுதக்கூடிய ஆனால் டீமனால் எழுத முடியாத பாதை ஒவ்வொரு இணைப்பையும் பதிவில் பல வரிகளுக்குக் கீழே புதைந்த அனுமதிப் பிழையுடன் நிராகரிப்பாக மாற்றுகிறது.
ஒதுக்கீடு அங்கீகாரம் அல்ல: பொருத்தப்பட்ட முகவரி இன்னும் சேவையகத்தின் பின்னால் உள்ள ஒவ்வொரு இலக்கிற்கும் அணுகலைத் தராது. வழித்தடம் மற்றும் ஃபயர்வால் கொள்கையை அதன் சொந்த அடுக்கில் வைத்திருங்கள், நீங்கள் இப்போது நிர்ணயித்த முகவரிக்கு எதிராக அதைச் சரிபார்க்கவும்.