Apache Parte 2

28
1 WEB SERVER APACHE PARTE 2

Transcript of Apache Parte 2

1

WEB SERVER APACHEPARTE 2

2

Logging

3

Il logging

I logfile permettono di monitorare gli accessi ad un server Web

• Le informazioni che possono essere memorizzate nel logfile sono quelle che viaggiano all’interno dei messaggi di richiesta e risposta che il server scambia con il client usato dagli utenti

• Generalmente i server Web permettono di definire quali campi dei messaggi devono essere memorizzati generando così dei logfile “custom” in modo da soddisfare al meglio le necessità dell’amministratore del sito Web

4

Dati estraibili da un log file

• Orari di maggiore traffico

• Tipologia degli utenti (browser utilizzato,

provenienza geografica)

• Pagine più popolari

• Quali siti fanno riferimento al proprio

• Attenzione: la presenza di proxy intermedi tra client

e server Web può falsare i risultati

5

Utilità dei log file

• Monitorare lo stato del server

• Capacity planning

• Billing

• Attack detection

6

Esempio

•127.0.0.1 - - [14/Oct/2002:18:00:16 +0200] "GET /icons/apache_pb.gif HTTP/1.1" 200 2326 "http://localhost/" "Mozilla/5.0 Galeon/1.2.6 (X11; Linux i686; U;) Gecko/20020913 Debian/1.2.6-2"

•211.97.159.184 - - [14/Oct/2002:16:06:44 +0200] "GET /default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a HTTP/1.0" 400 341 "-" "-"

7

Configurazione di log

Alcuni formati comunemente usati• Common Log Format (CLF)

"%h %l %u %t \"%r\" %>s %b"

• Common Log Format with Virtual Host

"%v %h %l %u %t \"%r\" %>s %b"

• NCSA extended/combined log format"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""

• Referer log format

"%{Referer}i -> %U"

• Agent (Browser) log format

"%{User-agent}i"

8

Configurazione di log (2)

Significato dei campi:

• %v Canonical ServerName of the server serving the request.

• %h remote host

• %l remote log name (ottenuto mediante identd)

• %u remote user

• %t time of request

• \"%r\" prima linea della richiesta

• %>s stato della richiesta (response code)

• %b dimensione della risposta in byte

• \"%{Referer}i\" header “referer” nella richiesta

• \"%{User-Agent}i\" header “user agent” nella richiesta

9

Configurazione di log (3)

Utilizzo di più file di log simultaneamente# CustomLog with format nickname

LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%{User-agent}i" user_agent

CustomLog logs/access_log common

CustomLog logs/ua_log user_agent

Oppure# CustomLog with explicit format string

CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"

CustomLog logs/ua_log "%{User-agent}i"

10

Log analyzer

• Esistono diversi strumenti che permettono di analizzare file di log. Alcuni sono generici, altri si focalizzano sui formati utilizzati dai più diffusi web server.

• Alcuni esempi sono:

– http://awstats.sourceforge.net/

– http://www.mrunix.net/webalizer/

• Per esigenze limitate è possibile anche importare i file di log in programmi per la gestione di fogli di calcolo (es. Calc di OpenOffice)

11

Configurazione di accesso

12

Esempio

• Realizzare un meccanismo di autenticazione e controllo di accesso basato su username e password

• Accessi alla directory “secret” devono essere consentiti solo all'utente “riccardo” autenticato mediante password

htdocs

secret

...

13

Access control lists con password

● AllowOverride (nel file di configurazione)● AuthConfig (posso ridefinire le modalità di accesso)

● Creazione file .htpasswd● htpasswd [-c] <file> <user>

● Nel file .htaccess● AuthType Basic (autenticazione con password)

● AuthName (“realm” di autenticazione)

