SSH ഫോർവേഡ് യഥാർത്ഥത്തിൽ ഏത് ആപ്പ് ട്രാഫിക് വഹിക്കുന്നു?
ഒരു ഷെൽ, ലോക്കൽ ഫോർവേഡ്, SOCKS, ടണൽ-ഉപകരണ മോഡ് എന്നിവ വ്യത്യസ്ത ഇന്റർഫേസുകൾ നൽകുന്നു. റൂട്ടഡ് VPN-മായി താരതമ്യം ചെയ്യുന്നതിന് മുമ്പ് നിങ്ങളുടെ ആപ്പിന് ഉപയോഗിക്കാവുന്ന ഇന്റർഫേസ് പേരിടുക.
ടെർമിനൽ കണക്റ്റ് ചെയ്യുന്നു, പ്രോംപ്റ്റ് പ്രത്യക്ഷപ്പെടുന്നു, SSH ആക്സസ് പ്രവർത്തിക്കുന്നു എന്ന് എല്ലാവരും സമ്മതിക്കുന്നു. പിന്നീട് ലാപ്ടോപ്പിലെ ഒരു ഡാറ്റാബേസ് ക്ലയന്റിന് ഇപ്പോഴും സ്വകാര്യ ഹോസ്റ്റ് ലഭ്യമല്ല, സെഷനെ കുറ്റപ്പെടുത്തുന്നു. നിർമ്മിച്ചത് ഒരു ഷെൽ ആയിരുന്നു, SSH നൽകാവുന്ന നാല് തികച്ചും വ്യത്യസ്ത ഇന്റർഫേസുകളിൽ ഒന്നാണത്. ആദ്യം ഇന്റർഫേസ് പേരിടുക, പിന്നീട് ആപ്പ് അത് യഥാർത്ഥത്തിൽ ഉപയോഗിക്കുന്നുണ്ടോ എന്ന് പരിശോധിക്കുക. ക്രമം പ്രധാനമാണ്, ഓരോ ഇന്റർഫേസും അതിന്റേതായ രീതിയിൽ പരാജയപ്പെടുന്നു.
എന്തെങ്കിലും താരതമ്യം ചെയ്യുന്നതിന് മുമ്പ് ഇന്റർഫേസ് പേരിടുക
OpenSSH ക്ലയന്റ് മാനുവൽ എളുപ്പം കൂടിക്കലരുന്ന നാല് സംവിധാനങ്ങളെ വേർതിരിക്കുന്നു. ഒരു ഷെല്ലോ ദൂര കമാന്ദോ SSH ഹോസ്റ്റിൽ പ്രവർത്തിക്കുന്നു. ലോക്കൽ ഫോർവേഡ് ക്ലയന്റിൽ ശ്രവിക്കുന്ന സോക്കറ്റ് തുറക്കുകയും തുടർന്നുള്ള കണക്ഷൻ ദൂര വശത്തുനിന്ന് നടത്തുകയും ചെയ്യുന്നു. ദൂര ഫോർവേഡ് നേരെ മറിച്ചാണ്, സർവർ വശത്ത് ശ്രവിക്കുന്നു. ഡൈനാമിക് ഫോർവേഡിംഗ് അത് ഉപയോഗിക്കാൻ അറിയാവുന്ന പ്രോഗ്രാമുകൾക്ക് SOCKS എൻഡ്പോയിന്റ് നൽകുന്നു.
- ഷെൽ: പ്രോഗ്രാം ദൂര യന്ത്രത്തിൽ പ്രവർത്തിക്കുന്നു, ലോക്കലായി ഒന്നും ശ്രവിക്കുന്നില്ല.
- ലോക്കൽ ഫോർവേഡ്: നിങ്ങളുടെ ലാപ്ടോപ്പിൽ ഒരു പോർട്ട് ഉണ്ട്, ദൂര ഹോസ്റ്റ് പുറത്തേക്കുള്ള കണക്ഷൻ നടത്തുന്നു.
- ദൂര ഫോർവേഡ്: ദൂര വശത്ത് ഒരു പോർട്ട് ഉണ്ട്, ട്രാഫിക് നിങ്ങളിലേക്ക് തിരികെ വരുന്നു.
- ഡൈനാമിക്: ക്ലയന്റിലെ SOCKS പ്രോക്സി, പ്രോക്സി മനസ്സിലാക്കുന്ന ആപ്പുകൾ മാത്രം ഉപയോഗിക്കുന്നു.
ഇവയൊന്നും ഒരു റൂട്ട് ഇൻസ്റ്റാൾ ചെയ്യുന്നില്ല. പ്രോക്സി ക്രമീകരണങ്ങൾ അവഗണിക്കുന്ന, അല്ലെങ്കിൽ UDP സംസാരിക്കുന്ന, അല്ലെങ്കിൽ പേരുകൾ സ്വയം പരിഹരിക്കുന്ന പ്രോഗ്രാം, സജീവമായ SSH സെഷനാൽ ബാധിക്കപ്പെടുന്നില്ല. ഇത് SSH-ലെ ഒരു കുറ്റമല്ല; ഇത് നിങ്ങൾ തിരഞ്ഞെടുത്ത ഇന്റർഫേസിന്റെ പരിധിയാണ്.
ലോക്കൽ, ദൂര, ഡൈനാമിക് ഫോർവേഡുകൾ ആര് ശ്രവിക്കുന്നു എന്നതിൽ വ്യത്യാസപ്പെടുന്നു
മിക്ക കേസുകളും തീരുമാനിക്കുന്ന വ്യത്യാസം ശ്രവിക്കുന്ന സോക്കറ്റ് ആർക്ക് സ്വന്തമാണ് എന്നതാണ്. ലോക്കൽ ഫോർവേഡിൽ ക്ലയന്റ് ശ്രവിക്കുന്നു, ദൂര അറ്റം ലക്ഷ്യസ്ഥാനം ഡയൽ ചെയ്യുന്നു, അതിനാൽ ലക്ഷ്യ വിലാസം സർവറിന്റെ കാഴ്ചപ്പാടിൽ നിന്ന് പരിഹരിക്കപ്പെടുന്നു. ദൂര ഫോർവേഡിൽ സർവർ ശ്രവിക്കുന്നു, കണക്ഷൻ നിങ്ങളുടെ വശത്തേക്ക് തിരികെ കൊണ്ടുവരുന്നു, ഇങ്ങനെ നിങ്ങൾ ഒരു ലോക്കൽ സേവനം നേരിട്ട് പ്രസിദ്ധീകരിക്കാതെ വെളിപ്പെടുത്തുന്നു.
ssh -N -L 5432:db.internal.example:5432 [email protected] ssh -N -D 1080 [email protected] ss -ltnp | grep -E '5432|1080'
ആദ്യ കമാന്ദോ ലാപ്ടോപ്പിൽ പോർട്ട് 5432 ബന്ധിപ്പിച്ച് ബാസ്റ്റിയണിൽ നിന്ന് കാണുന്ന രീതിയിൽ ഡാറ്റാബേസിലേക്ക് ഫോർവേഡ് ചെയ്യുന്നു. രണ്ടാമത്തേത് പോർട്ട് 1080-ൽ ഒരു SOCKS പ്രോക്സി സൃഷ്ടിക്കുന്നു. മൂന്നാമത്തെ കമാന്ദോ ഏത് പ്രോസസുകൾ യഥാർത്ഥത്തിൽ ശ്രവിക്കുന്നു എന്ന് സ്ഥിരീകരിക്കുന്നു, പോർട്ട് സംഘർഷത്തിൽ നിശബ്ദമായി പരാജയപ്പെട്ടതല്ല, ഫോർവേഡ് നിലവിലുണ്ടെന്നതിന് അതാണ് ഏക തെളിവ്.
ഡൈനാമിക് ഫോർവേഡിംഗ് സ്വന്തം മുന്നറിയിപ്പിന് അർഹമാണ്: SOCKS-നെ മാനിക്കുന്ന ആപ്പുകളെ മാത്രമേ അത് ഉൾക്കൊള്ളുന്നുള്ളൂ. ബ്രൗസറിനെ അതിലേക്ക് ചൂണ്ടിക്കാണിക്കാം, കമാൻഡ് ലൈൻ ഉപകരണത്തോട് അത് ഉപയോഗിക്കാൻ പറയാം, എന്നാൽ സ്വന്തം കണക്ഷൻ സ്റ്റാക്കുള്ള ഡാറ്റാബേസ് ഡ്രൈവർക്ക് സാധാരണയായി അതിന് കഴിയില്ല. മെഷീനിലെ എല്ലാ പ്രോഗ്രാമും ഇപ്പോൾ ടണൽ ഉപയോഗിക്കുന്നു എന്ന് അനുമാനിക്കുന്നതാണ് ഈ മേഖലയിലെ ഏറ്റവും സാധാരണമായ തെറ്റ്.
ടണൽ-ഉപകരണ മോഡ് മാത്രമാണ് ഏക യഥാർത്ഥ നെറ്റ്വർക്ക് അപവാദം
OpenSSH -w ടണൽ-ഉപകരണ ഫോർവേഡിംഗും പിന്തുണയ്ക്കുന്നു, അത് TCP ശ്രോതാവിന് പകരം പോയിന്റ്-ടു-പോയിന്റ് ഇന്റർഫേസ് കൈമാറുന്നു. അത് യഥാർത്ഥ നെറ്റ്വർക്ക് ടണലാണ്, ഷെൽ തുറക്കുന്നതിന്റെ പാർശ്വഫലമല്ല, ബോധപൂർവ്വം കോൺഫിഗർ ചെയ്യുന്നതാണ്.
sudo ssh -w 0:0 [email protected] ip addr show tun0
ഇരു അറ്റങ്ങളിലും ലഭ്യമായ ബന്ധപ്പെട്ട ഇന്റർഫേസ് നമ്പറുകൾ, സർവറിലെ ശരിയായ കോൺഫിഗറേഷൻ, ഉപകരണം സൃഷ്ടിക്കാൻ ക്ലയന്റിൽ മതിയായ അനുമതി എന്നിവ ഇതിന് ആവശ്യമാണ്. ഏത് ലക്ഷ്യസ്ഥാനങ്ങൾ അത് ഉപയോഗിക്കണം എന്ന നയം നഗ്നമായ ഇന്റർഫേസ് വഹിക്കാത്തതിനാൽ വിലാസനിർണ്ണയ, റൂട്ടിംഗ് പദ്ധതിയും ആവശ്യമാണ്.
എന്നിട്ടും ടണൽ ദൂര ഹോസ്റ്റിൽ അവസാനിക്കുന്നു. SSH ഗതാഗതം നൽകിയ ഏത് സംരക്ഷണവും അവിടെ അവസാനിക്കുന്നു, തുടർന്നുള്ള കണക്ഷൻ വേറിട്ട ഒരു ചാട്ടമാണ്. VPN ഗേറ്റ്വേയ്ക്കും അതേ രൂപത്തിലുള്ള അതിർത്തിയുണ്ട്, അതിനാൽ താരതമ്യം ഏത് ഉപകരണം ശക്തമാണ് എന്നതിലല്ല, പരിധിയിലും അവസാനത്തിലും ആയിരിക്കണം. ആ അതിർത്തി ഉച്ചത്തിൽ പേരിടുന്നത് ഒരു ടണൽ «എല്ലാം എൻക്രിപ്റ്റ് ചെയ്യുന്നുണ്ടോ» എന്ന തർക്കവും തീർക്കുന്നു, കാരണം അത് വ്യക്തമായി ചെയ്യുന്നില്ല.
നിങ്ങളുടെ ആപ്പ് നിങ്ങൾ നിർമ്മിച്ച ഇന്റർഫേസ് ഉപയോഗിക്കുന്നുണ്ടോ എന്ന് പരിശോധിക്കുക
പരിശോധന സെഷന് വേണ്ടിയല്ല, ഓരോ ആപ്പിനും വേണ്ടിയാണ്. പ്രവർത്തിക്കുന്ന ഫോർവേഡ് പോർട്ട് ബന്ധിച്ചിട്ടുണ്ടെന്നും ദൂര വശത്തിന് ഡയൽ ചെയ്യാമെന്നും തെളിയിക്കുന്നു; നിങ്ങൾക്ക് പ്രധാനമായ പ്രോഗ്രാം അതിലൂടെ കണക്റ്റ് ചെയ്തു എന്ന് തെളിയിക്കുന്നില്ല.
curl -sS --socks5-hostname 127.0.0.1:1080 -o /dev/null -w '%{http_code}\n' https://app.internal.example/health
psql "host=127.0.0.1 port=5432 dbname=app sslmode=require" -c 'select 1'ആദ്യ കമാന്ദോ ഹോസ്റ്റ്നെയിം ദൂരത്തുനിന്ന് പരിഹരിച്ച് SOCKS എൻഡ്പോയിന്റിലൂടെ അഭ്യർത്ഥന അയയ്ക്കുന്നു, രണ്ടാമത്തേത് TLS ഇപ്പോഴും ആവശ്യമായിരിക്കെ ഫോർവേഡ് ചെയ്ത ഡാറ്റാബേസ് പോർട്ട് പരീക്ഷിക്കുന്നു. ഫോർവേഡ് നിർത്തിയ അവസ്ഥയിൽ അതേ പരിശോധനകൾ പ്രവർത്തിപ്പിച്ച് അവ പരാജയപ്പെടുന്നുവെന്ന് ഉറപ്പാക്കുക, കാരണം രണ്ട് വഴിയിലും വിജയിക്കുന്ന പരിശോധന ഒരിക്കലും ടണൽ ഉപയോഗിച്ചിട്ടില്ല.
തുടർന്ന് റൂട്ടഡ് VPN-മായി പ്രധാനമായ മാനങ്ങളിൽ മാത്രം താരതമ്യം ചെയ്യുക: ഏത് ലക്ഷ്യസ്ഥാനങ്ങൾ ഉൾപ്പെടുന്നു, ഏത് പ്രോട്ടോക്കോളുകൾ പ്രവർത്തിക്കുന്നു, സംരക്ഷണം എവിടെ അവസാനിക്കുന്നു, ആര് ആക്സസ് അംഗീകരിക്കണം. ഒരു സേവനത്തിന്റെ ഫോർവേഡ് ഇടുങ്ങിയതും മികച്ചതുമായ ഉത്തരമാകാം, പല ആപ്പുകൾക്കും ഒരേ നെറ്റ്വർക്ക് പാത ആവശ്യമുള്ളപ്പോൾ VPN ആണ് ശരിയായ രൂപം. രണ്ടും അവയുടെ ദൂര എൻഡ്പോയിന്റിൽ നിന്ന് എത്താവുന്ന എല്ലാം നൽകുന്നില്ല.