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
EditPreferencesAdvancedProxiesManual 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