Proteggere WordPress da login non autorizzati

| |

Qualche tempo fa ho avuto un problema piuttosto fastidioso: qualcuno ha deciso che uno specifico articolo di questo blog era poco gradito, buon (?) motivo per rompermi le scatole e saturare le risorse messe a disposizione dal mio hosting provider (che ringrazio per la pazienza). Per cercare di correre ai ripari, ho incattivito l’opzione di un plugin che già utilizzavo e che utilizzo ancora oggi, iThemes Security (ex Better WP Security).

Proteggere WordPress da login non autorizzati

Ci sono molteplici modi per proteggere l’accesso al wp-login.php, questo è uno tra i tanti attuabili senza molta fatica, una soluzione tutto sommato semplice da mettere in piedi.

Il mio consiglio? Fallo dopo aver chiuso l’accesso al sito web “al pubblico“, perché se è vero che sei sotto attacco, è anche vero che le risposte del tuo blog potrebbero andare in timeout, non arrivare mai. Per chiudere l’accesso a tutti tranne che a te dovrai conoscere il tuo indirizzo IP (mioip.it aiuta in questi casi) e sbarrare le porte grazie al file htaccess. Farlo è semplice, ti basterà creare (o modificare quello esistente) il file inserendo questo pezzo di codice:

order deny,allow
deny from all
allow from 127.0.0.1

Sostituisci il 127.0.0.1 con il tuo IP, carica il file .htaccess nel tuo spazio web (ripeto: se lo hai già, modifica quello che hai e non sovrascriverlo) e il gioco è fatto. Nessuno potrà visitare il tuo sito web a eccezione di te. Così facendo dovresti tagliare fuori il resto del mondo e avere campo libero per lavorare.

Installa iThemes Security e attivalo, così possiamo passare alla sua configurazione, e nello specifico quella utile a proteggere il blog da ripetuti tentativi di accesso alla dashboard di amministrazione o a un URL in particolare (giocando un pelo in contropiede e cambiando le carte in corsa, per poi rimetterle al loro posto).

Il plugin propone moltissime opzioni che ti consiglio caldamente di analizzare, ragionare e attivare secondo tue necessità, io preferisco saltare sulla singola esigenza di stavolta, andiamo con ordine.

404 detection

Servirà a proteggerti da chi tenta di raggiungere costantemente URL non esistenti, le sue impostazioni (e i limiti oltre i quali mandare in ban l’IP di chi ci sta provando) si trovano però in Global Settings, nello specifico parlo di:

  • Blacklist Repeat Offender, che deve essere assolutamente attivo.
  • Blacklist Threshold, che corrisponde al numero di tentativi da abbuonare all’IP prima di escluderlo in maniera definitiva (impedendogli di visualizzare il sito web).
  • Blacklist Lookback Period, che corrisponde al numero di giorni durante i quali quell’IP continuerà a rimanere sotto controllo (per capirci: se il limite di lockout è 2, per il numero specificato di giorni basterà farne un altro per andare in ban, una soluzione molto secca, tanto chi attacca generalmente raggiunge il limite di lockout nel giro di qualche minuto al massimo).
  • Lockout Period, che corrisponde all’intervallo di tempo (in minuti) di allontanamento di quell’IP dal blog.
  • Lockout White List è invece il box adatto a raccogliere gli IP che non devono essere soggetti alle impostazioni sopra riportate.

In tutto questo, nella stessa tab (Global Settings, nda), potrai scegliere di essere avvisato dei lockout e dei ban a mezzo posta elettronica (l’opzione da spuntare è Enable Email Lockout Notifications), che poi è un po’ come avere l’immediato polso della situazione …

Proteggere WordPress da login non autorizzati 1

e pensa che quella che vedi qui sopra è solo una parte dei ban a me notificati nel periodo dell’attacco, in pratica un campo di battaglia senza esclusione di colpi (sono arrivato a toccare quota 400 ban circa in un paio di giorni).

Banned Users

Passa ora alla tab Banned Users e imposta ciò che credo possa esserti più utile, ovvero:

  • Default Blacklist, che ti permetterà di sfruttare liste già popolate e verificate, offerte da HackRepair.com.
  • Enable Ban Lists, che manco a dirlo è tutto ciò che serve per iniziare a fare la raccolta differenziata di IP che servono evidentemente poco alle tue visite, ma che minano per troppo tempo la tua pazienza.

