Proteggere l'accesso alla directory /administrator
Impedire l'accesso all'amministrazione del sito
Questo articolo è specifico per i siti in Joomla!, ma la metodologia descritta si può applicare facilmente a qualsiasi CMS la cui interfaccia di amministrazione si trovi in una sottodirectory del dominio e può essere anche adattata a proteggere una singola pagina.
Non sono richieste grandi conoscenze per applicare quanto descritto qui, è sufficiente solo un poco di esperienza.
La protezione qui descritta funziona per gli applicativi PHP su server Apache e richiede la modifica al file .htaccess e la redazione di un piccolo files php.
Per prima bloccheremo l'accesso diretto alla directory /administrator che consente l'amministrazione del sito inserendo queste righe nel file .htaccess,
subito dopo la direttiva RewriteEngine On:
RewriteCond %{REQUEST_URI} ^/administrator
RewriteCond %{HTTP_COOKIE} !allowAdminAccess=mioCookie
RewriteRule .* - [L,F]
La prima riga controlla che l'URI richiesto inizi con /administrator, che è la directory che vogliamo proteggere, la seconda riga verifica che non esista il cookie di nome allowAdminAccess o che lo stesso non abbia il valore mioCookie; se entrambe le condizioni sono verificate l'ultima riga forza il webserver a fermare l'esecuzione (L) e a restituire l'errore forbidden (F). in altri termini: se si vuole accedere ad /administrator deve esserci il cookie allowAdminAccess con il valore mioCookie.
Ma come si imposta il cookie in questione? Con un semplice script php che "nasconderemo" da qualche parte nel sito. Creiamo, ad esempio, la directory /protect ed al suo interno il file protect.php. Il contenuto del files sarà il seguente:
<?php
if( setcookie( 'allowAdminAccess', 'mioCookie', time()+60*60, '/' ) ){
header('Location: /administrator');
}else{
echo 'Errore nel salvare il cookie';
}
?>
Nota Importante: non inserite spazi all'inizio del file prima del codice PHP.
Lo script crea il cookie allowAdminAccess con il valore mioCookie e con validità di una ora, dopo di che rimanda il browser alla directory da cui avviene la gestione del sito, a questo punto l'accesso sarà consentito: basterà passare per lo script appena creato:
http://www.miosito.tld/protect/protect.php
e ci si troverà di fronte all'interfaccia di amministrazione.
Ovviamente sarà opportuno cambiare il nome del file php e il nome e/o il valore del cookie (sia nel file php che in .htaccess)
Esistono dei plugin che permettono di ottenere lo stesso risultato qui descritto: perché non usarli? Ovviamente non vi è un motivo per non farlo, ma possono esserci delle ragioni per implementare la soluzione qui descritta:
- non è riconducibile ad uno schema fisso;
potendo, o meglio dovendo, cambiare il nome/percorso del file, il nome del cookie ed il suo valore un hacker dovrà faticare non poco a capire che succede. - indipendenza dal CMS in uso:
La protezione è basata sul meccanismo di controllo di Apache, e quindi è indipendente dal CMS; nessuna vulnerabilità del CMS può far sì che questo sistema di protezione non funzioni! - possibilità di rapido intervento in caso di problemi:
basterà commentare le regole in .htaccess per disattivare la protezione. avendo provveduto voi all'installazione saprete sicuramente intervenire rapidamente in caso di blocchi, senza aspettare assistenza da nessuno. - è educativo:
vi permette di imparare a conoscere meglio il vostro sito, il che non è mai una perdita di tempo.
Maggiori informazioni su mod_rewrite le potete trovare, oltre che sul sito ufficiale di apache, anche in questo nostro articolo scritto per la comunità di Joomla! Italia: modificare gli url in htaccess con le funzioni di modrewrite.
Ricordate sempre che la maggior parte degli attacchi è rivolta alla parte pubblica del sito, almeno per quanto riguarda i cms Open Source, ma una protezione in più di sicuro non farà male; per quanto riguarda la protezione della parte pubblica del sito vi consigliamo il plugin pubblicato su questo stesso sito.
| < Prec. | Succ. > |
|---|