SSHGUARD ഉപയോഗിച്ച് SSH ബ്രൂട്ട് ഫോഴ്uസ് ആക്രമണങ്ങൾ എങ്ങനെ തടയാം


SSHGuard ഒരു ഓപ്പൺ സോഴ്uസ് ഡെമൺ ആണ്, അത് ബ്രൂട്ട്-ഫോഴ്uസ് ആക്രമണങ്ങളിൽ നിന്ന് ഹോസ്റ്റുകളെ സംരക്ഷിക്കുന്നു. സിസ്റ്റം ലോഗുകളുടെ നിരീക്ഷണത്തിലൂടെയും സംയോജനത്തിലൂടെയും ആക്രമണങ്ങൾ കണ്ടെത്തുന്നതിലൂടെയും ലിനക്സ് ഫയർവാൾ ബാക്കെൻഡുകളിലൊന്ന് ഉപയോഗിച്ച് ആക്രമണകാരികളെ തടയുന്നതിലൂടെയും ഇത് നിറവേറ്റുന്നു: iptables, FirewallD, pf, ipfw.

ഓപ്പൺഎസ്എസ്എച്ച് സേവനത്തിന് ഒരു അധിക പരിരക്ഷ നൽകുന്നതിനാണ് തുടക്കത്തിൽ രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്, SSHGuard Vsftpd, Postfix എന്നിവ പോലുള്ള വിപുലമായ സേവനങ്ങളും പരിരക്ഷിക്കുന്നു. Syslog, Syslog-ng, റോ ലോഗ് ഫയലുകൾ എന്നിവയുൾപ്പെടെ നിരവധി ലോഗ് ഫോർമാറ്റുകൾ ഇത് തിരിച്ചറിയുന്നു.

[ നിങ്ങൾക്ക് ഇതും ഇഷ്ടപ്പെടാം: OpenSSH സെർവർ എങ്ങനെ സുരക്ഷിതമാക്കാം, കഠിനമാക്കാം ]

SSHGuard Fail2ban എന്നതുമായി വളരെ സാമ്യമുള്ളതാണ്, അത് C യിൽ എഴുതിയിരിക്കുന്നു (Fail2ban പൈത്തണിൽ എഴുതിയിരിക്കുന്നു), ഭാരം കുറഞ്ഞതും കുറച്ച് സവിശേഷതകൾ നൽകുന്നു.

ഈ ഗൈഡിൽ, നിങ്ങളുടെ Linux സെർവറിൽ SSH ബ്രൂട്ട് ഫോഴ്uസ് ആക്രമണങ്ങൾ തടയുന്നതിന് SSHGuard എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും കോൺഫിഗർ ചെയ്യാമെന്നും ഞങ്ങൾ കാണിക്കും.

ഘട്ടം 1: Linux-ൽ SSHGuard ഇൻസ്റ്റാൾ ചെയ്യുക

ലിനക്സിൽ SSHGuard ഇൻസ്റ്റാൾ ചെയ്യുന്നതിലൂടെ ഞങ്ങൾ ആരംഭിക്കുന്നു.

ആദ്യം, പാക്കേജ് ലിസ്റ്റുകൾ അപ്ഡേറ്റ് ചെയ്യുക, തുടർന്ന് apt പാക്കേജ് മാനേജർ ഉപയോഗിച്ച് ഡിഫോൾട്ട് റിപ്പോസിറ്ററികളിൽ നിന്ന് SSHGuard ഇൻസ്റ്റാൾ ചെയ്യുക.

$ sudo apt update
$ sudo apt install sshguard

ഇൻസ്റ്റാൾ ചെയ്തുകഴിഞ്ഞാൽ, SSHGuard സേവനം സ്വയമേവ ആരംഭിക്കുന്നു, കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഇത് പരിശോധിക്കാവുന്നതാണ്:

$ sudo systemctl status sshguard

CentOS, Rocky, AlmaLinux പോലെയുള്ള RHEL-അടിസ്ഥാന വിതരണങ്ങൾക്കായി, താഴെയുള്ള കമാൻഡിൽ നൽകിയിരിക്കുന്നതുപോലെ EPEL ശേഖരം ഇൻസ്റ്റാൾ ചെയ്തുകൊണ്ട് ആരംഭിക്കുക.

