Ricerca nel sito web

Come proteggere con password le directory Web in Apache utilizzando il file .htaccess


Quando gestisci progetti online, spesso devi limitare l'accesso a quel progetto per proteggerlo dal mondo esterno. Potrebbero esserci diversi motivi per questo: ad esempio vuoi impedire ai crawler dei motori di ricerca di accedere al tuo sito mentre è ancora in fase di sviluppo.

In questo tutorial, ti mostrerò come proteggere con password diverse directory di siti web nel server web Apache. Esistono molti modi per raggiungere questo obiettivo, ma ne esamineremo due che sono più comunemente utilizzati.

Il primo metodo configura la protezione tramite password direttamente nel file di configurazione di Apache, mentre il secondo utilizza il file .htaccess.

Requisiti

Per impostare la protezione tramite password per le tue directory web, dovrai avere:

  • Un server web Apache funzionante
  • La direttiva AllowOverride AuthConfig deve essere abilitata nel file di configurazione di Apache.

Imposta la directory protetta da password Apache

1. Per questo tutorial, proteggeremo la directory principale del web /var/www/html. Per proteggere quella directory, apri la configurazione di Apache:

---------------- On RedHat/CentOS based systems ----------------
vi /etc/httpd/conf/httpd.conf

---------------- On Debian/Ubuntu based systems ----------------
nano /etc/apache2/sites-available/000-default.conf

2. Trova la radice della directory dei documenti Apache per /var/www/html e aggiungi le seguenti cose come suggerito:

Nella versione Apache 2.2

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All
Order allow,deny
Allow from all 
</Directory>

Nella versione Apache 2.4

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All 
Require all granted 
</Directory>

3. Salva il file e riavvia Apache utilizzando il seguente comando:

--------------- On Systemd -------------------
systemctl restart httpd         [On RedHat based systems]
systemctl restart apache2       [On Debian based systems]


--------------- On SysV init -----------------
service httpd restart           [On RedHat based systems]
service apache2 restart         [On Debian based systems]

4. Ora utilizzeremo il comando htpasswd per generare nome utente e password per la nostra directory protetta. Questo comando viene utilizzato per gestire i file utente per l'autenticazione di base.

La sintassi generale del comando è:

htpasswd -c filename username

L'opzione -c specifica il file che manterrà la password crittografata e username specifica l'utente per l'autenticazione.

5. Il nostro file delle password deve trovarsi fuori dalla directory accessibile dal web di Apache in modo che sia ben protetto. A tale scopo, creeremo una nuova directory:

mkdir /home/tecmint

6. Successivamente genereremo il nostro nome utente e la nostra password che verranno archiviati in quella directory:

htpasswd -c /home/tecmint/webpass tecmint

Una volta eseguito questo comando dovrai inserire due volte la password per il nostro nuovo utente "tecmint":

Successivamente dovremo assicurarci che Apache sia in grado di leggere il file “webpass”. A tale scopo, dovrai modificare la proprietà di quel file con il seguente comando:

---------------- On RedHat/CentOS based systems ----------------
chown apache: /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
---------------- On Debian/Ubuntu based systems ----------------
chown www-data /home/tecmint/webpass
chmod 640 /home/tecmint/webpass

7. A questo punto il nostro nuovo utente e la nostra password sono pronti. Ora dobbiamo dire ad Apache di richiedere la password quando accediamo alla nostra directory di destinazione. A tale scopo, crea un file chiamato .htaccess in /var/www/html:

vi /var/www/html/.htaccess

Aggiungi il seguente codice al suo interno:

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint

8. Ora salva il file e metti alla prova la tua configurazione. Apri il browser e inserisci il tuo indirizzo IP o nome di dominio nel browser web, ad esempio:

http://ip-address

Ti dovrebbero essere richiesti nome utente e password:

Inserisci il nome utente e la password che hai impostato per procedere alla tua pagina.

Note aggiuntive

Se utilizzi un hosting condiviso, molto probabilmente non avrai accesso al file di configurazione di Apache. Tuttavia, la maggior parte delle società di hosting ha abilitato l'opzione "Consenti sovrascrittura di tutto" per impostazione predefinita. Ciò significa che dovrai solo generare nome utente e password e quindi selezionare la directory che desideri proteggere. Ciò facilita notevolmente il tuo compito.

Conclusione

Spero che questo tutorial ti sia stato utile e che ti abbia aiutato a raggiungere il tuo obiettivo. Se avete domande o commenti, non esitate a pubblicarli nella sezione sottostante.