Desidero iniziare questo articolo con una breve descrizione su cos’è l’.htaccess.
L’.htaccess (Hypertext Access) è un semplice file di configurazione che permette di modificare le impostazioni di accesso di una cartella (Path) del Server, estendendo le stesse anche alle relative sottocartelle.
Nella maggior parte dei casi viene utilizzato in associazione al file .htpasswd, il file per proteggere tramite password l’accesso al sito internet ospitato e/o alle cartelle remote.
L’utilizzo di .htaccess necessita di moduli del Web Server Apache.

L’applicazione di .htaccess è abbastanza semplice; Nei prossimi passaggi verrà spiegato passo a passo come proteggere una determinata cartella (path) in un Server LinuxUbuntu 18.04 – e con l’ausilio del Web Server principale Nginx. Per chi non avesse a disposizione un Server Ubuntu 18.04 consiglio di visitare la pagina di questo Hosting Provider in quanto ha i prezzi tra i più competitivi sul mercato.

Installazione pacchetti Apache

La prima operazione da eseguire è l’installazione dei pacchetti Apache che permettono di interagire con il file .htaccess

 sudo apt-get install apache2-utils 

Preparazione files e cartella

Una volta scaricati i pacchetti è il momento di passare alla fase operativa, ovvero, la creazione della cartella (path) da proteggere, della pagina index.html e del file .htaccess. La cartella che creeremo verrà nominata per semplicità: “MyProtectedPath” che inseriremo nella path principale “/opt”

 sudo mkdir /opt/MyProtectedPath
 cd /opt/MyProtectedPath/
 sudo nano .htaccess

Ora, tramite l’editor “nano” aperto, inseriremo nel file .htaccess appena creato le seguenti configurazioni:

 AuthType Basic
 AuthName "Password Protected Area"
 AuthUserFile /opt/MyProtectedPath/.htpasswd

Nel file di configurazione è stato indicato al Web Server che:
– La tipologia di autenticazione è Basic
– Il nome dell’autorizzazione è: “Password Protected Area”
– Il file che memorizza l’hash della password di accesso alla cartella è: /opt/MyProtectedPath/.htpasswd
(N.B. il file .htpasswd non è ancora stato creato).
Il prossimo passaggio sarà quello di creare una semplice paginetta web da usare come esempio; Ovviamente se disponete già di un sito web e si desidera proteggerlo sarà sufficiente eseguire le operazioni all’interno della Cartella ospitante il sito anzichè nella cartella usata come esempio.

 sudo nano /opt/MyProtectedPath/index.html

Ora inseriremo il codice html base, del sito. Desidero ricordare che questo è un esempio, non è necessario per la funzionalità dell’.htaccess.

<!DOCTYPE html>
<html>

<head>
  <title>Your Protected WebSite</title>
</head>

<body>

  <h1>Welcome to your protected WebSite.</h1>
  <h3>This Web site is protected with .htaccess and .htpasswd</h3>

</body>
</html> 

La fase successiva sarà quella di creare il file .htpasswd per un utente a scelta. In questo caso utilizzeremo l’utente “user”.

  sudo htpasswd -c /opt/MyProtectedPath/.htpasswd user

Verrà richiesto l’inserimento di una password a scelta. L’hash della password verrà salvato all’interno del file appena creato.

Configurazione Nginx

L’ultimo passaggio è la configurazione del Web Server Nginx, affinchè dirotti il traffico al Sito Web precedentemente sviluppato, ma filtrandone l’accesso tramite richiesta credenziali settata in .htaccess

 sudo nano /etc/nginx/conf.d/myWebsite.nginx.conf 

Con l’editor aperto “nano” inseriremo il seguente file di configurazione:

 server {
        server_name _;
        location / {
                auth_basic "Administrator’s Area";
                auth_basic_user_file /opt/MyProtectedPath/.htpasswd;
                root        /opt/MyProtectedPath/;
                index       index.html; 
        }
 }

Editata la configurazione del file Nginx si dovrà riavviare il WebServer con il seguente comando:

 sudo service nginx restart 

Ora il sistema è protetto. Per testarne il funzionamento sarà sufficiente aprire un Browser e inserire nella barra degli indirizzi l’eventuale dominio o indirizzo IP ottenendo il seguente risultato:

Inserendo le credenziali precedentemente memorizzate durante la fase di creazione del file .htpasswd (“user” e “Password_a_scelta”) verrà consentito l’accesso alla pagina web sviluppata, come da esempio:

Il sito web ora è protetto!