Apache Parte 2

1,037 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,037
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Apache Parte 2

  1. 1. WEB SERVER APACHE PARTE 2 1
  2. 2. Logging 2
  3. 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 3
  4. 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 4
  5. 5. Utilità dei log file • Monitorare lo stato del server • Capacity planning • Billing • Attack detection 5
  6. 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? NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNN %u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7 801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190 %u00c3%u0003%u8b00%u531b%u53ff %u0078%u0000%u00=a HTTP/1.0" 400 341 "-" "-" 6
  7. 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" 7
  8. 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 8
  9. 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" 9
  10. 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) 10
  11. 11. Configurazione di accesso 11
  12. 12. Esempio • Realizzare un meccanismo di htdocs autenticazione e controllo di accesso basato su username e password secret • Accessi alla directory “secret” devono essere consentiti solo all'utente “riccardo” autenticato mediante password ... 12
  13. 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) 13
  14. 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> 14
  15. 15. Esempio • in httpd.conf htdocs AllowOverride AuthConfig • file secret/.htaccess (si crea a mano) secret AuthType Basic AuthName "Test" AuthUserFile /<prefix>/htdocs/.htpasswd AuthGroupFile /<prefix>/htdocs/.htgroups .htaccess Require group secretGroup • file .htgroups (si crea a mano) secretGroup: riccardo .htpasswd • file .htpasswd (si crea col comando htpasswd) .htgroups riccardo:hLmwBbd3GiEsA 15
  16. 16. Verifica funzionamento autenticazione Se puntiamo il browser a http:/localhost:8080/secret viene prima richiesta una password authentication realm poi si accede alla risorsa protetta 16
  17. 17. Virtual Hosts 17
  18. 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 18
  19. 19. Esempio • Realizzare un meccanismo di htdocs virtual hosting con 2 siti • www.site1.com usa come document root la directory site1 “site1” • www.site2.com usa come document root la directory “site2” site2 • Il sistema usa name-based virtual hosting 19
  20. 20. Esempio NameVirtualHost *:8080 <VirtualHost *:8080> ServerName localhost </VirtualHost> <VirtualHost *:8080> ServerAdmin webmaster@www.site1.com DocumentRoot htdocs/site1 ServerName www.site1.com </VirtualHost> <VirtualHost *:8080> ServerAdmin webmaster@www.site2.com DocumentRoot htdocs/site2 ServerName www.site2.com ErrorLog logs/site2_error.log CustomLog logs/site2_access.log combined </VirtualHost> 20
  21. 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 21
  22. 22. Verifica del funzionamento $ nc localhost 8080 Mi collego a localhost GET / HTTP/1.1 Host: www.site1.com Chiedo le risorse di www.site1.com HTTP/1.1 200 OK Risposta positiva 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 La pagina Web ritornata <html> <head><title>Site1 Home Page</title></head> <body><h1>Site 1 content</h1></body> </html> 22
  23. 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 23
  24. 24. Server Side Includes 24
  25. 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 25
  26. 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) 26
  27. 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" --> 27
  28. 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 --> 28

×