Kako namestiti Fail2ban na Rocky Linux in AlmaLinux


Fail2ban, napisan v Pythonu, je brezplačen in odprtokoden sistem za preprečevanje vdorov (IPS), ki ščiti strežnik pred napadi s surovo silo.

Po določenem številu poskusov napačnega gesla je odjemalčevemu IP naslovu prepovedan dostop do sistema za določeno obdobje ali dokler ga skrbnik sistema ne odblokira. Na ta način je sistem zaščiten pred ponavljajočimi se napadi s surovo silo enega gostitelja.

[ Morda vam bo všeč tudi: Kako zaščititi in utrditi strežnik OpenSSH ]

Fail2ban je zelo nastavljiv in ga je mogoče nastaviti za zaščito neštetih storitev, kot so SSH, vsftpd, Apache in Webmin.

V tem priročniku se osredotočamo na to, kako lahko namestite in konfigurirate Fail2ban na Rocky Linux in AlmaLinux.

1. korak: Zagotovite, da se požarni zid izvaja

Rocky privzeto ima zagnan Firewalld. Če pa v vašem sistemu ni tako, zaženite Firewalld tako, da izvedete:

$ sudo systemctl start firewalld

Nato omogočite zagon ob zagonu:

$ sudo systemctl enable firewalld

Nato preverite stanje požarnega zidu

$ sudo systemctl status firewalld

Poleg tega lahko z ukazom potrdite vsa pravila Firewalld, ki se trenutno uveljavljajo:

$ sudo firewall-cmd --list-all

2. korak: Namestite EPEL v Rocky Linux

Kot pogoj za namestitev fail2ban in drugih potrebnih paketov morate namestiti repozitorij EPEL, ki zagotavlja dodatne visokokakovostne pakete za distribucije, ki temeljijo na RHEL.

$ sudo dnf install epel-release

3. korak: Namestite Fail2ban v Rocky Linux

Ko je EPEL nameščen, nadaljujte in namestite fail2ban in paket fail2ban-firewalld.

$ sudo dnf install fail2ban fail2ban-firewalld

To namesti strežnik fail2ban in komponento požarnega zidu skupaj z drugimi odvisnostmi.

Ko je namestitev fail2ban končana, zaženite storitev fail2ban.

$ sudo systemctl start fail2ban

In omogočite, da se zažene ob zagonu.

$ sudo systemctl enable fail2ban

Stanje storitve fail2ban lahko preverite tako, da zaženete ukaz:

$ sudo systemctl status fail2ban

Izhod je potrditev, da Fail2ban deluje, kot bi pričakovali.

4. korak: Konfiguriranje Fail2ban v Rocky Linuxu

Če nadaljujemo, moramo konfigurirati fail2ban, da bo deloval, kot je bilo predvideno. V idealnem primeru bi uredili glavno konfiguracijsko datoteko – /etc/fail2ban/jail.conf. Vendar se to odsvetuje. Kot rešitev bo kopiranje vsebine konfiguracijske datoteke jail.conf v datoteko jail.local.

$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Zdaj odprite datoteko jail.local z želenim urejevalnikom.

$ sudo vim /etc/fail2ban/jail.local

V razdelku [DEFAULT] preverite, ali imate naslednje nastavitve, kot so prikazane.

bantime = 1h
findtime = 1h
maxretry = 5

Definirajmo atribute:

  • Direktiva bantime določa, koliko časa bo odjemalec izključen po neuspelih poskusih preverjanja pristnosti.
  • Direktiva findtime je trajanje ali obdobje, v katerem bo fail2ban upošteval ob upoštevanju ponavljajočih se poskusov nepravilnega gesla.
  • Parameter maxretry je največje število poskusov nepravilnega gesla, preden je oddaljenemu odjemalcu blokiran dostop do strežnika. Tukaj bo odjemalec zaklenjen po 5 napakah pri preverjanju pristnosti.

Fail2ban privzeto deluje z iptables. Vendar je bilo to opuščeno v korist požarnega zidu. Fail2ban moramo konfigurirati tako, da deluje skupaj s požarnim zidom namesto iptables.

Torej, zaženite z ukazom:

$ sudo mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local

Če želite uporabiti spremembe, znova zaženite fail2ban:

$ sudo systemctl restart fail2ban

5. korak: Zaščita storitve SSH z Fail2ban

Fail2ban privzeto ne blokira nobenega oddaljenega gostitelja, dokler ne omogočite konfiguracije zapora za storitev, ki jo želite zavarovati. Konfiguracija zapora je podana na poti /etc/fail2ban/jail.d in bo preglasila konfiguracijo, določeno v datoteki jail.local.

V tem primeru bomo ustvarili konfiguracijsko datoteko zapora za zaščito storitve SSH. Zato ustvarite zaporno datoteko SSH.

$ sudo vim /etc/fail2ban/jail.d/sshd.local

Nato prilepite naslednje vrstice:

[sshd]
enabled = true

# Override the default global configuration
# for specific jail sshd
bantime = 1d
maxretry = 3

V zgornji konfiguraciji bo oddaljenemu gostitelju prepovedan dostop do sistema za 1 dan po 3 neuspešnih poskusih prijave SSH. Shranite spremembe in znova zaženite storitev fail2ban.

$ sudo systemctl restart fail2ban

Nato preverite stanje konfiguracije zapora s pomočjo pripomočka ukazne vrstice fail2ban-client.

$ sudo fail2ban-client status

Iz izhoda lahko vidimo, da imamo 1 zapor konfiguriran za storitev, imenovano 'sshd'.

Poleg tega lahko z možnostjo get potrdite vrednost maxretry zapora sshd.

$ sudo fail2ban-client get sshd maxretry

3

Natisnjena vrednost 3 se mora ujemati s tem, kar ste navedli v datoteki sshd.local.

6. korak: Testiranje konfiguracije Fail2ban

Po nastavitvi fail2ban in izdelavi konfiguracijske datoteke zapora za storitev SSH bomo izvedli testni zagon in simulirali 3 neuspešne prijave z določitvijo napačnega gesla za vsak poziv za geslo.

Pojdite na oddaljeni sistem Linux in se poskusite prijaviti z napačnim geslom. Po 3 neuspešnih poskusih bo povezava prekinjena in vsak nadaljnji poskus ponovne povezave bo blokiran, dokler trajanje prepovedi ne poteče.

Če želite zbrati vpoglede v blokirane odjemalske sisteme, preverite stanje zapora.

$ sudo fail2ban-client status sshd

Če želite stranko prekiniti ali odstraniti iz zapora, izvedite ukaz:

$ sudo fail2ban-client unban 192.168.2.102

Še enkrat preverite stanje zapora, da zagotovite, da odjemalec ni vključen na seznam prepovedanih IP-jev.

$ sudo fail2ban-client status sshd

Kot smo videli, je Fail2ban zelo uporabno orodje za preprečevanje vsiljivcev, ki želijo vdreti v vaš sistem Linux. Deluje v povezavi s požarnim zidom za prepoved odjemalskih sistemov za določeno obdobje po določenem številu neuspelih poskusov prijave. Pri tem zagotavlja dodatno plast zaščite za vaš strežnik Linux.