Volutamente non ho specificato (almeno fino a oggi) degli User Agents specifici. Generalmente quelli più fastidiosi vengono lasciati liberi nel web da player molto grandi, motori di ricerca, servizi. Ricorda che potrai comunque appoggiarti a questa ulteriore funzione in qualsiasi momento, in caso di necessità.

Local Brute Force Protection

Ciò che più va a “braccetto” con la protezione relativa agli errori 404, opzioni che riguardano stavolta il login alla Dashboard amministrativa di WordPress e che –secondo me– devono essere altrettanto restrittive e di difficile perdono, perché se sei davvero il gestore del blog, hai anche la possibilità di chiuderti fuori dalla porta ma conoscere il trucco delle chiavi sotto al tappeto, andando a disabilitare il plugin (rinominando la sua cartella nello spazio FTP) in caso di errore ripetuto e non voluto.

  • Max Login Attempts Per Host: specifica qui il numero di tentativi massimi di login per un singolo host (IP) prima di finire nella lista dei cattivi, in alternativa puoi lasciarlo a zero per evitare di mandare in ban l’indirizzo IP e decidere di rendere sufficientemente cattivo il Max Login Attempts Per User, che si riferisce invece al numero massimo di login di uno specifico utente (che può utilizzare più IP sorgenti, giusto per capirci).
  • Minutes to Remember Bad Login (check period) indica, come per il Blacklist Lookback Period di prima, il tempo che deve passare prima che il plugin dimentichi uno dei tentativi andati a male precedentemente.
  • Automatically ban “admin” user è –infine– quella che preferisco, perché la prima regola di qualsivoglia installazione di WordPress è quella di andare a disattivare o eliminare completamente l’admin creato di default dall’installazione, creandone uno che abbia uno username del tutto differente. Se qualcuno tenta di entrare come “admin” nel tuo blog, probabilmente si tratta di un bot, meglio estirparlo sul nascere, senza pensarci due volte.

C’è altro?

Si, molto. C’è da dare un’occhiata alla Network Brute Force Protection, alla File Change Detection (ciò che ti avvisa nel caso in cui vengano modificati dei file), alla WordPress Tweaks (per disattivare opzioni non necessarie e regolare l’accesso a risorse di WordPress) e tanto altro ancora, davvero. Prenditi il tempo necessario, studia tutte le possibilità offerte dal plugin, valuta se l’opzione Pro (a pagamento) proposta dallo stesso sviluppatore fa al caso tuo, imposta la migliore configurazione tenendo presente che in caso di configurazione errata o particolarmente cattiva, potrebbe chiuderti fuori dalla porta senza neanche passare dal via e prendere le duemila lire.

Quanto fatto però non basta, perché se l’attacco è verso uno specifico URL esistente, dovrai temporaneamente mettere offline il contenuto, oppure scegliere di cambiargli indirizzo, almeno per un periodo durante il quale ogni attacco non andrà a buon fine e porterà direttamente al ban, raccogliendo una serie di IP dai quali proteggersi. Concludi l’operazione andando a rimettere a posto il file .htaccess precedentemente modificato, per permettere a tutti di accedere nuovamente al blog. Le risorse del provider saranno ora più che sufficienti e potrai sopportare nuovamente il tuo carico di visite, quelle vere e assolutamente gradite.

Dopo aver adottato la soluzione, ho potuto rimettere abbastanza rapidamente online il contenuto precedentemente attaccato, che ancora oggi fa parte degli archivi di questo blog e che spero possa rimanere lì per molto altro tempo (no, non dirò di quale si tratta) :-)

L’area commenti è –come sempre– a totale disposizione per ulteriori soluzioni, alternative, commenti, critiche costruttive e per raccolte di “beneficenza“, che Natale si avvicina e sta baracca bisogna pur pagarla per tenerla viva e vegeta.

Estote parati (cit.).

G

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

3 Commenti
Oldest
Newest Most Voted
Inline Feedbacks
View all comments