Laboratorio Di Basi Di Dati 08 Il Web Server Apache

10
1 A.A. 2005/2006 Basi di Dati e Laboratorio 1 Corso di Basi di Dati e Laboratorio Apache Alfio 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 mercato Dicembre 2005 - http://news.netcraft.com MICROSOFT 20.92 % (15.557.786) ZEUS JAVA APACHE 0.79 % (577.384 ) 2.53 % (1.881.861) 69.97 % (52.025.380)

description

 

Transcript of Laboratorio Di Basi Di Dati 08 Il Web Server Apache

Page 1: 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)

Page 2: Laboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache

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

Page 3: Laboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache

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

Page 4: Laboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache

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>

Page 5: Laboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache

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

Page 6: Laboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache

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

Page 7: Laboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache

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)

Page 8: Laboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache

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

Page 9: Laboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache

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

Page 10: Laboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache

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