Fail2ban è un sistema di prevenzione delle intrusioni gratuito e open source scritto in Python. Viene utilizzato per proteggere il sistema dagli attacchi di forza bruta. Monitora continuamente i file di registro SSH (e altri) per i tentativi di autenticazione, dopo un numero specificato di tentativi di password errata, l'indirizzo IP del client viene bandito da Fail2Ban. Può essere utilizzato per proteggere diversi servizi tra cui SSH, vsftpd, Apache e Webmin.
In questo tutorial, ti mostrerò come installare il firewall Fail2Ban su Alma Linux 8.
Prerequisiti
- Un server che esegue Alma Linux 8.
- Sul server è configurata una password di root.
Verifica installazione Firewalld
Per impostazione predefinita, il pacchetto Firewalld è preinstallato su Alma Linux 8. Innanzitutto, dovrai verificare se è in esecuzione o meno. Puoi verificarlo con il seguente comando:
systemctl status firewalld
Se firewalld non è in esecuzione, otterrai il seguente output:
? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
Ora avvia il servizio firewalld con il seguente comando:
systemctl start firewalld
Puoi controllare lo stato del firewalld usando il seguente comando:
systemctl status firewalld
Dovresti vedere il seguente output:
? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2022-02-19 08:57:14 UTC; 40s ago Docs: man:firewalld(1) Main PID: 7214 (firewalld) Tasks: 2 (limit: 23696) Memory: 27.9M CGroup: /system.slice/firewalld.service ??7214 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid Feb 19 08:57:14 linux systemd[1]: Starting firewalld - dynamic firewall daemon... Feb 19 08:57:14 linux systemd[1]: Started firewalld - dynamic firewall daemon.
Ora, elenca tutti i servizi configurati da firewalld usando il seguente comando:
firewall-cmd --list-all
Dovresti vedere il seguente output:
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Installa Fail2Ban
Per impostazione predefinita, il pacchetto Fail2Ban non è disponibile nel repository predefinito di Alma Linux. Quindi dovrai installarlo dal repository EPEL. Puoi installare il repository EPEL con il seguente comando:
dnf install epel-release -y
Una volta installato il repository EPEL, puoi installare il firewall Fail2Ban con il seguente comando:
dnf install fail2ban fail2ban-firewalld -y
Una volta completata l'installazione, avvia e abilita il servizio Fail2Ban con il seguente comando:
systemctl start fail2ban
systemctl enable fail2ban
Puoi verificare lo stato del servizio fail2ban eseguendo il comando:
systemctl status fail2ban
Dovresti vedere il seguente output:
? fail2ban.service - Fail2Ban Service Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2022-02-19 08:58:34 UTC; 6s ago Docs: man:fail2ban(1) Process: 7838 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS) Main PID: 7840 (fail2ban-server) Tasks: 3 (limit: 23696) Memory: 10.8M CGroup: /system.slice/fail2ban.service ??7840 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start Feb 19 08:58:34 linux systemd[1]: Starting Fail2Ban Service... Feb 19 08:58:34 linux systemd[1]: Started Fail2Ban Service. Feb 19 08:58:35 linux fail2ban-server[7840]: Server ready
Configura Fail2Ban
Il file di configurazione principale di Fail2Ban si trova in /etc/fail2ban/jail.conf . È una buona idea creare una copia del file di configurazione principale. Puoi crearlo con il seguente comando:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Per impostazione predefinita, Fail2Ban utilizza il firewall Iptables. Per abilitare il supporto firewalld, eseguire il comando seguente:
mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
Quindi, riavvia il servizio Fail2Ban per applicare le modifiche:
systemctl restart fail2ban
Proteggi SSH con Fail2Ban
Per impostazione predefinita, Fail2Ban non è configurato per bloccare gli IP remoti. Dovrai configurare il file di configurazione jail di Fail2Ban per ogni servizio che desideri proteggere.
Per proteggere il servizio SSH, crea un file di configurazione jail per SSH con il comando seguente:
nano /etc/fail2ban/jail.d/sshd.local
Aggiungi le seguenti righe:
# This configuration will block the remote host for 2 hours after 3 failed SSH login attempts. [sshd] enabled = true bantime = 2h maxretry = 3
Salva e chiudi il file al termine, quindi riavvia il servizio SSH per applicare le modifiche:
systemctl restart fail2ban
Ora puoi verificare la configurazione della jail con il seguente comando:
fail2ban-client status
Otterrai la jail configurata nel seguente output:
Status |- Number of jail: 1 `- Jail list: sshd
Per controllare la jail SSH per qualsiasi IP vietato, esegui il seguente comando:
fail2ban-client status sshd
Otterrai tutti gli elenchi di IP vietati nel seguente output:
Status for the jail: sshd |- Filter | |- Currently failed: 6 | |- Total failed: 15 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 2 |- Total banned: 2 `- Banned IP list: 96.9.67.48 43.154.142.8
Se desideri sbloccare manualmente l'indirizzo IP, esegui il comando seguente:
fail2ban-client unban remote-ip-address
Conclusione
Nella guida sopra, abbiamo spiegato come installare Fail2Ban su Alma Linux 8. Abbiamo anche spiegato come usare Fail2Ban per proteggere il servizio SSH. Ora puoi implementare Fail2Ban nell'ambiente di produzione per proteggere il tuo sistema da attacchi di forza bruta.