Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https

of 45 /45

Embed Size (px)

description

Master: Amministratore Linux - Livello Avanzato Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato. Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA. I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno. Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin

Transcript of Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https

  • 1. ArgomentiApache httpdDirectory importantiFile di configurazionePermessi daccessoVirtual HostModuli ed estensioniSSL e httpsPHPPercorso 7Apache HTTP2

2. httpd.apache.orgPercorso 7Apache HTTP3 3. Diffusione dei web serverPercorso 7Apache HTTP4 4. Il lavoro del server httpRimani in attesa (LISTEN) di una richiesta httpAnalizza la richiestaEstrae cookie e parametri[statica] Restituisce il file[dinamica] Attiva lapplication serverCompone la rispostaInvia la rispostaChiude la connessione e dimentica tuttoPercorso 7Apache HTTP5 5. Orientarsi in ApacheDocumentRootModuliConfigurazioneLogsAvvio processoPosizione dei filePercorso 7Apache HTTP6sudo apt-get install apache2 6. DocumentRoot, URL, FileDocumentRoot :la cartella nella quale sono salvati i file statici distribuiti via http, o gli script dinamici attivati via httpCorrisponde alla radice del sito web: /Esempio: http://my.example.com/info/contact.html viene mappato su {WebRoot}/info/contact.htmlURL MappingURL RewritingPercorso 7Apache HTTP7 7. ModuliLa funzionalit http base insita nel server (core)Molte funzionalit aggiuntive sono disponibili sotto forma di moduli (~100) che possono essere installati, configurati e attivatiOgni modulo si inserisce nella catena di elaborazione della richiestaAttivi su specifici tipi di file, o cartelle, o richieste, o fasi della risposta (hook)Esistono moduli di terze parti (es. mod_php).Percorso 7Apache HTTP8 8. Moduli installatiPercorso 7Apache HTTP9 9. Configurazione/etc/apache2/apache2.confFile da esso inclusiIl file diviso in sezioni Ogni sezione contiene una serie di direttive Parametro = ValoreDirettive interpretate sia dal server http, sia dai moduli di estensione caricatiPercorso 7Apache HTTP10 10. Log/var/log/apache2/Access logError logRotazione dei logPercorso 7Apache HTTP11 11. Gestione dei processi httpd$ sudo /etc/init.d/apache2 start$ sudo /etc/init.d/apache2 stop$ sudo /etc/init.d/apache2 restart$ sudo /etc/init.d/apache2 reload$ /etc/init.d/apache2 status$ sudo service apache2 start$ sudo service apache2 stop$ sudo service apache2 restart$ sudo service apache2 reload$ service apache2 statusPercorso 7Apache HTTP12 12. Posizione dei fileVariabilePosizioneServerRoot/etc/apache2Configurazione/etc/apache2Log/var/log/apache2Sito principalesites-enabled/000-default.confDocumentRoot/var/www/htmlModuli/usr/lib/apache2/modulesVariabili dambiente/etc/apache2/envvarsPID file/var/run/apache2/apache2.pidPercorso 7Apache HTTP13 13. Posizione dei fileVariabilePosizioneServerRoot/etc/apache2Configurazione/etc/apache2Log/var/log/apache2Sito principalesites-enabled/000-default.confDocumentRoot/var/www/htmlModuli/usr/lib/apache2/modulesVariabili dambiente/etc/apache2/envvarsPID file/var/run/apache2/apache2.pidPercorso 7Apache HTTP14 14. Percorso 7Apache HTTP15https://help.ubuntu.com/14.04/serverguide/httpd.html 15. Attivazione/disattivazione funzionalitUbuntu ha previsto diverse configurazionienabled: attualmente attiveAvailable: pronte per essere attivate (e configurate)Scripts: a2{en|dis}{mod|conf|site}Percorso 7Apache HTTP16 16. Creare pagine HTMLAggiungere file in DocumentRoot/var/www/htmlIl processo apache2 gira come utente www- dataFile HTML leggibili da questo utentePercorso 7Apache HTTP17 17. EsercizioAprire (e leggere) la pagina web di default installata da UbuntuCreare un file prova.html nella DocumentRoot con del contenuto HTML qualsiasiAprire via browser il file prova.htmlVerificare access log ed error logPercorso 7Apache HTTP18 18. Sintassi apache2.confIl file di default contiene molti commenti esplicativiLordine delle direttive non significativoUna direttiva per riga ( finale unisce righe successive)Direttive case-insensitive, molti argomenti case- sensitiveCommenti: #Percorso 7Apache HTTP19 19. Direttive principali (1)ServerRootDirectory principale per linstallazioneMolti path sono definiti come path relativi alla ServerRootDocumentRootDirectory di default corrispondente alla radice / del sitoPercorso 7Apache HTTP20 20. Direttive principali (2)ListenSpecifica su quali interfacce, indirizzi IP e porte il server rimane in ascoltoSe specifico solo la porta, ascolta su tutti gli indirizzi IP della macchinaPidFileFile contenente il PID del processo apache principaleI diversi thread del server sono processi figli di questo PIDPercorso 7Apache HTTP21 21. Direttive principali (3)DirectoryIndexNome del file da servire se la URI richiesta corrisponde al dome di una directorySolitamente: index.htmlErrorDocumentSpecifica la pagina HTML generata quando si verifica un errore a livello HTTPPu essere un file di testo, un redirect locale o un redirect esternoPercorso 7Apache HTTP22 22. Direttive principali (4)AliasAssocia una URI (o un prefisso di URI) ad una certa directory fisicaAlias /icons/ /usr/local/apache/icons/RedirectSegnala al browser che una determinata URI stata spostata (su questo o su un altro server) (HTTP 301)Redirect /service http://foo2.example.com/servicePercorso 7Apache HTTP23 23. Direttive principali (5)Order/Allow/DenySpecificano i permessi e le restrizioni di accessoOrder: Deny, Allow oppure Order: Allow, DenyDeny ed Allow specificano dei filtri di indirizzi IP, netmaskDeny from allAllow from 192.168.54.*Percorso 7Apache HTTP24 24. Direttive principali (5)Order/Allow/DenySpecificano i permessi e le restrizioni di accessoOrder: Deny, Allow oppure Order: Allow, DenyDeny ed Allow specificano dei filtri di indirizzi IP, netmaskDeny from allAllow from 192.168.54.*Percorso 7Apache HTTP25 25. Direttive principali (6)Options Configura le funzioni aggiuntive disponibili nelle directoryIndexes Se manca DirectoryIndex, genera automaticamente lelenco dei file presentiAddIcon Specifica immagini delle icone per i vari tipi di fileMultiviews Attiva la negoziazione della linguaExecCGI Permette lesecuzione di script CGIIncludes Attiva lelaborazione di Server-Side includes o parsed HTMLPercorso 7Apache HTTP26 26. Sezione Specifica una serie di direttive che si applicano solamente ad un sotto-insieme dellalbero dei fileSpecifica il full path (fisico) a cui si applicaPercorso 7Apache HTTP27 27. Sezione Applica un insieme di directory a tutti i file il cui nome corrispondePercorso 7Apache HTTP28 28. Sezione Applica le direttive quando la URI Richiesta (e non il path fisico) corrispondePercorso 7Apache HTTP29 29. Il file.htaccessOltre alle specifiche date nelle sezioni , ogni directory pu avere un file chiamato .htaccessIl .htaccess pu contenere direttive aggiuntive, che si sovrappongono a quelle dichiarate nei file .confRallenta il server (deve essere letto per ogni richiesta)Percorso 7Apache HTTP30 30. EsercizioCreare un mini-sitoFile HTML accessibili sotto la URL /sito (path fisico /var/www/sito)File immagini accessibili sotto la URL /imgsito (path fisico /var/www/immagini)Percorso 7Apache HTTP31 31. Virtual HostsPi siti web, indipendenti, gestiti sullo stesso serverOgni virtual host ha una configurazione del tutto indipendenteServerName, DocumentRoot, Aliases, log files, etc.http://httpd.apache.org/docs/current/vhosts/Percorso 7Apache HTTP32 32. Virtual HostsApache supporta due tipi di virtual hostName-based virtual hostSeleziona la configurazione virtuale sulla base del nome DNS utilizzato dal clientPermette molti virtual host sullo stesso IP addressNecessario agire sul DNSIP-based virtual hostSeleziona la configurazione virtuale sulla base dellIP address richiestoNecessario che il server abbia pi indirizzi IP, uno per ciascun sitoPercorso 7Apache HTTP33 33. Name-Based Virtual HostServerName seleziona quale virtual host attivareServerAlias pu specificare nomi aggiuntiviDocumentRoot diversaPercorso 7Apache HTTP34 34. IP-Based Virtual HostIndirizzo IP diverso per I diversi hostDirettive diverse per ciascun sitoSaranno necessari comandi Listen per ciascun IPPercorso 7Apache HTTP35 35. Virtual Host su UbuntuPrendere ad esempio il sito 000-default.confCreare un nuovo file .conf per il nostro sito, nella directory -availableAttivare il sito (a2ensite)Percorso 7Apache HTTP36 36. EsercizioCreare due virtual host IP-basedIndirizzo IP della rete Host OnlyPorte di rete diverse (es. 80 ed 81)Definire DocumentRoot distinte e verificare che funzioniRipetere lesercizio con virtual host name-basedOccorrer modificare il file di hosts della macchina client e della macchina serverPercorso 7Apache HTTP37 37. HTTPS e siti web sicuriLa connessione HTTP in chiaroE possibile cifrare con SSL la connessione utilizzando il protocollo HTTPS (porta 443)Gestito dal modulo mod_ssl (nel package apache2-common)Necessario un certificato serverPercorso 7Apache HTTP38 38. Attivazione httpsAttivare il modulo mod_sslsudo a2enmod sslVerificare il sito di prova descritto in /etc/apache2/sites-available/default-ssl.confAttivare il sito https di provasudo a2ensite default-sslsudo service apache2 restartPercorso 7Apache HTTP39 39. Certificati?Il sito default-ssl.conf lavora con certificati self-signedNecessario sostituirli con certificati firmati da unautorit riconosciutaPercorso 7Apache HTTP40 40. Direttive per httpsSSLEngine onSSLCertificateFileCertificato in formato PEMPu contenere la catena di certificazioneSSLCertificateKeyFileContiene la chiave privata del certificatoSe la chiave privata crittografata, sar necessario inserire la passphrase allavvio di apachePercorso 7Apache HTTP41 41. Esempio minimoPercorso 7Apache HTTP42 42. EsercizioAttivare il server HTTPS di defaultAttivare il server HTTPS per almeno uno dei virtual host configurati prima.Percorso 7Apache HTTP43 43. Riferimentihttp://httpd.apache.org/https://help.ubuntu.com/14.04/serverguide/httpd.htmlPercorso 7Apache HTTP44 44. These slides are licensed under a Creative CommonsAttribution Non Commercial Share Alike 4.0 InternationalTo view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/Versione in Italiano:https://creativecommons.org/licenses/by-nc-sa/4.0/deed.it