Questo HOWTO è sul filtraggio dei pacchetti. Ciò significa decidere quando un pacchetto debba avere o meno il permesso di passare. Comunque, essendo Linux il campo giochi degli hacker, si vorrà probabilmente fare qualcosina di più.
Un problema è che lo stesso strumento (``ipchains'') è usato per controllare anche il masquerading e il proxy trasparente, sebbene queste siano nozionalmente diverse dal filtraggio dei pacchetti (l'implementazione corrente di Linux innaturalmente le fonde insieme, dando l'impressione che siano strettamente collegate).
Il masquerading ed il proxy sono trattati da altri HOWTO, mentre le caratteristiche auto forwading e port forwarding sono controllate da altri strumenti, ma poiché la gente continua a domandarmene, includerò un insieme di scenari comuni ed indicherò quando ognuno possa essere applicato. I meriti di sicurezza di ciascuna configurazione non saranno qui discussi.
Si assume che la propria interfaccia esterna si chiami `ppp0'. Si usi ifconfig per scoprire qual'è e si aggiusti il tutto a proprio gusto.
# ipchains -P forward DENY
# ipchains -A forward -i ppp0 -j MASQ
# echo 1 > /proc/sys/net/ipv4/ip_forward
I firewall si possono anche comprare. Uno eccellente è il FireBox della WatchGuard. È eccellente perché mi piace, è sicuro, è basato su Linux e anche perché quelli della WatchGuard sovvenzionano il mantenimento di ipchains e del nuovo codice di firewall (atteso per il 2.3). In breve, la WatchGuard mi sta pagando da mangiare mentre lavoro per voi. Quindi vi invito a considerare i loro prodotti.
Supponiamo che si amministri il dominio littlecorp.com. Si ha una rete interna e una sola connessione in dialup (PPP) verso Internet (firewall.littlecorp.com che è 1.2.3.4). Si usa Ethernet nella propria rete locale e la propria macchina personale si chiama "myhost".
Questa sezione illustrerà diversi arrangiamenti comuni. Li si legga attentamente, perché sono subdolamente diversi uno dall'altro.
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 Private Network Allocations del RFC1597 (ie. 10.*.*.*, 172.16.*.* or 192.168.*.*).
Il solo modo nel quale ci si potrà mai connettere ad Internet è di connettersi al firewall, che è la sola macchina in entrambe le reti che può uscire dalla rete locale. Per far questo si può 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.
Qualsiasi servizio che si vuole sia accessibile da Internet deve essere nel firewall (si veda anche Servizi interni limitati nel seguito).
Esempio: Permettere l'accesso web dalla rete privata ad Internet
Netscape su myhost legge http://slashdot.org.
ie. Dal punto di vista di slashdot.org, la connessione è 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, è fatta dalla porta 1050 di 192.168.1.100 (myhost) verso la porta 8080 di 192.168.1.1 (l'interfaccia Ethernet del firewall).
In questo scenario i pacchetti dalla rete privata non traversano mai Internet e viceversa. Gli indirizzi IP della rete privata dovranno essere assegnati secondo le Private Network Allocations del RFC1597 (ie. 10.*.*.*, 172.16.*.* or 192.168.*.*).
Il solo modo nel quale ci si potrà mai connettere ad Internet è di connettersi al firewall, che è la sola macchina in entrambe le reti che può uscire dalla rete locale. Per far questo si può eseguire un programma (nel firewall) detto proxy trasparente; il kernel invia i pacchetti al proxy trasparente invece di farli uscire (ie. imbastardisce l'instradamento).
Il proxy fatto in modo trasparente significa che ai client non serve sapere che c'è un proxy coinvolto.
Qualsiasi servizio che si vuole sia accessibile da Internet deve essere nel firewall (si veda anche Servizi interni limitati nel seguito).
Esempio: Permettere l'accesso web dalla rete privata ad Internet
Netscape su myhost legge http://slashdot.org.
ie. Dal punto di vista di slashdot.org, la connessione è 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, è fatta dalla porta 1050 di 192.168.1.100 (myhost) verso la porta 80 di 207.218.152.131, ma in realtà sta dialogando con il proxy trasparente.
In questo scenario i pacchetti dalla rete privata non traversano mai Internet e viceversa. Gli indirizzi IP della rete privata dovranno essere assegnati secondo le Private Network Allocations del RFC1597 (ie. 10.*.*.*, 172.16.*.* or 192.168.*.*).
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ì sembra sempre che provengano dal firewall stesso. Poi riscrive le risposte in modo che sembri provengano dalle fonti originali.
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ò 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).
Qualsiasi servizio che si vuole sia accessibile da Internet deve essere nel firewall (si veda anche Servizi interni limitati nel seguito).
Esempio: Permettere l'accesso web dalla rete privata ad Internet
Netscape su myhost legge http://slashdot.org.
ie. 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 è fatta dalla porta 1050 di 192.168.1.100 (myhost), verso la porta 80 di 207.218.152.131 (slashdot.org).
In questo scenario la propria rete personale è 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ò implica una connessione permanente.
In tal caso, il filtraggio dei pacchetti è usato per decidere quali pacchetti possono essere inoltrati tra la propria rete ed il resto di Internet, eg. per restringere il resto di Internet al solo accesso ai propri server web interni.
Esempio: Permettere l'accesso web dalla rete privata verso Internet.
Netscape su myhost legge http://slashdot.org.
ie. C'è solo una connessione: dalla porta 1050 di 1.2.3.100 (myhost) verso la porta 80 di 207.218.152.131 (slashdot.org).
Ci sono un po' di trucchi che si possono usare per permettere ad 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.
L'approccio più semplice è di usare un "dirottatore" che non è altro che un proxy dei poveri, che attenende la connessione su una data porta e poi apre una connessione ad una porta fissa di un host interno copiando i dati tra le due connessioni. Un esempio è il programma "redir". Dal punto di vista di Internet, la connessione è fatta verso firewall. Dal punto di vista del server interno la connessione è fatta dall'interfaccia interna del firewall al server.
Un altro approccio (che richiede un kernel 2.0 con la patch per ipportfw, oppure un kernel 2.1 o più recente) è 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 è fatta verso il firewall. Dal punto di vista del server interno è fatta una connessione diretta tra l'host Internet ed il server.
David Ranch ha scritto un eccellente nuovo HOWTO sul masquerading, che ha parecchi argomenti in comune con questo HOWTO. Attualmente lo si può trovare a
http://www.ecst.csuchico.edu/~dranch/LINUX/index-LINUX.html#ipmasq
Presto mi aspetterei di trovarlo sotto gli patrocinio del Linux Documentation Project, a http://www.metalab.unc.edu/LDP
L'home page ufficiale del Masquerading è a