Introduzione
Se hai un sito che contiene dei dati sensibili, come informazioni sui tuoi utenti, indirizzi email, documenti interni etc. ti sari sicuramente posto il problema di dove conservare questi file, in modo da escludere l’accesso a persone non autorizzate. Se il tuo sito è in hosting, è molto probabile che il server usi Apache
Il modo più rapido per proteggere una directory tramite Apache consiste nell’implementare un’autenticazione via web. Htaccess è il metodo più comune, e verrà spiegato in questa guida.
Requisiti
Prima di continuare, assicurati di rispettare queste condizioni:
- il tuo webserver è Apache;
- puoi connetterti al server via FTP e telnet/ssh;
- conosci i comandi base per navigare all’interno delle directory del tuo server;
- riesci a stabilire il percorso assoluto delle directory;
Il file .htaccess a nudo
Htaccess è uno schema di autenticazione username/password che entra in gioco quando una determinata directory o un file vengono richiesti. Htaccess è un metodo di autenticazione “plain-text”, il che vuol dire che username e password vengono inviati in semplice formato testo, non criptato. Sebbene ci siano molte poche possibilità che qualcuno intercetti i tuoi dati, l’autenticazione tramite htaccess è sicura quanto una connessione telnet o ftp.
Per proteggere una directory del tuo webserver usando .htaccess, devi creare due file:
- .htaccess: questo file contiene le preferenze ed i dettagli riguardo ai metodi di autenticazione e i permessi per la directory.
- .htpasswd: questo file contiene una lista criptata di combinazioni di username e password che viene usata da Apache insieme al file .htaccess per concedere o negare l’accesso
E’ importante sottolineare che un file .htaccess presente nella directory /dir1 proteggerà anche tutte le sotto-directory di /dir1, come /dir1/sub1, a meno che non ci sia una coppia di file .htaccess e .htpasswd nella directory /dir1/sub1. Se ci fosse, questa varrebbe solo per /dir1/sub1 e tutte le sottocartelle (ad esempio /dir1/sub1/subsub1).
Il file .htaccess funziona come uno script di configurazione, e fornisce ad Apache alcuni dettagli ed opzioni quando un utente viene autenticato. Con un editor di testi crea un nuovo file chiamato “.htaccess” (le virgolette potrebbero essere necessarie se usassi, ad esempio, blocknotes, per evitare che venga aggiunta l’estensione .txt). Inserisci il seguente testo nel file .htaccess:
AuthUserFile /www/htdocs/secure/.htpasswd AuthGroupFile /dev/null AuthName "Directory Protetta" AuthType Basic <Limit GET> require valid-user </Limit>
Come avrai notato, il file .htaccess è diviso in due sezioni, la prima parte per i dettagli di autentificazione e la seconda parte con i permessi per l’utente. Entriamo in dettaglio.
AuthUserFile /www/htdocs/secure/.htpasswd
Nella prima linea è indicato il percorso assoluto al file .htpasswd. Questo file contiene una lista di combinazioni di username e password che Apache userà per verificare tutti i tentativi di login (maggiori dettagli di seguito).
Nell’esempio il file .htpasswd è localizzato nella directory /www/htdocs/secure. Devi cambiare questo percorso con quello della directory che vuoi proteggere. Per conoscere il percorso assoluto devi portarti via telnet/ssh nella cartella e dare il comando “pwd”.
AuthGroupFile /dev/null
La seconda linea fa riferimento ad un file per l’autentificazione di gruppi. Questo potrebbe essere utile per separare gli utenti in gruppi distinti, come studenti e professori o staff e visitatori ad esempio. Siccome non ne faremo uso, indichiamo /dev/null, in modo tale da “avvisare” Apache che il file non esiste.
AuthName "Directory Protetta"
Nella terza linea, indichiamo quella che Explorer chiama “Area Autenticazione”, come puoi vedere in questa immagine:
Ovviamente puoi scegliere qualsiasi cosa. E’ molto importante racchiudere il testo tra due virgolette (” e “).
AuthType Basic
La variabile AuthType imposta il tipo di autentificazione per la richiesta. Dato che stiamo usando una semplice autentificazione via web, la impostiamo su Basic. Altri valori possibili sono PGP e Digest.
La seconda sezione del nostro file .htaccess, contiene le richieste e i metodi di risposta a cui gli utenti autenticati hanno accesso:
<Limit GET> ... </Limit>
Nel nostro file .htaccess consentiamo agli utenti autorizzati l’accesso a tutte le parti del sito in cui il metodo GET è permesso (in poche parole, gli utenti possono vedere una pagina, ma non possono compilare form etc). Altri limiti includono PUT e POST. Per ampliare le possibilità degli utenti, basta aggiungere PUT e/o POST nel primo tag, in questo modo:
<Limit GET POST PUT>
<Limit GET> require valid-user </Limit>
Tra i tag <Limit> e </Limit>, possiamo inserire una lista di utenti a cui intendiamo concedere l’accesso alle cartelle protette, precendendo l’username con “require user”, ad esempio:
require user giovanni
require user pino
require user mafalda
In alternativa, (come ho fatto nel mio file .htaccess) si può garantire l’accesso a tutti gli utenti con l’esatta accoppiata username/password:
require valid-user
Questo è tutto quello che riguarda una semplice spiegazione del file .htaccess. Quando un utente non autenticato tenta di visitare la directory protetta, il file .htaccess viene caricato ed elaborato da Apache, che fa visualizzare la maschera per l’inserimento di username e password. Arrivati a questo punto non resta che aggiungere utenti alla lista delle persone autorizzate.
Questo viene fatto tramite il programma htpasswd.
Il file .htpasswd a nudo
Il file .htpasswd è molto più semplice del file .htaccess, dato che può essere composto anche da una sola linea. In realtà è composto da una lista di coppie nome/valore, che rappresentano le combinazioni di username/password. Ogni combinazione di username/password è separata da un ritorno a capo e viene usata da Apache per determinare se un utente che tenta di accedere alla directory protetta esiste, e se la password che ha fornito è valida.
Prima di creare il file .htpasswd, devi caricare sul server il file .htaccess (che abbiamo appena creato), nella directory che intendi proteggere. Questo può essere fatto con un qualsiasi client ftp. L’importante che l’upload avvenga in modalità ASCII.
Per creare il file .htpasswd, dovrai connetterti al tuo server usando telnet/ssh.
Una volta collegato, dovrai portarti nella directory che intendi proteggere, usando quindi il comando:
cd /www/htdocs/secure
Ovviamente /www/htdocs/secure varierà in base alla cartella che intendi proteggere.
Ora dobbiamo eseguire il programma htpasswd. Questo è un semplice programma che accetta 3 parametri:
htpasswd [opzioni] [file .htpasswd] [nuovo username]
Per il primo parametro, useremo “-c”. Questo informa il programma che stiamo creando un nuovo utente. Per il secondo parametro, digiteremo “/www/htdocs/secure/.htpasswd” (oppure “.htaccess solamente, a patto di trovarci nella cartella /www/htdocs/secure). Per l’ultimo parametro, indicheremo il nome dell’utente che vogliamo creare, ad esempio “giovanni”. Riassumendo, il comando per creare il nuovo utente giovanni, sarà il seguente:
htpasswd -c /www/htdocs/secure/.htpasswd giovanni
Dando il comando come indicato nella riga precedente (ovviamente sostituendo il percorso del file .htpasswd) ti verrà chiesto di digitare due volte la password che vuoi associare all’utente giovanni.
Per aggiungere un altro utente, non sarà più necessario usare il parametro “-c” (che serve a creare il file .htpasswd). Il comando sarà quindi:
htpasswd /www/htdocs/secure/.htpasswd mario
Ovviamente si dovrà inserire due volte la password
Questo è tutto il necessario per proteggere le directory! Possiamo controllare se il sistema funziona, aprendo il browser e collegandoci all’indirizzo corrispondente alla directory protetta. Si dovrebbe aprire un box in cui è possibile inserire username e password.
Inserendo giovanni e la password che avevate digitato, e cliccando su ok, dovreste avere accesso alla directory /secure. Inserendo 3 o più volte un’accoppiata username/password volutamente errata, dovrebbe esservi impedito l’accesso, con un errore 401.
Conclusioni
Htaccess è uno dei metodi più popolari usato su server Apache perché è semplice e veloce da attivare e non richiede modifiche sostanziali ad Apache stesso.
Come scritto precedentemente, le informazioni però vengono inviate al server in formato testo. Questo potrebbe andare bene se proteggi un sito personale. Tuttavia, se cerchi una protezione per un sito aziendale, dovresti cercare metodi più avanzati.
Fonte: Forum Html.it