OpenSSH സെർവർ എങ്ങനെ സുരക്ഷിതമാക്കുകയും കഠിനമാക്കുകയും ചെയ്യാം


സെർവറുകൾ, റൂട്ടറുകൾ, സ്വിച്ചുകൾ എന്നിവ പോലുള്ള വിദൂര ഉപകരണങ്ങൾ ആക്uസസ് ചെയ്യുമ്പോൾ, ട്രാഫിക് എൻക്രിപ്റ്റ് ചെയ്യാനും നിങ്ങളുടെ കണക്ഷനുകൾ ചോർത്താൻ ശ്രമിക്കുന്ന ആരെയും ഒഴിവാക്കാനുമുള്ള കഴിവ് കണക്കിലെടുത്ത് SSH പ്രോട്ടോക്കോൾ വളരെ ശുപാർശ ചെയ്യുന്നു.

അതെന്തായാലും, SSH-ന്റെ ഡിഫോൾട്ട് ക്രമീകരണങ്ങൾ തെറ്റല്ല, പ്രോട്ടോക്കോൾ കൂടുതൽ സുരക്ഷിതമാക്കാൻ അധിക ട്വീക്കുകൾ ആവശ്യമാണ്. ഈ ഗൈഡിൽ, സെർവറിൽ OpenSSH ഇൻസ്റ്റാളേഷൻ സുരക്ഷിതമാക്കാനും കഠിനമാക്കാനും നിങ്ങൾക്ക് ഉപയോഗിക്കാനാകുന്ന വ്യത്യസ്ത വഴികൾ ഞങ്ങൾ പര്യവേക്ഷണം ചെയ്യുന്നു.

1. SSH പാസ്uവേഡ് ഇല്ലാത്ത പ്രാമാണീകരണം സജ്ജീകരിക്കുക

സ്ഥിരസ്ഥിതിയായി, ലോഗിൻ ചെയ്യുമ്പോൾ ഉപയോക്താക്കൾ അവരുടെ പാസ്uവേഡുകൾ നൽകണമെന്ന് SSH ആവശ്യപ്പെടുന്നു. എന്നാൽ ഇവിടെ കാര്യം: ഹാക്കർമാർക്ക് പാസ്uവേഡുകൾ ഊഹിക്കാനോ പ്രത്യേക ഹാക്കിംഗ് ടൂളുകൾ ഉപയോഗിച്ച് ഒരു ബ്രൂട്ട് ഫോഴ്uസ് ആക്രമണം നടത്താനോ നിങ്ങളുടെ സിസ്റ്റത്തിലേക്ക് ആക്uസസ് നേടാനോ കഴിയും. സുരക്ഷിതമായിരിക്കാൻ, SSH പാസ്uവേഡ് ഇല്ലാത്ത പ്രാമാണീകരണത്തിന്റെ ഉപയോഗം വളരെയധികം പ്രോത്സാഹിപ്പിക്കപ്പെടുന്നു.

ഒരു പൊതു കീയും ഒരു സ്വകാര്യ കീയും അടങ്ങുന്ന ഒരു SSH കീ-ജോഡി സൃഷ്ടിക്കുക എന്നതാണ് ആദ്യപടി. പബ്ലിക് കീ റിമോട്ട് സെർവറിലേക്ക് പകർത്തുമ്പോൾ സ്വകാര്യ കീ നിങ്ങളുടെ ഹോസ്റ്റ് സിസ്റ്റത്തിൽ വസിക്കുന്നു.

പബ്ലിക് കീ വിജയകരമായി പകർത്തിക്കഴിഞ്ഞാൽ, നിങ്ങൾക്ക് ഇപ്പോൾ ഒരു പാസ്uവേഡ് നൽകാതെ തന്നെ വിദൂര സെർവറിലേക്ക് SSH ഇൻ ചെയ്യാൻ കഴിയും.