$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
OR
$ sudo dnf install epel-release

EPEL ഉള്ളതിനാൽ, മുന്നോട്ട് പോയി dnf പാക്കേജ് മാനേജർ ഉപയോഗിച്ച് SSHGuard ഇൻസ്റ്റാൾ ചെയ്യുക.

$ sudo dnf install sshguard 

ഇൻസ്റ്റാൾ ചെയ്തുകഴിഞ്ഞാൽ, സിസ്റ്റം സ്റ്റാർട്ടപ്പിലോ റീബൂട്ടിലോ ആരംഭിക്കുന്നതിന് SSHGuard ആരംഭിക്കുകയും സജ്ജമാക്കുകയും ചെയ്യുക.

$ sudo systemctl start sshguard
$ sudo systemctl enable sshguard

SSHGuard പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുന്നുണ്ടോയെന്ന് പരിശോധിച്ചുറപ്പിക്കുക.

$ sudo systemctl status sshguard

ഘട്ടം 2: Linux-ൽ SSHGuard കോൺഫിഗറേഷൻ

പരാജയപ്പെട്ട ലോഗിൻ ശ്രമങ്ങൾക്കായി SSHGuard /var/log/auth.log, /var/log/secure systemd ജേർണൽ, syslog-ng ലോഗ് ഫയലുകൾ എന്നിവ സജീവമായി നിരീക്ഷിക്കുന്നു.

വിജയിക്കാത്ത ഓരോ ലോഗിൻ ശ്രമത്തിനും, റിമോട്ട് ഹോസ്റ്റ് പരിമിതമായ സമയത്തേക്ക് നിരോധിക്കപ്പെടുന്നു, അത് സ്ഥിരസ്ഥിതിയായി 120 സെക്കൻഡിൽ സജ്ജീകരിച്ചിരിക്കുന്നു. അതിനുശേഷം, തുടർച്ചയായ ഓരോ ലോഗിൻ ശ്രമത്തിലും നിരോധന സമയം 1.5 മടങ്ങ് വർദ്ധിക്കുന്നു.

കുറ്റകരമായ ഹോസ്റ്റുകൾ നിരോധിച്ചിരിക്കുന്ന സമയം, മറ്റ് പാരാമീറ്ററുകൾ കൂടാതെ sshguard.conf ഫയലിൽ വ്യക്തമാക്കിയിട്ടുണ്ട്. കാണിച്ചിരിക്കുന്നതുപോലെ വിം എഡിറ്റർ ഉപയോഗിച്ച് നിങ്ങൾക്ക് കോൺഫിഗറേഷൻ ഫയൽ ആക്സസ് ചെയ്യാൻ കഴിയും.

$ sudo vim /etc/sshguard/sshguard.conf

RHEL-അടിസ്ഥാനത്തിലുള്ള വിതരണങ്ങളിൽ, കോൺഫിഗറേഷൻ ഫയൽ താഴെ പറയുന്ന പാതയിലാണ് സ്ഥിതി ചെയ്യുന്നത്.

$ sudo vim /etc/sshguard.conf

ഉബുണ്ടു/ഡെബിയനിൽ നിന്ന് കാണുമ്പോൾ കോൺഫിഗറേഷൻ ഫയലിന്റെ ഒരു സാമ്പിൾ ഇതാ.

