ഒരു പ്രൊഫൈൽ ഡെസ്ക്ടോപ്പ് ക്ലയന്റിലേക്ക് ഇംപോർട്ട് ചെയ്യുക, ആദ്യ പരാജയം പലപ്പോഴും ക്ലയന്റ് അനുസരിക്കാൻ വിസമ്മതിക്കുന്ന ഒരു വരിയാണ്: അത് പ്രവർത്തിപ്പിക്കാത്ത ഒരു സ്ക്രിപ്റ്റ് ഹുക്ക്, അല്ലെങ്കിൽ വളരെ അനുവദനീയമെന്ന് അത് കരുതുന്ന script-security മൂല്യം. സംഖ്യ ഉയർത്തിയാൽ ഡയലോഗ് പോകുന്നു. എന്നാൽ അത് ആ പ്രൊഫൈലിന് നിങ്ങളുടെ യന്ത്രത്തിൽ പ്രവർത്തിപ്പിക്കാനുള്ള പരിധിയും വിപുലീകരിക്കുന്നു, ഒരു മുന്നറിയിപ്പ് മൂടാൻ മാത്രം അത് നൽകുന്നത് വിചിത്രമാണ്. ഇംപോർട്ട് നിർദ്ദേശം വരെ പിന്തുടരുക, തീരുമാനം വ്യക്തമാകും.

ഇംപോർട്ട് ഡയലോഗിൽ നിന്ന് നിർദ്ദേശത്തിലേക്ക്

പ്രൊഫൈൽ നിർദ്ദേശങ്ങളുള്ള ഒരു ടെക്സ്റ്റ് ഫയലാണ്, ഏതെങ്കിലും ടണൽ ഉണ്ടാകുന്നതിന് മുമ്പ് ക്ലയന്റ് അവ വായിക്കുന്നു. up, down അല്ലെങ്കിൽ tls-verify പോലുള്ള ഒരു നിർദ്ദേശം, OpenVPN ഒരു നിശ്ചിത നിമിഷത്ത് പ്രവർത്തിപ്പിക്കേണ്ട ബാഹ്യ പ്രോഗ്രാമിനെ പേരിടുന്നു. OpenVPN അത് പ്രവർത്തിപ്പിക്കാൻ തയ്യാറാണോ എന്നത് script-security എന്ന പ്രത്യേക ക്രമീകരണമാണ്, പ്രൊഫൈൽ സാധാരണയായി അതും സജ്ജമാക്കുന്നു.

അതിനാൽ മുന്നറിയിപ്പ് ഗൂഢാലേഖനത്തെയോ സർട്ടിഫിക്കറ്റുകളെയോ കുറിച്ചല്ല. ഒരു കോൺഫിഗറേഷൻ ഫയൽ ക്ലയന്റിനോട് ഹോസ്റ്റിൽ എന്തെങ്കിലും പ്രവർത്തിപ്പിക്കാൻ ആവശ്യപ്പെടുന്നതിനെയും, ക്ലയന്റിന്റെ നിലവിലെ അനുമതി നില ആ അഭ്യർത്ഥന അനുവദിക്കുന്നുണ്ടോ എന്ന് പരിശോധിക്കുന്നതിനെയും കുറിച്ചാണ്.

ഈ ഘട്ടത്തിൽ രണ്ട് വ്യത്യസ്ത പരാജയങ്ങൾ ഒരുപോലെ കാണപ്പെടുന്നു. ക്ലയന്റ് നൽകാത്ത ഒരു നില ആവശ്യപ്പെടുന്ന പ്രൊഫൈൽ നിരാകരണം ഉണ്ടാക്കുന്നു. ക്ലയന്റ് നൽകുന്ന നില ആവശ്യപ്പെടുന്നുവെങ്കിലും സ്ക്രിപ്റ്റ് ഇല്ലാത്ത പ്രൊഫൈൽ പകരം പ്രവർത്തന സമയത്ത് പരാജയം ഉണ്ടാക്കുന്നു, പിന്തുണ ത്രെഡുകളിൽ രണ്ടും കൂട്ടിക്കലർത്തപ്പെടുന്നു. ഒന്ന് അനുമതിയുടെ ചോദ്യമാണ്, മറ്റൊന്ന് പാക്കേജിംഗിന്റെ ചോദ്യമാണ്.

ഓരോ നിലയും യഥാർത്ഥത്തിൽ എന്ത് തുറക്കുന്നു

