Plesk Fail2Ban: integrazione e configurazione jail

Cos'e' Fail2Ban e perché' integrarlo in Plesk

Fail2Ban e' un servizio open source che analizza i log dei servizi (SSH, FTP, posta, pannello Plesk) e blocca automaticamente gli IP che effettuano troppi tentativi falliti in un'intervallo di tempo. E' uno strumento essenziale per proteggere il server da attacchi di tipo brute force, dictionary attack e scanner automatici.

Plesk Obsidian integra Fail2Ban tramite un'estensione che ne semplifica enormemente la configurazione: tutte le impostazioni base sono accessibili da GUI, mentre per le configurazioni avanzate restano disponibili i file di Fail2Ban classici.

Abilitare Fail2Ban

Andare in Tools & Settings → IP Address Banning (Fail2Ban). Se non e' installato, Plesk propone l'installazione automatica.

Una volta attivo, abilitare la spunta Enable intrusion detection e cliccare OK. Plesk avvia il servizio e applica le jail predefinite.

Le jail incluse

Una jail e' un set di regole che monitora un servizio specifico. Le jail predefinite in Plesk sono:

  • plesk-panel: tentativi falliti sul pannello (porta 8443/8880)
  • plesk-postfix: tentativi SMTP AUTH falliti
  • plesk-dovecot: tentativi IMAP/POP3 falliti
  • plesk-proftpd: tentativi FTP falliti
  • plesk-roundcube: tentativi falliti su RoundCube
  • plesk-wordpress: tentativi falliti su wp-login.php (richiede WordPress Toolkit)
  • recidive: jail meta che banna a lungo termine chi viene bannato spesso
  • ssh: tentativi SSH falliti

Configurare una jail

Cliccando sul nome di una jail si accede ai parametri:

  • Find time: intervallo in secondi in cui contare i tentativi (default 600)
  • Max retries: numero di tentativi falliti tollerati (default 5)
  • Ban time: durata del ban in secondi (default 600)

Per produzione consigliamo: find time 3600, max retries 3, ban time 3600 (un'ora). La jail recidive banna 1 settimana chi viene bannato 5 volte in 1 giorno.

Whitelist degli IP fidati

Per evitare di bloccare per errore IP amministrativi, configurare la whitelist:

  1. Andare nel tab Trusted IP Addresses
  2. Aggiungere gli IP dell'ufficio, della VPN aziendale, degli amministratori
  3. Salvare

Gli IP whitelistati non vengono mai bannati, qualunque sia il numero di tentativi.

Sbloccare un'IP bannato

Dal tab Banned IP Addresses si vede l'elenco degli IP attualmente bloccati. Selezionare l'IP e cliccare Unban.

Da SSH:

plesk bin ip_ban --unban-ip 1.2.3.4
fail2ban-client unban 1.2.3.4

Aggiungere jail custom

Per servizi non gestiti dalle jail predefinite (es. un'applicazione PHP custom), creare un file in /etc/fail2ban/jail.d/custom.conf:

[mio-servizio]
enabled = true
filter = mio-servizio
logpath = /var/log/mio-servizio.log
maxretry = 5
findtime = 600
bantime = 3600

Creare anche il filter in /etc/fail2ban/filter.d/mio-servizio.conf con la regex che identifica i tentativi falliti.

Monitorare l'attività'

Statistiche da SSH:

fail2ban-client status
fail2ban-client status plesk-panel

Per vedere il log di attività':

tail -f /var/log/fail2ban.log

Notifiche email

Plesk puo' inviare email all'admin quando un'IP viene bannato. Configurazione in Tools & Settings → Notifications → IP Address Banning.

Performance e impatto sul server

Fail2Ban e' molto leggero (~20-40 MB di RAM) ma esegue scanning continuo dei log. Su server con altissimo traffico email, considerare di:

  • Limitare il numero di jail attive
  • Aumentare il findtime per ridurre la frequenza di analisi
  • Usare regex efficienti nei filter custom
  • Considerare l'uso di IPSet per gestire grandi liste di IP bannati

Persistenza dei ban tra restart

Di default i ban Fail2Ban si perdono al restart del servizio. Per persistere usare la backend SQLite o MySQL:

[DEFAULT]
dbfile = /var/lib/fail2ban/fail2ban.sqlite3
dbpurgeage = 86400

Whitelist Cloudflare

Se i siti sono dietro Cloudflare, gli IP che arrivano al server sono quelli di Cloudflare, non quelli reali dei client. Senza configurazione, Fail2Ban potrebbe bannare Cloudflare stessa. Configurare il modulo mod_remoteip in Apache o usare il filter Fail2Ban dedicato che legge l'header CF-Connecting-IP.

Notifiche personalizzate via webhook

Oltre alle email, Fail2Ban puo' inviare alert verso Slack/Discord/Telegram via webhook custom. Modificare l'action in /etc/fail2ban/action.d/ con uno script che invia POST HTTP al webhook quando un'IP viene bannato.

Audit dei ban storici

Per analizzare quali jail sono più' attive e da dove provengono gli attacchi:

grep -i "ban" /var/log/fail2ban.log | awk '{print $7, $8}' | sort | uniq -c | sort -rn | head -20

Questo comando mostra i 20 IP più' bannati. Utile per identificare attacchi persistenti che potrebbero meritare un blocco permanente a livello firewall.

Integrazione con Plesk Action Log

Tutti i ban Fail2Ban sono registrati nel Plesk Action Log accessibile da Tools & Settings → Action Log. Filtrare per "IP banned" per vedere lo storico completo dei ban con timestamp, IP e jail responsabile.

Differenze tra jail SSH di sistema e plesk-panel

La jail ssh protegge il servizio SSH sul server (porta 22), mentre plesk-panel protegge il pannello Plesk (8443/8880). Sono jail indipendenti: un'IP che fa brute force solo su SSH viene bannato dalla prima ma non dalla seconda.

Sblocco massivo

Per resettare tutti i ban (es. dopo configurazione errata che ha bannato molti IP legittimi):

fail2ban-client unban --all

Hai bisogno di aiuto?

Se vuoi gestione Plesk dal team di G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?