[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
Apache 1.3 (1) è un servente HTTP derivato da quello di NCSA, che costituisce lo standard di fatto per i sistemi GNU e molte altre piattaforme.
Le funzionalità che Apache mette a disposizione sono molte e di conseguenza la sua configurazione può anche essere complicata. Eventualmente, quando non ci sono esigenze particolari, si può preferire l'installazione di un servente HTTP meno sofisticato, come Boa, descritto nel capitolo 235, oppure Mathopd, descritto nel capitolo 236.
Attualmente il progetto di Apache è molto articolato e non si limita alla produzione di un servente HTTP puro e semplice. |
Si osservi che il lavoro sul servente HTTP Apache 1.3 è ormai concluso e lo sviluppo attuale è rivolto alla versione 2, che prevede una configurazione leggermente differente. Tuttavia, questo capitolo rimane riferito alla versione obsoleta.
Apache è costituito essenzialmente dall'eseguibile httpd, che si avvia di solito come demone autonomo dal supervisore dei servizi di rete:
httpd [opzioni] |
Nelle sezioni seguenti si fa sempre riferimento a un'installazione in cui il servizio viene avviato in modo indipendente dal supervisore dei servizi di rete. Eventualmente si può consultare la documentazione originale per un'impostazione differente.
Di solito, non occorre configurare nulla per vedere funzionare il servente in modo «normale», per la pubblicazione di qualche pagina senza esigenze particolari, ma la gestione di un sito vero e proprio richiede quasi sempre un intervento nella configurazione.
Purtroppo, Apache gestisce più di un file configurazione e questo può creare un po' di confusione. In generale, questi file potrebbero trovarsi nella directory /etc/apache/
e si tratta almeno di: httpd.conf
, srm.conf
e access.conf
.
Prima di vedere i dettagli dell'impostazione del servente Apache, è il caso di descrivere alcune caratteristiche che lo riguardano.
L'accesso al servizio HTTP avviene a partire da una parte del file system, che inizia dal cosiddetto document root.
Il programma servente non esegue la funzione chroot() in questa directory, pertanto è possibile articolare le directory successive anche attraverso l'uso di collegamenti simbolici in posizioni precedenti alla directory document root.
In linea di massima, ogni utente può realizzare una struttura personalizzata di documenti HTML, a partire dalla propria directory personale (home).
Il servente è in grado di mettere in funzione dei programmi, detti CGI, per la gestione interattiva di pagine HTML contenenti dei moduli.(2)
Nella configurazione di Apache si distinguono due directory che vengono definite attraverso un nome particolare; si tratta di ServerRoot e DocumentRoot. A queste se ne affiancano altre che derivano dalla configurazione consueta di questo programma servente.
server root
La directory nota come server root è il punto di origine dei file amministrativi di Apache. Viene dichiarata nel file httpd.conf
e gli altri file dichiarati all'interno di questo sono intesi essere collocati in posizione relativa a tale directory.
document root
La directory nota come document root è il punto di origine dei documenti HTML.
Programmi CGI
Convenzionalmente, è opportuno collocare i programmi CGI in una posizione estranea alla gerarchia che si articola a partire dalla directory document root, per facilitare la configurazione della sua accessibilità.
Icone di sistema
Il servente HTTP ha spesso la necessità di utilizzare icone per rappresentare delle informazioni in modo grafico, per esempio quando si visualizza il contenuto di una directory appartenente alla gerarchia di document root. Sotto questo aspetto, è conveniente togliere tali icone dalla struttura dei documenti normali, perché non fanno parte di questi.
Documenti personali
In linea di massima è concesso agli utenti di creare una propria struttura di documenti ipertestuali. La directory di partenza di questi documenti viene definita come user dir ed è relativa alla directory personale di questi utenti. È importante tenere presente che gli utenti hanno tale possibilità, per configurare opportunamente il servente in modo che questi non possano creare danni.
Come già descritto, il servizio viene gestito dal demone httpd che può essere avviato direttamente dalla procedura di inizializzazione del sistema, oppure può essere controllato dal supervisore dei servizi di rete. In questo secondo caso, quando si fanno delle modifiche alla configurazione, non occorre fare in modo che httpd le rilegga, perché è costretto a farlo ogni volta che viene risvegliato dal supervisore dei servizi di rete.
Quando httpd è indipendente dal supervisore dei servizi di rete (standalone), si può osservare la presenza di una serie di processi httpd discendenti da uno di origine.
#
pstree -p
[Invio]
init(1)-+-... | |-httpd(244)-+-httpd(859) | |-httpd(860) | |-httpd(861) | |-httpd(862) | `-httpd(863) |-... ... |
Per fare in modo che tutti questi processi rileggano i file di configurazione, basta inviare un segnale SIGHUP a quello principale; in questo caso il numero 244.
#
kill -HUP 244
[Invio]
#
pstree -p
[Invio]
init(1)-+-... | |-httpd(244)-+-httpd(901) | |-httpd(902) | |-httpd(903) | |-httpd(904) | `-httpd(905) |-... ... |
Come si può osservare, il processo httpd principale rimane attivo, mentre quelli inferiori vengono conclusi e riavviati (lo si vede dal numero PID). Attenzione però: se si invia un segnale di questo tipo al processo httpd dopo aver modificato la configurazione in modo errato, questo termina il suo funzionamento.
Il file di configurazione principale di Apache e httpd.conf
. La sua collocazione dipende dal modo in cui è stato compilato Apache, oppure dall'opzione -f della riga di comando del demone httpd. Nelle tabelle successive vengono descritte solo alcune direttive più importanti. Inoltre, nel capitolo 250 viene trattata la configurazione di Apache per la gestione di una cache proxy, cosa che riguarda in modo particolare proprio questo file.
|
Segue la descrizione di alcuni esempi.
|
Nell'esempio si mostra la dichiarazione per il funzionamento autonomo (standalone) che corrisponde alla situazione più comune (e anche più adatta).
|
In questo modo si richiede al servente di stare in ascolto della porta 80.
|
L'esempio mostra in che modo si possa indicare a httpd di stare in ascolto sia della porta 80 che della 8 080; dove la seconda viene utilizzata normalmente per interrogare un servente proxy.
|
Viene attivata la risoluzione degli indirizzi numerici in nomi di dominio.
|
Segue la descrizione di alcuni esempi.
|
Dichiara essere webmaster@dinkel.brot.dg
l'indirizzo di posta elettronica dell'amministratore del servizio.
|
L'esempio dichiara che il nome del nodo che offre il servizio è www.brot.dg
, anche se magari il nome canonico di questo, secondo il DNS, è diverso. Quello che conta è che il sistema DNS sia in grado di risolvere anche questo nome qui dichiarato.
|
L'esempio seguente mostra precisamente la richiesta di far funzionare il servizio con i privilegi dell'utente nobody e del gruppo nogroup:
|
|
Segue la descrizione di alcuni esempi.
|
L'esempio mostra la posizione più conveniente di questa directory per aderire allo standard FHS sulla struttura del file system.
|
L'esempio mostra la dichiarazione esplicita dei nomi utilizzati per gli altri file di configurazione. Mancando l'indicazione di un percorso assoluto, si intende che debbano essere discendenti della directory server root.
|
L'esempio mostra la dichiarazione dei due file delle registrazioni, con un percorso assoluto: /var/log/apache/
.
|
L'esempio mostra l'indicazione del file /var/run/httpd.pid
, con un percorso assoluto, in modo da non finire al di sotto della directory server root.
|
L'esempio mostra l'indicazione del file /var/run/apache_status
, con un percorso assoluto, in modo da non finire al di sotto della directory server root.
Il file srm.conf
è il file di configurazione delle risorse di Apache. Viene letto subito dopo quello di configurazione del servente. Definisce in particolare dove si trovino i documenti (la directory document root e quella delle pagine degli utenti), gli alias di directory speciali e altre informazioni correlate. La sua collocazione dipende dal modo in cui è stato compilato Apache, oppure dalla direttiva ResourceConfig del file httpd.conf
.
Nelle edizioni conclusive di Apache 1.*, le direttive del file |
Nelle tabelle successive vengono descritte solo alcune direttive più importanti.
|
Segue la descrizione di alcuni esempi.
|
L'esempio mostra il caso in cui la directory /home/httpd/html/
corrisponda all'inizio dei documenti HTML.
|
L'esempio mostra la dichiarazione tipica di questa direttiva e significa che ogni utente può creare la directory ~/public_html/
all'interno della quale collocare le proprie pagine.
Supponendo di accedere all'URI http://www.brot.dg/~tizio/elenco.html
si fa riferimento effettivamente al file ~tizio/public_html/elenco.html
. In questo modo, tra le altre cose, si evita di esporre l'intera directory personale dell'utente.
|
L'esempio mostra in che modo possa essere impedito ai singoli utenti di creare le proprie pagine HTML nella loro directory personale.
Quando si concede agli utenti di realizzare le loro pagine HTML personali, occorre tenere presente che questo fatto può costituire un problema di sicurezza del sistema: un utente potrebbe creare un semplice collegamento simbolico verso un file o una directory che, pur risultando leggibile a tutti gli utenti, non avrebbe dovuto essere accessibile al mondo intero. A questo si può porre rimedio, ma per farlo occorre intervenire sul file |
|
Viene impedita all'utente root la costruzione di pagine HTML personali.
|
Segue la descrizione di alcuni esempi.
|
L'esempio dichiara due file (index.html
e index.htm
) come possibili indici da utilizzare quando si fa riferimento a una directory senza indicare un file specifico.
|
Fa in modo che siano mostrate delle icone a fianco dei nomi, quando viene mostrato il contenuto delle directory.
|
Dichiara l'uso di un'icona particolare per i file compressi.
|
Dichiara alcune icone da usare in base al tipo MIME.
|
Dichiara una serie di icone in base all'estensione dei file e ad altre situazioni particolari.
|
Dichiara un'icona predefinita in mancanza di altre corrispondenze.
|
L'esempio mostra l'esclusione dall'elenco di:
tutti i file che iniziano con un punto e sono lunghi almeno tre caratteri, perché si vuole continuare a includere il riferimento alla directory precedente;
tutti i file che terminano con il simbolo tilde, che sono solitamente delle copie di sicurezza di versioni precedenti;
tutti i file che terminano con il simbolo #, dal momento che anche questi sono generalmente copie di sicurezza di versioni precedenti;
tutti i file il cui nome inizia per HEADER
o README
, perché hanno un ruolo speciale;
il file RCS
.
|
In questo caso, viene cercato prima il file HEADER.html
. Se viene trovato, viene incluso all'inizio dell'elenco della directory, mantenendo la formattazione HTML. Se manca, ma esiste il file HEADER
, questo viene incluso in modo testuale. La stessa cosa vale per il file README.html
o soltanto README
, con la differenza che questo viene incluso alla fine, dopo l'elenco.
|
Segue la descrizione di alcuni esempi.
|
Dichiara che il tipo MIME predefinito deve fare riferimento a un file di testo puro e semplice.
|
L'esempio mostra la configurazione tipica, che serve a informare i programmi clienti quando viene inviato loro un file compresso con compress o con gzip.
|
Segue la descrizione di alcuni esempi.
|
L'esempio mostra la dichiarazione di una directory cui si accede attraverso l'alias /icons/
. In pratica, tutte le volte che viene richiesta una risorsa contenuta nella directory /icons/
, questa viene prelevata dalla directory reale /home/httpd/icons/
.
La dichiarazione dell'alias /icons/
è molto importante nella consuetudine, dal momento che si tratta del riferimento alla directory contenente le icone utilizzare per la visualizzazione degli indici. In un altro contesto si vede la dichiarazione dell'abbinamento delle icone a seconda dell'estensione dei file, come nell'esempio seguente, dove si fa riferimento a questo alias:
|
|
Dichiara la corrispondenza tra l'indirizzo http://nodo/cgi-bin/
e il percorso /home/httpd/cgi-bin/
.
|
L'esempio seguente dichiara che i file con estensione .cgi
devono essere considerati dei programmi CGI che possono essere eseguiti (salvo limitazioni nei permessi di esecuzione):
|
|
L'esempio mostra la dichiarazione comune, riferita al file .htaccess
:
|
|
Segue la descrizione di alcuni esempi.
|
L'esempio mostra il caso in cui si voglia fare apparire una stringa particolare in occasione del verificarsi dell'errore 500.
|
In questo caso, in occasione dell'errore 404, viene inviato al cliente il file documento_mancante.html
che dovrebbe contenere qualche utile suggerimento per l'utente.
|
Questa è una variante dell'esempio precedente, in cui, invece di inviare un file HTML viene eseguito un programma CGI, /cgi-bin/documento_mancante.pl
. Ciò può essere utile per comporre una risposta personalizzata, utilizzando le informazioni cui può accedere il programma stesso.
|
Questa è una variante dell'esempio precedente, in cui si fa riferimento a una risorsa contenuta in un URI esterno al servente dove si manifesta il problema.
Il file di configurazione globale che permette di controllare l'accesso alle directory del sistema è access.conf
. La sua sintassi è diversa da quella degli altri due file di configurazione già visti. In particolare, oltre a normali direttive, si utilizzano dei delimitatori simili a marcatori HTML che permettono di definire il contesto a cui si riferiscono le direttive contenute. Più precisamente si parla di sezioni.
Nelle edizioni più recenti di Apache, le direttive del file |
Le sezioni del file di configurazione degli accessi hanno una forma simile a quella seguente:
<Nome ...> ... </Nome> |
Nel marcatore che ne dichiara l'apertura possono apparire delle opzioni; nella parte compresa tra l'apertura e la chiusura si inseriscono delle direttive riferite a quella sezione particolare. A seconda del contesto, una sezione può contenere anche la dichiarazione di altre sezioni in modo annidato.
Le sezioni Directory raccolgono le direttive di controllo per una particolare directory e per quelle successive. La direttiva di apertura, ovvero il marcatore <Directory>, deve contenere l'indicazione della directory a cui si riferiscono le direttive della sezione, eventualmente usando anche i caratteri jolly (* e ?) o le espressioni regolari estese.
|
Questo esempio è il più comune: si dichiara una sezione riferita alla directory /home/httpd/html/
, che qui si vuole intendere corrispondere alla document root.
|
Questo esempio ulteriore, attraverso un'espressione regolare, dichiara una sezione riferita a tutte le directory discendenti di /home/httpd/html/
che iniziano con tre cifre numeriche.
Quando una sezione si riferisce a una porzione già presa in considerazione da un'altra analoga, conviene che queste appaiano in una sequenza tale da porre prima le sezioni generali e dopo quelle più particolareggiate, come nell'esempio seguente:
|
Di seguito sono descritte alcune delle direttive che possono essere usate all'interno della sezione Directory.
Options [+|-]opzione... |
La direttiva Options permette di definire alcune opzioni in forma di parole chiave. La tabella 234.53 ne riporta l'elenco. In particolare, le opzioni None e All vanno usate da sole.
|
Generalmente, se più direttive Options possono applicarsi alla stessa directory, quella riferita alla directory più specifica si sostituisce completamente alle altre. Tuttavia, se tutte le opzioni vengono precedute dal segno + o -, queste vengono unite a quelle già dichiarate. Le opzioni precedute dal segno + vengono aggiunte; quelle precedute dal segno - vengono eliminate. In ogni caso, per facilitare la lettura sarebbe opportuno dichiarare ogni volta le opzioni che si vuole siano abilitate.
L'esempio seguente mostra la semplice dichiarazione della directory /home/httpd/html/
(corrispondente a document root), in cui è consentito visualizzare il listato del contenuto e seguire i collegamenti simbolici.
|
AllowOverride opzione... |
La direttiva AllowOverride permette di definire quali opzioni possono essere scavalcate dalle dichiarazioni particolari contenute nei file di accesso delle singole directory (.htaccess
). La tabella 234.55 ne riporta l'elenco. In particolare, le opzioni None e All vanno usate da sole.
|
L'esempio seguente mostra la semplice dichiarazione della directory /home/httpd/html/
(corrispondente a DocumentRoot), in cui è consentito visualizzare il listato del contenuto e seguire i collegamenti simbolici. Per questa directory (e per le successive) non è possibile scavalcare alcuna direttiva utilizzando i file .htaccess
.
|
Attraverso una serie di direttive è possibile definire l'autorizzazione all'accesso alla directory, fornendo un nominativo e una parola d'ordine. Questi nominativi e le parole d'ordine cifrate relative devono essere contenuti in un file creato con un programma apposito, htpasswd, ed è necessario che non coincidano con nominativi e parole d'ordine già utilizzati per accedere al sistema. Infatti, il programma cliente memorizza queste informazioni la prima volta che vengono inserite, quindi le fornisce automaticamente a ogni richiesta.(3)
A fianco del file di utenti e parole d'ordine, si può creare un file di gruppi che serve solo a facilitare la definizione delle autorizzazioni, quando si vuole fare riferimento a un intero gruppo di utenti, senza doverli elencare.
AuthName nome |
La direttiva AuthName permette di definire un nome per identificare il contesto dell'autorizzazione. Questa descrizione viene data all'utente quando gli viene richiesto di inserire il nominativo e la parola d'ordine, in modo da permettergli di distinguere tra autorizzazioni diverse che possono richiedere un'identificazione differente.
AuthType Basic |
Questa direttiva è obbligatorie e specifica il tipo di autorizzazione.
AuthUserFile file_di_utenti_e_parole_d'ordine |
Specifica un file da utilizzare come elenco di utenti e parole d'ordine. Questo file viene creato e aggiornato utilizzando il programma htpasswd.
AuthGroupFile file_dei_gruppi |
Specifica un file da utilizzare come elenco di gruppi abbinati agli utenti. Non contiene parole d'ordine e viene creato in modo manuale.
require user utente... |
require group gruppo... |
require valid-user |
Una di queste direttive stabilisce la necessità dell'identificazione attraverso un nominativo-utente e una parola d'ordine. Nel primo caso si indicano precisamente quali utenti possono accedere, nel secondo quali gruppi di utenti e nel terzo si afferma semplicemente che possono accedere tutti.
L'esempio seguente definisce un accesso ristretto e condizionato al riconoscimento degli utenti. In particolare però, solo gli utenti tizio, caio e sempronio possono accedere.
|
In origine, queste direttive erano consentite solo nella sezione Limit. Se vi appaiono fuori, indicano che si riferiscono a qualunque metodo di accesso. Quando si utilizzano queste direttive, se si intende fare uso di nomi di dominio è indispensabile avere attivato la risoluzione dei nomi di dominio attraverso la direttiva HostnameLookups nel file httpd.conf
.
order allow,deny |
order deny,allow |
order mutual-failure |
In questo modo si specifica l'ordine in cui devono essere prese in considerazione le direttive deny e allow. Quando si specifica la parola chiave mutual-failure, si intende che possono accedere solo i nodi che appaiono nella lista allow e non appaiono in quella deny.
deny from { all | nodo... } |
Impedisce l'accesso da parte dei nodi elencati. Se si usa la parola chiave all si impedisce a tutti di accedere. I nodi possono essere indicati attraverso il nome di dominio, completo o parziale, e attraverso l'indirizzo numerico, completo o parziale.
allow from { all | nodo... } |
Consente l'accesso da parte dei nodi elencati. Se si usa la parola chiave all si consente a tutti di accedere. I nodi possono essere indicati attraverso il nome di dominio, completo o parziale, e attraverso l'indirizzo numerico, completo o parziale.
L'esempio seguente stabilisce il blocco all'accesso da parte degli utenti del dominio mehl.dg
, a partire dalla directory dichiarata nell'apertura della sezione Directory.
|
L'esempio seguente, invece, concede solo al dominio mehl.dg
di poter accedere.
|
L'esempio seguente è una variante del precedente, in cui si utilizza anche l'indicazione di una sottorete in forma di indirizzo numerico.
|
Le sezioni Limit sono usate per racchiudere un gruppo di direttive di controllo di accesso, che riguardano solo i metodi specificati. I metodi di accesso in questione sono, per esempio, GET e POST.
|
L'esempio mostra che per la directory specificata è richiesta l'autenticazione solo in caso di utilizzo dei metodi GET e POST.
Quando si vuole che le direttive di controllo di accesso riguardino tutti i metodi di accesso, non si usa la sezione Limit.
In linea di massima, la sezione Limit può contenere ogni direttiva, a esclusione della dichiarazione ulteriore di sezioni Directory e Limit annidate. In pratica, si utilizzano solo direttive per cui abbia senso porre un limite basato sul metodo di accesso. Generalmente ha significato l'utilizzo delle direttive indicate nella tabella 234.62.
Le sezioni Location raccolgono le direttive di controllo per un URI particolare. Si tratta di qualcosa molto simile alla sezione Directory, con la differenza che il riferimento è fatto all'URI piuttosto che alla directory del file system effettivo.
Questa sezione viene usata prevalentemente per abilitare l'accesso allo stato del servente attraverso l'indicazione di un URI, da parte di un particolare indirizzo autorizzato.
|
Nell'esempio viene concesso al nodo dinkel.brot.dg
di accedere all'URI /status
cui è abbinata la generazione e la restituzione di informazioni sul sistema. Il risultato potrebbe essere qualcosa di simile a quello che segue.
|
I file .htaccess
possono essere usati per definire delle configurazioni specifiche riferite alla directory in cui si trovano. Non è necessario il loro utilizzo; si tratta solo di una possibilità, che peraltro deve essere controllata attraverso la direttiva AllowOverride nel file access.conf
. In linea di massima, i file .htaccess
possono contenere le direttive elencate nella tabella 234.65
|
Dalla descrizione dei file di configurazione di Apache si possono intuire i punti su cui agire per cercare di ottenere un servizio HTTP relativamente «sicuro». Vale comunque la pena di sottolineare alcune cose.
Il demone httpd viene avviato normalmente con i privilegi dell'utente root, quindi, attraverso delle opportune chiamate di sistema, httpd cambia questi privilegi portandoli a quelli dell'utente e del gruppo specificati con le direttive User e Group del file httpd.conf
.
È molto importante che l'utente e il gruppo corrispondano a nobody, dove questo utente fittizio deve corrispondere idealmente al «perfetto sconosciuto» che accede al sistema, oppure, ancora meglio, che si tratti di un utente apposito. In questa ottica devono poi essere regolati i permessi delle directory.
I file amministrativi di Apache, cioè quelli di configurazione e di registrazione degli eventi, non devono essere accessibili in scrittura da parte degli utenti comuni (di qualunque tipo siano, escluso root). Nello stesso modo, non devono essere modificabili le directory che li contengono.
I file che compongono i documenti ipertestuali devono essere accessibili solo in lettura agli utenti comuni, così le directory non devono essere modificabili, eccetto i permessi che può avere l'utente root.
È consigliabile utilizzare la direttiva SymLinksIfOwnerMatch per evitare brutti scherzi da parte degli utenti che hanno la possibilità di creare documenti HTML a partire dalla loro directory personale.
È bene evitare di permettere l'utilizzo di programmi CGI al di fuori della directory definita con la direttiva ScriptAlias nel file srm.conf
.
È opportuno evitare di concedere agli utenti comuni di modificare le impostazioni attraverso i file .htaccess
. Si ottiene questo con la direttiva AllowOverride None.
Segue un esempio molto semplice della configurazione del file access.conf
:
|
Come si può osservare, non è stato consentito in alcun caso di utilizzare i file .htaccess
e i collegamenti simbolici sono tollerati se il proprietario del collegamento equivale a quello del file o della directory di destinazione. Inoltre sono state prese le misure seguenti:
è impedito l'accesso a partire dalla directory radice del file system, obbligando a dichiarare l'accesso alle directory successive;
viene concesso l'accesso alla directory da cui si diramano i documenti ipertestuali;
viene concesso espressamente l'accesso alle directory personali degli utenti;
i programmi CGI possono essere eseguiti solo nella directory preposta a questo, il cui contenuto risulta illeggibile;
l'accesso alla directory contenente le icone utilizzate da Apache è stato dichiarato espressamente, altrimenti sarebbero risultate inaccessibili a causa del divieto iniziale sulla directory radice;
è stata abilita la lettura dello stato del servente, concedendo l'accesso solo al dominio brot.dg
.
Il sistema di autenticazione del programma servente permette di consentire l'accesso a directory determinate solo a utenti identificati in base a un nome e a una parola d'ordine. È molto importante capire come funziona il meccanismo, per non farsi delle illusioni sull'efficienza del sistema.
|
La prima volta che l'utente accede, il programma cliente gli presenta la richiesta di inserire il nominativo e la parola d'ordine, poi tutto funziona normalmente. Però, essendo il protocollo HTTP privo di stato, non si instaura una connessione stabile; ogni richiesta è una connessione a parte e ognuna di queste richiede un'autenticazione. In effetti, il programma cliente memorizza i dati inseriti dall'utente e continua a fornirli al servente HTTP. Questo fatto ha due implicazioni: la parola d'ordine viaggia continuamente attraverso la rete; più utenti possono accedere simultaneamente da postazioni differenti, utilizzando la stessa identificazione e la stessa parola d'ordine. Sotto questo aspetto, è importante che le parole d'ordine che si adoperano per queste cose non abbiano alcun nesso con quelle «serie».
Per gestire questo tipo di autenticazione, occorre generare un file di utenti e di parole d'ordine, aggiungendo possibilmente anche un file di gruppi. Si utilizza il programma htpasswd che normalmente fa parte del pacchetto di Apache:
htpasswd [-c] file utente |
Il programma htpasswd crea o aggiorna un file di utenti e di parole d'ordine per l'autenticazione degli accessi a directory protette con il servente Apache. L'opzione -c viene usata per creare il file la prima volta, mentre si inserisce il primo utente. La parola d'ordine viene richiesta subito dopo l'avvio del programma.
Vengono mostrati e descritti alcuni esempi.
#
htpasswd -c passwd tizio
[Invio]
Adding password for tizio. New password: |
Viene inserita la parola d'ordine seguita da [Invio].
|
Viene reinserita la parola d'ordine seguita da [Invio] e si ottiene il file passwd
nella directory corrente.
#
cat passwd
[Invio]
tizio:njHIUkjjJLKn |
Il file contiene solo i nomi degli utenti e le parole d'ordine cifrate relative.
#
htpasswd passwd caio
[Invio]
Quando si aggiungono utenti, non si utilizza l'opzione -c, altrimenti il file viene cancellato e ricreato.
#
htpasswd passwd caio
[Invio]
Lo stesso programma può essere usato per modificare la parola d'ordine di un utente già registrato.
Per facilitare la gestione di utenti che utilizzano l'autenticazione per accedere a directory protette, è possibile realizzare dei raggruppamenti e inserirli in un file senza parole d'ordine. Il formato del file è molto semplice: ogni record è costruito secondo la sintassi seguente:
gruppo: utente... |
Quindi, i nominativi dei vari utenti sono separati da uno spazio, come nell'esempio seguente:
|
Nell'esempio sono dichiarati due gruppi: primo e secondo. A primo appartengono gli utenti tizio, caio e sempronio; a secondo appartengono gli utenti cane, gatto e topo.
La configurazione delle directory che devono essere accessibili solo attraverso un'autenticazione, avviene nel file access.conf
in una sezione Directory. Sono indispensabili le direttive AuthName, AuthType e AuthUserFile con cui si dà un nome all'autenticazione, si definisce il tipo e si indica il nome del file degli utenti e delle parole d'ordine. La direttiva AuthGroupFile serve solo se si intende fare riferimento a gruppi di utenti.
|
La direttiva require stabilisce a chi, tra gli utenti che sono dichiarati nel file di utenti e di parole d'ordine, sia concesso di accedere. La parola chiave valid-user rappresenta tutti gli utenti che sono stati previsti. In alternativa possono essere elencati gli utenti a cui concedere l'accesso, come nell'esempio seguente;
|
oppure si può indicare il nome di uno o più gruppi.
|
Solo nell'ultimo caso è necessario predisporre e dichiarare la posizione del file dei gruppi.
Apache è in grado di gestire diversi siti virtuali indipendenti sullo stesso elaboratore. In pratica, si distinguono diverse directory per le pagine HTML (diverse directory document root), dove ognuna di queste viene selezionata in base al nome di dominio utilizzato per accedere al servizio.
Evidentemente, per arrivare a questo risultato, occorre che lo stesso elaboratore sia accessibile utilizzando nomi di dominio differenti: si va dall'attribuzione di un semplice alias all'interno del DNS (i record CNAME), fino alla sovrapposizione di indirizzi IP differenti sulle stesse interfacce (con la conseguente attribuzione di nomi di dominio differenti). A proposito della gestione del DNS, si vedano i capitoli 188 e 189.
Quanto visto su Apache fino a questo punto, riguarda la gestione di un sito unico: quello «reale». Si osservi in particolare che la direttiva DocumentRoot viene inserita nel file srm.conf
. Per definire dei siti virtuali alternativi si interviene nel file httpd.conf
, attraverso delle sezioni simili a quelle del file access.conf
:
<VirtualHost nome_di_dominio > direttiva_specifica ... </VirtualHost> |
In pratica, all'interno del marcatore di apertura dell'ambiente VirtualHost si inserisce il nome del sito virtuale a cui si fa riferimento, mentre all'interno della sezione si inseriscono le direttive specifiche per questo sito.
|
L'esempio mostra la predisposizione del sito virtuale prova.brot.dg
. All'interno della sezione si vedono le dichiarazioni:
dell'indirizzo di posta elettronica dell'amministratore, con la direttiva ServerAdmin;
della directory di partenza delle pagine HTML, con la direttiva DocumentRoot;
del nome di dominio corretto per raggiungere il sito virtuale, con la direttiva ServerName;
dei percorsi assoluti dei file delle registrazioni, con le direttive ErrorLog e TransferLog.
È il caso di osservare la stranezza per la quale la direttiva DocumentRoot può apparire nella sezione VirtualHost all'interno del file httpd.conf
, mentre per il sito reale si usa il file srm.conf
.
Nel momento in cui si dichiara l'utilizzo di una nuova directory per i dati (le pagine HTML), ci si deve preoccupare anche di configurare l'accesso a tale directory. Questo si fa nel modo solito all'interno del file access.conf
. Seguendo l'esempio mostrato, potrebbe essere necessario aggiungere la sezione seguente:
|
Apache
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
1) Apache software libero con licenza speciale
2) moduli HTML.
3) È bene ricordare che il protocollo HTTP è privo di stato, per cui a ogni richiesta si ricomincia da capo.
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome servente_http_apache_1_3.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]