Proteggere cartella con password esempio Apache

Ampliamo gli articoli dedicati alla sicurezza. In questo articolo vi mostrerò come proteggere una cartella con password tramite il file .htaccess di Apache httpd. Quante volte abbiamo trovato nel nostro access_log centinaia, se non addirittura migliaia, di tentativi di accesso alla nostra pagina di amministrazione, per cercare di “bucare” il nostro sito? Con il passare del tempo gli hacker (o presunti tali) diventano sempre più sofisticati, così come gli strumenti a loro disposizione. Ma per ovviare questo problema, abbiamo un semplice strumento a disposizione di tutti gli utenti che utilizzano un apache come webserver. Questo strumento di semplice configurazione è la protezione di una cartella con una password tramite l’adeguata configurazione del file .htaccess.

Tempo richiesto: 15 minuti

Vediamo i passi da seguire

  1. Scegliere la cartella da proteggere

    Individuare la cartella come path assoluto nel fylesystem.
    Es: cd /var/www/html/ADMIN/

  2. Creare il file .htaccess

    Il file conterrà il path del file che contiene le credenziali
    Es: AuthType Basic
    AuthName “restricted area”
    AuthUserFile /var/www/.htpasswd-users
    require valid-user

  3. Creare il file .htpasswd che contiene le credenziali

    Qui verrà inserito lo username e la password criptata
    Es: demouser:h6H69JUT69H6t

Proteggere cartella con password htaccess

Proteggere cartella con password htaccess. Quale cartella? . Alla base di tutto c’è appunto il file .htaccess che è un semplice file di testo che permette di personalizzare, e quindi sovrascrivere (dove possibile), le configurazioni presenti nel file di configurazione (di solito denominato httpd.conf ) del webserver apache.

Facciamo finta che il nostro sito web www.miosito.com sia istallato sul nostro server nella cartella /var/www/html e che la cartella da proteggere sia www.miosito.com/ADMIN istallata su /var/www/html/ADMIN (ovviamente ognuno di noi ha esigenze diverse. Sarà sufficiente cambiare i path, adeguandoli alle nostre necessità, in base a quale sia il nome della nostra cartella) .

Creiamo il file .htaccess

Per prima cosa, attraverso riga di comando (oppure tramite FTP se preferite), dobbiamo andarci a posizionare nella cartella che vogliamo proteggere. Nel nostro caso di esempio lanciamo il comando:

cd /var/www/html/ADMIN/

Questa è la cartella da proteggere ed è qui che dobbiamo creare il nostro file .htaccess .

Possiamo crearlo direttamente tramite il comando ‘vi‘ oppure possiamo crearlo in locale per poi trasferirlo tramite ftp nella nostra cartella /var/www/html/ADMIN/ . Nella sostanza non cambia. L’importante è il contenuto del file htaccess.

Vediamo quali direttive deve contenere il file affinché si possa proteggere la nostra cartella.

Il nostro file dovrà contenere quanto segue (più avanti spiegherò riga per riga in modo che possiate poi procedere alla personalizzazione):

AuthType Basic
AuthName "restricted area"
AuthUserFile /var/www/.htpasswd-users
require valid-user

.htaccess spiegazione

Vediamo le voci modificabili:

  • AuthName
    E’ il messaggio di testo che appare all’utente che prova ad accedere alla cartella protetta. Nel nostro esempio il messaggio che appare sarà “restricted area”, ma potete personalizzarlo a vostro gusto, come volete.
  • AuthUserFile /var/www/.htpasswd-users
    Questa è la parte fondamentale della configurazione (e sulla quale ci soffermeremo a breve) in quanto specifica qual’è il file, all’interno del nostro file system, che conterrà gli username abilitati all’accesso, con le rispettive password criptate. Questo files può essere chiamato a vostro piacimento. Di default il suo nome è .htpasswd . Noi lo abbiamo chiamato .htpasswd-users. Il nostro file .htpasswd è posizionato, all’interno del nostro file-system, nel path /var/www/.htpasswd-users . E’ buona norma posizionare il file .htaccess in un path al di fuori della nostra Document Root in modo che questo non possa essere raggiunto via web.

Da quest’ultima riga (AuthUserFile) capiamo quindi che i files necessari per proteggere il nostro sito sono 2:

.htaccess , contenuto nella cartella da proteggere

.htpasswd-users (o .htpasswd, o qualunque altro nome abbiamo scelto) che contiene user e password degli utenti che potranno accedere alla nostra area protetta.

Proteggere cartella con password – Creiamo il file .htpasswd

Il file .htpasswd a differenza del .htaccess non contiene direttive, ma soltanto una lista di stringhe che appaiono più o meno nel modo seguente:

amministratore:t6g9kRVDz9l60
demouser:h6H69JUT69H6t

Vediamo come creare gli utenti e le loro password.

Il modo più sicuro per creare le nostre credenziali è quello di lanciare il comando htpasswd da riga di comando. Per farlo, dobbiamo avere accesso in SSH al nostro server. Ci sono un paio di opzioni utili:

  1. Creazione del del file .htpasswd e configurazione del primo utente:
    #htpasswd -c /var/www/.htpasswd-users amministratore
    Dopo il lancio di questo comando verrà creato il file /var/www/.htpasswd-users e verrà richiesta la password da impostare per creare l’utente “amministratore”.
  2. Aggiunta di un utente su un file già esistente o modifica della password di un utente:
    #htpasswd /var/www/.htpasswd-users demouser
    (aggiunge l’utente demouser al file /var/www/.htpasswd-users . Come noterete, rispetto al comando precedente, manca l’opzione “-c” che serve a creare il file. Senza questa opzione si va a modificare un file .htpasswd già esistente)
    Oppure:
    #htpasswd /var/www/.htpasswd-users amministratore
    (modifica la password per l’utente amministratore che già esistente all’interno del nostro file /var/www/.htpasswd-users)

Creiamo il file .htpasswd tramite un servizio web

C’è una seconda opzione per creare il vostro file delle password. Questa opzione si rende particolarmente utile qualora abbiate accesso al vostro server tramite FTP (o SFTP) e non tramite shell ssh. Senza accesso via shell (e quindi alla riga di comando) non sarete in grado di lanciare il comando htpasswd per cui non potrete generare la password. Per aggirare questo problema avete la possibilità di creare il vostro .htpasswd online, via web. Vi verrà chiesto lo username e la rispettiva password. Nel nostro test abbiamo creato l’utente amministratori con password ciaociao (non usate mai una password del genere 😀 ). Il risultato sarà il seguente:

administrator:$apr1$836PGuay$Ep74onHwj5pKvs0INsYR20 .

A questo punto non dovrete fare altro che aprire il file .htpasswd (nel nostro esempio in /var/www/.htpasswd-users demouser) e incollarci dentro quanto appena creato.

Abbiamo terminato le modifiche e se avete fatto tutto per bene, richiamando http://www.miosito.it/ADMIN dovrebbe apparire la schermata in cui digitare lo username e la rispettiva password scelta precedentemente.

Se avete fatto un buon lavoro, richiamando la cartella da proteggere, il risultato dovrebbe essere il seguente:

htaccess password protect
htaccess password protect

Contributo Video

Vi ho spiegato come proteggere una cartella con password tramite il file .htaccess di Apache httpd

Spero la guida vi sia utile.

Se avete dubbi o domande, non esitate a commentare 🙂

Buon Lavoro!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *