Domande? Problemi?

Iscriviti al Google group:

Pubblicare una directory e restringerne l’accesso via Apache2

Cosa si intende con pubblicare una directory?

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.

Un esempio concreto : Pubblichiamo le statistiche del server proxy Squid

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.

Prepariamo il file delle password

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