{"id":705,"date":"2026-02-07T11:38:55","date_gmt":"2026-02-07T10:38:55","guid":{"rendered":"https:\/\/darioiannascoli.it\/blog\/come-configuro-fail2ban-su-plesk-per-bloccare-gli-attacchi-la-mia-guida\/"},"modified":"2026-02-18T18:04:21","modified_gmt":"2026-02-18T17:04:21","slug":"configurare-fail2ban-plesk","status":"publish","type":"post","link":"https:\/\/darioiannascoli.it\/blog\/configurare-fail2ban-plesk\/","title":{"rendered":"Come Configuro Fail2Ban su Plesk per Bloccare gli Attacchi: La Mia Guida"},"content":{"rendered":"<p>Nel mio lavoro quotidiano di amministrazione server, una delle minacce pi\u00f9 frequenti e sottovalutate che mi trovo ad affrontare \u00e8 il <strong>brute force su Plesk<\/strong>. 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 <strong>Fail2Ban su Plesk<\/strong> come prima linea di difesa su ogni server che gestisco.<\/p>\n<p>In questa guida ti mostro la procedura esatta che applico per installare e configurare Fail2Ban su un server Plesk, dall&#8217;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 <a href=\"https:\/\/darioiannascoli.it\/#contatti\">contattarmi<\/a>: mi occupo personalmente della messa in sicurezza del tuo server.<\/p>\n<h2>Perch\u00e9 Fail2Ban \u00e8 Indispensabile su un Server Plesk: Cosa Vedo Ogni Giorno nei Log<\/h2>\n<p>Prima di entrare nella configurazione vera e propria, voglio spiegarti perch\u00e9 considero Fail2Ban uno strumento non opzionale. Quando analizzo i log di un server Plesk appena installato e ancora &#8220;nudo&#8221;, quello che trovo \u00e8 sempre lo stesso scenario:<\/p>\n<ol>\n<li><strong>Tentativi SSH continui:<\/strong> Bot da IP cinesi, russi, brasiliani che provano &#8220;root&#8221;, &#8220;admin&#8221;, &#8220;test&#8221; con migliaia di password diverse ogni ora. Se la porta 22 \u00e8 aperta e senza protezione, \u00e8 solo questione di tempo prima che trovino una combinazione valida o che saturino le risorse.<\/li>\n<li><strong>Attacchi al pannello Plesk (porta 8443):<\/strong> Il pannello web \u00e8 un bersaglio goloso. I bot tentano l&#8217;accesso con credenziali comuni e, se non limitati, possono generare centinaia di richieste al minuto rallentando tutto il server.<\/li>\n<li><strong>Brute force su FTP:<\/strong> Anche se usi SFTP, molti server hanno ancora FTP attivo di default. I bot lo sanno e ci provano sistematicamente.<\/li>\n<li><strong>Attacchi su wp-login.php:<\/strong> 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.<\/li>\n<li><strong>Scansioni su porte note:<\/strong> Oltre ai servizi principali, i bot scansionano porte per MySQL, PostgreSQL, Dovecot e Postfix, cercando qualsiasi punto debole.<\/li>\n<\/ol>\n<p>Fail2Ban risolve questo problema in modo elegante: monitora i log in tempo reale, identifica i pattern di accesso fallito e <strong>banna automaticamente gli IP<\/strong> che superano una soglia configurabile. \u00c8 leggero, affidabile e perfettamente integrato con Plesk. Nella mia esperienza, dopo l&#8217;attivazione il numero di tentativi di accesso non autorizzato cala del 95% nel giro di poche ore.<\/p>\n<h2>Come Attivo Fail2Ban su Plesk: La Procedura Passo Passo<\/h2>\n<p>Plesk integra Fail2Ban direttamente nel pannello tramite un&#8217;estensione ufficiale. Ecco la procedura esatta che seguo su ogni nuovo server:<\/p>\n<ol>\n<li><strong>Accedi al pannello Plesk<\/strong> come amministratore e vai su &#8220;Strumenti e Impostazioni&#8221; nel menu laterale sinistro.<\/li>\n<li>Nella sezione &#8220;Sicurezza&#8221;, cerca <strong>&#8220;Vietare indirizzi IP (Fail2Ban)&#8221;<\/strong>. Se non la vedi, vai su &#8220;Estensioni&#8221; e installa l&#8217;estensione &#8220;Fail2Ban&#8221; dal catalogo Plesk. L&#8217;installazione \u00e8 immediata e non richiede riavvii.<\/li>\n<li>Una volta aperta la sezione Fail2Ban, la prima cosa che faccio \u00e8 cliccare su <strong>&#8220;Abilita il rilevamento delle intrusioni&#8221;<\/strong>. Questo attiva il demone fail2ban sul server.<\/li>\n<li>Configuro subito i <strong>parametri globali<\/strong>:\n<ul>\n<li><strong>Periodo di divieto IP:<\/strong> Io imposto sempre 3600 secondi (1 ora) come punto di partenza. Per server sotto attacco pesante, alzo a 86400 secondi (24 ore).<\/li>\n<li><strong>Intervallo di tempo per il rilevamento:<\/strong> 600 secondi (10 minuti). Significa che Fail2Ban conta i tentativi falliti negli ultimi 10 minuti.<\/li>\n<li><strong>Numero di errori prima del divieto:<\/strong> 5 tentativi. Abbastanza tollerante per utenti distratti, ma sufficiente a bloccare i bot dopo pochi secondi.<\/li>\n<\/ul>\n<\/li>\n<li>Clicca <strong>&#8220;OK&#8221;<\/strong> o &#8220;Applica&#8221; per salvare le impostazioni globali.<\/li>\n<\/ol>\n<p>Con questi parametri base, Fail2Ban \u00e8 gi\u00e0 operativo e sta proteggendo il server. Ma non mi fermo qui: il vero lavoro \u00e8 nella configurazione delle singole jail, cio\u00e8 le regole specifiche per ogni servizio.<\/p>\n<h2>Come Configuro le Jail Essenziali: SSH, Plesk, FTP e WordPress<\/h2>\n<p>Le jail sono il cuore di Fail2Ban: ogni jail monitora un log specifico e applica regole di ban dedicate. Su Plesk la gestione \u00e8 semplice perch\u00e9 molte jail sono gi\u00e0 predefinite. Ecco come le configuro:<\/p>\n<h3>Jail SSH (plesk-sshd)<\/h3>\n<p>Questa \u00e8 la jail pi\u00f9 critica. La attivo sempre per prima:<\/p>\n<ul>\n<li>Vai nella tab <strong>&#8220;Jail&#8221;<\/strong> dentro la sezione Fail2Ban di Plesk.<\/li>\n<li>Cerca <strong>&#8220;plesk-sshd&#8221;<\/strong> (o &#8220;sshd&#8221;) e attivala.<\/li>\n<li>Io imposto: <strong>maxretry: 3<\/strong> (non 5 come il default globale, perch\u00e9 su SSH sono pi\u00f9 aggressivo), <strong>findtime: 600<\/strong>, <strong>bantime: 3600<\/strong>.<\/li>\n<\/ul>\n<p>Tre tentativi falliti in 10 minuti e l&#8217;IP viene bannato per un&#8217;ora. \u00c8 una soglia che non ha mai bloccato un mio cliente legittimo ma ferma qualsiasi bot in pochi secondi.<\/p>\n<h3>Jail Plesk Login (plesk-panel)<\/h3>\n<p>Protegge l&#8217;accesso al pannello sulla porta 8443:<\/p>\n<ul>\n<li>Attiva la jail <strong>&#8220;plesk-panel&#8221;<\/strong>.<\/li>\n<li>Parametri: <strong>maxretry: 5<\/strong>, <strong>findtime: 600<\/strong>, <strong>bantime: 3600<\/strong>.<\/li>\n<\/ul>\n<p>Cinque tentativi falliti sul pannello e l&#8217;IP viene bloccato. Cos\u00ec proteggo l&#8217;accesso amministrativo senza rischiare di bloccare chi semplicemente ha dimenticato la password.<\/p>\n<h3>Jail FTP (plesk-proftpd o plesk-ftpd)<\/h3>\n<ul>\n<li>Attiva <strong>&#8220;plesk-proftpd&#8221;<\/strong> (o la jail FTP corrispondente al tuo server).<\/li>\n<li>Parametri: <strong>maxretry: 5<\/strong>, <strong>findtime: 600<\/strong>, <strong>bantime: 3600<\/strong>.<\/li>\n<\/ul>\n<p>Se il server non usa FTP e hai solo SFTP attivo, puoi anche disabilitare il servizio FTP completamente. Ma se \u00e8 attivo, questa jail \u00e8 obbligatoria.<\/p>\n<h3>Jail WordPress (plesk-wordpress)<\/h3>\n<p>Questa \u00e8 la jail che fa la differenza per chi ospita siti WordPress:<\/p>\n<ul>\n<li>Attiva <strong>&#8220;plesk-wordpress&#8221;<\/strong>. Se non la trovi predefinita, puoi crearla come jail personalizzata (ti spiego come nel prossimo paragrafo).<\/li>\n<li>Parametri: <strong>maxretry: 5<\/strong>, <strong>findtime: 300<\/strong>, <strong>bantime: 3600<\/strong>.<\/li>\n<\/ul>\n<p>Questa jail monitora i tentativi di login falliti su wp-login.php e blocca gli IP che insistono. \u00c8 fondamentale perch\u00e9 gli attacchi brute force su WordPress sono tra i pi\u00f9 comuni che vedo ogni giorno.<\/p>\n<h3>Jail Postfix e Dovecot (email)<\/h3>\n<p>Se il server gestisce anche la posta elettronica, attivo sempre anche:<\/p>\n<ul>\n<li><strong>&#8220;plesk-postfix&#8221;<\/strong> per proteggere l&#8217;SMTP da tentativi di relay non autorizzato.<\/li>\n<li><strong>&#8220;plesk-dovecot&#8221;<\/strong> per proteggere IMAP\/POP3 da brute force sulle caselle email.<\/li>\n<\/ul>\n<p>Parametri standard: <strong>maxretry: 5<\/strong>, <strong>findtime: 600<\/strong>, <strong>bantime: 3600<\/strong>.<\/p>\n<h2>Come Creo Jail Personalizzate su Plesk: Protezione Avanzata<\/h2>\n<p>A volte le jail predefinite non bastano. Ad esempio, se voglio proteggere xmlrpc.php di WordPress o applicare regole pi\u00f9 aggressive su servizi specifici, creo jail personalizzate. Ecco come faccio direttamente da Plesk:<\/p>\n<ol>\n<li>Nella sezione Fail2Ban, vai sulla tab <strong>&#8220;Jail&#8221;<\/strong> e clicca su <strong>&#8220;Aggiungi jail&#8221;<\/strong>.<\/li>\n<li>Scegli <strong>&#8220;Seleziona un tipo di jail&#8221; \u2192 &#8220;jail personalizzata&#8221;<\/strong>.<\/li>\n<li>Configura i campi:\n<ul>\n<li><strong>Nome:<\/strong> ad esempio &#8220;wordpress-xmlrpc&#8221;<\/li>\n<li><strong>Filtro:<\/strong> puoi creare un filtro che matcha le righe di errore nei log Apache\/Nginx relative a xmlrpc.php.<\/li>\n<li><strong>Percorso log:<\/strong> tipicamente <code>\/var\/log\/apache2\/access_log<\/code> o <code>\/var\/www\/vhosts\/system\/*\/logs\/accesslog<\/code><\/li>\n<li><strong>maxretry, findtime, bantime:<\/strong> come per le altre jail.<\/li>\n<\/ul>\n<\/li>\n<li>Salva e attiva la jail.<\/li>\n<\/ol>\n<p>Per la maggior parte dei server che gestisco, le jail predefinite di Plesk sono pi\u00f9 che sufficienti. Le jail personalizzate le riservo a casi particolari dove il cliente ha gi\u00e0 subito attacchi mirati su endpoint specifici.<\/p>\n<h2>Gestire la Whitelist: Come Evito di Bloccare IP Legittimi<\/h2>\n<p>Un errore che vedo commettere spesso \u00e8 attivare Fail2Ban senza configurare una whitelist. Il risultato? Il sistemista si blocca fuori dal proprio server. A me \u00e8 quasi successo all&#8217;inizio della carriera, e da allora <strong>la whitelist \u00e8 la prima cosa che configuro dopo l&#8217;attivazione<\/strong>.<\/p>\n<p>Su Plesk la procedura \u00e8 semplice:<\/p>\n<ol>\n<li>Nella sezione Fail2Ban, vai sulla tab <strong>&#8220;Indirizzi IP attendibili&#8221;<\/strong>.<\/li>\n<li>Aggiungi gli IP che non devono mai essere bannati:\n<ul>\n<li>Il tuo <strong>IP fisso<\/strong> (casa o ufficio). Se hai IP dinamico, inserisci almeno la subnet del tuo provider.<\/li>\n<li>L&#8217;<strong>IP del server stesso<\/strong> (127.0.0.1 e l&#8217;IP pubblico del server).<\/li>\n<li>IP di <strong>servizi di monitoraggio<\/strong> come UptimeRobot, Pingdom o simili.<\/li>\n<li>IP di <strong>servizi CDN<\/strong> come Cloudflare (range IP pubblici).<\/li>\n<\/ul>\n<\/li>\n<li>Salva la whitelist.<\/li>\n<\/ol>\n<p>Consiglio importante: se lavori con <strong>Cloudflare<\/strong> 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 <code>mod_remoteip<\/code> (Apache) o <code>real_ip<\/code> (Nginx) per passare l&#8217;IP originale nei log, altrimenti Fail2Ban rischia di bannare i nodi Cloudflare bloccando l&#8217;intero sito. Questa \u00e8 una delle configurazioni pi\u00f9 delicate che affronto e merita sempre attenzione extra.<\/p>\n<h2>Monitoraggio e Manutenzione: Come Controllo che Fail2Ban Funzioni Davvero<\/h2>\n<p>Attivare Fail2Ban e dimenticarsene \u00e8 un errore. Io faccio sempre queste verifiche periodiche:<\/p>\n<ol>\n<li><strong>Controllo gli IP bannati:<\/strong> Nella sezione Fail2Ban di Plesk, la tab &#8220;Indirizzi IP vietati&#8221; mostra tutti gli IP attualmente bloccati. Se dopo qualche giorno la lista \u00e8 vuota, qualcosa non funziona. Se \u00e8 piena di centinaia di IP, Fail2Ban sta facendo il suo lavoro.<\/li>\n<li><strong>Verifico i log di Fail2Ban:<\/strong> Da terminale uso il comando:<br \/><code>fail2ban-client status<\/code><br \/>per vedere tutte le jail attive e il numero di IP bannati per ciascuna. Per una jail specifica:<br \/><code>fail2ban-client status plesk-sshd<\/code><\/li>\n<li><strong>Controllo le risorse del server:<\/strong> Dopo l&#8217;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.<\/li>\n<li><strong>Sblocco IP legittimi se necessario:<\/strong> Se un cliente si blocca fuori (succede, soprattutto con chi sbaglia password pi\u00f9 volte), lo sblocco dalla tab &#8220;Indirizzi IP vietati&#8221; con un click, oppure da terminale:<br \/><code>fail2ban-client set plesk-sshd unbanip 192.168.1.100<\/code><\/li>\n<\/ol>\n<p>Una buona pratica che seguo \u00e8 impostare un <strong>controllo settimanale<\/strong>: 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.<\/p>\n<h3>Domande Frequenti su Fail2Ban e Plesk<\/h3>\n<h3>Fail2Ban rallenta il server?<\/h3>\n<p>No, al contrario. Fail2Ban \u00e8 estremamente leggero: legge i log e aggiunge regole iptables\/nftables quando necessario. Il consumo di risorse \u00e8 trascurabile. Quello che davvero rallenta il server sono gli attacchi brute force non filtrati, non la protezione.<\/p>\n<h3>Posso bannare un IP permanentemente?<\/h3>\n<p>S\u00ec. Su Plesk puoi impostare il bantime a -1 (permanente) oppure, come preferisco io, impostare un bantime lungo (es. 604800 secondi, cio\u00e8 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.<\/p>\n<h3>Cosa succede se Fail2Ban banna l&#8217;IP di Cloudflare?<\/h3>\n<p>Questo \u00e8 uno scenario che va assolutamente prevenuto. Se usi Cloudflare, devi configurare il server per leggere l&#8217;IP reale del visitatore (tramite <code>mod_remoteip<\/code> o <code>real_ip_header<\/code>). Altrimenti Fail2Ban vedr\u00e0 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.<\/p>\n<h2>La Mia Soluzione Definitiva: Fail2Ban come Standard su Ogni Server Plesk<\/h2>\n<p>Dopo aver configurato Fail2Ban su decine di server Plesk, posso affermare che \u00e8 la singola misura di sicurezza con il <strong>miglior rapporto costo-beneficio<\/strong> che puoi implementare. Ricapitolandoti i punti chiave della mia configurazione standard:<\/p>\n<ul>\n<li><strong>Attiva sempre le jail per SSH, Plesk Panel, FTP, WordPress e servizi email.<\/strong> Non lasciare nessuna porta scoperta.<\/li>\n<li><strong>Configura la whitelist prima di tutto:<\/strong> il tuo IP, il server, i servizi di monitoraggio e i range CDN.<\/li>\n<li><strong>Usa soglie aggressive su SSH<\/strong> (3 tentativi) e pi\u00f9 tolleranti sui servizi web (5 tentativi).<\/li>\n<li><strong>Se usi Cloudflare<\/strong>, configura <code>mod_remoteip<\/code> o <code>real_ip<\/code> prima di attivare Fail2Ban.<\/li>\n<li><strong>Monitora settimanalmente<\/strong> gli IP bannati e lo stato delle jail. Un Fail2Ban silenzioso potrebbe significare un Fail2Ban non funzionante.<\/li>\n<\/ul>\n<p>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, <strong><a href=\"https:\/\/darioiannascoli.it\/#contatti\">contattami direttamente<\/a><\/strong>: intervengo personalmente e ti garantisco un server protetto senza compromessi. Hai domande o vuoi raccontarmi la tua esperienza? Scrivimi nei commenti qui sotto!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Scopri come configurare Fail2Ban su Plesk per proteggere il tuo server da attacchi brute force. Guida passo passo con jail SSH, FTP, WordPress e best practice.<\/p>\n","protected":false},"author":1,"featured_media":815,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"Come Configurare Fail2Ban su Plesk: Guida Completa alla Sicurezza","_seopress_titles_desc":"Scopri come configurare Fail2Ban su Plesk per bloccare attacchi brute force su SSH, FTP, WordPress e pannello. Guida passo passo con jail e best practice.","_seopress_robots_index":"","footnotes":""},"categories":[4],"tags":[54,59,52,53,60,12],"class_list":["post-705","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-plesk","tag-configurazione-plesk","tag-firewall-plesk","tag-ottimizzazione-server","tag-plesk-panel","tag-sicurezza-plesk","tag-sicurezza-wordpress"],"_links":{"self":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/705","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/comments?post=705"}],"version-history":[{"count":0,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/705\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media\/815"}],"wp:attachment":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media?parent=705"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/categories?post=705"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/tags?post=705"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}