OpenVPN இன் user வீழ்ச்சியின் மேல் systemd கடினமாக்கலை அடுக்க வேண்டாம்
குறைந்தபட்ச சலுகை கொண்ட இரு செய்முறைகள் ஒன்றாகச் சேர்ந்தால் மிகக் கடுமையான ஒன்றாகாது. அடையாள மாற்றத்தை யார் செய்கிறார் என்பதைத் தேர்ந்தெடுத்து, பின்னர் முழு வாழ்க்கைச் சுழற்சியிலும் அதிகாரத்தை வரைபடமாக்குங்கள்.
ஒன்றாக ஒட்டப்பட்ட குறைந்தபட்ச சலுகை செய்முறை இரண்டும் மிகக் கடுமையான பயன்பாட்டைத் தருவதில்லை. ஒரு மாதிரி டீமனைச் சலுகைகளுடன் தொடங்கி துவக்கத்திற்குப் பிறகு சலுகையற்ற கணக்கிற்கு இறங்க அனுமதிக்கிறது; மற்றொன்று சேவை மேலாளரை முதல் கட்டளை முதல் வரையறுக்கப்பட்ட அடையாளத்தின் கீழ் இயக்க அனுமதிக்கிறது. ஒவ்வொன்றும் தனித்து இயங்குகிறது, இரண்டின் சேர்க்கை பெரும்பாலும் இரு பணிகளில் ஒன்றையும் சுத்தமாகச் செய்ய முடியாத சேவையை உருவாக்குகிறது. மீதமுள்ளவை முடிவை வரிசையாகப் பார்க்கின்றன.
இரு மாதிரிகள், மாற்றத்தின் ஒரே உரிமையாளர்
முதல் மாதிரி டீமனுக்குரியது. சமூக OpenVPN இன் user மற்றும் group விருப்பங்கள் சுரங்கப்பாதையும் சாவிகளும் அமைந்த பிறகு அடையாளத்தை மாற்றுகின்றன, persist-key உடன் persist-tun அந்த வளங்களைப் பின்னரும் பயன்படுத்தக்கூடியதாக வைத்திருக்கின்றன.
இரண்டாவது மாதிரி சேவை மேலாளருக்குரியது. systemd இன் User= அல்லது Group= அமைப்பு எந்த அடையாளத்தின் கீழ் செயல்முறை தொடங்குகிறது என்பதைத் தீர்மானிக்கிறது, திறன் கட்டளைகள் எதை வைத்திருக்கலாம் என்பதைத் தீர்மானிக்கின்றன. மாதிரிகளுக்கு இடையிலான தேர்வு பாதுகாப்புக் கேள்வியாகும் முன் தொகுப்பாக்கக் கேள்வியாகும், தொகுப்புப் பராமரிப்பாளர் ஏற்கனவே அதற்குப் பதிலளித்துள்ளார். உங்கள் வேலை மூன்றாவது விருப்பத்தைக் கண்டுபிடிப்பது அல்ல, அந்தப் பதிலைக் கண்டறிவதே.
இரண்டும் செல்லுபடியானவை. தவறு என்னவென்றால் அவற்றை ஒரே வடிவமைப்பின் அடுக்குகளாகக் கருதுவது, ஏனெனில் இரண்டாவது மாதிரி முதல் மாதிரியின் அடையாள மாற்றத்தைச் செயல்முறைக்கு இனி அனுமதிக்கப்படாத செயலாக மாற்றக்கூடும்.
அடையாளம் எங்கு மாறுகிறது என்பதைத் தீர்மானியுங்கள்
அலகு ஏற்கனவே பிரத்யேகக் கணக்காகத் தொடங்கினால், டீமனுக்கு வேறு கணக்காக மாறக் கட்டளை இடுவது கடினப்படுத்தப்பட்ட சேவை ஒருபோதும் செய்யக் கூடாத setuid மாற்றத்தைக் கோருகிறது. தோல்வி தொடக்கத்தில் அனுமதிப் பிழையாகத் தோன்றுகிறது, தெளிவான கொள்கைச் செய்தியாக அல்ல. இது காணாமற்போன திறனாகப் படிக்கப்படுகிறது, இது மக்களை அடையாளக் கேள்வியை நோக்கி அல்ல, மிகவும் பரந்த வரம்புத் தொகுப்பை நோக்கித் தள்ளுகிறது.
எதையும் திருத்தும் முன் நிறுவப்பட்ட தொகுப்பு உண்மையில் என்ன வழங்குகிறது என்பதைப் படியுங்கள், அதன் drop-in கோப்பகம் உட்பட. சில அலகுகள் மேலாளர் ஏற்கனவே கையாள்வதால் டீமனின் சொந்த இறக்கம் வேண்டுமென்றே விடப்படுகிறது, மேலும் சில துவக்கத்திற்குப் பிந்தைய மாற்றத்திற்கு அந்த விருப்பங்களைச் சார்ந்திருக்கின்றன. எந்த மாதிரி வாரிசாகக் கிடைத்தது எனத் தெரியாமல் ஒன்றை நீக்குவதே இயங்கும் சேவை தொடங்காமல் போகும் வழி.
தேர்ந்தெடுத்த மாதிரியை ஒரு வரியில் எழுதுங்கள்: மேலாளர்-உரிமை அல்லது டீமன்-உரிமை. அடுத்தடுத்த ஒவ்வொரு கட்டளையும் அந்த வாக்கியத்துடன் ஒத்துப்போக வேண்டும், கலப்பு அலகு சமரசமாக அல்ல, குறையாகக் கருதப்பட வேண்டும்.
திறன்கள் வரம்புகள், வழங்கல்கள் அல்ல
திறன் வரம்புத் தொகுப்பு ஒரு செயல்முறை அதிகபட்சம் எதை வைத்திருக்கலாம் என்பதைச் சொல்கிறது. அது ஒரு கூரை, அங்கு திறனைப் பட்டியலிடுவது தானாக எதையும் தராது, அதனால்தான் தாராள வரம்புத் தொகுப்புள்ள அலகும் சுரங்கப்பாதையை உருவாக்க முடியாமல் போகலாம்.
ஒரு திறனைச் சேவையின் சுற்றியுள்ள தொகுப்பில் உண்மையில் வைப்பது AmbientCapabilities= ஆகும். systemd செயலாக்கக் கையேடு இரு கட்டளைகளையும் தனித்தனியாக ஆவணப்படுத்துகிறது, இந்த வேறுபாடே இணையத்தில் திறன்கள் பற்றிய குழப்பமான ஆலோசனைகளில் பெரும்பாலானவற்றை விளக்குகிறது.
தோல்வியடையும் செயல்பாடு அதை அடையாளம் கண்ட பிறகே திறனைச் சேர்க்கவும். பரந்த வரம்புத் தொகுப்பு உண்மையான காரணத்தை மறைத்து சேவையை வடிவமைப்பு நோக்கியதை விட அதிக சலுகையுடன் விடுகிறது. கூரை இனி வேலையை விவரிக்காததால் அலகை மீளாய்வு செய்வதையும் கடினமாக்குகிறது. உண்மையான குறை சரிசெய்யப்பட்ட பிறகு கூடுதல் திறனை நீக்கவும்.
வாழ்க்கைச் சுழற்சி முழுவதும் அதிகாரத்தை வரைபடமாக்குங்கள்
ஒவ்வொரு கட்டத்திலும் செயல்முறை என்ன செய்ய வேண்டும் என்பதைப் பட்டியலிடுங்கள்: தொடக்கம், நிலையான நிலை, மறு அங்கீகாரம் மற்றும் அகற்றம். இடைமுக உருவாக்கம், பாதை மாற்றங்கள், பாதுகாக்கப்பட்ட சாவியைப் படித்தல் மற்றும் உதவியாளரை அழைத்தல் அனைத்தும் ஒரே நேரத்தில் அல்லது ஒரே தேவைகளின் கீழ் நடப்பதில்லை. திறனின் அடிப்படையில் வரிசைப்படுத்தும் முன் கட்டத்தின் அடிப்படையில் பட்டியலை வரிசைப்படுத்துங்கள்.
நிலைத்தன்மை விருப்பங்கள் மறுபேச்சுவார்த்தைகளுக்கு இடையே வளங்களைப் பாதுகாக்கின்றன, ஒருபோதும் இல்லாத அனுமதிகளைத் தருவதில்லை. தொடக்கத்தில் செயல்முறை படிக்க முடியாத சாவி பின்னரும் படிக்க முடியாததாகவே இருக்கும், நிலைத்தன்மைக் கொடிகள் என்ன சொன்னாலும். கொடிகள் ஏற்கனவே இயங்கியதைப் பாதுகாக்கின்றன.
பங்கிடப்பட்டதல்ல, பிரத்யேகக் கணக்கைப் பயன்படுத்துங்கள். OpenVPN உருவாக்குநர்கள் nobody ஐ பொதுவான எடுத்துக்காட்டாகப் பயன்படுத்தும் பழக்கத்திற்கு எதிராக எச்சரிக்கின்றனர், ஏனெனில் ஹோஸ்ட்டில் உள்ள பிற சேவைகள் ஏற்கனவே அந்தக் கணக்கில் இயங்கக்கூடும், நீங்கள் நினைக்கும் தனிமை அங்கு இல்லை.
உள்ளூர் சுமையை மாற்றும் அம்சங்கள், எடுத்துக்காட்டாக தரவு-சேனல் இறக்குமதி அல்லது வேறுவிதமாக இணைக்கப்படும் கட்டமைப்பு, எந்தச் செயல்கள் தேவை என்பதை மாற்றக்கூடும். தொகுப்பு மாறும்போது வரைபடத்தை மீண்டும் பாருங்கள், ஏதாவது உடையும்போது மட்டுமல்ல.
திட்டத்தை எழுதி மீட்பு அணுகலை வைத்திருங்கள்
பயன்பாட்டுப் பதிவில் மேலாளர், தொடக்க அடையாளம், எண்ணிய நிலையான அடையாளம் மற்றும் ஒவ்வொரு வழங்கலையும் அதைத் தேவைப்படுத்தும் செயலுடன் பெயரிட வேண்டும். அந்தப் பதிவே அடுத்த மாற்றத்தைச் சோதனையாக அல்ல, மீளாய்வுக்குரியதாக ஆக்குகிறது.
திருத்தும்போது கன்சோல் அணுகலைக் கிடைக்கவைத்திருங்கள், ஏனெனில் தொடக்கத்தில் தோல்வியடையும் அலகைத் தொலைவிலிருந்து சரிசெய்வது கடினம். மாற்றத்தை முடிந்ததாக அறிவிக்கும் முன் மறுதொடக்கம் மற்றும் முழு மறுதொடக்கத்தைச் சோதியுங்கள். மறுதொடக்கத்தைத் தாங்கும் அலகும் வலையமைப்பு எழும்பும் முன் தோல்வியடையக்கூடும்.
வெற்றி என்பது புரிந்துகொள்ளப்பட்ட குறைந்தபட்ச அதிகார வாழ்க்கைச் சுழற்சி, root அல்லாத பெயரில் தற்செயலாக இயங்கும் செயல்முறை அல்ல.