Cisco AnyConnect-നൊപ്പം വരുന്ന vpn ക്ലയന്റ് ഒരു സംഭാഷണം പോലെ പെരുമാറുന്നു: ഒരു പ്രോംപ്റ്റ് അച്ചടിക്കുന്നു, ഒരു വരിക്കായി കാത്തിരിക്കുന്നു, പിന്നെ അടുത്തത് അച്ചടിക്കുന്നു. ആ സംഭാഷണം ഒരു ഫയലിൽ നിന്നോ പൈപ്പിൽ നിന്നോ നൽകിയാൽ അതേ ബൈനറി മേൽനോട്ടമില്ലാതെ പ്രവർത്തിക്കുന്നു. സാങ്കേതികത ഒരു റീഡയറക്ടും ക്രമീകരിച്ച ഉത്തരപ്പട്ടികയുമാണ്, സ്ക്രിപ്റ്റ് വിശ്വസനീയമാണോ എന്നത് റീഡയറക്ടല്ല, ആ പട്ടികയാണ് തീരുമാനിക്കുന്നത്.

പ്രായോഗികമായി രണ്ടു കാര്യങ്ങൾ ഇത് തകർക്കുന്നു. ഗേറ്റ്‌വേ എന്തെങ്കിലും അധികമായി ചോദിക്കുമ്പോൾ പ്രോംപ്റ്റുകളുടെ ക്രമം മാറുന്നു, സംഭരിച്ച പാസ്‌വേഡ് ഒരു ടൈപ്പിംഗ് പിശകിനെ അക്കൗണ്ട് ലോക്കൗട്ടാക്കി മാറ്റുന്നു. ക്രമത്തെ പതിപ്പിട്ട ഡാറ്റയായി കാണുക, ഗേറ്റ്‌വേ മാറ്റത്തിനു ശേഷം താരതമ്യം ചെയ്യാം. വീണ്ടും ശ്രമിക്കുന്നതിനു പകരം ഉറക്കെ പരാജയപ്പെടുക, കാരണം തെറ്റായി ടൈപ്പ് ചെയ്ത പാസ്‌വേഡ് ലോക്കായ അക്കൗണ്ടാകുന്ന വഴി ലൂപ്പാണ്.

ഒരു ക്രമം, ക്ലയന്റ് ചോദിക്കുന്ന ക്രമത്തിൽ

ക്ലയന്റ് ഒരിക്കൽ ഇന്ററാക്ടീവായി പ്രവർത്തിപ്പിച്ച് ഓരോ പ്രോംപ്റ്റും ദൃശ്യമാകുന്ന ക്രമത്തിൽ എഴുതുക. ആ ട്രാൻസ്ക്രിപ്റ്റ് ഉത്തര-ഫയലാകുന്നു. ഫയൽ ബൈനറിയിലേക്ക് റീഡയറക്ട് ചെയ്യുമ്പോൾ ആദ്യ വരി കണക്ഷൻ കമാൻഡ് തന്നെ ആയിരിക്കണം, അതുകൊണ്ടാണ് ക്രമം ഉപയോക്തൃനാമത്തിനു പകരം ഹോസ്റ്റ്നാമിൽ തുടങ്ങുന്നത്.

connect vpn.example.com
0
<username>
<password>
y
exit

വെറും 0 ഗേറ്റ്‌വേ ഒരു പട്ടിക നൽകുമ്പോൾ ആദ്യ കണക്ഷൻ പ്രൊഫൈൽ തിരഞ്ഞെടുക്കുന്നു; നിങ്ങളുടെ ഗേറ്റ്‌വേ അച്ചടിക്കുന്ന ഇൻഡക്സ് ഉപയോഗിക്കുക. y ഒരു ലോഗിൻ ബാനർ സ്വീകരിക്കുന്നു, അതിനാൽ ബാനർ ഇല്ലെങ്കിൽ ആ വരി നീക്കി, നിങ്ങളുടെ ഗേറ്റ്‌വേ അധിക ചോദ്യം ചോദിക്കുന്നിടത്ത് ഒരു വരി ചേർക്കുക. അവസാനത്തെ exit അവസാന ഉത്തരം ഉപയോഗിച്ചു തീർന്നാൽ ക്ലയന്റിനെ വൃത്തിയായി അവസാനിപ്പിക്കാൻ അനുവദിക്കുന്നു.

/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txt