● AuthUserFile, AuthGroupFile (dove si trovano informazioni per l'autenticazione)

● Require {valid-user | user <user> | group <group>} (criterio di autenticazione)

14

Files .ht

Per i file contenenti le impostazioni di accesso è consigliabile utilizzare un nome che inizi con “.ht” poiché tali file sono protetti per default nel file di configurazione di apache e non sono accessibili ai client che si connettono al server

Nel file httpd.conf infatti troviamo:

<FilesMatch "^\.ht">

Order allow,deny

Deny from all

Satisfy All

</FilesMatch>

15

Esempio

• in httpd.confAllowOverride AuthConfig

• file secret/.htaccess (si crea a mano)

AuthType Basic

AuthName "Test"

AuthUserFile /<prefix>/htdocs/.htpasswd

AuthGroupFile /<prefix>/htdocs/.htgroups

Require group secretGroup

• file .htgroups (si crea a mano)secretGroup: riccardo

• file .htpasswd(si crea col comando htpasswd)

riccardo:hLmwBbd3GiEsA

htdocs

secret

.htaccess

.htpasswd

.htgroups

16

Verifica funzionamento autenticazione

Se puntiamo il browser a http:/localhost:8080/secret viene prima richiesta una password

poi si accede alla risorsa protetta

authentication realm

17

Virtual Hosts

18

Virtual hosts

Il file di configurazione si trova nella cartella extra

/prefix/conf/extra/httpd-vhosts.conf

Occorre abilitarlo nel file httpd.conf:

Include conf/extra/httpd-vhosts.conf

<VirtualHost></VirtualHost>● Name-based

● NameVirtualHost● ServerName● ServerAlias

● IP-based● Non serve NameVirtualHost● Necessario in caso di connessioni cifrate

19

Esempio

• Realizzare un meccanismo di virtual hosting con 2 siti

• www.site1.com usa come document root la directory “site1”

• www.site2.com usa come document root la directory “site2”

• Il sistema usa name-based virtual hosting

htdocs

site1

site2

20

Esempio

NameVirtualHost *:8080

<VirtualHost *:8080>

ServerName localhost

</VirtualHost>

<VirtualHost *:8080>

ServerAdmin [email protected]

DocumentRoot htdocs/site1

ServerName www.site1.com

</VirtualHost>

<VirtualHost *:8080>

ServerAdmin [email protected]

DocumentRoot htdocs/site2

ServerName www.site2.com

ErrorLog logs/site2_error.log

CustomLog logs/site2_access.log combined

</VirtualHost>

21

Verifica del funzionamento

• Con nc (o telnet) ci interfacciamo direttamente al protcollo HTTP

• Richiediamo prima www.site1.com

• Poi www.site2.com

• Formato di una richiesta HTTP

GET <PATH> HTTP/1.1

Host: <host>

• Nel nostro caso:

– <PATH>=/

– <host>=www.site1.com

– oppure <host>=www.site2.com

22

Verifica del funzionamento

$ nc localhost 8080GET / HTTP/1.1

Host: www.site1.com

HTTP/1.1 200 OK

Date: Thu, 05 May 2005 20:45:23 GMT

Server: Apache/2.0.53 (Unix) mod_ssl/2.0.53 OpenSSL/0.9.7e PHP/4.3.10 mod_jk2/2.0.4

Last-Modified: Sat, 30 Apr 2005 10:32:39 GMT

ETag: "394946-61-e8efffc0"

Accept-Ranges: bytes

Content-Length: 97

Content-Type: text/html

<html>

<head><title>Site1 Home Page</title></head>

<body><h1>Site 1 content</h1></body>

</html>

Mi collego a localhost

Chiedo le risorse di www.site1.com

Risposta positiva

La pagina Web ritornata

23

Verifica del funzionamento

Se abbiamo i privilegi di root possiamo verificare il funzionamento nel modo seguente:

• Modifichiamo il file /etc/hosts del sistema inserendo il nome del virtual host associato all'indirizzo locale

• Ci connettiamo mediante il browser

Se il virtual host utilizza un alias dovremo inserire pure quello nel file degli hosts

24

Server Side Includes

25

Server Side Includes: cosa sono?

• Sono direttive (directives) da aggiungere all'interno delle pagine html

• Vengono valutate dinamicamente dal server ogni volta che la pagina dev'essere servita

• Permettono di inserire parti di pagina generate dinamicamente, senza la necessità di far elaborare l'intera pagina ad un programma CGI

Occorre valutare attentamente l'approccio SSI sia quello più adatto. Se la maggior parte della pagina è costituita da contenuto generato dinamicamente è consigliabile sfruttare un'altra tecnologia

26

Come si usano

• Per prima cosa occorre aggiungere l'opzione Includes nelle impostazioni di configurazione

Options Includes

• Bisogna specificare quali sono i file da valutare

AddType text/html .shtml

AddOutputFilter INCLUDES .shtml

Oppure

XBitHack on

Nel primo caso verranno valutati tutti i file con estensione shtml, nel secondo tutti quelli eseguibili (cioè col bit X della tripletta rwx)

27

Cosa permettono di fare

Le funzioni a disposizione sono molte. Alcune delle più diffuse sono:

• Inserire la data odierna

– <!--#echo var="DATE_LOCAL" -->

• Inserire la data di ultima modifica del file

– <!--#flastmod file="index.html" -->

• Aggiungere uno standard footer

– <!--#include virtual="/footer.html" -->

28

Un esempio avanzato

Per esigenze più avanzate è possibile utilizzare variabili e condizioni. Ecco un esempio.

• Aggiungere nel file di configurazione:

BrowserMatchNoCase MSIE InternetExplorer

• Inseriamo nella pagina:

<!--#if expr="${InternetExplorer}" -->

Stai usando IE, ti consiglio di passare ad un altro browser il prima possibile.

<!--#else -->

Non so che browser tu stia usando, ma il fatto che non sia IE è già qualcosa ;)

<!--#endif -->