SKILL LEVEL: SYSADMIN/ADVANCED - TIME: 5-10 MINS
Introduzione
In questo tutorial ti mostreremo come proteggere un sito web, o solo una cartella all'interno di un sito, proteggendolo con una password. Utilizzeremo il server Web più popolare, Apache2 per questo esempio, tuttavia è possibile eseguire metodi simili con altri server Web.
Il metodo che utilizzeremo è un sistema di autenticazione di base, tuttavia è facile da configurare e ti consente di proteggere rapidamente il tuo sito Web da altre persone su Internet. Questo metodo si basa sulla creazione di un nome utente e una combinazione di password per i tuoi siti. Puoi aggiungere tutti i nomi utente che vuoi, ma ricorda che dovrai mantenere ogni password.
Prerequisiti
Per questo esempio, stiamo usando l'edizione server Ubuntu 16.04. Funzionerà anche su Ubuntu 14.04 e quasi tutte le altre distribuzioni Linux, dato che stai utilizzando il server web Apache 2.
In Ubuntu, accedi come utente standard e usi sudo per emettere comandi di root (privilegiato/superutente). Se hai un login di root sul tuo server, puoi invece usarlo. Non sarà necessario utilizzare sudo, tuttavia è consigliabile per tutta l'amministrazione del server sicura e sicura, eseguire azioni con sudo e lavorare come un normale utente (non root) per eseguire attività amministrative.
Installa il pacchetto di utilità Apache
Per creare il file che memorizzerà le password necessarie per accedere ai nostri contenuti riservati, utilizzeremo un'utilità chiamata htpasswd
, che fa parte del pacchetto apache2-utils. Per installare apache2-utils, esegui i seguenti comandi:
sudo apt-get update
sudo apt-get install apache2-utils
Quanto sopra presuppone che tu abbia già installato Apache2 (sudo apt-get install apache2, in caso contrario).
Crea il file della password
Ora abbiamo accesso a htpasswd
comando. Possiamo usarlo per creare un file di password che Apache può utilizzare per autenticare gli utenti. Creeremo un file nascosto per questo scopo chiamato .htpasswd
all'interno del nostro /etc/apache2
directory di configurazione. Si noti che i file preceduti da un punto (.) vengono automaticamente nascosti da un elenco di directory standard (ad esempio, non vengono visualizzati con il comando ls). Se vuoi mostrarli, usa ls -la (lista lunga, tutti i file).
La prima volta che utilizziamo questa utility, dobbiamo aggiungere il -c
opzione per creare il file specificato. Specifichiamo un nome utente (sammy
in questo esempio) al termine del comando per creare una nuova voce all'interno del file:
sudo htpasswd -c /etc/apache2/.htpasswd sammy
Ti verrà chiesto di fornire e confermare una password per l'utente.
Tralascia il -c
argomento per eventuali utenti aggiuntivi che desideri aggiungere:
sudo htpasswd /etc/apache2/.htpasswd another_user
Se vediamo il contenuto del file, possiamo vedere il nome utente e la password crittografata per ogni record:
cat /etc/apache2/.htpasswd
sammy:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.
another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.
Configura l'autenticazione della password Apache
Ora che abbiamo un file con i nostri utenti e password in un formato che Apache può leggere, dobbiamo configurare Apache per controllare questo file prima di servire il nostro contenuto protetto. Possiamo farlo in due modi diversi.
La prima opzione è modificare la configurazione di Apache e aggiungere la nostra protezione con password al file dell'host virtuale. Questo in genere darà prestazioni migliori perché evita le spese di lettura dei file di configurazione distribuiti. Se hai questa opzione, questo metodo è consigliato.
Se non hai la possibilità di modificare il file dell'host virtuale (o se stai già utilizzando i file .htaccess files for other purposes), you can restrict access using an
.htaccessfile. Apache uses
.htaccess` per consentire l'impostazione di determinati elementi di configurazione all'interno di un file in una directory di contenuto. Lo svantaggio è che Apache deve rileggere questi file su ogni richiesta che coinvolge la directory, il che può influire sulle prestazioni.
Scegli l'opzione più adatta alle tue esigenze di seguito.
Configurazione del controllo di accesso all'interno della definizione di host virtuale
Inizia aprendo il file dell'host virtuale a cui desideri aggiungere una restrizione. Per il nostro esempio, utilizzeremo 000-default.conf
file che contiene l'host virtuale predefinito installato tramite il pacchetto apache di Ubuntu:
- sudo nano /etc/apache2/sites-enabled/000-default.conf
All'interno, con i commenti rimossi, il file dovrebbe essere simile a questo:
/etc/apache2/sites-enabled/000-default.conf<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
L'autenticazione viene eseguita in base alla directory. Per impostare l'autenticazione, dovrai scegliere come target la directory che desideri limitare con un <Directory ___>
bloccare. Nel nostro esempio, limiteremo l'intera radice del documento, ma puoi modificare questo elenco per indirizzare solo una directory specifica all'interno dello spazio web:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/var/www/html">
</Directory>
</VirtualHost>
All'interno di questo blocco di directory, specifica che desideriamo impostare Basic
autenticazione. Per il AuthName
, scegli un nome dell'area di autenticazione che verrà visualizzato all'utente quando vengono richieste le credenziali. Usa il AuthUserFile
direttiva per puntare Apache al file di password che abbiamo creato. Infine, avremo bisogno di un valid-user
per accedere a questa risorsa, il che significa che chiunque possa verificare la propria identità con una password sarà autorizzato a:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/var/www/html">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
</VirtualHost>
Salva e chiudi il file quando hai finito. Riavvia Apache per implementare la tua politica delle password:
sudo service apache2 restart
La directory che hai specificato dovrebbe ora essere protetta da password.
Configurazione del controllo accessi con file .htaccess
Se desideri impostare la protezione con password utilizzando .htaccess
file invece, dovresti iniziare modificando il file di configurazione principale di Apache per consentire .htaccess
file:
sudo nano /etc/apache2/apache2.conf
Trova il <Directory>
blocco per il /var/www
directory che contiene la radice del documento. Attiva .htaccess
elaborazione modificando AllowOverride
direttiva all'interno di quel blocco da "Nessuno" a "Tutto":
. . .
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
. . .
Salva e chiudi il file quando hai finito.
Successivamente, dobbiamo aggiungere un .htaccess
file nella directory che desideriamo limitare. Nella nostra dimostrazione, limiteremo l'intera radice del documento (l'intero sito Web) che si basa su /var/www/html
, ma puoi inserire questo file in qualsiasi directory a cui desideri limitare l'accesso:
sudo nano /var/www/html/.htaccess>
All'interno di questo file, specifica che desideriamo impostare Basic
autenticazione. Per il AuthName
, scegli un nome dell'area di autenticazione che verrà visualizzato all'utente quando vengono richieste le credenziali. Usa il AuthUserFile
direttiva per puntare Apache al file di password che abbiamo creato. Infine, avremo bisogno di un valid-user
per accedere a questa risorsa, il che significa che chiunque possa verificare la propria identità con una password sarà autorizzato a:
/var/www/html/.htaccess
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Salva e chiudi il file. Riavvia il server web per proteggere con password tutti i contenuti all'interno o al di sotto della directory con il .htaccess
file:
- riavvio del servizio sudo apache2
Conferma l'autenticazione della password
Per confermare che i tuoi contenuti sono protetti, prova ad accedere ai tuoi contenuti con restrizioni in un browser web. Dovresti essere presentato con una richiesta di nome utente e password simile a questa:
Se inserisci le credenziali corrette, sarai autorizzato ad accedere ai contenuti. Se inserisci le credenziali sbagliate o premi "Annulla", vedrai la pagina di errore "Non autorizzato":
Conclusione
Ora dovresti avere tutto il necessario per impostare l'autenticazione di base per il tuo sito. Tutta la protezione con password deve essere combinata con la crittografia SSL in modo che le tue credenziali non vengano inviate al server in chiaro.
Grazie alle persone di digitalocean.com per alcuni dei contenuti di questa pagina. Assicurati di dare un'occhiata, hanno fantastici servizi di web hosting per tutte le tasche!