നിങ്ങളുടെ Linux സെർവർ സുരക്ഷിതമാക്കാൻ Fail2ban എങ്ങനെ ഉപയോഗിക്കാം


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

fail2ban പോലുള്ള നുഴഞ്ഞുകയറ്റ പ്രതിരോധ സോഫ്റ്റ്uവെയർ ഉപയോഗിച്ച്, നിങ്ങൾക്ക് നിങ്ങളുടെ സെർവർ ലോഗുകൾ പരിശോധിക്കുകയും പ്രശ്നമുള്ള IP വിലാസങ്ങൾ തടയുന്നതിന് അധിക iptables നിയമങ്ങൾ ചേർക്കുകയും ചെയ്യാം.

ഈ ട്യൂട്ടോറിയൽ എങ്ങനെ fail2ban ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും നിങ്ങളുടെ Linux സിസ്റ്റത്തെ ബ്രൂട്ട്-ഫോഴ്uസ് ആക്രമണങ്ങളിൽ നിന്ന് സംരക്ഷിക്കുന്നതിനുള്ള അടിസ്ഥാന കോൺഫിഗറേഷൻ സജ്ജീകരിക്കാമെന്നും കാണിക്കും.

Fail2ban പൈത്തണിലാണ് എഴുതിയിരിക്കുന്നത്, പൈത്തൺ ഇൻസ്റ്റാൾ ചെയ്തിരിക്കുക എന്നതാണ് ഏക ആവശ്യം:

  • Fail2ban ബ്രാഞ്ചിന് 0.9.x-ന് Python >=2.6 അല്ലെങ്കിൽ Python >=3.2
  • Fail2ban ബ്രാഞ്ചിന് 0.8.x-ന് പൈത്തൺ ആവശ്യമാണ് >=2.4
  • നിങ്ങളുടെ സിസ്റ്റത്തിലേക്കുള്ള റൂട്ട് ആക്സസ്
  • ഓപ്ഷണലായി, iptables അല്ലെങ്കിൽ showwall, sendmail

Linux സിസ്റ്റങ്ങളിൽ Fail2Ban എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം

Fail2ban ഇൻസ്റ്റാൾ ചെയ്യുന്നത് താരതമ്യേന എളുപ്പമാണ്:

ആദ്യം, നിങ്ങളുടെ പാക്കേജുകൾ അപ്ഡേറ്റ് ചെയ്യുക, Epel റിപ്പോസിറ്ററി പ്രവർത്തനക്ഷമമാക്കുക, കാണിച്ചിരിക്കുന്നതുപോലെ fail2ban ഇൻസ്റ്റാൾ ചെയ്യുക.

# yum update
# yum install epel-release
# yum install fail2ban

ആദ്യം, നിങ്ങളുടെ പാക്കേജുകൾ അപ്ഡേറ്റ് ചെയ്ത് കാണിച്ചിരിക്കുന്നതുപോലെ fail2ban ഇൻസ്റ്റാൾ ചെയ്യുക.

# apt-get update && apt-get upgrade -y
# apt-get install fail2ban

ഓപ്ഷണലായി, നിങ്ങൾക്ക് മെയിൽ പിന്തുണ പ്രവർത്തനക്ഷമമാക്കണമെങ്കിൽ (മെയിൽ അറിയിപ്പുകൾക്കായി), നിങ്ങൾക്ക് സെൻഡ്മെയിൽ ഇൻസ്റ്റാൾ ചെയ്യാം.

# yum install sendmail                   [On CentOS/RHEL]
# apt-get install sendmail-bin sendmail  [On Debian/Ubuntu]

Fail2ban, sendmail എന്നിവ പ്രവർത്തനക്ഷമമാക്കാൻ ഇനിപ്പറയുന്ന കമാൻഡുകൾ ഉപയോഗിക്കുക:

# systemctl start fail2ban
# systemctl enable fail2ban
# systemctl start sendmail
# systemctl enable sendmail

Linux സിസ്റ്റങ്ങളിൽ Fail2ban എങ്ങനെ കോൺഫിഗർ ചെയ്യാം

സ്ഥിരസ്ഥിതിയായി, fail2ban ആദ്യം വായിക്കുന്ന .conf ഫയലുകൾ /etc/fail2ban/ ഉപയോഗിക്കുന്നു. എന്നിരുന്നാലും, അതേ ഡയറക്uടറിയിൽ സ്ഥിതി ചെയ്യുന്ന .local ഫയലുകൾക്ക് അവ അസാധുവാക്കാനാകും.