നില 0 ബാഹ്യ പ്രോഗ്രാം വിളികൾ പൂർണ്ണമായി വിലക്കുന്നു, ഇത് സഹായമില്ലാതെ സ്വന്തം ഇന്റർഫേസ് ക്രമീകരിക്കുന്ന ക്ലയന്റിന് സ്ഥിരതയുള്ളതും ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തെ വിളിക്കുന്ന ക്ലയന്റിന് സ്ഥിരതയില്ലാത്തതുമാണ്. നില 1, ഡിഫോൾട്ട്, ഇന്റർഫേസിനും റൂട്ട് ക്രമീകരണത്തിനും ആവശ്യമായ ഉൾനിർമ്മിത എക്സിക്യൂട്ടബിളുകൾ അനുവദിക്കുന്നു. രണ്ട് നിലകളും ഉപയോക്താവ് നൽകിയ ഒന്നും പ്രവർത്തിപ്പിക്കുന്നില്ല.

LevelWhat OpenVPN may executeWhat it exposes
0No external programs at allInterface and route setup must not depend on helpers
1 (default)Built-in helpers such as ip, ifconfig, route or netshPrivileged commands the platform already ships
2Built-in helpers plus user-defined scriptsWhatever the named script does with the client's privileges
3Everything above, plus passwords in environment variablesCredentials visible to child processes and their logs

നില 2 ആണ് രസകരമായ അതിർത്തി, കാരണം അത് ഉപയോക്തൃ-നിർവചിത സ്ക്രിപ്റ്റുകൾ അംഗീകരിക്കുന്നു. ആ നിമിഷം മുതൽ ക്ലയന്റിന്റെ പ്രത്യേകാവകാശങ്ങൾ നിങ്ങൾ ഒരുപക്ഷേ ഒരിക്കലും വായിക്കാത്ത കോഡിന് ബാധകമാകുന്നു, നിങ്ങൾ തിരഞ്ഞെടുക്കാത്ത നിമിഷങ്ങളിൽ വിളിക്കപ്പെടുന്നു, കണക്ഷൻ വിശദാംശങ്ങൾ ഉൾക്കൊള്ളുന്ന പരിസ്ഥിതിയിൽ പ്രവർത്തിക്കുന്നു. നില 3 കൂടുതൽ മുന്നോട്ട് പോയി പരിസ്ഥിതി വേരിയബിളുകളിലൂടെ പാസ്വേഡുകൾ കൈമാറാൻ അനുവദിക്കുന്നു, അതുകൊണ്ടാണ് മാന്വൽ അതിനെ സാധ്യതയുള്ള അസുരക്ഷിതം എന്ന് വിശേഷിപ്പിക്കുന്നത്.

ഈ സംഖ്യകളിൽ ഒന്നും ശക്തിയുടെ ക്രമീകരണമല്ല. നില 3-ലുള്ള പ്രൊഫൈലിന് നില 1-നേക്കാൾ മികച്ച എൻക്രിപ്ഷൻ ഇല്ല; അതിന് വലിയ പ്രവർത്തന ഉപരിതലം മാത്രമുണ്ട്, ടണൽ സമാനമാണ്.

പ്രൊഫൈൽ എന്തിന് അർഹമാണെന്ന് തീരുമാനിക്കുക

സ്ക്രിപ്റ്റിന് ഏത് നില വേണമെന്ന് ചോദിക്കുന്നതിന് മുമ്പ് അത് എന്തിനാണെന്ന് ചോദിക്കുക. DNS ക്രമീകരണങ്ങൾ തള്ളുന്നതോ കണക്ടിന് ശേഷം ഒരു റൂട്ട് നന്നാക്കുന്നതോ ആയ ഹുക്ക് എന്തെങ്കിലും പ്രവർത്തിപ്പിക്കാനുള്ള നിയമാനുസൃത കാരണമാണ്. താൽക്കാലിക ഫോൾഡറിൽ അപരിചിതമായ ബൈനറി വിളിക്കുന്ന ഹുക്ക് നിർത്താനുള്ള കാരണമാണ്.

സ്ക്രിപ്റ്റിന്റെ പാത സ്ക്രിപ്റ്റിനോളം പ്രധാനമാണ്. ആപേക്ഷിക പാത ക്ലയന്റ് ഉപയോഗിക്കുന്ന ഫോൾഡറിന് ആപേക്ഷികമായി പരിഹരിക്കപ്പെടുന്നു, എഴുതാവുന്ന ഫോൾഡർ ഒറ്റത്തവണ ഇംപോർട്ടിനെ സ്ഥിരമായ പ്രവർത്തന സ്ഥലമാക്കി മാറ്റുന്നു. ഉപയോക്താവിന് മാറ്റാൻ കഴിയാത്ത ഫോൾഡറിലെ കേവല പാതകളാണ് തിരഞ്ഞെടുക്കേണ്ട രൂപം.

