News Ticker

Apache: VirtualHost e protezione directory mediante Autenticazione

apache-linux-servers In questo articolo andremo a vedere come poter configurare dei VirtualHost con autenticazione sulla piattaforma Apache.

Senza soffermarsi sul superfluo andiamo a mettere mano alla macchina, iniziando con l’installazione di Apache, pensata su una distribuzione Ubuntu:

 michele@michele-mmul ~ $ sudo apt-get install apache2

Attendiamo il completamento ed al termine è possibile fare un test del suo funzionamento digitando sulla URL del browser l’indirizzo ip locale (nel nostro caso è 192.168.20.99): se tutto è andato a buon fine vedremo la pagina: It Works.

Andremo quindi a configurare due VirtualHost:

  • testsito1.it
  • testsito2.it

Andiamo a editare il file /etc/apache2/sites-available/000-default.conf.

La struttura dei VirtualHost sarà la seguente:

  • testsito1.it avrà la DocumentRoot in /var/www/sito1
  • testsito2.it avrà la DocumentRoot in /var/www/sito2

Per iniziare creo le directory con all’interno i file index.html

# cd /var/www/
# mkdir sito1
# cd sito1/
# echo “Sei su sito1.it” > index.html
# cd /var/www/
# mkdir sito2
# cd sito2/
# echo “Sei su sito2.it” > index.html

Adesso strutturiamo i VirtualHost:

<VirtualHost *:80>
       ServerAdmin michele@gmail.com
	ServerName testsito1.it
	DocumentRoot /var/www/sito1
	ErrorLog /var/log/error.log
	Customlog /var/log/custom.log	common
</VirtualHost>
<VirtualHost *:80>
       ServerAdmin nicola@gmail.com
        ServerName testsito2.it
	DocumentRoot /var/www/sito2
	ErrorLog /var/log/error2.log
	Customlog /var/log/custom2.log	common
 
</VirtualHost>

Sui 2 percorsi della DocumentRoot inseriamo la index.html:

echo "Sei su sito 1" > /var/www/sito1/index.html
echo "Sei su sito 2" > /var/www/sito2/index.html

Salviamo le modifiche al file e riavviamo il demone:

 service apache2 reload

Non resta che modificare il file hosts relativo della macchina locale da cui fare i test editandolo nel seguente modo:

192.168.20.99 testsito1.it
192.168.20.99 testsito2.it

Da browser possiamo digitare i seguenti URL per vedere la corretta eseguzione:

http://testsito1.it
http://testsito2.it

Se vogliamo possiamo eseguire il browser anche tramite Shell, previa installazione di links:

links http://testsito1.it
links http://testsito2.it

Per eliminare il messaggio fastidioso che ci viene posto ogni volta che riavviamo il demone apache andiamo ad inserire nella struttura della creazione dei VirtualHost la seguente stringa:

ServerName localhost

Detto questo andiamo a creare una directory dentro /var/www/sito2 che chiameremo dati, con lo scopo che solamente tramite autenticazione si riesce a leggere il contenuto.

mkdir /var/www/sito2/dati
echo “Autenticazione corretta” > /var/www/sito2/dati/index.html

Modifichiamo la struttura del VirtualHost di testsito2.it nel seguente modo:

        ServerName testsito2.it
        DocumentRoot /var/www/sito2
        ErrorLog /var/log/error2.log
        Customlog /var/log/custom2.log  common
 
        <directory /var/www/sito2/dati>
          AuthName "Inserire i dati di Login"
          AuthType basic
          AuthUserFile /etc/apache2/.login
         Require valid-user michele,raoul,gabriele
        </directory>

La voce AuthUserFile va a leggere il contenuto del file .login verificando la corretta login, mentre Require valid-user stabilisce quali utenti possono accedere alla directory.

Nota importante è che Il file .login non va creato manualmente ma tramite il comando htpasswd previa installazione tramite il seguente comando:

sudo apt-get install apache2-utils

Procediamo alla creazione del file:

htpasswd -cm /etc/apache2/.login michele
htpasswd -m /etc/apache2/.login raoul
htpasswd -m /etc/apache2/.login gabriele

-c Crea il file .login
-m Cifra la password in MD5

Il file .login sarà cosi strutturato:

michele:$apr1$Ky8DE4Ei$taTmCVCzMvx1gMMHOSUw70
raoul:$apr1$eEg1wJBk$RSHExk.EF2H/NNN02bB41.
gabriele:$apr1$1x7MDQFI$wLcthPLRX7uO5Vd4HguHV/

Riavviamo il demone apache ed eseguendo sul Browser il seguente link avremo davanti una schermata di login:

http://testsito2.it/dati