അതിനാൽ, .local ഫയലിൽ .conf ഫയലിൽ നിന്നുള്ള എല്ലാ ക്രമീകരണങ്ങളും ഉൾപ്പെടുത്തേണ്ടതില്ല, എന്നാൽ നിങ്ങൾ അസാധുവാക്കാൻ ആഗ്രഹിക്കുന്നവ മാത്രം. .conf എന്നതിൽ അല്ല, .local ഫയലുകളിലാണ് മാറ്റങ്ങൾ വരുത്തേണ്ടത്. fail2ban പാക്കറ്റ് അപ്uഗ്രേഡ് ചെയ്യുമ്പോൾ ഇത് തിരുത്തിയെഴുതുന്നത് തടയും.

ഈ ട്യൂട്ടോറിയലിന്റെ ആവശ്യത്തിനായി, ഞങ്ങൾ നിലവിലുള്ള fail2ban.conf ഫയൽ fail2ban.local എന്നതിലേക്ക് പകർത്തും.

# cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

ഇപ്പോൾ നിങ്ങളുടെ പ്രിയപ്പെട്ട ടെക്സ്റ്റ് എഡിറ്റർ ഉപയോഗിച്ച് .local ഫയലിൽ മാറ്റങ്ങൾ വരുത്താം. നിങ്ങൾക്ക് എഡിറ്റുചെയ്യാനാകുന്ന മൂല്യങ്ങൾ ഇവയാണ്:

  • ലോഗ് ലെവൽ - ലോഗ് ചെയ്യേണ്ട വിശദാംശങ്ങളുടെ തലമാണിത്. സാധ്യമായ ഓപ്ഷനുകൾ ഇവയാണ്:
    • നിർണ്ണായക
    • പിശക്
    • മുന്നറിയിപ്പ്
    • അറിയിപ്പ്
    • വിവരങ്ങൾ
    • ഡീബഗ്

    • STDOUT - ഏതെങ്കിലും ഡാറ്റ ഔട്ട്പുട്ട് ചെയ്യുക
    • STDERR - ഏതെങ്കിലും പിശകുകൾ ഔട്ട്പുട്ട് ചെയ്യുക
    • SYSLOG - സന്ദേശം അടിസ്ഥാനമാക്കിയുള്ള ലോഗിംഗ്
    • ഫയൽ - ഒരു ഫയലിലേക്കുള്ള ഔട്ട്പുട്ട്

    fail2ban-ലെ ഏറ്റവും പ്രധാനപ്പെട്ട ഫയലുകളിലൊന്നാണ് നിങ്ങളുടെ ജയിലുകളെ നിർവചിക്കുന്ന jail.conf. ഇവിടെയാണ് fail2ban പ്രവർത്തനക്ഷമമാക്കേണ്ട സേവനങ്ങൾ നിങ്ങൾ നിർവചിക്കുന്നത്.

    ഞങ്ങൾ നേരത്തെ സൂചിപ്പിച്ചതുപോലെ, അപ്uഗ്രേഡ് ചെയ്യുമ്പോൾ .conf ഫയലുകൾ മാറ്റാൻ കഴിയും, അതിനാൽ നിങ്ങളുടെ പരിഷ്uക്കരണങ്ങൾ പ്രയോഗിക്കാൻ കഴിയുന്ന ഒരു jail.local ഫയൽ നിങ്ങൾ സൃഷ്uടിക്കണം.

    ഇതിനുള്ള മറ്റൊരു മാർഗ്ഗം .conf ഫയൽ ഇതുപയോഗിച്ച് പകർത്തുക എന്നതാണ്:

    # cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    

    നിങ്ങൾ CentOS അല്ലെങ്കിൽ Fedora ഉപയോഗിക്കുകയാണെങ്കിൽ, നിങ്ങൾ jail.local-ലെ ബാക്കെൻഡ് \auto എന്നതിൽ നിന്ന് \systemd എന്നതിലേക്ക് മാറ്റേണ്ടതുണ്ട്.

    നിങ്ങൾ ഉബുണ്ടു/ഡെബിയൻ ആണ് ഉപയോഗിക്കുന്നതെങ്കിൽ, അവരും systemd ഉപയോഗിക്കുന്നുണ്ടെങ്കിലും ഈ മാറ്റം വരുത്തേണ്ട ആവശ്യമില്ല.

    Debian, Ubuntu എന്നിവയ്uക്കായി ജയിൽ ഫയൽ സ്ഥിരസ്ഥിതിയായി SSH പ്രവർത്തനക്ഷമമാക്കും, പക്ഷേ CentOS-ൽ അല്ല. നിങ്ങൾക്ക് ഇത് പ്രവർത്തനക്ഷമമാക്കണമെങ്കിൽ, /etc/fail2ban/jail.local എന്നതിൽ ഇനിപ്പറയുന്ന വരി മാറ്റുക:

    [sshd]
    enabled = true
    

    ഒരു IP വിലാസം തടഞ്ഞതിന് ശേഷമുള്ള സാഹചര്യം നിങ്ങൾക്ക് ക്രമീകരിക്കാൻ കഴിയും. അതിനായി, fail2ban bantime, findtime, maxretry എന്നിവ ഉപയോഗിക്കുന്നു.

    • ബാന്ടൈം - ഇത് ഒരു IP വിലാസം നിരോധിക്കപ്പെടുന്ന സെക്കൻഡുകളുടെ എണ്ണമാണ് (സ്ഥിരസ്ഥിതി 10 മിനിറ്റ്).
    • കണ്ടെത്തൽ സമയം - ഹോസ്റ്റ് നിരോധിക്കുന്നതിന് മുമ്പുള്ള ലോഗിൻ ശ്രമങ്ങൾക്കിടയിലുള്ള സമയം. (സ്ഥിരസ്ഥിതി 10 മിനിറ്റ്). മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, 3 പരാജയപ്പെട്ട ലോഗിൻ ശ്രമങ്ങൾക്ക് ശേഷം ഒരു IP വിലാസം തടയാൻ fail2ban സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, ആ 3 ശ്രമങ്ങളും കണ്ടെത്തുന്ന സമയത്തിനുള്ളിൽ (10 മിനിറ്റ്) ചെയ്യണം.
    • maxretry - ഒരു നിരോധനം പ്രയോഗിക്കുന്നതിന് മുമ്പ് നടത്തേണ്ട ശ്രമങ്ങളുടെ എണ്ണം. (ഡിഫോൾട്ട് 3).

    തീർച്ചയായും, നിങ്ങൾ ചില IP വിലാസങ്ങൾ വൈറ്റ്uലിസ്റ്റ് ചെയ്യാൻ ആഗ്രഹിക്കും. അത്തരം IP വിലാസങ്ങൾ കോൺഫിഗർ ചെയ്യുന്നതിന് നിങ്ങളുടെ പ്രിയപ്പെട്ട ടെക്സ്റ്റ് എഡിറ്റർ ഉപയോഗിച്ച് /etc/fail2ban/jail.local തുറന്ന് ഇനിപ്പറയുന്ന വരി അൺകമന്റ് ചെയ്യുക:

    ignoreip = 127.0.0.1/8  ::1
    

    തുടർന്ന്, നിങ്ങൾ അവഗണിക്കാൻ ആഗ്രഹിക്കുന്ന ഐപി വിലാസങ്ങൾ നിങ്ങൾക്ക് നൽകാം. IP വിലാസങ്ങൾ സ്uപെയ്uസിൽ നിന്നോ കോമയിൽ നിന്നോ വേർതിരിക്കണം.

    ഇവന്റിൽ നിങ്ങൾക്ക് മെയിൽ അലേർട്ടുകൾ ലഭിക്കണമെങ്കിൽ, നിങ്ങൾ ഇനിപ്പറയുന്ന ക്രമീകരണങ്ങൾ /etc/fail2ban/jail.local-ൽ കോൺഫിഗർ ചെയ്യേണ്ടതുണ്ട്:

    • destemail – മെയിൽ വിലാസം, അവിടെ നിങ്ങൾക്ക് അറിയിപ്പ് ലഭിക്കും.
    • അയക്കുന്നയാളുടെ പേര് - സന്ദേശം ലഭിക്കുമ്പോൾ നിങ്ങൾ കാണുന്ന അയച്ചയാളാണ്.
    • അയക്കുന്നയാൾ - fail2ban ഇമെയിലുകൾ അയയ്uക്കുന്ന ഇമെയിൽ വിലാസം.

    ഡിഫോൾട്ട് mta (മെയിൽ ട്രാൻസ്ഫർ ഏജന്റ്) അയയ്uക്കാൻ സജ്ജീകരിച്ചിരിക്കുന്നു.

    മെയിൽ അറിയിപ്പുകൾ ലഭിക്കുന്നതിന്, നിങ്ങൾ \ആക്ഷൻ ക്രമീകരണവും ഇതിൽ നിന്ന് മാറ്റേണ്ടതുണ്ട്:

    Action = %(action_)s
    

    ഇവയിലൊന്നിലേക്ക്:

    action = %(action_mw)s
    action = %(action_mwl)s
    

    • %(action_mw)s – ഹോസ്റ്റിനെ നിരോധിക്കുകയും ഹൂയിസ് റിപ്പോർട്ട് സഹിതം ഒരു മെയിൽ അയയ്ക്കുകയും ചെയ്യും.
    • %(action_mwl)s – ഹോസ്റ്റിനെ നിരോധിക്കുകയും ലോഗ് ഫയലിൽ നിന്ന് ഹൂസ് വിവരവും പ്രസക്തമായ എല്ലാ വിവരങ്ങളും നൽകുകയും ചെയ്യും.

    അധിക Fail2ban ജയിൽ കോൺഫിഗറേഷൻ

    ഇതുവരെ ഞങ്ങൾ അടിസ്ഥാന കോൺഫിഗറേഷൻ ഓപ്ഷനുകൾ പരിശോധിച്ചു. നിങ്ങൾക്ക് ഒരു ജയിൽ കോൺഫിഗർ ചെയ്യണമെങ്കിൽ jail.local ഫയലിൽ അത് പ്രവർത്തനക്ഷമമാക്കേണ്ടതുണ്ട്. വാക്യഘടന വളരെ ലളിതമാണ്:

    [jail_to_enable]
    . . .
    enabled = true
    

    നിങ്ങൾ യഥാർത്ഥ ജയിൽ ഉപയോഗിച്ച് jail_to_enable മാറ്റിസ്ഥാപിക്കേണ്ടിടത്ത്, ഉദാഹരണത്തിന്, \sshd. jail.local ഫയലിൽ, ഇനിപ്പറയുന്ന മൂല്യങ്ങൾ ssh സേവനത്തിനായി മുൻകൂട്ടി നിശ്ചയിക്കും:

    [sshd]
    
    port = ssh
    logpath = %(sshd_log)s
    

    ലോഗിലെ ഒരു വരി പരാജയപ്പെട്ടതാണോ എന്ന് തിരിച്ചറിയാൻ സഹായിക്കുന്ന ഫിൽട്ടർ നിങ്ങൾക്ക് പ്രവർത്തനക്ഷമമാക്കാം. ഫിൽട്ടർ മൂല്യം യഥാർത്ഥത്തിൽ .conf എന്നതിന് ശേഷം സേവന നാമമുള്ള ഒരു ഫയലിന്റെ റഫറൻസാണ്. ഉദാഹരണത്തിന്: /etc/fail2ban/filter.d/sshd.conf.

    വാക്യഘടന ഇതാണ്:

    filter = service
    

    ഉദാഹരണത്തിന്:

    filter = sshd
    

    നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന ഡയറക്uടറിയിൽ നിലവിലുള്ള ഫിൽട്ടറുകൾ അവലോകനം ചെയ്യാം: /etc/fail2ban/filter.d/.

    നിലവിലെ കോൺഫിഗറേഷൻ അവലോകനം ചെയ്യുന്നതിനും മാറ്റുന്നതിനും ഉപയോഗിക്കാവുന്ന ഒരു ക്ലയന്റുമായി Fail2ban വരുന്നു. ഇത് നിരവധി ഓപ്ഷനുകൾ നൽകുന്നതിനാൽ, നിങ്ങൾക്ക് ഇനിപ്പറയുന്നവ ഉപയോഗിച്ച് അതിന്റെ മാനുവൽ പരിശോധിക്കാം:

    # man fail2ban-client 
    

    നിങ്ങൾക്ക് ഉപയോഗിക്കാവുന്ന ചില അടിസ്ഥാന കമാൻഡുകൾ ഇവിടെ കാണാം. fail2ban-ന്റെ നിലവിലെ അവസ്ഥ അവലോകനം ചെയ്യാൻ അല്ലെങ്കിൽ പ്രത്യേക ജയിലിൽ, നിങ്ങൾക്ക് ഇവ ഉപയോഗിക്കാം:

    # fail2ban-client status
    

    ഫലം ഇതുപോലെ കാണപ്പെടും:

    വ്യക്തിഗത ജയിലിൽ, നിങ്ങൾക്ക് പ്രവർത്തിപ്പിക്കാം:

    # fail2ban-client status sshd
    

    താഴെയുള്ള സ്ക്രീൻഷോട്ടിൽ, ഞാൻ ഒന്നിലധികം ലോഗിനുകൾ മനഃപൂർവ്വം പരാജയപ്പെട്ടതായി നിങ്ങൾ കാണും, അതിനാൽ ഞാൻ ബന്ധിപ്പിക്കാൻ ശ്രമിച്ച IP വിലാസം fail2ban-ന് തടയാൻ കഴിയും:

    നിങ്ങളുടെ Linux സിസ്റ്റത്തിന് അധിക സുരക്ഷ നൽകുന്ന മികച്ചതും നന്നായി രേഖപ്പെടുത്തപ്പെട്ടതുമായ നുഴഞ്ഞുകയറ്റ പ്രതിരോധ സംവിധാനമാണ് Fail2ban. അതിന്റെ സജ്ജീകരണവും വാക്യഘടനയും ഉപയോഗിക്കുന്നതിന് ഇതിന് കുറച്ച് സമയമെടുക്കും, എന്നാൽ നിങ്ങൾ അത് പരിചയപ്പെട്ടുകഴിഞ്ഞാൽ, അതിന്റെ നിയമങ്ങൾ മാറ്റാനും വിപുലീകരിക്കാനും നിങ്ങൾക്ക് മടിക്കേണ്ടതില്ല.