Wéi benotzt Dir Fail2ban fir Äre Linux Server ze sécheren


D'Verbesserung vun Ärer Serversécherheet sollt eng vun Ären Haaptprioritéite sinn wann et ëm d'Gestioun vun engem Linux Server kënnt. Andeems Dir Är Server Logbicher iwwerpréift, fannt Dir dacks verschidde Versuche fir brute Force Login, Web Iwwerschwemmungen, Exploit Sichen a vill anerer.

Mat enger Intrusiounsverhënnerungssoftware wéi fail2ban, kënnt Dir Är Server Logbicher ënnersichen an extra iptables Regelen derbäi fir problematesch IP Adressen ze blockéieren.

Dësen Tutorial weist Iech wéi Dir fail2ban installéiere wëllt an d'Basiskonfiguratioun opstellt fir Äre Linux System vu brute-force Attacken ze schützen.

Fail2ban ass am Python geschriwwen an déi eenzeg Ufuerderung ass Python installéiert ze hunn:

  • Fail2ban Branche 0.9.x erfuerdert Python >=2.6 oder Python >=3.2
  • Fail2ban Branche 0.8.x erfuerdert Python >=2.4
  • Root Zougang zu Ärem System
  • Optional, iptables oder showewall a sendmail

Wéi installéiere Fail2Ban an Linux Systemer

Installatioun vu fail2ban ass relativ einfach:

Als éischt, update Är Packagen, aktivéiert den Epel Repository an installéiert fail2ban wéi gewisen.

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

Als éischt, update Är Packagen an installéiert fail2ban wéi gewisen.

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

Optional, wann Dir Mail Support aktivéiere wëllt (fir Mail Notifikatiounen), kënnt Dir Sendmail installéieren.

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

Fir fail2ban a sendmail z'aktivéieren benotzt déi folgend Kommandoen:

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

Wéi konfiguréieren Fail2ban a Linux Systemer

Par défaut benotzt fail2ban d'.conf Dateien, déi an /etc/fail2ban/ sinn, déi als éischt gelies ginn. Wéi och ëmmer, déi kënnen iwwerschriwwe ginn duerch .local Dateien, déi am selwechte Verzeechnes sinn.

Dofir brauch d'Datei .local net all Astellunge vun der .conf-Datei, mee nëmmen déi, déi Dir iwwerschreiwe wëllt. Ännerungen sollen an de .local Dateien gemaach ginn, net an de .conf. Dëst verhënnert d'Iwwerschreiwe vun Ännerungen beim Upgrade vum fail2ban Paket.

Fir den Zweck vun dësem Tutorial kopéieren mir déi existent fail2ban.conf Datei op fail2ban.local.

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

