CONFIGURAZIONE DEI SERVIZI
Transcript
CONFIGURAZIONE DEI SERVIZI
Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 Corso ForTIC C2 LEZIONE n. 10 CONFIGURAZIONE DEI SERVIZI (seconda parte) ● ● ● ● WEB SERVER PROXY FIREWALL Strumenti di controllo della rete I contenuti di questo documento, salvo diversa indicazione, sono rilasciati sotto una licenza Creative Commons License. Per prendere visioni dei termini della licenza visitare il sito http://creativecommons.org/licenses/by-nc-sa/2.0/ o richiederne una copia a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA Sandra Farnedi 1/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 I SERVIZI DI RETE (seconda parte) Vediamo altri servizi presenti in ambito TCP/IP, i relativi protocolli, i programmi che li implementano, i servizi corrispondenti e i relativi file di configurazione 1: DESCRIZIONE del servizio PROTOCOLLO di riferimento NOME del servizio DIRECTORY e FILE associati trasferimento di ipertesti HTTP httpd /etc/httpd/conf/httpd.conf /var/www/html /etc/thttpd/thttpd.conf /var/www proxy firewall SNMP thttpd squid iptables /etc/squid/squid.conf 1 I nomi dei servizi e soprattutto i file di configurazione variano al variare della distribuzione ma la loro struttura è standard Sandra Farnedi 2/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 WEB SERVER APACHE ver. 2.0 in ambiente RedHat La gestione dei siti web in ambiente Linux è affidata al demone httpd ed è di solito realizzata tramite il web server Apache. 2. Un web server è un programma che consente di gestire la residenza di siti web visibili da qualunque parte della rete. 3. Il web server Apache, di solito, viene installato insieme al sistema operativo. 4. Le pagine web da rendere disponibili risiedono nella directory /var/www/html, ma è possibile utilizzarne una diversa dichiarandola opportunamente nel file di configurazione. 5. Tutte le opzioni di configurazione sono definite nel file /etc/httpd/conf/httpd.conf che contiene un elevatissimo numero di direttive che consentono la personalizzazione del web server. 6. Le direttive sono organizzate in blocchi che vengono delimitati da un tag di apertura e uno di chiusura con una sintassi simile a quella dei tag HTML. 7. E’ possibile configurare le direttive a livello di singola directory. 8. E' possibile configurare l'accesso ai siti su autorizzazione 9. E’ possibile gestire aree riservate. 10.E’ possibile configurare host virtuali. 1. Sandra Farnedi 3/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 Configurazione base di Apache In generale, il file httpd.conf fornito con l’installazione è già pronto per l’uso, in molti casi è sufficiente togliere il commento (#) ad alcune direttive; in ogni caso, prima di modificare il file di configurazione è opportuno farne una copia. Facendo riferimento al server casa del dominio domus avremo: ServerName casa.domus:80 definisce il nome del server web e la porta di accesso al servizio DocumentRoot “/var/www/html” è la directory in cui si trova la home page del server web precedentemente dichiarato; N.B. il file da visualizzare dovrà chiamarsi index.html Vediamo alcuni esempi di direttive. Direttiva: <Directory …> </Directory> Esempio: <Directory /var/www/html/piani> order deny, allow deny from all allow from 192.168.1 </Directory> consente l’accesso alla directory /var/www/html/piani, ma solo agli utenti che si collegano dalla rete 192.168.1.0/24 e lo nega a tutti gli altri. Sandra Farnedi 4/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 Direttiva: <Location …> </Location> Esempio: <Location /piani.html> order deny, allow deny from all allow from .scuola.it </Location> consente l’accesso al sito http://casa.domus/piani.html, ma solo ai computer appartenenti al dominio scuola.it e lo nega a tutti gli altri. Altri esempi di definizione delle direttive di configurazione del file httpd.conf si trovano all'interno del file stesso. Va sottolineato che le potenzialità del server Apache sono innumerevoli e che in questi appunti si vogliono solo dare indicazioni di base. Per conoscere tutte le potenzialità di Apache, consultare man httpd e collegarsi al sito http://httpd.apache.org/docs-2.0. Un ottimo testo di riferimento: Apache – The Definitive Guide di Ben Laurie e Peter Laurie Ed. O’Reilly . Sandra Farnedi 5/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 Aree riservate Ciascuna directory di un sito può essere resa visibile solo ad utenti autorizzati attivando la direttiva: AccessFileName .htaccess # # The following lines prevent .htaccess and # .htpasswd files from being viewed by Web clients # <Files ~ "^\.ht"> Order allow,deny Deny from all </Files> Il file .htaccess contiene l'elenco degli utenti autorizzati, mentre il file .htpasswd contiene le coppie nome-utente/password generate tramite il comando htpasswd. Esempio: Contenuto del file .htaccess che deve trovarsi nella directory da proteggere: AuthType Basic AuthName "area riservata" AuthUserFile ....../.htpasswd Require user pippo pappo pluto Contenuto del file .htpasswd (che deve trovarsi nella directory indicata nel file .htaccess alla voce AuthUserFile) generato tramite il comando htpasswd: pippo:neJdfuNAt7FtQ pappo:uxwc4mHe4sSWU pluto:uxHen9Izbtzoo Per il funzionamento del comando htpasswd consultare il relativo man. Sandra Farnedi 6/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 Virtual Host I VirtualHost consentono la coesistenza, in un unico server, di più siti web. Questa funzionalità è particolarmente utile ai provider sui cui server risiedono i vari siti dei clienti che utilizzano lo spazio web come se esso si trovasse su macchine fisicamente distinte. Per soddisfare le richieste di apertura di pagine appartenenti a diversi siti fisicamente presenti su un unico sistema, occorre innanzi tutto inserire gli URL di tali pagine fra i nomi degli host nel file di configurazione del DNS master authority per il dominio in questione e associarlo all’indirizzo IP dell’host su cui il sito fisicamente si trova2. In questo modo, la richiesta di apertura della pagina verrà inviata al server che fisicamente la contiene. Per realizzare i VirtualHost su un sistema, è necessario modificare il file httpd.conf attivando l’opzione: NameVirtualHost * e quindi inserire tanti blocchi <VirtualHost> quanti sono i siti da ospitare sul server. 2 In alternativa si possono inserire i nomi dei virtual host e i relativi IP address nel file /etc/hosts Sandra Farnedi 7/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 Esempio: <VirtualHost *> DocumentRoot /var/www/html/sito1 ServerName www.sito1.it </VirtualHost> <VirtualHost *> DocumentRoot /var/www/html/sito2 ServerName www.sito2.it </VirtualHost> In questo caso, da qualunque (*) interfaccia di rete arrivi la richiesta, se al server verrà richiesto il sito http://www.sito1.it si aprirà la pagina /var/www/html/sito1/index.html alla richiesta di visualizzazione del sito http://www.sito2.it si aprirà invece la pagina /var/www/html/sito2/index.html La dichiarativa ServerName è fondamentale poiché la sua presenza fa sì che il sistema che ospita le pagine non vada ad interrogare gli altri DNS per individuare la pagina richiesta, ma visualizzi semplicemente il file index.html presente nella directory dichiarata in DocumentRoot. E’ inoltre opportuno definire un virtual host che risponda alle richieste di siti non ancora definiti, ma residenti su host noti al DNS o presenti nel file /etc/hosts, tramite la direttiva: <VirtualHost _default_:*>...</VirtualHost> N.B. Se il sistema ha un solo indirizzo IP, al posto di * si dovrà utilizzare tale indirizzo e sarà inoltre necessario configurare un virtual host anche per il sito del server principale (quello a cui si fa riferimento con la dichiarativa DocumentRoot di ServerName vedi pag. 3) poiché la presenza di host virtuali che fanno riferimento all’unico indirizzo IP esistente, ne impedisce l’utilizzo per il server principale stesso. Sandra Farnedi 8/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 PROXY SQUID E’ possibile attivare, in ambiente Linux, un proxy che consenta di sfruttare un solo host per i collegamenti ad Internet concedendone l’accesso anche agli altri computer della rete locale. Tornando all’esempio dei due sistemi casa e opensource appartenenti al dominio domus possiamo pensare di connettere casa ad Internet e configurare in tale sistema il proxy SQUID. La configurazione di tale proxy è molto semplice e consiste nella personalizzazione del file /etc/squid/squid.conf in cui, molto spesso, basta togliere il commento (#) per attivare le funzionalità richieste. Sempre facendo riferimento all’esempio precedente, le uniche modifiche da apportare al file sono le seguenti: • nella zona TAG: http_access togliere il commento (#) alla riga http_access deny to_localhost attivare le access list togliendo i commenti e modificando le righe corrispondenti nel modo seguente: acl our_networks src 192.168.1.0/24 http_access allow our_networks leggere i commenti inseriti nel file /etc/squid.conf per conoscere le ulteriori possibilità di restrizione o ampliamento degli accessi • nella zona TAG: visible_hostname inserire la riga seguente: visible_hostname casa.domus Sandra Farnedi 9/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 Completata la configurazione, occorre far ripartire il proxy utilizzando il comando /etc/init.d/squid restart. E’ inoltre necessario configurare il browser del sistema opensource dichiarando l’utilizzo del proxy 192.168.1.1 sulla porta 3128 ovviamente la stessa modifica andrà apportata in tutti i browser di tutti i client della rete locale. In Mozilla (versione inglese) per utilizzare un proxy seguire il percorso EditPreferencesAdvancedProxiesManual proxy configuration nella casella “HTTP proxy” inserire l'IP address del server proxy e come numero di porta inserire 3128 Sandra Farnedi 10/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 PROXY SQUID autorizzazione utenti E’ anche possibile concedere l'accesso ad Internet solo agli utenti autorizzati utilizzando la seguente procedura: 1. cercare3 nel proprio sistema la collocazione del programma ncsa_auth (in ambiente RedHat/Fedora, si trova in /usr/lib/squid ) 2. decidere la collocazione e il nome del file delle password per esempio /etc/squid/password 3. nel file squid.conf, attivare, adattandola alle proprie esigenze, la riga auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/password 4. 5. nel file squid.conf, attivare/inserire la riga acl password proxy_auth REQUIRED TAG: http_access attivare/inserire la riga http_access allow password far ripartire il server squid e, nella zona A questo punto, sui client del proxy, all'apertura del browser si apre una finestra che chiede nome utente e password. Gli utenti autorizzati saranno solo quelli generati tramite il programma htpasswd -c nome-file nome-utente Nel nostro caso potremmo ad esempio utilizzare htpasswd -c /etc/squid/password pippo ci verrà richiesta la password dell'utente pippo che verrà crittografata e inserita, insieme al nome dell'utente stesso, nel file /etc/squid/password 3 La ricerca di un file può essere effettuata col comando whereis seguito dal nome del file da cercare Sandra Farnedi 11/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 FIREWALL NETFILTER (iptables) Il filtraggio dei pacchetti in ambiente LINUX, a partire dal kernel 2.4, avviene tramite il software Netfilter che utilizza il comando iptables. Il comando iptables opera sulle tre “catene” INPUT (pacchetti in arrivo), OUTPUT (pacchetti in uscita), FORWARD (pacchetti che attraversano il sistema per raggiungere una data destinazione) e consente il raggiungimento dei due “target” ACCEPT (accetta i pacchetti), DROP (rifiuta i pacchetti) Il comando iptables, che gestisce il servizio, dispone di varie opzioni fra cui –d che specifica la destinazione, -s che specifica la sorgente e –j che specifica il target. Le opzioni –A e –D, consentono rispettivamente di aggiungere o eliminare regole dalle catene. Esempi: iptables –A INPUT –s 192.168.1.7 –j ACCEPT aggiunge (-A) alla catena INPUT la regola seguente: accetta tutti i pacchetti provenienti (-s) dall’indirizzo 192.168.1.7 iptables –A INPUT –s www.pippo.it –j DROP rifiuta tutti i pacchetti provenienti da www.pippo.it iptables –A OUTPUT –d www.pippo.it –j DROP rifiuta tutti i pacchetti diretti (-d) a www.pippo.it iptables –A INPUT –j ACCEPT !–s 192.168.1.7 accetta tutti i pacchetti tranne quelli provenienti da 192.168.1.7 Sandra Farnedi 12/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 iptables –A INPUT –s 192.168.0.0/24 –j ACCEPT accetta tutti i pacchetti provenienti dalla rete 192.168.0.0 iptables –A INPUT –j DROP –i eth0 -s 192.168.1.7 rifiuta tutte le richieste che arrivano sul dispositivo di input (-i) eth0 dall’indirizzo 192.168.1.7 iptables –A INPUT –d 192.168.1.7 –dport www –j ACCEPT accetta tutti i pacchetti che hanno come destinazione il server web 192.168.1.7 N.B. le regole definite tramite iptables non vengono salvate, ma rimangono attive solo fino allo spegnimento del sistema, si consiglia quindi di inserirle in uno script da lanciarsi alla reinizializzazione del sistema stesso per esempio inserendolo fra gli rc di partenza al livello di init che si desidera. Per conoscere tutte le potenzialità del comando, consultare man iptables Sandra Farnedi 13/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 CONTROLLO DELLA RETE Una volta completata l'attività di configurazione della rete e dei servizi, è necessario controllarne il corrretto funzionamento e questo può essere fatto tramite opportuni comandi che consentono di tracciare il percorso dei pacchetti e capire il motivo di eventuali malfunzionamenti. I comandi più comunemente usati sono: netstat consente il controllo delle porte attraverso cui “passano” i servizi: le opzioni più usate sono -l che fornisce l'elenco delle porte “aperte” -n che visualizza il numero di porta -p che mostra il programma che usa una porta (l'elenco dei servizi si trova nel file /etc/services) host, nslookup e dig seguiti dal nome di un host, forniscono informazioni sull'indirizzo di rete del dominio o dell'host ping seguito da un indirzzo di rete o dal nome di un host è il più semplice comando di controllo della rete: verifica che fra i due sistemi sia semplicemente stabilita una connessione traceroute seguito dal nome di un host, fornisce il percorso completo che i pacchetti effettuano per raggiungere l'host richiesto arp -a mostra l'elenco completo degli indirizzi IP e dei MAC address di tutti gli host della rete (non esce dai router) Per vedere un elenco completo delle opzioni e delle funzionalità offerte da questi comandi, consultare il relativo man Sandra Farnedi 14/15 Corso ForTIC C2 – IPC Falcone Gallarate Anno scolastico 2006/2007 ESERCIZI WEB SERVER 1. Configurare e attivare un webserver basato su thttpd 2. Preparare un semplice file HTML sotto la directory di default 3. Visualizzare da un altro sistema l'ipertesto appena generato 4. Creare sullo stesso sistema due server virtuali di nome www.p1 e www.p2, inserirvi due semplici ipertesti diversi fra loro e provare a visualizzarli. PROXY 5. Configurare il proxy SQUID e accedere ad Internet dopo aver opportunamente configurato il proprio client 6. Disattivare il servizio di proxy senza modificare il client e verificare l’impossibilità di accedere ad Internet 7. Modificare il file di configurazione attivando il controllo sull’autenticazione degli utenti. Il file delle password sia /etc/squid/passwords 8. Creare, tramite il comando htpasswd due utenti autorizzati di nome pippo e pappo con password rispettivamente pluto e paperino 9. Far ripartire il servizio squid 10. Accedere a Internet dal client: vengono richiesti nome utente e password e solo gli utenti pippo e pappo risultano autorizzati Sandra Farnedi 15/15