GNU/Linux >> Linux Esercitazione >  >> Linux

Come proteggere con password i siti Web tramite .htaccess

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
Output
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:

/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

    <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:

/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

    <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":

/etc/apache2/apache2.conf
. . .

<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!


Linux
  1. Reindirizzamento semplice del sito web tramite .htaccess

  2. Come abilito ExecCGI tramite il file .htaccess?

  3. Come abilitare ExecCGI tramite il file .htaccess?

  4. Come proteggere con password una directory tramite cPanel

  5. Come si protegge con password una cartella di un sito Web?

Come proteggere con password un file in Vim Editor

Come proteggere con password una cartella in Linux

Come aggiungere una password per proteggere un file Vim in Linux

Come impostare la pagina dell'indice da cPanel tramite .htaccess?

Come proteggere GRUB con password in Linux?

Come proteggere con password i file usando l'editor Vim in Ubuntu