Laboratorio Di Basi Di Dati 08 Il Web Server Apache
-
Upload
guestbe916c -
Category
Technology
-
view
1.642 -
download
2
description
Transcript of Laboratorio Di Basi Di Dati 08 Il Web Server Apache
1
A.A. 2005/2006 Basi di Dati e Laboratorio 1
Corso di Basi di Dati e Laboratorio
ApacheAlfio Ferrara - Stefano Montanelli
A.A. 2005/2006 Basi di Dati e Laboratorio 2
Apache
• Server Web open source• Il progetto ha origine nel 1995• Apache ha un’architettura modulare e
altamente configurabile• http://www.apache.org
A.A. 2005/2006 Basi di Dati e Laboratorio 3
Diffusione sul mercatoDicembre 2005 - http://news.netcraft.com
MICROSOFT
20.92 %(15.557.786)
ZEUSJAVAAPACHE
0.79 % (577.384 )
2.53 % (1.881.861)
69.97 % (52.025.380)
2
A.A. 2005/2006 Basi di Dati e Laboratorio 4
Architettura
• Componenti principali– Inizializzazione e configurazione– Parser delle richieste HTTP– Allocazione della memoria
• Moduli– Autentificazione e sicurezza– Redirezione– Estensioni (supporto ai linguaggi di scripting)
A.A. 2005/2006 Basi di Dati e Laboratorio 5
Installazione
• In breve…– $ ./configure --prefix=PREFIX– $ make– $ make install– $ PREFIX/bin/apachectl start
• Due opzioni importanti:– Perl 5 è richiesto per l’esecuzione di diversi
script (apxs). È consigliata l’opzione --with-perl– DSO per il supporto al caricamento dinamico
dei moduli
A.A. 2005/2006 Basi di Dati e Laboratorio 6
Avvio del server
• Il server viene avviato sulla porta specificata (assieme alle altre opzioni di configurazione) nel file httpd.conf
• In ambiente UNIX Apache può essere avviato tramite inetd oppure:– /usr/local/apache/bin/httpd, oppure
attraverso lo script apachectl• In ambiente Windows l’avvio è analogo a
quello degli altri servizi NT
3
A.A. 2005/2006 Basi di Dati e Laboratorio 7
Configurazione
• Avviene editando il file httpd.conf• Le opzioni di configurazione sono definite
tramite direttive• Principali elementi della configurazione:
– Variabili d’ambiente– Gestione degli accessi– Comportamento a seguito di specifiche
richieste
A.A. 2005/2006 Basi di Dati e Laboratorio 8
DSO e moduli
• DSO (Dynamic Shared Objects)– Consentono il caricamento dei moduli di Apache a
run-time• Sono supportati tramite il modulo mod_so.c che
deve essere compilato staticamente con Apache• Il modulo mod_so consente l’uso della direttiva
LoadModule nel file di configurazione per il caricamento dei moduli richiesti
A.A. 2005/2006 Basi di Dati e Laboratorio 9
Apxs
• La gestione dei moduli è stata semplificata attraverso l’utility apxs che permette di generare i DSO
• Vantaggi di DSO:– Flessibilità– Estendibilità (ad esempio l’aggiunta del
modulo di supporto per PHP)• Svantaggi:
– Prestazioni inferiori rispetto alla compilazione statica dei moduli
4
A.A. 2005/2006 Basi di Dati e Laboratorio 10
Moduli
Direttive per la gestione dei moduli:• LoadModule nomemodulo nomefile
– Carica il modulo nomemodulo istituendo un link con il nomefile ad esso associato
• E.g., LoadModule dir_module modules/mod_dir.so
• <IfModule [!]nomemodulo> … </IfModule>– Esegue un’insieme di direttive solo nel caso
che nomemodulo sia caricato (o non caricato)• E.g., <IfModule mod_ssl.c>
Include conf/ssl.conf</IfModule>
A.A. 2005/2006 Basi di Dati e Laboratorio 11
Direttive
• Le direttive istruiscono Apache sulle azioni da intraprendere in risposta ad una richiesta per una specifica risorsa
• Vengono utilizzati dei marcatori per definire lo scope di una direttiva
• Esempi di direttive:
– <Directory>– <DirectoryMatch>– <Files>– <FilesMatch>– <Location>– <LocationMatch>– <VirtualHost>
A.A. 2005/2006 Basi di Dati e Laboratorio 12
Direttive
• <Directory dirpath> … </Directory>– Specifica un insieme di direttive da applicare alla cartella indicata
in dirpath e alle sottocartelle in essa contenute• E.g., <Directory “/var/www/site/unimi/">
Allow from dico.unimi.itOptions Indexes
</Directory>
• <DirectoryMatch regexpr> … </ DirectoryMatch>– Specifica un insieme di direttive da applicare alle cartelle che
soddisfano l’espressione regolare regexpr• E.g., <DirectoryMatch “^/www/[0-9]{3}">
Order allow, denyAllow from dico.unimi.it
</DirectoryMatch>
5
A.A. 2005/2006 Basi di Dati e Laboratorio 13
Direttive
• <Files filename> … </Files>– Specifica un insieme di direttive da applicare al file
filename• <FilesMatch regexpr> … </FilesMatch>
– Specifica un insieme di direttive da applicare ai filesche soddisfano l’espressione regolare regexpr
• <Location url> … </Location>– Specifica un insieme di direttive da applicare alle
risorse specificate in url• <LocationMatch regexpr> … </LocationMatch>
– Specifica un insieme di direttive da applicare alle risorse che soddisfano l’espressione regolare regexpr
A.A. 2005/2006 Basi di Dati e Laboratorio 14
Direttive
• <VirtualHost addr[:port]> … </ VirtualHost>– Configura un host-virtuale
• E.g., <VirtualHost 192.168.0.7:8081>
ServerAdmin [email protected] “C:/docs”ServerName webdico:8081
</VirtualHost>
A.A. 2005/2006 Basi di Dati e Laboratorio 15
Variabili d’ambiente
• Sono utilizzate dal server per registrare informazioni e per condividerle con altre applicazioni (ad esempio con applicazioni CGI)
• Le principali direttive per manipolare le variabili d’ambiente sono:
– BrowserMatch– PassEnv– RewriteRule– SetEnv– SetEnvIf– UnsetEnv
6
A.A. 2005/2006 Basi di Dati e Laboratorio 16
BrowserMatch
• BrowserMatch riconosce il client che effettua la chiamata sulla base del campo user-agent della richiesta HTTP– BrowserMatch “Mozilla/2 nokeepalive”– BrowserMatch “RealPlayer 4\.0”
force-response-1.0
A.A. 2005/2006 Basi di Dati e Laboratorio 17
PassEnv, SetEnv, e UnSetEnv
• PassEnv passa ad uno script CGI il valore di una delle variabili d’ambiente– PassEnv SPECIAL_PATH
• SetEnv definisce il valore di assegnazione di una variabile d’ambiente– SetEnv SPECIAL_PATH /bin
• UnSetEnv rimuove una variabile di ambiente: – UnSetEnv SPECIAL_PATH
A.A. 2005/2006 Basi di Dati e Laboratorio 18
SetEnvIf
• SetEnvIf definisce il valore di una variabile sulla base degli attributi della richiesta HTTP:– Remote_Host– Remote_Addr– Server_Addr– Request_Method– Request_Protocol– Request_URI
7
A.A. 2005/2006 Basi di Dati e Laboratorio 19
Esempio
• SetEnvIf Request_URI ^/manual/(de|en|it)/ prefLang=$1• SetEnvIf Request_URI "\.gif$" object_is_image=gif• SetEnvIf Request_URI "\.jpg$" object_is_image=jpg• SetEnvIf Request_URI "\.xbm$" object_is_image=xbm
• Il valore delle variabili prefLang e object_is_image viene definito sulla base della risorsa richiesta tramite HTTP
A.A. 2005/2006 Basi di Dati e Laboratorio 20
Controllo dell’accesso
• L’accesso alle risorse viene definito sulla base di tre principali criteri:– Authorization– Authentication– Access control
A.A. 2005/2006 Basi di Dati e Laboratorio 21
Criteri di accesso
• Authentication– Verifica dell’identità del richiedente
• Authorization– Verifica dei permessi associati ad un utente
autenticato• Access control
– Definizione di criteri di accesso generici (ad esempio sulla base dell’IP di provenienza della richiesta)
8
A.A. 2005/2006 Basi di Dati e Laboratorio 22
Autenticazione
• Meccanismo base per l’autenticazione:– Il server riceve una richiesta per una risorsa
protetta– Invia una risposta con header 401
(Authentication required)– Il browser si occupa di chiedere all’utente i dati
di autentifica e di memorizzarli per le successive transazioni
A.A. 2005/2006 Basi di Dati e Laboratorio 23
Protezione delle risorse
• Per creare un semplice meccanismo di protezione delle risorse occorre:– Creare un file contenente una password– Definire una configurazione che utilizzi la
password definita
A.A. 2005/2006 Basi di Dati e Laboratorio 24
Creazione di una password
• htpasswd -c /percorso_accessibile_ad_apache/file username
• La password viene crittata e associata ad uno o più utenti attraverso una direttiva
• La direttiva specifica la directory o la risorsa a cui si applica la restrizione d’accesso
9
A.A. 2005/2006 Basi di Dati e Laboratorio 25
Direttiva
• La direttiva (directory) che specifica l’accesso per una data cartella è composta dagli elementi seguenti:– AuthType - tipo di identificazione (basic)– AuthName - nome dell’autentificazione– AuthUserFile - locazione del file delle
password– AuthGroupFile - file delle password di un
gruppo– Require - caratteristiche richieste per
l’autentificazione
A.A. 2005/2006 Basi di Dati e Laboratorio 26
Esempio
• AuthType Basic• AuthName ”Area ristretta"• AuthUserFile /usr/…passwords• Require user tizio caio
• Per applicare un’autentifica ad un ramo del file system visibile al server Web senza modificarne la configurazione è possibile ricorrere al file .htaccess collocato nella directory protetta e contenente la direttiva
A.A. 2005/2006 Basi di Dati e Laboratorio 27
Controllo dell’accesso
• Le direttive Allow e Deny sono utilizzate per vincolare l’accesso sulla base delle caratteristiche della richiesta
• Esempi:– deny from 159.149– deny from www.dominio.esempio– deny from .com– allow from 127.0.0.1– allow from islab.dico.unimi.it– allow from unimi.it
10
A.A. 2005/2006 Basi di Dati e Laboratorio 28
Combinare le direttive
• L’istruzione order permette di definire un ordine di precedenza nell’esaudire le direttive specificate
• Esempio:– Order Deny,Allow
Deny from allAllow from 127.0.0.1
• Consente solo un accesso locale
A.A. 2005/2006 Basi di Dati e Laboratorio 29
Completezza
• La direttiva satisfy permette di stabilire se tutte le restrizioni (all) o solo alcune (any) devono essere rispettate
• Esempio:– <Directory /usr/local/apache/htdocs/commerce>– AuthType Basic– AuthName intranet– AuthUserFile /www/passwd/users– Require user customer– Allow from internal.com– Satisfy any– </Directory>
• Alla cartellla commerce accedono gli utenti in possesso di password o quelli del dominio internal.com