പാസ്uവേഡ് പ്രാമാണീകരണം പ്രവർത്തനരഹിതമാക്കുക എന്നതാണ് അടുത്ത ഘട്ടം, ഇത് നേടുന്നതിന്, നിങ്ങൾ SSH കോൺഫിഗറേഷൻ ഫയൽ പരിഷ്uക്കരിക്കേണ്ടതുണ്ട്.

$ sudo vim /etc/ssh/sshd_config

കോൺഫിഗറേഷൻ ഫയലിനുള്ളിൽ, ഇനിപ്പറയുന്ന നിർദ്ദേശം സ്ക്രോൾ ചെയ്ത് കണ്ടെത്തുക. കമന്റ് ചെയ്uത് yes എന്ന ഓപ്uഷൻ no ആയി മാറ്റുക

PasswordAuthentication no

തുടർന്ന് SSH ഡെമൺ പുനരാരംഭിക്കുക.

# sudo systemctl restart sshd

ഈ ഘട്ടത്തിൽ, നിങ്ങൾക്ക് SSH കീ പ്രാമാണീകരണം ഉപയോഗിച്ച് റിമോട്ട് സെർവറിലേക്ക് മാത്രമേ ആക്സസ് ഉണ്ടാകൂ.

2. ഉപയോക്തൃ SSH പാസ്uവേഡ് ഇല്ലാത്ത കണക്ഷൻ അഭ്യർത്ഥനകൾ പ്രവർത്തനരഹിതമാക്കുക

നിങ്ങളുടെ സെർവറിന്റെ സുരക്ഷ ഉറപ്പിക്കുന്നതിനുള്ള മറ്റൊരു ശുപാർശ ചെയ്യപ്പെടുന്ന മാർഗ്ഗം പാസ്uവേഡുകളില്ലാത്ത ഉപയോക്താക്കളിൽ നിന്നുള്ള SSH ലോഗിനുകൾ പ്രവർത്തനരഹിതമാക്കുക എന്നതാണ്. ഇത് അൽപ്പം വിചിത്രമായി തോന്നുമെങ്കിലും ചിലപ്പോൾ സിസ്റ്റം അഡ്uമിനിസ്uട്രേറ്റർമാർക്ക് ഉപയോക്തൃ അക്കൗണ്ടുകൾ സൃഷ്uടിക്കുകയും പാസ്uവേഡുകൾ നൽകാൻ മറക്കുകയും ചെയ്യാം - ഇത് വളരെ മോശമായ ആശയമാണ്.

പാസ്uവേഡ് ഇല്ലാത്ത ഉപയോക്താക്കളിൽ നിന്നുള്ള അഭ്യർത്ഥനകൾ നിരസിക്കാൻ, വീണ്ടും, /etc/ssh/sshd_config എന്നതിലെ കോൺഫിഗറേഷൻ ഫയലിലേക്ക് പോയി നിങ്ങൾക്ക് താഴെയുള്ള നിർദ്ദേശം ഉണ്ടെന്ന് ഉറപ്പാക്കുക:

PermitEmptyPasswords no

പിന്നീട് മാറ്റം പ്രാബല്യത്തിൽ വരുന്നതിനായി SSH സേവനം പുനരാരംഭിക്കുക.

$ sudo systemctl restart sshd

3. SSH റൂട്ട് ലോഗിനുകൾ പ്രവർത്തനരഹിതമാക്കുക

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

ഇക്കാരണത്താൽ, നിങ്ങൾ SSH റിമോട്ട് റൂട്ട് ലോഗിൻ അപ്രാപ്തമാക്കാനും പകരം ഒരു സാധാരണ നോൺ-റൂട്ട് ഉപയോക്താവിൽ ഉറച്ചുനിൽക്കാനും എപ്പോഴും ശുപാർശ ചെയ്യപ്പെടുന്നു. ഒരിക്കൽ കൂടി, കോൺഫിഗറേഷൻ ഫയലിലേക്ക് പോയി, കാണിച്ചിരിക്കുന്നതുപോലെ ഈ വരി പരിഷ്ക്കരിക്കുക.