ഇവിടെ നോൺ-ഇന്ററാക്ടീവ് മോഡ് ഐച്ഛികമല്ല. -s ഇല്ലാതെ ക്ലയന്റ് ടെർമിനൽ ഏറ്റെടുത്ത് റീഡയറക്ട് ചെയ്ത ഇൻപുട്ട് അവഗണിച്ചേക്കാം; അതോടെ ഉത്തരങ്ങൾ സ്ട്രീമിൽ നിന്ന് വായിക്കപ്പെടുകയും പ്രോസസ് മടങ്ങുകയും ചെയ്യുന്നു. ബൈനറിക്ക് ഉയർന്ന അനുമതികൾ വേണ്ടിടത്ത് കോളിനെ sudo -n ഇൽ പൊതിയുക, അപ്പോൾ സ്ക്രിപ്റ്റ് പാസ്‌വേഡ് പ്രോംപ്റ്റിൽ തടഞ്ഞുനിൽക്കാതെ ഉടൻ പരാജയപ്പെടും.

ഉത്തര-ഫയൽ എവിടെ ചോരുന്നു

പാസ്‌വേഡ് ഉള്ള ഫയൽ ഒരു ക്രെഡൻഷ്യലാണ്, അതിനാൽ അതിന് അതിന്റെ അനുമതികൾ നൽകുക: മോഡ് 600, ജോലി നടത്തുന്ന അക്കൗണ്ടിന്റെ ഉടമസ്ഥതയിൽ, ഒരിക്കലും പങ്കിട്ടതോ സമന്വയിപ്പിച്ചതോ ആയ ഡയറക്ടറിയിൽ ആകരുത്. പിന്നീട് തിരുത്തുന്നതിനു പകരം മോഡ് മുൻകൂട്ടി പ്രയോഗിച്ച് സൃഷ്ടിക്കുക, കാരണം എഴുത്തിനും chmod-നും ഇടയിൽ ഫയൽ ഒരു നിമിഷം എല്ലാവർക്കും വായിക്കാം.

install -m 600 /dev/null ~/.config/anyconnect.txt
chmod 700 ~/.config

മറ്റേ പകുതി argv ആണ്. ആർഗ്യുമെന്റായി നൽകുന്ന പാസ്‌വേഡ് പ്രോസസുകൾ ലിസ്റ്റ് ചെയ്യുന്ന ഓരോ പ്രാദേശിക ഉപയോക്താവിനും കാണാം, കൂടാതെ ഷെൽ ചരിത്രത്തിലും എത്തുന്നു. പകരം അത് ഫയൽ ഡിസ്ക്രിപ്റ്ററിൽ നിന്നോ പരിസ്ഥിതി ചരത്തിൽ നിന്നോ വായിക്കുക, പേലോഡ് ഉദ്ധരിക്കുക, അപ്പോൾ ഷെല്ലിന് ഉള്ളിൽ ഒന്നും വികസിപ്പിക്കാനാവില്ല.

printf '%s\n' 'connect vpn.example.com' '0' "$VPN_USER" "$VPN_PASS" 'y' 'exit' \
  | sudo -n /opt/cisco/anyconnect/bin/vpn -s

ഉദ്ധരണികളിൽ ശ്രദ്ധിക്കുക. ഇരട്ട ഉദ്ധരണികൾക്കുള്ളിൽ ! ഉള്ള പാസ്‌വേഡ് ക്ലയന്റ് കാണുന്നതിനു മുൻപേ ഇന്ററാക്ടീവ് ഷെൽ വികസിപ്പിച്ചേക്കാം, പരാജയം പ്രോട്ടോക്കോൾ പ്രശ്നം പോലെ തോന്നുന്ന പൊതുവായ event-not-found പിശകായി വരുന്നു.

ടണൽ തെളിയിക്കുക, പിന്നെ അടയ്ക്കുക

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

/opt/cisco/anyconnect/bin/vpn state
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 10 https://<internal-host>/
/opt/cisco/anyconnect/bin/vpn disconnect

വിച്ഛേദനത്തിനു മുൻപും ശേഷവും സ്റ്റേറ്റ് ഔട്ട്പുട്ട് പരിശോധിക്കുക. പഴയ സെഷനുമായി വിട്ടിട്ടുള്ള ക്ലയന്റ് അടുത്ത കണക്ഷൻ നിരസിച്ചേക്കാം, അതേസമയം സ്ക്രിപ്റ്റ് ഇപ്പോഴും വിജയം റിപ്പോർട്ട് ചെയ്യുന്നു, എക്സിറ്റ് കോഡുകൾ മാത്രം നോക്കിയാൽ ഈ പരാജയരീതി കാണില്ല. രണ്ടാമത്തെ വായനയെ മാത്രം വിശ്വസിക്കുന്നതിനു പകരം രണ്ടും താരതമ്യം ചെയ്യുക. ഷെൽ പ്രൊഫൈലിലെ അലിയാസുകൾ ദൈനംദിന ഉപയോഗത്തിന് മതി, എന്നാൽ ഷെഡ്യൂൾ ചെയ്ത എന്തും മറ്റേതൊരു മേൽനോട്ടമില്ലാത്ത ജോലിയും പോലെ അതേ ക്രെഡൻഷ്യൽ, ഐഡന്റിറ്റി അവലോകനത്തിന് അർഹമാണ്.

