OpenConnect ലോഗിൻ കുക്കിയെ ഒരു ടണലാക്കി മാറ്റുന്നത് എങ്ങനെ?
OpenConnect വെബ് ലോഗിൻ കുക്കിയെ VPN ടണലിനായി കൈമാറുന്നു. കുക്കി സെഷന്റെ വാഹകനാണ്, അതിനാൽ കൈമാറ്റം സംരക്ഷിക്കുക, ലോഗിൻ പേജ് മാത്രമല്ല.
OpenConnect രണ്ട് വേറിട്ട കൈമാറ്റങ്ങളെ ഒരു ഹ്രസ്വകാല മൂല്യം കൊണ്ട് ബന്ധിപ്പിക്കുന്നു: വെബ് ലോഗിനും VPN ടണലും. ആദ്യ കൈമാറ്റം സാധാരണ HTTPS ആണ്: ക്രെഡൻഷ്യലുകൾ, ഒരു SAML യാത്ര അല്ലെങ്കിൽ ടോക്കൺ ഗേറ്റ്വേയിലേക്ക് പോകുന്നു, മറുപടി ഒരു ഓതന്റിക്കേഷൻ കുക്കി കൊണ്ടുവരുന്നു. രണ്ടാം കൈമാറ്റം ആ കുക്കി അതേ ഗേറ്റ്വേയ്ക്ക് വെബ് ഘട്ടം ഇതിനകം നടന്നു എന്ന തെളിവായി സമർപ്പിക്കുന്നു, അപ്പോൾ മാത്രമാണ് ടണൽ ഉയരുന്നത്.
ലോഗിൻ സമയത്ത് ടണലിനെക്കുറിച്ച് ഒന്നും ചർച്ച ചെയ്യുന്നില്ല. ഇതാണ് മനസ്സിലാക്കേണ്ട ഭാഗം, കാരണം മിക്ക സ്ക്രിപ്റ്റ് പിഴവുകളും കുക്കി സൂക്ഷിക്കേണ്ട പാസ്വേഡോ ട്രാഫിക്കിനെ സംരക്ഷിക്കുന്ന താക്കോലോ ആണെന്ന് കരുതുന്നു, എന്നാൽ യഥാർത്ഥത്തിൽ അത് ഒരു നിർദ്ദിഷ്ട ഗേറ്റ്വേ സെഷനുള്ള വാഹക ടിക്കറ്റാണ്.
ക്ലയന്റും ഗേറ്റ്വേയും ക്രമത്തിൽ എന്താണ് കൈമാറുന്നത്
ഓതന്റിക്കേഷൻ ഘട്ടം ഒരു സാധാരണ സംരക്ഷിത വെബ്സൈറ്റ് പോലെ തോന്നുന്നു. OpenConnect ഉപയോക്താവിന്റെ ക്രെഡൻഷ്യലുകൾ അയക്കുന്നു, അല്ലെങ്കിൽ ഗേറ്റ്വേയുടെ റീഡയറക്ട് പിന്തുടർന്ന് ഒരു ഐഡന്റിറ്റി പ്രൊവൈഡറിലേക്ക് പോകുന്നു, ഗേറ്റ്വേ ഓതന്റിക്കേഷൻ കുക്കി ഉൾപ്പെടുത്തിയ ഒരു രേഖയോടെ മറുപടി നൽകുന്നു. AnyConnect പ്രോട്ടോക്കോളിൽ ആ മൂല്യം തുടർന്നുള്ള അഭ്യർത്ഥനകളിൽ ഒരു കുക്കി ഹെഡറിൽ സഞ്ചരിക്കുന്നു, സാധാരണയായി webvpn പോലുള്ള പേരിൽ, കൈപ്പുസ്തകം അതിനെ സെഷനെ മുന്നോട്ട് കൊണ്ടുപോകുന്ന ക്രെഡൻഷ്യലായി കണക്കാക്കുന്നു.
രണ്ടാം ഘട്ടം ആ കുക്കി ഘടിപ്പിച്ച് ഗേറ്റ്വേയുടെ VPN എൻഡ്പോയിന്റിലേക്കുള്ള CONNECT അഭ്യർത്ഥനയാണ്. ഗേറ്റ്വേ അത് പരിശോധിച്ച് ഒരു വിലാസം നൽകുന്നു, ക്ലയന്റ് TLS-ന് മുകളിൽ CSTP ആരംഭിക്കുന്നു, സെഷൻ നിലവിലുണ്ടായാൽ DTLS ഒരു ഐച്ഛിക വേഗതയേറിയ ഡാറ്റ പാതയാണ്. ഈ ഘട്ടത്തിൽ മാത്രമാണ് ടണൽ പാരാമീറ്ററുകൾ, റൂട്ടുകൾ, DNS ക്രമീകരണങ്ങൾ, സെഷന്റെ ട്രാഫിക് കീകൾ എന്നിവ സ്ഥാപിക്കുന്നത്. കുക്കി ക്ലയന്റിനെ വാതിലിലൂടെ കടത്തിവിട്ടു; അത് ഒന്നും എൻക്രിപ്റ്റ് ചെയ്തില്ല.
ഈ ക്രമമാണ് openconnect --authenticate എന്തിനുണ്ടെന്ന് വിശദീകരിക്കുന്നത്. അത് പ്രവർത്തിപ്പിക്കുമ്പോൾ വെബ് ഘട്ടം നിർവഹിച്ച്, COOKIE, HOST, CONNECT_URL, FINGERPRINT പോലുള്ള ഷെൽ ചരങ്ങളുടെ ഒരു ചെറിയ ബ്ലോക്ക് പ്രിന്റ് ചെയ്ത്, ഒരു ടണലും നിർമ്മിക്കുന്നതിന് മുൻപ് പുറത്തുപോകുന്നു. തുടർന്ന് ഒരു റാപ്പർ സ്ക്രിപ്റ്റിന് ആ മൂല്യങ്ങളുമായി യഥാർത്ഥ കണക്ഷൻ തുടങ്ങാം, തലയില്ലാത്ത അല്ലെങ്കിൽ രണ്ട് കണ്ടെയ്നർ വിന്യാസത്തിന് വേണ്ടത് കൃത്യമായി ഈ വിഭജനമാണ്.
കുക്കി ഒരു സെഷൻ വാഹകനാണ്, താക്കോലല്ല
വെബ് ആപ്ലിക്കേഷനിലെ സെഷൻ ഐഡിയോട് പെരുമാറുന്നതുപോലെ ഈ മൂല്യത്തോട് പെരുമാറുക. അതിന്റെ ആയുസ്സിൽ അത് കൈവശമുള്ള ആർക്കും ആ സെഷന് അർഹതയുള്ള ടണൽ ഗേറ്റ്വേയോട് ആവശ്യപ്പെടാം, അതിനാൽ അതിന്റെ രഹസ്യത പ്രധാനമാണ്. എന്നാൽ പകർത്തുന്നത് ട്രാഫിക് വെളിപ്പെടുത്തുന്നില്ല, കാരണം ടണലിന്റെ രഹസ്യത TLS ഹാൻഡ്ഷേക്കിൽ നിന്നും അതിൽ നിന്ന് ഉരുത്തിരിഞ്ഞ കീകളിൽ നിന്നും വരുന്നു, കുക്കി സ്ട്രിംഗിൽ നിന്നല്ല.
ഇത് ശാശ്വത അനുമതിയുമല്ല. സെഷൻ എത്രകാലം ജീവിക്കണമെന്ന് ഗേറ്റ്വേയും ഐഡന്റിറ്റി പ്രൊവൈഡറും തീരുമാനിക്കുന്നു, ഇപ്പോഴും ലോഗിൻ ചെയ്ത പേജ് കാണിക്കുന്ന ബ്രൗസർ ടണൽ സെഷൻ ഇപ്പോഴും സാധുവാണോ എന്നതിനെക്കുറിച്ച് ഒന്നും പറയുന്നില്ല. കാലാവധി കഴിഞ്ഞ് വീണ്ടും ബന്ധിപ്പിക്കുക എന്നാൽ വെബ് ഘട്ടം ആവർത്തിച്ച് പുതിയ കുക്കി ഉണ്ടാക്കുക എന്നതാണ്, അതാണ് വീണ്ടും ഓതന്റിക്കേഷന്റെ ഉദ്ദേശ്യം, എൻജിനീയറിംഗിലൂടെ ഒഴിവാക്കേണ്ട ശല്യമല്ല.
കുക്കിയെ മറ്റ് ക്രെഡൻഷ്യലുകളുടെ സാർവത്രിക പകരമായി കാണരുത്. SAML പ്രസ്താവന, ബ്രൗസർ പാസ്വേഡ്, മറ്റൊരു സേവനം നൽകിയ കുക്കി എന്നിവ വ്യത്യസ്ത പ്രേക്ഷകരുള്ള വ്യത്യസ്ത വസ്തുക്കളാണ്, ഒന്ന് മറ്റൊന്നിന്റെ ഫീൽഡിൽ ഒട്ടിക്കുന്നത് സാധാരണയായി ഗേറ്റ്വേയിൽ പരാജയപ്പെടും, അല്ലെങ്കിൽ അതിനേക്കാൾ മോശമായി, തെറ്റായ വിശ്വാസ അതിർത്തിക്കെതിരെ വിജയിക്കും.
പകർപ്പുകൾ അവശേഷിപ്പിക്കാതെ കുക്കി കൈമാറുന്നത്
Linux-ൽ ഏറ്റവും സുരക്ഷിതമായ യാന്ത്രിക കൈമാറ്റം സ്റ്റാൻഡേർഡ് ഇൻപുട്ടാണ്. --cookie-on-stdin മൂല്യം stdin-ൽ നിന്ന് വായിക്കുന്നു, അതിനാൽ കുക്കി പ്രോസസിന്റെ ആർഗ്യുമെന്റ് പട്ടികയിൽ ഒരിക്കലും പ്രത്യക്ഷപ്പെടുന്നില്ല, അവിടെ ഏതൊരു പ്രാദേശിക ഉപയോക്താവിനും ps ഉപയോഗിച്ച് അത് വായിക്കാം. ഒരു പ്രോസസിൽ ഓതന്റിക്കേറ്റ് ചെയ്ത് മറ്റൊന്നിൽ ടണലിന് ഭക്ഷണം നൽകുന്ന പൈപ്പ്ലൈൻ മൂല്യം ഫയലിലോ എൻവയോൺമെന്റ് ചരത്തിലോ അല്ല, പൈപ്പിൽ സൂക്ഷിക്കുന്നു.
ആർഗ്യുമെന്റുകളും എൻവയോൺമെന്റ് ചരങ്ങളും വ്യത്യസ്ത കാരണങ്ങളാൽ ദുർബലമാണ്. ആർഗ്യുമെന്റ് ക്ലയന്റിന്റെ മുഴുവൻ ആയുസ്സിലും പ്രോസസ് പട്ടികയിൽ കാണാം, പലപ്പോഴും ഷെൽ ചരിത്രത്തിലും എത്തുന്നു. എൻവയോൺമെന്റ് ചരം ചൈൽഡ് പ്രോസസുകളിലേക്ക് പാരമ്പര്യമായി പോകുന്നു, യൂണിറ്റ് ഫയലിൽ അത് സജ്ജമാക്കുന്ന systemd യൂണിറ്റ് രഹസ്യം വായിക്കാവുന്ന കോൺഫിഗറേഷനിൽ സൂക്ഷിക്കുന്നു. ഫയൽ അനിവാര്യമാണെങ്കിൽ അത് സേവന അക്കൗണ്ടിലേക്ക് പരിമിതപ്പെടുത്തി സെഷൻ അവസാനിക്കുമ്പോൾ നീക്കം ചെയ്യുക.
പ്രിവിലേജ് അതിർത്തിയും ബോധപൂർവം നിലനിർത്തുക. ഐഡന്റിറ്റി പ്രൊവൈഡറുമായി സംസാരിക്കുന്ന, ഒരുപക്ഷേ ബ്രൗസർ തുറക്കുന്ന പ്രോസസ് ആ ലോഗിന്റെ ഉടമയായ ഉപയോക്താവായി പ്രവർത്തിക്കണം. റൂട്ടുകൾ, DNS, ടണൽ ഉപകരണം എന്നിവ കോൺഫിഗർ ചെയ്യുന്ന പ്രോസസിന് കൂടുതൽ പ്രിവിലേജ് വേണ്ടിവന്നേക്കാം. root ഉടമസ്ഥതയിലുള്ള ടണലിന് അതിന്റെ കുക്കി ലഭ്യമാക്കാൻ മുഴുവൻ ബ്രൗസറും root ആയി പ്രവർത്തിപ്പിക്കുന്നത് തെറ്റായ കൈമാറ്റമാണ്, ആധുനിക OpenConnect ക്രമീകരണങ്ങൾക്ക് ആ അതിർത്തിയിലൂടെ മൂല്യം വ്യക്തമായി കൈമാറാനാകും.
ലോഗിംഗും അതേ സംശയത്തിന് അർഹമാണ്. വിശദമായ ക്ലയന്റ് ഔട്ട്പുട്ട്, സഹായ സ്ക്രിപ്റ്റുകൾ, ഗേറ്റ്വേ ഡയഗ്നോസ്റ്റിക്സ് എന്നിവ അഭ്യർത്ഥനയുടെ വസ്തുതകൾ ആവർത്തിക്കാം, എല്ലാ ലോഗ് തലവും കുക്കി മറയ്ക്കുന്നില്ല. ആവശ്യമായ ഏറ്റവും ചെറിയ പിശക് രേഖ പിടിച്ചെടുത്ത്, പങ്കിട്ട ചാനലുകൾക്ക് പുറത്ത് സൂക്ഷിച്ച്, ടിക്കറ്റിൽ ചേർക്കുന്നതിന് മുൻപ് മറച്ച ഒരു സാമ്പിൾ പരിശോധിക്കുക.
രണ്ടാം ഘട്ടത്തിലെ പരിശോധനയും കാലാവധിയും
രണ്ടാം ഘട്ടവും സെർവർ പരിശോധിക്കണം. --authenticate പ്രിന്റ് ചെയ്യുന്ന FINGERPRINT pin-sha256: രൂപത്തിലുള്ള ഒരു സർട്ടിഫിക്കറ്റ് പിൻ ആണ്, അത് --servercert ഉപയോഗിച്ച് ടണൽ വിളിയിലേക്ക് നൽകുന്നത് നിങ്ങൾ ഓതന്റിക്കേറ്റ് ചെയ്ത ഗേറ്റ്വേയിൽ പരിശോധന ഉറപ്പിച്ചു നിർത്തുന്നു. സ്ക്രിപ്റ്റ് ലളിതമാക്കാൻ സർട്ടിഫിക്കറ്റ് പരിശോധന ഓഫ് ചെയ്യുന്നത് കുക്കി ഉദ്ദേശിച്ച ഹോസ്റ്റിന് നൽകുന്നു എന്ന ഏക തെളിവ് നീക്കം ചെയ്യുന്നു.
ഗേറ്റ്വേ കുക്കി നിരസിക്കുമ്പോൾ പരിഹാരം പുതിയ ഓതന്റിക്കേഷൻ റൗണ്ടാണ്, നീളമേറിയ കാഷെയല്ല. കണക്ഷന്റെ ആയുസ്സിൽ മാത്രം കുക്കി സൂക്ഷിക്കുക, പുറത്തുപോകുമ്പോൾ താൽക്കാലിക ഫയലുകൾ ഇല്ലാതാക്കുക, സെഷൻ വെളിപ്പെടുകയോ ഉപകരണം നഷ്ടപ്പെടുകയോ ചെയ്യുമ്പോൾ ഐഡന്റിറ്റി പ്രൊവൈഡറിന്റെയോ ഗേറ്റ്വേയുടെയോ സെഷൻ നീക്കം ചെയ്യൽ പ്രക്രിയ ഉപയോഗിക്കുക. കാഷെ ചെയ്ത കുക്കി MFA-യിൽ നിന്നുള്ള ഒഴിവല്ല.
ഇത് ഓട്ടോമേറ്റ് ചെയ്യുന്നതിന് മുൻപ് നാല് കാര്യങ്ങൾ പരിശോധിക്കുക: ടണൽ ശരിയായ അക്കൗണ്ടിൽ പ്രവർത്തിക്കുന്നു, കുക്കി stdin വഴി എത്തുന്നു, സർട്ടിഫിക്കറ്റിന്റെ വിരലടയാളം പിൻ ചെയ്തിരിക്കുന്നു, ടണൽ അടയ്ക്കുമ്പോൾ സെഷൻ ഉപേക്ഷിക്കുന്നു. ഇവയിലൊന്ന് ഇല്ലെങ്കിൽ, ഓട്ടോമേഷൻ കൈയ്യിൽ ചെയ്യുന്ന പ്രവാഹം പുനരുൽപ്പാദിപ്പിക്കുന്നതിന് പകരം കുക്കിയിലുള്ള വിശ്വാസം വിപുലീകരിച്ചു.