പ്രധാന ഓപ്ഷനിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കാം.

  • ബാക്ക്uഎൻഡ് ഡയറക്uടീവ് ബാക്കെൻഡ് എക്uസിക്യൂട്ടബിളിന്റെ പൂർണ്ണ പാതയിലേക്ക് ചൂണ്ടിക്കാണിക്കുന്നു. ഈ ഉദാഹരണത്തിൽ, IPtables ഡിഫോൾട്ട് ഫയർവാൾ ബാക്കെൻഡായി സജ്ജീകരിച്ചിരിക്കുന്നതായി ഞങ്ങൾ കാണുന്നു.
  • ആക്രമികളുടെ ആക്രമണ സ്കോർ നിർദ്ദിഷ്ട മൂല്യം കവിയുമ്പോൾ THRESHOLD നിർദ്ദേശം അവരെ തടയുന്നു.
  • തുടർച്ചയായ ഓരോ ലോഗിൻ ശ്രമത്തിനുശേഷവും ഒരു ആക്രമണകാരിയെ തടയുന്ന സെക്കന്റുകളുടെ എണ്ണമാണ് BLOCK_TIME ഓപ്ഷൻ. ഡിഫോൾട്ടായി, ആദ്യ ശ്രമത്തിന് ശേഷം ഇത് 120 ആയി സജ്ജീകരിച്ചിരിക്കുന്നു. തുടർച്ചയായ ഓരോ ലോഗിൻ ശ്രമത്തിലും ഇത് വർദ്ധിക്കുന്നു.
  • DETECTION_TIME എന്ന ഓപ്uഷൻ, ആക്രമണകാരിയെ അവരുടെ സ്uകോർ പുനഃസജ്ജമാക്കുന്നതിന് മുമ്പ് രജിസ്റ്റർ ചെയ്uതതോ സിസ്റ്റം ഓർത്തിരിക്കുന്നതോ ആയ നിമിഷങ്ങളെ സൂചിപ്പിക്കുന്നു.
  • WHITELIST_file ഓപ്uഷൻ, ബ്ലാക്ക്uലിസ്റ്റ് ചെയ്യപ്പെടാൻ പാടില്ലാത്ത ഹോസ്റ്റുകൾ അടങ്ങുന്ന വൈറ്റ്uലിസ്റ്റ് ഫയലിന്റെ പൂർണ്ണ പാതയിലേക്ക് പോയിന്റ് ചെയ്യുന്നു./li>

ഘട്ടം 3: SSH ബ്രൂട്ട് ഫോഴ്uസ് ആക്രമണങ്ങൾ തടയാൻ SSHGuard കോൺഫിഗർ ചെയ്യുക

ബ്രൂട്ട്-ഫോഴ്uസ് ആക്രമണങ്ങൾ തടയുന്നതിന്, sshguard-മായി പ്രവർത്തിക്കാൻ നിങ്ങൾ ഇനിപ്പറയുന്ന ഫയർവാളുകളിൽ കോൺഫിഗർ ചെയ്യേണ്ടതുണ്ട്.

നിങ്ങളുടെ ഉബുണ്ടു/ഡെബിയൻ സിസ്റ്റത്തിൽ UFW ഇൻസ്റ്റാൾ ചെയ്ത് പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ, /etc/ufw/before.rules ഫയൽ പരിഷ്uക്കരിക്കുക.

$ sudo vim etc/ufw/before.rules

Allow all on loopback എന്ന വിഭാഗത്തിന് തൊട്ടുപിന്നാലെ ഇനിപ്പറയുന്ന വരികൾ ചേർക്കുക.

# allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

# hand off control for sshd to sshguard
:sshguard - [0:0]
-A ufw-before-input -p tcp --dport 22 -j sshguard

ഫയൽ സംരക്ഷിച്ച് UFW പുനരാരംഭിക്കുക.

$ sudo systemctl restart ufw

തെറ്റായ ക്രെഡൻഷ്യലുകൾ ഉപയോഗിച്ച് മറ്റൊരു സിസ്റ്റത്തിൽ നിന്ന് സെർവറിൽ ലോഗിൻ ചെയ്യാൻ ശ്രമിക്കുക, ആദ്യത്തെ ലോഗിൻ ശ്രമത്തിന് ശേഷം 120 സെക്കൻഡ് നേരത്തേക്ക് നിങ്ങൾ ലോക്ക് ഔട്ട് ആകുമെന്ന് ശ്രദ്ധിക്കുക.

auth.log ലോഗ് ഫയൽ പരിശോധിച്ച് നിങ്ങൾക്ക് ഇത് സ്ഥിരീകരിക്കാനാകും.

$ sudo tail -f  /var/log/auth.log