PermitRootLogin no

നിങ്ങൾ ചെയ്തുകഴിഞ്ഞാൽ, മാറ്റം പ്രാബല്യത്തിൽ വരുന്നതിനായി SSH സേവനം പുനരാരംഭിക്കുക.

$ sudo systemctl restart sshd

ഇനി മുതൽ, റിമോട്ട് റൂട്ട് ലോഗിൻ പ്രവർത്തനരഹിതമാക്കും.

4. SSH പ്രോട്ടോക്കോൾ 2 ഉപയോഗിക്കുക

SSH രണ്ട് പതിപ്പുകളിലാണ് വരുന്നത്: SSH പ്രോട്ടോക്കോൾ 1, പ്രോട്ടോക്കോൾ 2. SSH പ്രോട്ടോക്കോൾ 2 2006-ൽ അവതരിപ്പിച്ചു, ശക്തമായ ക്രിപ്റ്റോഗ്രാഫിക് പരിശോധനകൾ, ബൾക്ക് എൻക്രിപ്ഷൻ, ശക്തമായ അൽഗോരിതം എന്നിവയ്ക്ക് നന്ദി, പ്രോട്ടോക്കോൾ 1 നേക്കാൾ സുരക്ഷിതമാണ്.

സ്ഥിരസ്ഥിതിയായി, SSH പ്രോട്ടോക്കോൾ 1 ഉപയോഗിക്കുന്നു. ഇത് കൂടുതൽ സുരക്ഷിതമായ പ്രോട്ടോക്കോൾ 2-ലേക്ക് മാറ്റുന്നതിന്, കോൺഫിഗറേഷൻ ഫയലിലേക്ക് താഴെയുള്ള വരി ചേർക്കുക:

Protocol 2

എല്ലായ്uപ്പോഴും എന്നപോലെ, മാറ്റങ്ങൾ പ്രാബല്യത്തിൽ വരുന്നതിന് SSH പുനരാരംഭിക്കുക.

$ sudo systemctl restart sshd

മുന്നോട്ട് പോകുമ്പോൾ, SSH സ്ഥിരസ്ഥിതിയായി പ്രോട്ടോക്കോൾ 2 ഉപയോഗിക്കും.

SSH പ്രോട്ടോക്കോൾ 1-നെ ഇനി പിന്തുണയ്uക്കുന്നുണ്ടോയെന്ന് പരിശോധിക്കാൻ, കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:

$ ssh -1 [email 

\SSH പ്രോട്ടോക്കോൾ v.1 ഇനി പിന്തുണയ്ക്കില്ല എന്ന് വായിക്കുന്ന ഒരു പിശക് നിങ്ങൾക്ക് ലഭിക്കും.

ഈ സാഹചര്യത്തിൽ, കമാൻഡ് ഇതായിരുന്നു:

$ ssh -1 [email 

കൂടാതെ, ഉപയോഗത്തിലുള്ള ഡിഫോൾട്ട് പ്രോട്ടോക്കോൾ പ്രോട്ടോക്കോൾ 2 ആണെന്ന് ഉറപ്പാക്കാൻ നിങ്ങൾക്ക് -2 ടാഗ് വ്യക്തമാക്കാം.

$ ssh -2 [email 

5. SSH കണക്ഷൻ സമയപരിധി നിഷ്uക്രിയ മൂല്യം സജ്ജമാക്കുക

നിഷ്uക്രിയമായ SSH കണക്ഷൻ ഉപയോഗിച്ച് നിങ്ങളുടെ പിസി ദീർഘനേരം ശ്രദ്ധിക്കാതെ വിടുന്നത് ഒരു സുരക്ഷാ അപകടത്തിന് കാരണമാകും. മറ്റൊരാൾക്ക് കടന്നുപോകാനും നിങ്ങളുടെ SSH സെഷൻ ഏറ്റെടുക്കാനും അവർക്ക് ഇഷ്ടമുള്ളതെന്തും ചെയ്യാനും കഴിയും. പ്രശ്uനം പരിഹരിക്കുന്നതിന്, ഒരു നിഷ്uക്രിയ സമയപരിധി സജ്ജീകരിക്കുന്നത് വിവേകപൂർണ്ണമാണ്, അത് കവിഞ്ഞാൽ, SSH സെഷൻ അവസാനിപ്പിക്കും.

ഒരിക്കൽ കൂടി, നിങ്ങളുടെ SSH കോൺഫിഗറേഷൻ ഫയൽ തുറന്ന് ClientAliveInterval എന്ന നിർദ്ദേശം കണ്ടെത്തുക. ന്യായമായ ഒരു മൂല്യം നൽകുക, ഉദാഹരണത്തിന്, ഞാൻ പരിധി 180 സെക്കൻഡായി സജ്ജമാക്കി.

ClientAliveInterval 180

180 സെക്കൻഡിന് തുല്യമായ 3 മിനിറ്റിന് ശേഷം ഒരു പ്രവർത്തനവും രജിസ്റ്റർ ചെയ്തില്ലെങ്കിൽ SSH സെഷൻ ഉപേക്ഷിക്കപ്പെടുമെന്ന് ഇത് സൂചിപ്പിക്കുന്നു.

പിന്നീട് വരുത്തിയ മാറ്റങ്ങൾ പ്രാബല്യത്തിൽ വരുത്തുന്നതിനായി SSH ഡെമൺ പുനരാരംഭിക്കുക.

$ sudo systemctl restart sshd

6. ചില ഉപയോക്താക്കൾക്ക് SSH ആക്സസ് പരിമിതപ്പെടുത്തുക

ഒരു അധിക സുരക്ഷാ ലെയറിനായി, സിസ്റ്റത്തിൽ ലോഗിൻ ചെയ്യാനും റിമോട്ട് ടാസ്ക്കുകൾ ചെയ്യാനും SSH പ്രോട്ടോക്കോൾ ആവശ്യമുള്ള ഉപയോക്താക്കളെ നിങ്ങൾക്ക് നിർവചിക്കാം. നിങ്ങളുടെ അനുമതിയില്ലാതെ നിങ്ങളുടെ സിസ്റ്റത്തിലേക്ക് പ്രവേശനം നേടാൻ ശ്രമിക്കുന്ന മറ്റ് ഉപയോക്താക്കളെ ഇത് തടയുന്നു.

എല്ലായ്uപ്പോഴും എന്നപോലെ, കോൺഫിഗറേഷൻ ഫയൽ തുറന്ന് AllowUsers എന്ന നിർദ്ദേശവും തുടർന്ന് നിങ്ങൾ അനുവദിക്കാൻ ആഗ്രഹിക്കുന്ന ഉപയോക്താക്കളുടെ പേരുകളും ചേർക്കുക. ചുവടെയുള്ള ഉദാഹരണത്തിൽ, 'tecmint', 'james' എന്നീ ഉപയോക്താക്കൾക്ക് SSH വഴി സിസ്റ്റത്തിലേക്ക് റിമോട്ട് ആക്uസസ് ലഭിക്കാൻ ഞാൻ അനുവദിച്ചിട്ടുണ്ട്. വിദൂര ആക്സസ് നേടാൻ ശ്രമിക്കുന്ന മറ്റേതെങ്കിലും ഉപയോക്താവിനെ തടയും.

AllowUsers tecmint james

അതിനുശേഷം മാറ്റങ്ങൾ നിലനിൽക്കാൻ SSH പുനരാരംഭിക്കുക.

$ sudo systemctl restart sshd

7. പാസ്uവേഡ് ശ്രമങ്ങൾക്കായി ഒരു പരിധി കോൺഫിഗർ ചെയ്യുക

SSH ലോഗിൻ ശ്രമങ്ങളുടെ എണ്ണം പരിമിതപ്പെടുത്തുക എന്നതാണ് നിങ്ങൾക്ക് സുരക്ഷയുടെ ഒരു പാളി ചേർക്കാൻ കഴിയുന്ന മറ്റൊരു മാർഗ്ഗം, അനേകം പരാജയപ്പെട്ട ശ്രമങ്ങൾക്ക് ശേഷം, കണക്ഷൻ കുറയുന്നു. അതിനാൽ വീണ്ടും കോൺഫിഗറേഷൻ ഫയലിലേക്ക് പോയി \MaxAuthTries നിർദ്ദേശം കണ്ടെത്തി പരമാവധി ശ്രമങ്ങൾക്കുള്ള മൂല്യം നിർവചിക്കുക.

ഈ ഉദാഹരണത്തിൽ, കാണിച്ചിരിക്കുന്നതുപോലെ പരിധി 3 ശ്രമങ്ങളായി സജ്ജീകരിച്ചിരിക്കുന്നു.

MaxAuthTries 3

അവസാനമായി, മുമ്പത്തെ സാഹചര്യങ്ങളിലെന്നപോലെ SSH സേവനം പുനരാരംഭിക്കുക.

ഇനിപ്പറയുന്ന SSH-മായി ബന്ധപ്പെട്ട ലേഖനങ്ങളും നിങ്ങൾക്ക് ഉപയോഗപ്രദമാണെന്ന് കണ്ടെത്തിയേക്കാം:

  • ലിനക്സിലെ ഉറവിടത്തിൽ നിന്ന് OpenSSH 8.0 സെർവർ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം
  • CentOS/RHEL 8-ൽ SSH പരിരക്ഷിക്കുന്നതിന് Fail2Ban എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം
  • ലിനക്സിൽ SSH പോർട്ട് എങ്ങനെ മാറ്റാം
  • ലിനക്സിൽ SSH ടണലിംഗ് അല്ലെങ്കിൽ പോർട്ട് ഫോർവേഡിംഗ് എങ്ങനെ സൃഷ്ടിക്കാം
  • ലിനക്സിൽ SSH കണക്ഷനുകൾ വേഗത്തിലാക്കാനുള്ള 4 വഴികൾ
  • Linux-ൽ പരാജയപ്പെട്ട എല്ലാ SSH ലോഗിൻ ശ്രമങ്ങളും എങ്ങനെ കണ്ടെത്താം
  • ലിനക്സിൽ നിഷ്uക്രിയമായ അല്ലെങ്കിൽ നിഷ്uക്രിയമായ SSH കണക്ഷനുകൾ എങ്ങനെ വിച്ഛേദിക്കാം

നിങ്ങളുടെ SSH റിമോട്ട് കണക്ഷനുകൾ സുരക്ഷിതമാക്കാൻ നിങ്ങൾക്ക് സ്വീകരിക്കാവുന്ന ചില നടപടികളുടെ ഒരു റൗണ്ടപ്പ് ആയിരുന്നു അത്. ബ്രൂട്ട്-ഫോഴ്uസ് ആക്രമണങ്ങളെ തടയുന്നതിന് വിദൂര ആക്uസസ് ഉള്ള ഉപയോക്താക്കൾക്ക് നിങ്ങൾ എല്ലായ്പ്പോഴും ശക്തമായ പാസ്uവേഡുകൾ നൽകണമെന്ന് ചേർക്കേണ്ടത് പ്രധാനമാണ്. ഈ ഗൈഡ് ഉൾക്കാഴ്ചയുള്ളതായി നിങ്ങൾ കണ്ടെത്തിയെന്ന് ഞങ്ങൾ പ്രതീക്ഷിക്കുന്നു. നിങ്ങളുടെ ഫീഡ്ബാക്ക് വളരെ സ്വാഗതം ചെയ്യുന്നു.