La sicurezza del pannello di amministrazione di un sito basato su CMS Made Simple è un argomento importante, che non deve essere mai trascurato.
Sul sito della documentazione ufficiale di CMS Made Simple esiste una guida con utili consigli per mettere in sicurezza la propria installazione.
In questo articolo riprendo una tecnica particolarmente utile per segnalare all’amministratore del sito un tentativo di accesso fallito al pannello di amministrazione che potrebbe essere un potenziale tentativo di “bucarlo” attraverso tecniche di “brute-force attack”.
Per farlo possiamo usare un semplice UDT associato all’evento “LoginFailed” del Gestore Eventi e il modulo CMSMailer che fa parte dell’installazione standard di CMS Made Simple.
Prima di tutto creiamo l’UDT, da Estensioni » Tag definiti dall’utente scegliamo Aggiungere Tag definito dall’utente.
Nel campo Nome inseriamo “login_failed_email_alert”
Nel campo Codice inseriamo:
$cmsmailer = cms_utils::get_module('CMSMailer'); // Destinatario $cmsmailer->AddAddress('utente@miosito.com', 'nome destinatario visualizzato'); // Mittente $cmsmailer->SetFrom('no-reply@miosito.com'); $cmsmailer->SetFromName('nome mittente visualizzato'); // Oggetto $cmsmailer->SetSubject('Login fallito sul sito miosito.com'); // Corpo $username = $_SESSION['login_user_username']; $browserlanguage = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2); $useragent = $_SERVER["HTTP_USER_AGENT"]; $ipaddress = cms_utils::get_real_ip(); $content = '<p>Tentativo fallito di accesso al pannello di amministrazione del sito!</p>'; $content .= '<p>Dettagli:</p>'; $content .= '<ul>'; $content .= '<li>Utente = ' . $username . '</li>'; $content .= '<li>Indirizzo IP = ' . $ipaddress . '</li>'; $content .= '<li>Lingua del browser = ' . $browserlanguage . '</li>'; $content .= '<li>User agent = ' . $useragent . '</li>'; $content .= '</ul>'; $cmsmailer->SetBody($content); $cmsmailer->IsHTML(true); // Invio $cmsmailer->Send();
Ovviamente personalizzando il codice con gli indirizzi corretti.
Nel campo Descrizione, se vogliamo, inseriamo “Invia una email di Alert in caso di un tentativo fallito di accesso al pannello di amministrazione del sito”.
Adesso andiamo in Estensioni » Gestione eventi e modifichiamo l’evento “LoginFailed” aggiungendovi l’UDT creato prima: lo scegliamo dalla lista e premiamo il pulsante Aggiungere.
In questo modo, ogni volta che fallisce un tentativo di login al pannello di amministrazione del sito verrà inviata automaticamente una email di alert all’amministratore.
L’email conterrà alcuni dati interessanti:
-
il nome utente
-
l’indirizzo IP di provenienza
-
la lingua del browser
-
l’user agent del browser
utili per scoprire se si tratta di un errore involontario di un utente un po’ distratto, oppure un tentativo di attacco vero e proprio.