Come Configuro Fail2Ban su Plesk per Bloccare gli Attacchi: La Mia Guida
Nel mio lavoro quotidiano di amministrazione server, una delle minacce più frequenti e sottovalutate che mi trovo ad affrontare è il brute force su Plesk. Centinaia, a volte migliaia di tentativi automatizzati ogni giorno: bot che provano combinazioni di username e password su SSH, FTP, pannello Plesk e persino su wp-login.php di WordPress. Senza una protezione adeguata, il server si ritrova a gestire un carico inutile, le risorse si esauriscono e il rischio di intrusione diventa concreto. Per questo motivo configuro sempre Fail2Ban su Plesk come prima linea di difesa su ogni server che gestisco.
In questa guida ti mostro la procedura esatta che applico per installare e configurare Fail2Ban su un server Plesk, dall’attivazione tramite il pannello fino al tuning avanzato delle jail. Alla fine saprai proteggere il tuo server da attacchi brute force in modo efficace, senza bloccare utenti legittimi e senza complicazioni inutili. Se preferisci un intervento diretto, puoi sempre contattarmi: mi occupo personalmente della messa in sicurezza del tuo server.
Perché Fail2Ban è Indispensabile su un Server Plesk: Cosa Vedo Ogni Giorno nei Log
Prima di entrare nella configurazione vera e propria, voglio spiegarti perché considero Fail2Ban uno strumento non opzionale. Quando analizzo i log di un server Plesk appena installato e ancora “nudo”, quello che trovo è sempre lo stesso scenario:
- Tentativi SSH continui: Bot da IP cinesi, russi, brasiliani che provano “root”, “admin”, “test” con migliaia di password diverse ogni ora. Se la porta 22 è aperta e senza protezione, è solo questione di tempo prima che trovino una combinazione valida o che saturino le risorse.
- Attacchi al pannello Plesk (porta 8443): Il pannello web è un bersaglio goloso. I bot tentano l’accesso con credenziali comuni e, se non limitati, possono generare centinaia di richieste al minuto rallentando tutto il server.
- Brute force su FTP: Anche se usi SFTP, molti server hanno ancora FTP attivo di default. I bot lo sanno e ci provano sistematicamente.
- Attacchi su wp-login.php: Se ospiti siti WordPress, i tentativi su wp-login.php e xmlrpc.php sono quotidiani e massivi. Senza protezione, ogni tentativo consuma risorse PHP e database.
- Scansioni su porte note: Oltre ai servizi principali, i bot scansionano porte per MySQL, PostgreSQL, Dovecot e Postfix, cercando qualsiasi punto debole.
Fail2Ban risolve questo problema in modo elegante: monitora i log in tempo reale, identifica i pattern di accesso fallito e banna automaticamente gli IP che superano una soglia configurabile. È leggero, affidabile e perfettamente integrato con Plesk. Nella mia esperienza, dopo l’attivazione il numero di tentativi di accesso non autorizzato cala del 95% nel giro di poche ore.
Come Attivo Fail2Ban su Plesk: La Procedura Passo Passo
Plesk integra Fail2Ban direttamente nel pannello tramite un’estensione ufficiale. Ecco la procedura esatta che seguo su ogni nuovo server:
- Accedi al pannello Plesk come amministratore e vai su “Strumenti e Impostazioni” nel menu laterale sinistro.
- Nella sezione “Sicurezza”, cerca “Vietare indirizzi IP (Fail2Ban)”. Se non la vedi, vai su “Estensioni” e installa l’estensione “Fail2Ban” dal catalogo Plesk. L’installazione è immediata e non richiede riavvii.
- Una volta aperta la sezione Fail2Ban, la prima cosa che faccio è cliccare su “Abilita il rilevamento delle intrusioni”. Questo attiva il demone fail2ban sul server.
- Configuro subito i parametri globali:
- Periodo di divieto IP: Io imposto sempre 3600 secondi (1 ora) come punto di partenza. Per server sotto attacco pesante, alzo a 86400 secondi (24 ore).
- Intervallo di tempo per il rilevamento: 600 secondi (10 minuti). Significa che Fail2Ban conta i tentativi falliti negli ultimi 10 minuti.
- Numero di errori prima del divieto: 5 tentativi. Abbastanza tollerante per utenti distratti, ma sufficiente a bloccare i bot dopo pochi secondi.
- Clicca “OK” o “Applica” per salvare le impostazioni globali.
Con questi parametri base, Fail2Ban è già operativo e sta proteggendo il server. Ma non mi fermo qui: il vero lavoro è nella configurazione delle singole jail, cioè le regole specifiche per ogni servizio.
Come Configuro le Jail Essenziali: SSH, Plesk, FTP e WordPress
Le jail sono il cuore di Fail2Ban: ogni jail monitora un log specifico e applica regole di ban dedicate. Su Plesk la gestione è semplice perché molte jail sono già predefinite. Ecco come le configuro:
Jail SSH (plesk-sshd)
Questa è la jail più critica. La attivo sempre per prima:
- Vai nella tab “Jail” dentro la sezione Fail2Ban di Plesk.
- Cerca “plesk-sshd” (o “sshd”) e attivala.
- Io imposto: maxretry: 3 (non 5 come il default globale, perché su SSH sono più aggressivo), findtime: 600, bantime: 3600.
Tre tentativi falliti in 10 minuti e l’IP viene bannato per un’ora. È una soglia che non ha mai bloccato un mio cliente legittimo ma ferma qualsiasi bot in pochi secondi.
Jail Plesk Login (plesk-panel)
Protegge l’accesso al pannello sulla porta 8443:
- Attiva la jail “plesk-panel”.
- Parametri: maxretry: 5, findtime: 600, bantime: 3600.
Cinque tentativi falliti sul pannello e l’IP viene bloccato. Così proteggo l’accesso amministrativo senza rischiare di bloccare chi semplicemente ha dimenticato la password.
Jail FTP (plesk-proftpd o plesk-ftpd)
- Attiva “plesk-proftpd” (o la jail FTP corrispondente al tuo server).
- Parametri: maxretry: 5, findtime: 600, bantime: 3600.
Se il server non usa FTP e hai solo SFTP attivo, puoi anche disabilitare il servizio FTP completamente. Ma se è attivo, questa jail è obbligatoria.
Jail WordPress (plesk-wordpress)
Questa è la jail che fa la differenza per chi ospita siti WordPress:
- Attiva “plesk-wordpress”. Se non la trovi predefinita, puoi crearla come jail personalizzata (ti spiego come nel prossimo paragrafo).
- Parametri: maxretry: 5, findtime: 300, bantime: 3600.
Questa jail monitora i tentativi di login falliti su wp-login.php e blocca gli IP che insistono. È fondamentale perché gli attacchi brute force su WordPress sono tra i più comuni che vedo ogni giorno.
Jail Postfix e Dovecot (email)
Se il server gestisce anche la posta elettronica, attivo sempre anche:
- “plesk-postfix” per proteggere l’SMTP da tentativi di relay non autorizzato.
- “plesk-dovecot” per proteggere IMAP/POP3 da brute force sulle caselle email.
Parametri standard: maxretry: 5, findtime: 600, bantime: 3600.
Come Creo Jail Personalizzate su Plesk: Protezione Avanzata
A volte le jail predefinite non bastano. Ad esempio, se voglio proteggere xmlrpc.php di WordPress o applicare regole più aggressive su servizi specifici, creo jail personalizzate. Ecco come faccio direttamente da Plesk:
- Nella sezione Fail2Ban, vai sulla tab “Jail” e clicca su “Aggiungi jail”.
- Scegli “Seleziona un tipo di jail” → “jail personalizzata”.
- Configura i campi:
- Nome: ad esempio “wordpress-xmlrpc”
- Filtro: puoi creare un filtro che matcha le righe di errore nei log Apache/Nginx relative a xmlrpc.php.
- Percorso log: tipicamente
/var/log/apache2/access_logo/var/www/vhosts/system/*/logs/accesslog - maxretry, findtime, bantime: come per le altre jail.
- Salva e attiva la jail.
Per la maggior parte dei server che gestisco, le jail predefinite di Plesk sono più che sufficienti. Le jail personalizzate le riservo a casi particolari dove il cliente ha già subito attacchi mirati su endpoint specifici.
Gestire la Whitelist: Come Evito di Bloccare IP Legittimi
Un errore che vedo commettere spesso è attivare Fail2Ban senza configurare una whitelist. Il risultato? Il sistemista si blocca fuori dal proprio server. A me è quasi successo all’inizio della carriera, e da allora la whitelist è la prima cosa che configuro dopo l’attivazione.
Su Plesk la procedura è semplice:
- Nella sezione Fail2Ban, vai sulla tab “Indirizzi IP attendibili”.
- Aggiungi gli IP che non devono mai essere bannati:
- Il tuo IP fisso (casa o ufficio). Se hai IP dinamico, inserisci almeno la subnet del tuo provider.
- L’IP del server stesso (127.0.0.1 e l’IP pubblico del server).
- IP di servizi di monitoraggio come UptimeRobot, Pingdom o simili.
- IP di servizi CDN come Cloudflare (range IP pubblici).
- Salva la whitelist.
Consiglio importante: se lavori con Cloudflare davanti al server, gli IP che arrivano nei log saranno quelli di Cloudflare, non quelli dei visitatori reali. In questo caso devi configurare il modulo mod_remoteip (Apache) o real_ip (Nginx) per passare l’IP originale nei log, altrimenti Fail2Ban rischia di bannare i nodi Cloudflare bloccando l’intero sito. Questa è una delle configurazioni più delicate che affronto e merita sempre attenzione extra.
Monitoraggio e Manutenzione: Come Controllo che Fail2Ban Funzioni Davvero
Attivare Fail2Ban e dimenticarsene è un errore. Io faccio sempre queste verifiche periodiche:
- Controllo gli IP bannati: Nella sezione Fail2Ban di Plesk, la tab “Indirizzi IP vietati” mostra tutti gli IP attualmente bloccati. Se dopo qualche giorno la lista è vuota, qualcosa non funziona. Se è piena di centinaia di IP, Fail2Ban sta facendo il suo lavoro.
- Verifico i log di Fail2Ban: Da terminale uso il comando:
fail2ban-client status
per vedere tutte le jail attive e il numero di IP bannati per ciascuna. Per una jail specifica:fail2ban-client status plesk-sshd - Controllo le risorse del server: Dopo l’attivazione di Fail2Ban, il carico CPU legato a tentativi di accesso fraudolenti cala drasticamente. Lo verifico confrontando i grafici di utilizzo risorse nel pannello Plesk.
- Sblocco IP legittimi se necessario: Se un cliente si blocca fuori (succede, soprattutto con chi sbaglia password più volte), lo sblocco dalla tab “Indirizzi IP vietati” con un click, oppure da terminale:
fail2ban-client set plesk-sshd unbanip 192.168.1.100
Una buona pratica che seguo è impostare un controllo settimanale: apro la sezione Fail2Ban, verifico che le jail siano attive, controllo gli IP bannati e mi assicuro che nessun servizio legittimo sia stato bloccato per errore.
Domande Frequenti su Fail2Ban e Plesk
Fail2Ban rallenta il server?
No, al contrario. Fail2Ban è estremamente leggero: legge i log e aggiunge regole iptables/nftables quando necessario. Il consumo di risorse è trascurabile. Quello che davvero rallenta il server sono gli attacchi brute force non filtrati, non la protezione.
Posso bannare un IP permanentemente?
Sì. Su Plesk puoi impostare il bantime a -1 (permanente) oppure, come preferisco io, impostare un bantime lungo (es. 604800 secondi, cioè 7 giorni) combinato con un sistema di ban ricorrente. In questo modo gli IP persistenti restano bloccati a lungo senza dover gestire una blacklist manuale infinita.
Cosa succede se Fail2Ban banna l’IP di Cloudflare?
Questo è uno scenario che va assolutamente prevenuto. Se usi Cloudflare, devi configurare il server per leggere l’IP reale del visitatore (tramite mod_remoteip o real_ip_header). Altrimenti Fail2Ban vedrà solo gli IP di Cloudflare e potrebbe bannarli, rendendo il sito irraggiungibile. Io configuro sempre questa impostazione prima di attivare Fail2Ban su server dietro Cloudflare.
La Mia Soluzione Definitiva: Fail2Ban come Standard su Ogni Server Plesk
Dopo aver configurato Fail2Ban su decine di server Plesk, posso affermare che è la singola misura di sicurezza con il miglior rapporto costo-beneficio che puoi implementare. Ricapitolandoti i punti chiave della mia configurazione standard:
- Attiva sempre le jail per SSH, Plesk Panel, FTP, WordPress e servizi email. Non lasciare nessuna porta scoperta.
- Configura la whitelist prima di tutto: il tuo IP, il server, i servizi di monitoraggio e i range CDN.
- Usa soglie aggressive su SSH (3 tentativi) e più tolleranti sui servizi web (5 tentativi).
- Se usi Cloudflare, configura
mod_remoteiporeal_ipprima di attivare Fail2Ban. - Monitora settimanalmente gli IP bannati e lo stato delle jail. Un Fail2Ban silenzioso potrebbe significare un Fail2Ban non funzionante.
Con questa configurazione i miei clienti dormono sonni tranquilli: gli attacchi vengono bloccati automaticamente, le risorse del server restano disponibili per il traffico reale e il rischio di intrusione cala drasticamente. Se vuoi che configuri Fail2Ban sul tuo server Plesk o hai bisogno di un controllo di sicurezza completo, contattami direttamente: intervengo personalmente e ti garantisco un server protetto senza compromessi. Hai domande o vuoi raccontarmi la tua esperienza? Scrivimi nei commenti qui sotto!