Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 395

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>Linux IPCHAINS HOWTO: Sono confuso!  Instradamento, masquerading, portforwarding, ipautofw...</TITLE>
 <LINK HREF="IPCHAINS-HOWTO-4.html" REL=next>
 <LINK HREF="IPCHAINS-HOWTO-2.html" REL=previous>
 <LINK HREF="IPCHAINS-HOWTO.html#toc3" REL=contents>
</HEAD>
<BODY>
<A HREF="IPCHAINS-HOWTO-4.html">Avanti</A>
<A HREF="IPCHAINS-HOWTO-2.html">Indietro</A>
<A HREF="IPCHAINS-HOWTO.html#toc3">Indice</A>
<HR>
<H2><A NAME="s3">3. Sono confuso!  Instradamento, masquerading, portforwarding, ipautofw...</A></H2>

<P>Questo HOWTO &egrave; sul filtraggio dei pacchetti.  Ci&ograve; significa decidere
quando un pacchetto debba o meno avere il permesso di passare.
Comunque, essendo Linux il campo giochi degli hacker, si vorr&agrave;
probabilmente fare qualcosina di pi&ugrave;.
<P>
<P>Un problema &egrave; che lo stesso strumento (``ipchains'') &egrave; usato per
controllare anche il masquerading e il proxy trasparente, sebbene
queste siano concettualmente diverse dal filtraggio dei pacchetti
(l'implementazione corrente di Linux innaturalmente le fonde insieme,
dando l'impressione che siano strettamente collegate).
<P>
<P>Il masquerading e il proxy sono trattati da altri HOWTO, mentre
le caratteristiche auto forwading e port forwarding sono controllate
da altri strumenti, ma poich&eacute; la gente continua a domandarmene,
includer&ograve; un insieme di scenari comuni e indicher&ograve; quando ognuno possa
essere applicato.  I meriti di sicurezza di ciascuna configurazione
non saranno qui discussi. 
<P>
<H2><A NAME="ss3.1">3.1 Le tre linee guida di Rusty al masquerading</A>
</H2>

<P>Si assume che la propria interfaccia <B>esterna</B> si chiami
`ppp0'.  Si usi ifconfig per scoprire qual &egrave; e si aggiusti il tutto a
proprio gusto.
<P>
<BLOCKQUOTE><CODE>
<PRE>
# ipchains -P forward DENY
# ipchains -A forward -i ppp0 -j MASQ
# echo 1 > /proc/sys/net/ipv4/ip_forward
</PRE>
</CODE></BLOCKQUOTE>
<P>
<H2><A NAME="ss3.2">3.2 Promozione gratuita: WatchGuard</A>
</H2>

<P>I firewall si possono anche comprare.  Uno eccellente &egrave; il FireBox
della WatchGuard.  &Egrave; eccellente perch&eacute; mi piace, &egrave; sicuro, &egrave; basato su
Linux e anche perch&eacute; quelli della WatchGuard hanno finanziato il
mantenimento di ipchains e del nuovo codice di firewall (per il 2.4).
In breve, la WatchGuard mi sta pagando da mangiare mentre 
lavoro per voi.  Quindi vi invito a considerare i loro prodotti.
<P>
<A HREF="http://www.watchguard.com">http://www.watchguard.com</A><P>
<H2><A NAME="ss3.3">3.3 Configurazioni comuni di firewall</A>
</H2>

<P>Supponiamo di amministrare il dominio littlecorp.com.  Si ha una
rete interna e una sola connessione in dialup (PPP) verso Internet
(firewall.littlecorp.com che &egrave; 1.2.3.4).  Si usa Ethernet nella
propria rete locale e la propria macchina personale si chiama
``myhost''.
<P>
<P>Questa sezione illustrer&agrave; diversi arrangiamenti comuni.  Li si legga
attentamente, perch&eacute; sono subdolamente diversi uno dall'altro.
<P>
<H3>Rete privata: proxy tradizionale</H3>

<P>In questo scenario, i pacchetti provenienti dalla rete privata non
traverseranno mai Internet e viceversa.  Gli indirizzi IP della rete
privata dovranno essere assegnati secondo le Address Allocation for
Private Internets RFC1918 (ie. 10.*.*.*, 172.16.*.* o 192.168.*.*). 
<P>
<P>Il solo modo nel quale ci si potr&agrave; mai connettere a Internet &egrave; di
connettersi al firewall, che &egrave; la sola macchina in entrambe le reti
che pu&ograve; uscire dalla rete locale.  Per far questo si pu&ograve; eseguire un
programma (nel firewall) detto proxy (ci sono proxy per FTP, accesso
al web, telnet, RealAudio, Usenet News e altri servizi).  Si veda il
Firewall HOWTO.
<P>
<P>Qualsiasi servizio che si vuole sia accessibile da Internet deve
essere nel firewall (si veda anche 
<A HREF="#limited-services">Servizi interni limitati</A> nel seguito).
<P>
<P>Esempio: Permettere l'accesso web dalla rete privata a Internet
<OL>
<LI> Alla rete privata sono assegnati gli indirizzi 192.168.1.*, e
in particolare a myhost &egrave; assegnato il 192.168.1.100 e all'interfaccia
Ethernet del firewall il 192.168.1.1.
</LI>
<LI> Nel firewall &egrave; installato e configurato un proxy web
(eg. ``squid''), ed &egrave; in funzione sulla porta 8080.
</LI>
<LI> Il Netscape sulla rete privata &egrave; configurato per usare la porta
8080 del firewall come proxy.
</LI>
<LI> Nel rete privata non serve sia configurato il DNS.
</LI>
<LI> Il DNS deve essere configurato sul firewall.
</LI>
<LI> Nella rete privata non dev'essere configurato nessun
instradamento predefinito (gateway).</LI>
</OL>
<P>
<P>Netscape su myhost legge http://slashdot.org.
<OL>
<LI> Netscape si connette alla porta 8080 del firewall usando la
porta 1050 su myhost.  Chiede la pagina web di ``http://slashdot.org''.
</LI>
<LI> Il proxy cerca il nome ``slashdot.org'' e ottiene
207.218.152.131.  Apre una connessione con quell'indirizzo IP (usando
la porta 1025 sull'interfaccia esterna del firewall) e chiede al
server web (porta 80) la pagina web.
</LI>
<LI> Come il proxy riceve la pagina web dalla sua connessione con il
server web, copia i dati nella connessione del Netscape.
</LI>
<LI> Netscape mostra la pagina.</LI>
</OL>
<P>Dal punto di vista di slashdot.org, la connessione &egrave; fatta dalla porta
1025 di 1.2.3.4 (l'interfaccia PPP del firewall) verso la porta 80 di
207.218.152.131 (slashdot.org).  Dal punto di vista di myhost, &egrave; fatta
dalla porta 1050 di 192.168.1.100 (myhost) verso la porta 8080 di
192.168.1.1 (l'interfaccia Ethernet del firewall).
<P>
<P>
<H3>Rete privata: proxy trasparente</H3>

<P>In questo scenario i pacchetti dalla rete privata non passano mai su
Internet e viceversa.  Gli indirizzi IP della rete privata dovranno
essere assegnati secondo le Address Allocation for Private Internets
RFC1918 (ie. 10.*.*.*, 172.16.*.* o 192.168.*.*).
<P>
<P>Il solo modo nel quale ci si potr&agrave; mai connettere a Internet &egrave; di
connettersi al firewall, che &egrave; la sola macchina in entrambe le reti
che pu&ograve; uscire dalla rete locale.  Per far questo si pu&ograve; eseguire un
programma (nel firewall) detto proxy trasparente; il kernel invia i
pacchetti al proxy trasparente invece di farli uscire
(ie. imbastardisce l'instradamento). 
<P>
<P>Il proxy fatto in modo trasparente significa che ai client non serve
sapere che c'&egrave; un proxy coinvolto.
<P>
<P>Qualsiasi servizio che si vuole sia accessibile da Internet deve
essere nel firewall (si veda anche 
<A HREF="#limited-services">Servizi interni limitati</A> nel seguito).
<P>
<P>Esempio: Permettere l'accesso web dalla rete privata a Internet
<OL>
<LI> Alla rete privata sono assegnati gli indirizzi 192.168.1.*, e
in particolare a myhost &egrave; assegnato il 192.168.1.100 e all'interfaccia
Ethernet del firewall il 192.168.1.1.
</LI>
<LI> Nell firewall &egrave; installato un proxy web trasparente (credo
esistano delle patch per squid per permettergli di funzionare in
questo modo, oppure si usi "transproxy") ed &egrave; in funzione sulla porta
8080. 
</LI>
<LI> Usando ipchains al kernel &egrave; detto di redirigere  al proxy le
connessioni dirette alla porta 80. 
</LI>
<LI> Netscape nella rete privata &egrave; configurato per connettersi
direttamente. 
</LI>
<LI> Nella rete privata dev'essere configurato il DNS (ie. si deve
eseguire anche un server DNS oltre al proxy sul firewall).
</LI>
<LI> Nella rete privata dev'essere configurato l'instradamento
predefinito (gateway), in modo da inviare i pacchetti al firewall.</LI>
</OL>
<P>
<P>Netscape su myhost legge http://slashdot.org.
<OL>
<LI> Netscape cerca il nome "slashdot.org" e ottiene
207.218.152.131.  Allora apre una connessione verso quell'indirizzo
IP usando la porta locale 1050 e chiede la pagina web al server web
(porta 80). 
</LI>
<LI> Come i pacchetti da myhost (porta 1050) verso slashdot.org (porta
80) passano attraverso il firewall, sono rediretti al proxy
trasparente in attesa sulla porta 8080.  Il proxy trasparente apre una
connessione (usando la porta locale 1025) verso la porta 80 di
207.218.152.131 (che &egrave; dove stavano andando i pacchetti originali).
</LI>
<LI> Come il proxy riceve la pagina web dalla sua connessione con il
server web, copia i dati nella connessione del Netscape.
</LI>
<LI> Netscape mostra la pagina.</LI>
</OL>
<P>Dal punto di vista di slashdot.org, la connessione &egrave; fatta dalla
porta 1025 di 1.2.3.4 (l'interfaccia PPP del firewall) verso la porta
80 di 207.218.152.131 (slashdot.org).  Dal punto di vista di myhost, &egrave;
fatta dalla porta 1050 di 192.168.1.100 (myhost) verso la porta 80 di
207.218.152.131, ma in realt&agrave; sta dialogando con il proxy trasparente.
<P>
<H3>Rete privata: masquerading</H3>

<P>In questo scenario i pacchetti dalla rete privata non passano mai su
Internet e viceversa.  Gli indirizzi IP della rete privata dovranno
essere assegnati secondo le Address Allocation for Private Internets
RFC1918 (ie. 10.*.*.*, 172.16.*.* o 192.168.*.*).
<P>
<P>Invece di usare un proxy, usiamo una speciale caratteristica del
kernel detta ``masquerading'' (mascheramento, travestimento).  Il
masquerading riscrive i pacchetti non appena passano per il firewall,
cos&igrave; sembra sempre che provengano dal firewall stesso.  Poi riscrive
le risposte in modo che sembri provengano dalle fonti originali.
<P>
<P>Il masquerading ha moduli separati per gestire protocolli ``banali'',
come FTP, RealAudio, Quake, ecc.  Per protocolli veramenente difficili
da gestire, la funzione di ``auto forwarding'' (inoltro automatico) ne
pu&ograve; gestire alcuni automaticamente impostando il port forwarding per
l'insieme delle porte a loro relative: si veda ``ipportfw'' (kernel
2.0) o ``ipmasqadm'' (kernel 2.1).
<P>
<P>Qualsiasi servizio che si vuole sia accessibile da Internet deve
essere nel firewall (si veda anche 
<A HREF="#limited-services">Servizi interni limitati</A> nel seguito).
<P>
<P>Esempio: Permettere l'accesso web dalla rete privata a Internet
<OL>
<LI> Alla rete privata sono assegnati gli indirizzi 192.168.1.*, e
in particolare a myhost &egrave; assegnato il 192.168.1.100 e all'interfaccia
Ethernet del firewall il 192.168.1.1.
</LI>
<LI> Il firewall &egrave; impostato per ``mascherare'' qualsiasi pacchetto
proveniente dalla rete privata e destinato alla porta 80 di un host
Internet. 
</LI>
<LI> Netscape &egrave; configurato per connettersi direttamente.
</LI>
<LI> Nella rete privata dev'essere configurato correttamente il DNS.
</LI>
<LI> Il firewall dovr&agrave; essere l'instradamento predefinito (gateway)
per la rete privata.</LI>
</OL>
<P>Netscape su myhost legge http://slashdot.org.
<OL>
<LI> Netscape cerca il nome ``slashdot.org'', e ottiene
207.218.152.131.  Allora apre una connessione verso quell'indirizzo
IP usando la porta locale 1050 e chiede la pagina web al server web
(porta 80). 
</LI>
<LI> Come i pacchetti da myhost (porta 1050) verso slashdot.org
(porta 80) passano attraverso il firewall, sono riscritti per apparire
provenienti dall'interfaccia PPP del firewall (porta 65000).   Il
firewall ha un indirizzo Internet valido (1.2.3.4) e quindi i
pacchetti di risposta provenienti da slashdot.org vengono
correttamente instradati indietro.
</LI>
<LI> Come i pacchetti da slashdot.org (port 80) verso
firewall.littlecorp.com (porta 65000) arrivano, sono riscritti per
andare alla porta 1050 di myhost.  Questa &egrave; la vera magia del
masquerading: si ricorda quando riscrive pacchetti uscenti e cos&igrave; pu&ograve;
riscriverli non appena arrivano le risposte.
</LI>
<LI> Netscape mostra la pagina.</LI>
</OL>
<P>Dal punto di vista di slashdot.org, la connessione avviene dalla
porta 65000 di 1.2.3.4 (l'interfaccia PPP del firewall) verso la porta
80 di 207.218.152.131 (slashdot.org).  Dal punto di vista di myhost,
la connessione &egrave; fatta dalla porta 1050 di 192.168.1.100 (myhost),
verso la porta 80 di 207.218.152.131 (slashdot.org).
<P>
<P>
<H3>Rete pubblica</H3>

<P>In questo scenario la propria rete personale &egrave; parte di Internet: i
pacchetti possono fluire senza modifiche tra le due reti.  Gli
indirizzi IP della rete interna devono essere assegnati richiedendo un
blocco di indirizzi IP, in modo che il resto della rete sappia come
raggiungerla.  Ci&ograve; implica una connessione permanente.
<P>
<P>In tal caso, il filtraggio dei pacchetti &egrave; usato per decidere quali
pacchetti possono essere inoltrati tra la propria rete e il resto di
Internet, eg. per restringere il resto di Internet al solo accesso
ai propri server web interni.
<P>
<P>Esempio: Permettere l'accesso web dalla rete privata verso Internet.
<OL>
<LI> Alla propria rete interna &egrave; assegnato un blocco di indirizzi IP
che si &egrave; richiesto (diciamo 1.2.3.*).
</LI>
<LI> Il firewall &egrave; impostato per permettere tutto il traffico.
</LI>
<LI> Netscape &egrave; configurato per connettersi direttamente.
</LI>
<LI> Nella propria rete dev'essere configurato il DNS.
</LI>
<LI> Il firewall dovr&agrave; essere l'instradamento predefinito (gateway)
per la rete privata.</LI>
</OL>
<P>Netscape su myhost legge http://slashdot.org.
<OL>
<LI> Netscape cerca il nome "slashdot.org" e ottiene
207.218.152.131.  Apre poi una connessione verso quel indirizzo IP
usando la porta locale 1050 e chiede la pagina al server web (porta
80). 
</LI>
<LI> I pacchetti passano attraverso il proprio firewall, proprio
come passano attraverso diversi altri router tra myhost e
slashdot.org. 
</LI>
<LI> Netscape mostra la pagina.</LI>
</OL>
<P>C'&egrave; solo una connessione: dalla porta 1050 di 1.2.3.100 (myhost)
verso la porta 80 di 207.218.152.131 (slashdot.org).
<P>
<H3><A NAME="limited-services"></A> Servizi interni limitati</H3>

<P>Ci sono un po' di trucchi che si possono usare per permettere a
Internet di accedere ai propri servizi interni, piuttosto che far
girare i servizi sul firewall.  Funzioneranno solo con un approccio
basato su proxy o masquerading per le connessioni esterne.
<P>
<P>L'approccio pi&ugrave; semplice &egrave; di usare un ``dirottatore'' (redirector)
che altro non &egrave; se non un proxy dei poveri, che attende la connessione
su una data porta e poi apre una connessione a una porta fissa di un
host interno copiando i dati tra le due connessioni.  Un esempio &egrave; il
programma ``redir''.  Dal punto di vista di Internet, la connessione &egrave;
fatta verso firewall.  Dal punto di vista del server interno la
connessione &egrave; fatta dall'interfaccia interna del firewall al server.
<P>
<P>Un altro approccio (che richiede un kernel 2.0 con la patch per
ipportfw, oppure un kernel 2.1 o pi&ugrave; recente) &egrave; di usare il port
forwarding del kernel.  Quest'ultimo fa lo stesso lavoro di ``redir''
ma in modo diverso: il kernel riscrive i pacchetti mentre passano,
cambiando il loro indirizzo di destinazione e la porta per
indirizzarli verso l'host interno e la relativa porta.  Dal punto di
vista di Internet, la connessione &egrave; fatta verso il firewall.  Dal
punto di vista del server interno &egrave; fatta una connessione diretta tra
l'host Internet e il server.
<P>
<H2><A NAME="ss3.4">3.4 Ulteriori informazioni sul masquerading</A>
</H2>

<P>David Ranch ha scritto un eccellente nuovo HOWTO sul masquerading, che
ha parecchi argomenti in comune con questo HOWTO.  Attualmente lo si
pu&ograve; trovare a
<P>
<A HREF="http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html">http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html</A><P>
<P>L'home page ufficiale del Masquerading &egrave; a 
<P>
<A HREF="http://ipmasq.cjb.net">http://ipmasq.cjb.net</A><P>
<P>
<HR>
<A HREF="IPCHAINS-HOWTO-4.html">Avanti</A>
<A HREF="IPCHAINS-HOWTO-2.html">Indietro</A>
<A HREF="IPCHAINS-HOWTO.html#toc3">Indice</A>
</BODY>
</HTML>