Apache Parte 2
-
Upload
majong-devjfu -
Category
Technology
-
view
793 -
download
0
Transcript of Apache Parte 2
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)
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
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
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 -->