OpenVPN push-peer-info: ആക്സസ് നൽകാതെ ക്ലയന്റുകളെ ലേബൽ ചെയ്യുക
UV_ ഫീൽഡ് പ്രാമാണീകരിച്ച ടണലിലൂടെ സഞ്ചരിക്കുന്നു, പക്ഷേ മൂല്യം ഇപ്പോഴും ക്ലയന്റിന്റെ അവകാശവാദമാണ്. അത് ബന്ധിപ്പിക്കുക, എന്താണ് എത്തിയതെന്ന് പരിശോധിക്കുക, അനുമതി സർവറിൽ തന്നെ നിർത്തുക.
ഡിപ്ലോയ്മെന്റ് ടാഗുകളാണ് ആളുകൾ ഈ സവിശേഷതയിലേക്ക് തിരിയുന്ന സാധാരണ കാരണം: ഓരോ കണക്ഷനും സൈറ്റ് അല്ലെങ്കിൽ റോൾ പോലുള്ള എന്തെങ്കിലും വഹിക്കണം, രണ്ടാമത്തെ ക്രെഡൻഷ്യൽ ഫോർമാറ്റ് കണ്ടുപിടിക്കാതെ സർവർ അത് വായിക്കണം. കമ്മ്യൂണിറ്റി OpenVPN-ന് ഈ സംവിധാനം ഇതിനകം ഉണ്ട്, അത് ചെറുതാണ്. വേദനിപ്പിക്കുന്ന ഭാഗം പ്രതീക്ഷകളാണ്. ക്ലയന്റ് പ്രൊഫൈലിൽ സാധാരണ വേരിയബിൾ സജ്ജീകരിക്കുന്നത് സർവറിൽ ഒന്നും ചെയ്യുന്നില്ല, എത്തുന്ന മൂല്യം ക്ലയന്റ് അത് അയച്ചു എന്ന് മാത്രം തെളിയിക്കുന്നു.
ഇത് പ്രവർത്തിക്കുന്ന വഴിക്കും, യഥാർത്ഥത്തിൽ എന്താണ് എത്തിയതെന്ന് കാണിക്കുന്ന പരിശോധനാ ഘട്ടത്തിനും, പകുതി കോൺഫിഗർ ചെയ്ത ഹുക്ക് അവശേഷിപ്പിക്കാത്ത റോൾബാക്കിനും ഉള്ള ഒരു റൺബുക്കാണ്. ഇവിടെ ഒന്നും പുതിയ സർട്ടിഫിക്കറ്റോ പുതിയ പ്ലഗിനോ പ്രോട്ടോക്കോൾ വിപുലീകരണമോ ആവശ്യപ്പെടുന്നില്ല.
വേരിയബിൾ സജ്ജീകരിച്ച് വഴി പ്രവർത്തനക്ഷമമാക്കുക
ക്ലയന്റ് പ്രൊഫൈലിൽ രണ്ട് വരികൾ ജോലി ചെയ്യുന്നു, രണ്ടും ആവശ്യമാണ്. ആദ്യത്തേതില്ലാതെ അയക്കാൻ ഒന്നുമില്ല; രണ്ടാമത്തേതില്ലാതെ ക്ലയന്റ് പീർ വിവരങ്ങൾ ഒട്ടും നൽകുന്നില്ല. ക്രമം പ്രധാനമല്ല, അത് അറിയേണ്ടതാണ്, കാരണം രണ്ട് വരികളും പലപ്പോഴും സൃഷ്ടിച്ച പ്രൊഫൈലിന്റെ വ്യത്യസ്ത ഭാഗങ്ങളിലാണ് അവസാനിക്കുന്നത്. ക്ലയന്റ് വായിക്കുന്നതിന് മുമ്പ് പ്രൊഫൈൽ മാറ്റിയെഴുതുന്ന എന്തിൽ നിന്നും രണ്ടും അതിജീവിക്കണം എന്നതാണ് പ്രധാനം.
setenv UV_DEPLOY field-support
push-peer-info
UV_ പ്രിഫിക്സ് അലങ്കാരമല്ല. സാധാരണ DEPLOY വേരിയബിൾ ക്ലയന്റ് പ്രോസസ്സിൽ പ്രാദേശികമായി തുടരുന്നു, ഒരിക്കലും കൈമാറ്റം ചെയ്യപ്പെടുന്നില്ല, അതേസമയം പ്രിഫിക്സുള്ള രൂപം ഉപയോക്താവ് നിർവചിച്ച ഫീൽഡുകൾക്കായി പ്രോട്ടോക്കോൾ സംവരണം ചെയ്യുന്ന നെയിംസ്പേസാണ്. അംഗീകരിച്ച പ്രൊഫൈലിന്റെ ബാക്കി ഭാഗം അസ്പൃശ്യമായി വയ്ക്കുക, വിന്യസിക്കുന്നതിന് മുമ്പ് നിങ്ങൾ വിന്യസിക്കുന്ന ക്ലയന്റ് ബിൽഡ് രണ്ട് നിർദ്ദേശങ്ങളെയും പിന്തുണയ്ക്കുന്നുവെന്ന് സ്ഥിരീകരിക്കുക.
ഒരു പ്രായോഗിക പരിശോധന അവസാനത്തിലല്ല, ഇവിടെയാണ് വേണ്ടത്: നിർദ്ദേശം ക്ലയന്റ് ബൈനറിയിൽ എത്തുന്നുവെന്നും ഏതെങ്കിലും റാപ്പർ അത് വിഴുങ്ങുന്നില്ലെന്നും ഉറപ്പാക്കുക. സ്വന്തം കമാൻഡ് ലൈൻ സൃഷ്ടിക്കുന്ന ഗ്രാഫിക്കൽ ക്ലയന്റോ, സംഭരിച്ച പ്രൊഫൈൽ വീണ്ടും ലോഡ് ചെയ്യുന്ന മാനേജ്മെന്റ് ഇന്റർഫേസോ തിരിച്ചറിയാത്ത വരികൾ ഉപേക്ഷിച്ചേക്കാം. സർവർ ഒന്നും കാണുന്നില്ലെങ്കിൽ, ആദ്യം നോക്കേണ്ട സ്ഥലം ഇതാണ്.
സർവർ ഹുക്കിൽ നിന്ന് ഫീൽഡ് വായിക്കുക
സർവർ ഭാഗത്ത്, ലഭിച്ച പീർ വിവരങ്ങൾ സാധുതയുള്ളതാക്കി കണക്ഷൻ വർക്ക്ഫ്ലോയുടെ പരിതസ്ഥിതിയിൽ ചേർക്കുന്നു, അതാണ് നിങ്ങളുടെ ഭാഗത്ത് ഒരു പ്രോട്ടോക്കോൾ ജോലിയും കൂടാതെ ഹുക്കിൽ നിന്ന് അത് വായിക്കാൻ സാധ്യമാക്കുന്നത്. സർവറിന് നിയന്ത്രണ ചാനൽ വിശകലനം ചെയ്യേണ്ടതില്ല, നിങ്ങൾക്കായി എന്തെങ്കിലും സംഭരിക്കേണ്ടതില്ല; കണക്ഷൻ സജ്ജീകരിക്കുമ്പോൾ മൂല്യം കേവലം അവിടെയുണ്ട്. പ്രാമാണീകരിച്ച പേരിന് അടുത്തായി ലേബൽ രേഖപ്പെടുത്തുന്ന ഏറ്റവും ചെറിയ client-connect സ്ക്രിപ്റ്റ് ഇങ്ങനെയാണ്.
#!/bin/sh
# /etc/openvpn/server/hooks/label.sh
printf '%s %s\n' "$common_name" "${UV_DEPLOY:-unset}" \
>> /var/log/openvpn/deploy-labels.log
ലോഗ് വിശകലനം ചെയ്യുന്നതിന് പകരം പരിതസ്ഥിതിയിലൂടെ വേരിയബിൾ വായിക്കുക, എപ്പോഴും ഒരു സ്വതവേയുള്ള മൂല്യം നൽകുക. ${UV_DEPLOY:-unset} ഫീൽഡ് ഒരിക്കലും അയക്കാത്ത ക്ലൈന്റുകൾക്കും സ്ക്രിപ്റ്റ് പ്രവർത്തനക്ഷമമായി നിലനിർത്തുന്നു, ഘട്ടംഘട്ടമായ വിന്യാസത്തിൽ ഇതാണ് സാധാരണ അവസ്ഥ. പേര് കണ്ടെത്താൻ മുഴുവൻ പരിതസ്ഥിതിയും ലോഗിലേക്ക് ഒഴുക്കരുത്; ലേബലിനേക്കാൾ എത്രയോ കൂടുതൽ അതിൽ ഉണ്ട്, സൂക്ഷിക്കാൻ ഉദ്ദേശിക്കാത്ത മൂല്യങ്ങൾ ഉൾപ്പെടെ.
സ്ക്രിപ്റ്റ് കൈകൊണ്ട് പ്രവർത്തിപ്പിക്കുക, എല്ലാത്തിനും unset എന്ന് അത് റിപ്പോർട്ട് ചെയ്യും, കാരണം കൈകൊണ്ടുള്ള ഷെൽ കണക്ഷന്റെ പരിതസ്ഥിതി വഹിക്കുന്നില്ല. ഇത് സ്ക്രിപ്റ്റിലെ ബഗ്ഗല്ല, ഫീൽഡ് ഇല്ലെന്നതിന്റെ തെളിവുമല്ല. യഥാർത്ഥ കണക്ഷനിലൂടെ അത് പരിശോധിക്കുക, വേരിയബിൾ നിലനിൽക്കുന്ന ഏക സന്ദർഭം അതാണ്.
യഥാർത്ഥത്തിൽ എന്താണ് എത്തിയതെന്ന് പരിശോധിക്കുക
ലേബലുള്ള ഒരു ക്ലയന്റും അതില്ലാത്ത മറ്റൊന്നും ബന്ധിപ്പിച്ച് ഫയൽ വായിക്കുക. ജോഡിയാണ് പരിശോധന: ഒരു വരി മൂല്യം വഹിക്കണം, മറ്റൊന്ന് സ്വതവേയുള്ളത്, രണ്ടും നിങ്ങൾ പ്രതീക്ഷിക്കുന്ന അതേ പ്രാമാണീകരിച്ച ഐഡന്റിറ്റി പേര് നൽകണം.
tail -n 5 /var/log/openvpn/deploy-labels.log
# field-support deployed-client-07
# unset legacy-laptop-02
ആ കമന്റ് വരികൾ ഔട്ട്പുട്ടിന്റെ രൂപമാണ്, നിങ്ങളുടെ സർവറിന്റെ ട്രാൻസ്ക്രിപ്റ്റല്ല; നിങ്ങളുടെ സ്വന്തം ഫയൽ വായിക്കുക. രണ്ടാമത്തെ ക്ലയന്റും മൂല്യം കാണിക്കുന്നുവെങ്കിൽ, വേരിയബിൾ പരിതസ്ഥിതിയിൽ മറ്റെവിടെയോ സജ്ജീകരിച്ചിരിക്കുന്നു, നിങ്ങൾ പീർ ഫീൽഡല്ല, പഴയ ക്രമീകരണമാണ് വായിക്കുന്നത്.
കണക്ഷനുള്ള സർവർ ലോഗും പരിശോധിക്കുക. പീർ വിവരങ്ങൾ അവിടെ പ്രത്യക്ഷപ്പെടാം, ഇത് ഡീബഗ്ഗിംഗിന് സൗകര്യപ്രദവും മൂല്യങ്ങൾ വിരസമായി നിർത്താനുള്ള കാരണവുമാണ്: ആളുകളുടെ പേരുകളില്ല, ടിക്കറ്റ് നമ്പറുകളില്ല, ലോഗ് വായനക്കാരൻ കണ്ടാൽ നിങ്ങൾക്ക് അസ്വസ്ഥത തോന്നാത്ത ഒന്നുമില്ല.
ലേബലിനെ അവകാശവാദമായി കാണുക, ഐഡന്റിറ്റിയായി അല്ല
ക്ലയന്റ് പ്രൊഫൈൽ എഡിറ്റ് ചെയ്യാൻ കഴിയുന്ന ആർക്കും ടാഗ് മാറ്റാം, ടണൽ പ്രാമാണീകരിച്ചതാണെന്നത് ടാഗിനെ അധികാരമുള്ളതാക്കുന്നില്ല. ഗതാഗതം വഴിയിൽ മൂല്യം സംരക്ഷിക്കുന്നു; അത് അവകാശവാദം സാക്ഷ്യപ്പെടുത്തുന്നില്ല. അനുമതി ഇപ്പോഴും പ്രാമാണീകരിച്ച ഐഡന്റിറ്റിക്കും സർവറിന്റെ ഉടമസ്ഥതയിലുള്ള രജിസ്ട്രേഷൻ രേഖയ്ക്കും ഉള്ളതാണ്, ആവശ്യമായപ്പോൾ ലേബൽ ആ രേഖയുമായി താരതമ്യം ചെയ്യുന്നു.
ആ വ്യത്യാസമാണ് ലേബൽ എവിടെ ഉപയോഗിക്കാമെന്ന് തീരുമാനിക്കുന്നത്. നല്ല ഉപയോഗങ്ങൾ സെഷൻ ശരിയായ ലോഗ് ഫയലിലേക്ക് വഴിതിരിച്ചുവിടുന്നത്, ഡാഷ്ബോർഡിൽ ഡിസ്പ്ലേ ഗ്രൂപ്പ് തിരഞ്ഞെടുക്കുന്നത്, അല്ലെങ്കിൽ പിന്നീട് ഒരു മനുഷ്യന് കണ്ടെത്താൻ കഴിയുന്ന വിധം പിന്തുണാ സെഷൻ ലേബൽ ചെയ്യുന്നത് എന്നിവയാണ്. മോശം ഉപയോഗങ്ങൾ ഒരു ഉപകരണത്തെ സബ്നെറ്റിലേക്ക് പ്രവേശിപ്പിക്കുന്നത്, ഫയർവാൾ നയം തിരഞ്ഞെടുക്കുന്നത്, അല്ലെങ്കിൽ സെഷന് ഏത് ഉപഭോക്താവിന്റെ ഡാറ്റ വായിക്കാമെന്ന് തീരുമാനിക്കുന്നത് എന്നിവയാണ്.
മൂല്യം ഒരു പാത, ക്വെറി അല്ലെങ്കിൽ ഷെൽ കമാൻഡിൽ എത്തുന്നതിന് മുമ്പ് അത് സാധൂകരിക്കുക. പ്രതീക്ഷിക്കുന്ന സ്ട്രിംഗുകളുടെ അനുവദനീയ പട്ടിക ഡിപ്ലോയ്മെന്റ് ടാഗിന് മതിയാകും, അതിന് ചെലവൊന്നുമില്ല. പീർ നൽകുന്ന സ്ട്രിംഗ് ഒരിക്കലും ഷെൽ കമാൻഡ് ലൈനിൽ ചേർക്കരുത്, സംഭരിച്ച ഏതെങ്കിലും നിരീക്ഷണം സെഷനിൽ പരിമിതപ്പെടുത്തുക, അടുത്ത ക്ലയന്റ് വീണ്ടും ഉപയോഗിക്കുന്ന ടണൽ വിലാസത്തിലല്ല.
case "${UV_DEPLOY:-}" in
field-support|field-qa|lab) : ;;
*) UV_DEPLOY=unknown ;;
esac
ശുദ്ധമായി തിരികെയെടുക്കുക
സവിശേഷത നീക്കം ചെയ്യുന്നത് രണ്ട് ഇല്ലാതാക്കലും ഒരു പരിശോധനയുമാണ്. ക്ലയന്റ് പ്രൊഫൈലിൽ നിന്ന് setenv, push-peer-info വരികൾ നീക്കം ചെയ്യുക, തുടർന്ന് സർവറിലെ ഹുക്കും അതിന്റെ ലോഗ് ലക്ഷ്യവും നീക്കം ചെയ്യുകയോ പ്രവർത്തനരഹിതമാക്കുകയോ ചെയ്യുക.
grep -rn 'UV_DEPLOY\|push-peer-info' /etc/openvpn/
tail -n 3 /var/log/openvpn/deploy-labels.log
അതിനുശേഷം ഒരു ക്ലയന്റ് വീണ്ടും ബന്ധിപ്പിച്ച് ലോഗ് വരി പ്രത്യക്ഷപ്പെടുന്നത് നിലച്ചുവെന്ന് സ്ഥിരീകരിക്കുക. പ്രൊഫൈൽ മാറ്റത്തിനുശേഷവും പ്രവർത്തിക്കുന്ന ഹുക്ക് സാധാരണയായി പരീക്ഷണ ഉപകരണത്തിൽ ഇപ്പോഴും വിന്യസിച്ചിട്ടുള്ള രണ്ടാമത്തെ പ്രൊഫൈലാണ്, ഇപ്പോൾ അത് കണ്ടെത്തുന്നത് ഓഡിറ്റിനിടയിൽ കണ്ടെത്തുന്നതിനേക്കാൾ വിലകുറവാണ്.
അവസാനം അവശേഷിക്കുന്നത് ഉത്ഭവം രേഖപ്പെടുത്തിയ സെഷൻ മെറ്റാഡാറ്റയുടെ ചെറിയ, പരിമിതമായ ഒരു ഭാഗമാണ്: ക്ലയന്റ് അത് അവകാശപ്പെടുന്നു, സർവർ അത് രേഖപ്പെടുത്തുന്നു, ആക്സസിനെക്കുറിച്ച് ഒന്നും അതിനെ ആശ്രയിക്കുന്നില്ല. ഇതാണ് സവിശേഷതയുടെ ഉപയോഗപ്രദമായ രൂപം, അങ്ങോട്ട് എത്താൻ പുതിയ ക്രെഡൻഷ്യലുകളൊന്നും ആവശ്യമില്ല.