Elo kënnt Dir d'Ännerungen an der .local Datei maachen andeems Dir Äre Liiblingstexteditor benotzt. D'Wäerter déi Dir änneren kënnt sinn:

  • loglevel - dëst ass den Detailniveau fir aloggen. Méiglech Optiounen sinn:
    • KRITISCH
    • FEELER
    • OPGEPASST
    • OPGEPASST
    • INFO
    • DEBUG

    • STDOUT - gitt all Daten aus
    • STDERR - erausginn all Feeler
    • SYSLOG - Message-baséiert Logbuch
    • Datei - Ausgab op eng Datei

    Ee vun de wichtegsten Dateien am fail2ban ass jail.conf déi Är Prisongen definéiert. Dëst ass wou Dir d'Servicer definéiert fir déi fail2ban soll ageschalt ginn.

    Wéi mir virdru scho gesot hunn, kënnen .conf Dateien während Upgrades geännert ginn, also sollt Dir eng jail.local Datei erstellen wou Dir Är Ännerunge gëlle kënnt.

    Eng aner Manéier fir dëst ze maachen ass einfach d'.conf Datei ze kopéieren mat:

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

    Am Fall wou Dir CentOS oder Fedora benotzt, musst Dir de Backend am Jail.local vun \auto op \systemd änneren.

    Wann Dir Ubuntu/Debian benotzt, ass et net néideg dës Ännerung ze maachen, och wann se och Systemd benotzen.

    D'Gefängnisdatei wäert SSH als Standard fir Debian an Ubuntu aktivéieren, awer net op CentOS. Wann Dir et aktivéiere wëllt, ännert einfach déi folgend Zeil an /etc/fail2ban/jail.local:

    [sshd]
    enabled = true
    

    Dir kënnt d'Ëmstänn konfiguréieren, no deem eng IP Adress blockéiert ass. Fir dësen Zweck benotzt fail2ban bantime, findtime a maxretry.

    • bantime - dëst ass d'Zuel vun de Sekonnen datt eng IP Adress verbannt bleift (Standard 10 min).
    • findtime - d'Zuel vun Zäit tëscht Umeldungsversich, ier de Host verbannt ass. (Standard 10 min). An anere Wierder, wann fail2ban gesat ass fir eng IP Adress no 3 gescheitert Umeldungsversich ze blockéieren, mussen déi 3 Versich bannent der Findtime Period (10 min) gemaach ginn.
    • Maxretry - Unzuel vun Versich, déi gemaach ginn ier e Verbuet applizéiert gëtt. (Standard 3).

    Natierlech wëllt Dir bestëmmte IP Adressen whitelistéieren. Fir sou IP Adressen ze konfiguréieren, oppen /etc/fail2ban/jail.local mat Ärem Liiblingstexteditor an decommentéiert déi folgend Linn:

    ignoreip = 127.0.0.1/8  ::1
    

    Da kënnt Dir d'IP Adressen setzen déi Dir ignoréiert wëllt. IP Adresse solle vu Raum oder Komma getrennt sinn.

    Wann Dir E-Mail Alarmer beim Event wëllt kréien, musst Dir déi folgend Astellungen an /etc/fail2ban/jail.local konfiguréieren:

    • Destemail - E-Mailadress, wou Dir d'Notifikatioun kritt.
    • Sendernumm - de Sender deen Dir gesitt wann Dir de Message kritt.
    • Sender - E-Mailadress vun där fail2ban d'E-Maile schéckt.

    De Standard mta (Mail Transfer Agent) ass op sendmail gesat.

    Fir Mail Notifikatiounen ze kréien, musst Dir och d'Astellung \Action änneren vun:

    Action = %(action_)s
    

    Zu engem vun dësen:

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

    • %(action_mw)s - wäert den Host verbidden an eng Mail mat engem Whois Bericht schécken.
    • %(action_mwl)s - verbitt den Host, liwwert Whois Info an all relevant Informatioun aus der Logdatei.

    Zousätzlech Fail2ban Prisongskonfiguratioun

    Bis elo hu mir d'Basiskonfiguratiounsoptioune gekuckt. Wann Dir e Prisong konfiguréiere wëllt, musst Dir et an der jail.local Datei aktivéieren. D'Syntax ass zimlech einfach:

    [jail_to_enable]
    . . .
    enabled = true
    

    Wou Dir jail_to_enable mam aktuellen Prisong sollt ersetzen, zum Beispill \sshd.An der jail.local Datei ginn déi folgend Wäerter fir ssh Service virdefinéiert:

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

    Dir kënnt de Filter aktivéieren deen hëlleft z'identifizéieren ob eng Zeil am Logbuch e gescheitert ass. De Filterwäert ass tatsächlech eng Referenz op eng Datei mam Servicenumm gefollegt vun .conf. Zum Beispill: /etc/fail2ban/filter.d/sshd.conf.

    D'Syntax ass:

    filter = service
    

    Zum Beispill:

    filter = sshd
    

    Dir kënnt déi existent Filteren an de folgende Verzeechnes iwwerpréiwen: /etc/fail2ban/filter.d/.

    Fail2ban kënnt mat engem Client dee benotzt ka ginn fir déi aktuell Konfiguratioun ze iwwerpréiwen an z'änneren. Well et vill Optiounen ubitt, kënnt Dir duerch seng Handbuch goen mat:

    # man fail2ban-client 
    

    Hei gesitt Dir e puer vun de Basisbefehle déi Dir benotze kënnt. Fir den aktuelle Status vu fail2ban oder fir spezifesch Prisong ze iwwerpréiwen, kënnt Dir benotzen:

    # fail2ban-client status
    

    D'Resultat wäert ähnlech wéi dëst ausgesinn:

    Fir eenzel Prisong kënnt Dir lafen:

    # fail2ban-client status sshd
    

    Am Screenshot hei ënnen gesitt Dir datt ech bewosst méi Login gescheitert hunn, sou datt fail2ban d'IP Adress blockéiere kann, aus där ech probéiert hunn ze verbannen:

    Fail2ban ass en exzellenten, gutt dokumentéierten Intrusiounsverhënnerungssystem, deen extra Sécherheet fir Äre Linux System ubitt. Et erfuerdert e bëssen Zäit fir un seng Setup a Syntax gewinnt ze ginn, awer wann Dir Iech domat vertraut hutt, fillt Dir Iech gratis seng Reegelen z'änneren an ze verlängeren.