അടുത്ത പരാജയപ്പെട്ട ലോഗ് ശ്രമത്തിന് ശേഷം, ബ്ലോക്ക് സമയം 240 സെക്കൻഡ്, തുടർന്ന് 480 സെക്കൻഡ്, തുടർന്ന് 960 സെക്കൻഡ് എന്നിങ്ങനെ വർദ്ധിക്കുന്നു.

നിങ്ങൾ ഫയർവാൾഡ് പ്രവർത്തിപ്പിക്കുകയാണെങ്കിൽ, അത് സജ്ജീകരിച്ചിട്ടുണ്ടെന്നും പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെന്നും ഉറപ്പാക്കുക. തുടർന്ന് നിങ്ങൾക്ക് ഇഷ്ടപ്പെട്ട സോണിൽ sshguard പ്രവർത്തനക്ഷമമാക്കാൻ താഴെ പറയുന്ന കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുക.

$ sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"

മാറ്റങ്ങൾ പ്രയോഗിക്കുന്നതിന്, Firewalld, sshguard എന്നിവ വീണ്ടും ലോഡുചെയ്യുക.

$ sudo firewall-cmd --reload
$ sudo systemctl restart sshguard

തുടർന്ന് നിയമം ഇനിപ്പറയുന്ന രീതിയിൽ പരിശോധിക്കുക:

$ sudo firewall-cmd —-info-ipset=sshguard4

നിങ്ങൾ ഇപ്പോഴും Iptables ഉപയോഗിക്കുകയാണെങ്കിൽ, ആദ്യം, Iptables-ൽ sshguard-നായി ഒരു പുതിയ ചെയിൻ റൂൾ സൃഷ്ടിക്കുക, മോശം ആളുകളെ തടയാൻ ആരംഭിക്കുക.

# iptables -N sshguard

അടുത്തതായി, sshguard-ലേക്ക് ട്രാഫിക്കിലേക്ക് നയിക്കാനും ദുഷിച്ച കക്ഷികളിൽ നിന്നുള്ള എല്ലാ ട്രാഫിക്കുകളും തടയാനും INPUT ചെയിൻ അപ്uഡേറ്റ് ചെയ്യുക.

# iptables -A INPUT -j sshguard

ദുരുപയോഗം ചെയ്യുന്നവരിൽ നിന്ന് SSH, POP, IMAP പോലുള്ള നിർദ്ദിഷ്ട പോർട്ടുകൾ തടയുന്നതിന് കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:

# iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard

ഒടുവിൽ, മാറ്റങ്ങൾ പ്രാബല്യത്തിൽ വരുന്നതിനായി നിയമം സംരക്ഷിക്കുക.

# iptables-save > /etc/iptables/iptables.rules

ഘട്ടം 4: SSH തടഞ്ഞ ഹോസ്റ്റുകളെ എങ്ങനെ വൈറ്റ്uലിസ്റ്റ് ചെയ്യാം

തടഞ്ഞ ഒരു ഹോസ്റ്റിനെ വൈറ്റ്uലിസ്റ്റ് ചെയ്യുന്നതിന്, വൈറ്റ്uലിസ്റ്റ് ഫയലിൽ അതിന്റെ ഹോസ്റ്റ്നാമം അല്ലെങ്കിൽ IP വിലാസം വ്യക്തമാക്കുക:

/etc/sshguard/whitelist - Ubuntu/Debian 
/etc/sshguard.whitelist - RHEL-based distros

അതിനുശേഷം, മാറ്റങ്ങൾ ബാധകമാക്കുന്നതിനായി sshguard ഡെമണും ഫയർവാൾ ബാക്കെൻഡും പുനരാരംഭിക്കുന്നത് ഉറപ്പാക്കുക.

ഈ ഗൈഡിൽ, Linux സെർവറുകളിൽ SSHGuard ഡെമൺ ഉപയോഗിച്ച് നിങ്ങൾക്ക് SSH Bruteforce ആക്രമണങ്ങൾ എങ്ങനെ തടയാമെന്ന് ഞങ്ങൾ കാണിച്ചുതന്നിട്ടുണ്ട്. നിങ്ങളുടെ അഭിപ്രായം സ്വാഗതം ചെയ്യുന്നു.