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.