Pubblicare una directory del nostro filesystem via webserver ci permette di poterla raggiungere remotamente con il nostro browser preferito, puntando semplicemente ad un indirizzo del tipo http://<server>/directory.
Ci porremo come obiettivo la pubblicazione del contenuto della directory /var/www/squid-reports, contenente i report generati da sarg relativi al proxy. Dato che le informazioni contenute nella directory in questione sono riservate, l’accesso verrà limitato ad alcuni particolari network, ai quali si renderà comunque obbligatorio un processo autenticativo.
Il file delle password contiene le credenziali necessarie per il processo di autenticazione.
Creiamo la directory in cui mettere il nostro file
mkdir /etc/apache2/htpasswd-sites/squid-reports
Generiamo il file password
htpasswd -c /etc/apache2/htpasswd-sites/squid-reports nomeutente
E ne restringiamo l’accesso il piu’ possibile
chown root.www-data /etc/apache2/htpasswd-sites/squid-reports
chmod 640 /etc/apache2/htpasswd-sites/squid-reports
Ora siamo pronti per apportare le modifiche ad apache2.
Modifichiamo quindi /etc/apache2/sites-enabled/000-default od il file di configurazione di un sito abilitato (000-default e’ solitamente attivo già attivo di default), e aggiungiamo nella sezione compresa tra <VirtualHost></VirtualHost>, una sottosezione <directory> che istruisca apache su come pubblicare la nostra directory /var/www/squid-reports.
Nella configurazione di esempio verrà consentito solo a localhost ed al network 192.168.1.0/24 l’accesso alla fase autenticativa che consente di raggiungere la directory, tutti gli altri host verranno rifiutati
<Directory "/var/www/http/squid-reports/">
#########################################################################
# Permette solo a 127.0.0.1 ed al network 192.168.1.0/24 di accedere alla
# directory
Deny from all
Order Deny,Allow
Allow from 127.0.0.1/255.0.0.0 ::1/128
Allow from 192.168.1.0/255.0.0.0
#########################################################################
# Attivare autenticazione tramite file di password
# -----------------------------------------------------
# Creare il file password ::
#
# htpasswd -c /dir/filepassword utente
#
# Limitiamo il piu' possibile i permessi del file ma teniamo anche presente
# che Apache dovrà poterlo leggere per verificare le credenziali fornitegli::
#
# chown root.www-data /dir/filepassword
# chmod 640 /dir/filepassword
#
AuthType Basic
# Si potrà personalizzare il messaggio che compare alla richiesta di
# autenticazione.
AuthName "Area ad accesso limitato."
AuthUserFile /dir/filepassword
# Richiede un utente particolare
# Require user nomeutente
# Ritiene valido uno qualunque degli utenti inseriti nel file di password
Require valid-user
</Directory>
E` anche possibile definire un alias*( lo si può intendere come un soprannome che diamo alla nostra directory di destinazione), anteponendo al blocco **<Directory></Directory>* una direttiva Alias.
es.
Alias /reports "/var/www/http/squid-reports/"
Nell’esempio sopra si è definito un alias reports che permette di raggiungere /var/www/http/squid-reports/ anche tramite l’url “http://server/reports“.
Ultimate le modifiche, il nostro file di configurazione dovrebbe contenere un blocco simile alla seguente
Alias /reports "/var/www/http/squid-reports/"
<Directory "/var/www/http/squid-reports/">
#########################################################################
# Permette solo a 127.0.0.1 ed al network 192.168.1.0/24 di accedere alla
# directory
Deny from all
Order Deny,Allow
Allow from 127.0.0.1/255.0.0.0 ::1/128
Allow from 192.168.1.0/255.0.0.0
#########################################################################
# Attivare autenticazione tramite file di password
# -----------------------------------------------------
# Creare il file password ::
#
# htpasswd -c /dir/filepassword utente
#
# Limitiamo il piu' possibile i permessi del file ma teniamo anche presente
# che Apache dovrà poterlo leggere per verificare le credenziali fornitegli::
#
# chown root.www-data /dir/filepassword
# chmod 640 /dir/filepassword
#
AuthType Basic
# Si potrà personalizzare il messaggio che compare alla richiesta di
# autenticazione.
AuthName "Area ad accesso limitato."
AuthUserFile /dir/filepassword
# Richiede un utente particolare
# Require user nomeutente
# Ritiene valido uno qualunque degli utenti inseriti nel file di password
Require valid-user
### Personalizzazione messaggi di errore
# CODICE 401 : Credenziali fornite non valide
# CODICE 403 : Indirizzo di rete rifiutato
ErrorDocument 401 "Credenziali fornite non valide !"
ErrorDocument 403 "Non ti e' consentito accedere a quest'area."
</Directory>
Per spiegazioni ulteriori sulle direttive usate si rimanda alla documentazione ufficiale di apache2