നിശ്ചിത പട്ടിക സുരക്ഷിതമല്ലാതാകുമ്പോൾ

ഉത്തര-ഫയൽ ഇന്നത്തെ പ്രോംപ്റ്റ് ക്രമം എൻകോഡ് ചെയ്യുന്നു. മാറിയ ബാനർ, നിർബന്ധിത പാസ്‌വേഡ് മാറ്റം അല്ലെങ്കിൽ രണ്ടാം ഘടക വെല്ലുവിളി അതിനെ അക്കൗണ്ട് ലോക്ക് ചെയ്യാവുന്ന ലൂപ്പാക്കുന്നു, അതിനാൽ സ്ക്രിപ്റ്റ് പുനരാരംഭിക്കുന്നതിനു പകരം ആദ്യ അപ്രതീക്ഷിത ഉത്തരത്തിൽ പുറത്തുപോകണം.

ക്ലയന്റ് അച്ചടിച്ചത് പിടിച്ചെടുക്കുക, പൂജ്യമല്ലാത്ത സ്റ്റാറ്റസ് തിരികെ നൽകുക, തീരുമാനം വിളിക്കുന്നവർക്ക് വിടുക. ഗേറ്റ്‌വേ രണ്ടാം ഘടകം ആവശ്യപ്പെടുന്നിടത്ത്, സത്യസന്ധമായ ഉത്തരം ആ പ്രൊഫൈലിന് മേൽനോട്ടമില്ലാത്ത ലോഗിൻ ലഭ്യമല്ല എന്നതാണ്, ക്രമത്തിന് ഒരു വരി കൂടി വേണം എന്നല്ല.

റൊട്ടേഷനും അതേ അവലോകനത്തിൽ പെടുന്നു. ക്രെഡൻഷ്യൽ സംഭരിക്കുന്നുവെങ്കിൽ, ആർക്ക് വായിക്കാമെന്ന്, എപ്പോൾ മാറുന്നുവെന്ന്, ഹോസ്റ്റ് പുനർനിർമ്മിക്കുമ്പോൾ എന്താണ് അത് നീക്കുന്നത് എന്ന് തീരുമാനിക്കുക. ആരും പാസ്‌വേഡ് തൊടാത്തതിനാൽ ഒരു വർഷം പ്രവർത്തിക്കുന്ന സ്ക്രിപ്റ്റ് രൂപകൽപ്പനയല്ല, റൊട്ടേഷൻ നയത്തിനായി കാത്തിരിക്കുന്ന ഒരു അപകടമാണ്.

AnyConnect അല്ലാത്ത പ്രൊഫൈലുകൾ

Cisco-യുടെ രണ്ട് പഴയ ക്രെഡൻഷ്യൽ ശൈലികൾ ഇതുമായി കൂട്ടിക്കലർത്തുന്നു. vpnc പ്രൊഫൈൽ IPSec ID ആവശ്യപ്പെടുന്നു, അത് യഥാർത്ഥത്തിൽ ഗ്രൂപ്പിന്റെ പേരാണ്, പിന്നെ ഗ്രൂപ്പ് രഹസ്യം, പിന്നെ നിങ്ങളുടെ സ്വന്തം ക്രെഡൻഷ്യലുകൾ, മൂന്നും ഗേറ്റ്‌വേ നടത്തുന്നവരിൽ നിന്നാണ്. പഴയ Cisco IPsec AnyConnect-ൽ നിന്ന് വ്യത്യസ്തമായ പ്രോട്ടോക്കോളാണ്, അതിനാൽ vpnc AnyConnect-മാത്രം സേവനത്തിലെത്താനാവില്ല; openconnect --protocol=anyconnect ആ ജോലിക്കുള്ള ഓപ്പൺ ക്ലയന്റാണ്.

.pcf ഫയൽ പഴയ ക്ലയന്റ് പ്രൊഫൈൽ വിവരിക്കുന്നു. അതിലെ ഹോസ്റ്റ്, ഗ്രൂപ്പ് പേര്, ഗ്രൂപ്പ് പാസ്‌വേഡ് എന്നിവ Cisco IPsec സംസാരിക്കുന്ന ക്ലയന്റിൽ കൈകൊണ്ട് വീണ്ടും നൽകാം, എന്നിരുന്നാലും ഫയൽ സാർവത്രിക ഇംപോർട്ടല്ല, സ്റ്റാൻഡേർഡ് അല്ലാത്ത പോർട്ടോ ടണലിംഗ് മോഡോ സാധാരണയായി കൈമാറ്റത്തിൽ നഷ്ടപ്പെടുന്നു.

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

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