സ്ക്രിപ്റ്റുകൾ ക്ലയന്റിന്റെ പരിസ്ഥിതിയും പാരമ്പര്യമായി ലഭിക്കുന്നു, അവിടെയാണ് ക്രെഡൻഷ്യലുകളും കണക്ഷൻ മെറ്റാഡാറ്റയും ഉള്ളത്. ഈ പാരമ്പര്യമാണ് നില 3-നെ സ്വന്തം പരിസ്ഥിതി ലോഗ് ചെയ്യുന്ന സ്ക്രിപ്റ്റുമായി ചേരുമ്പോൾ അപകടകരമാക്കുന്നത്, സ്ക്രിപ്റ്റുകൾ സജീവമായ ക്ലയന്റിൽ നിന്നുള്ള ഡയഗ്നോസ്റ്റിക് ഡംപ് ഒരു ടിക്കറ്റിൽ ഒട്ടിക്കുന്നതിന് മുമ്പ് രണ്ടാം നോട്ടം അർഹിക്കുന്നതിന്റെ കാരണവും അതാണ്. പങ്കിടുന്നതിന് മുമ്പ് പരിസ്ഥിതി നീക്കം ചെയ്യുക.

grep -nE 'script-security|^up |^down |tls-verify' client.ovpn

ഒരു കാര്യം മാറ്റുക, എന്നിട്ട് പൊളിച്ചെടുക്കലും നിരീക്ഷിക്കുക

പ്രൊഫൈലിന് ശരിക്കും സ്ക്രിപ്റ്റ് വേണമെങ്കിൽ, നില മാത്രം മാറ്റുക, ആ പ്രൊഫൈലിന് മാത്രം. ക്ലയന്റ് മുൻഭാഗത്ത് വിശദമായ ഔട്ട്പുട്ടോടെ പ്രവർത്തിപ്പിക്കുക, സേവന മാനേജർ അവ വിഴുങ്ങാതെ സ്ക്രിപ്റ്റിന്റെ സ്വന്തം പിശകുകൾ കാണാനാകും.

openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default

കണക്ഷൻ മാത്രമല്ല, മുഴുവൻ ജീവിതചക്രം പരിശോധിക്കുക. പരാജയപ്പെടുന്ന ഡൗൺ ഹുക്ക് റൂട്ടുകളെ ഒരു മരിച്ച ടണലിലേക്ക് ചൂണ്ടിക്കിടത്തുന്നു, ഇത് കണക്ട് ചെയ്തതുപോലെ തോന്നുന്നതും എങ്ങും എത്താത്തതുമായ ഒരു യന്ത്രം ഉണ്ടാക്കുന്നു. മാറ്റം പൂർത്തിയായി പ്രഖ്യാപിക്കുന്നതിന് മുമ്പ് ഒരിക്കൽ വീണ്ടും കണക്ട് ചെയ്ത് ഒരിക്കൽ ഡിസ്കണക്ട് ചെയ്യുക, ഓരോന്നിനും ശേഷം റൂട്ടിംഗ് പട്ടിക പരിശോധിക്കുക.

യഥാർത്ഥ പ്രൊഫൈലിന്റെ പകർപ്പ് സൂക്ഷിക്കുക. ഒരു പ്ലാറ്റ്ഫോം ക്ലയന്റ് അതേ സ്ക്രിപ്റ്റിംഗ് മാതൃക നടപ്പിലാക്കുന്നില്ലെങ്കിൽ, ഇംപോർട്ട് വിജയിക്കുന്നത് വരെ നിർദ്ദേശങ്ങൾ ഇല്ലാതാക്കുന്നത് ടണലിന് ആവശ്യമായിരുന്ന DNS അല്ലെങ്കിൽ റൂട്ട് സംയോജനം നീക്കം ചെയ്തേക്കാം, ഫലമായുണ്ടാകുന്ന കണക്ഷൻ തികച്ചും പ്രാമാണീകരിക്കും, പക്ഷേ ഒന്നും പരിഹരിക്കില്ല.

രേഖപ്പെടുത്തേണ്ട തീരുമാനം ഇടുങ്ങിയതാണ്: ഏത് സ്ക്രിപ്റ്റ്, ഏത് പാതയിൽ, ഏത് നിലയിൽ അനുവദിച്ചു, ഏത് പ്രൊഫൈലിന്. പ്രൊഫൈലിലെ ബാക്കിയെല്ലാം മാറ്റമില്ലാതെ തുടരുന്നു, ഇത് ഒരു അവലോകനക്കാരന് പരിശോധിക്കാവുന്ന വാക്യമാണ്.

അനുബന്ധ ലേഖനങ്ങൾ