Avanti Indietro Indice

8. Connettere un proxy/firewall ad un ISP utilizzando un modem ePPP.

Connettere una rete privata ad Internet con un server dedicato che maneggia i pacchetti indirizzandoli dalla rete locale verso internet e facendo funzioni di proxy/caching è un tema complesso che esula dagli scopi di questo documento. Esistono altri «Howto» che trattano la materia in maniera più dettagliata. Alla fine di questo documento è possibile trovare una lista di link e di riferimenti a tali documenti.

Qui, viene spiegato come configurare solo Diald supponendo che il computer già utilizza IP-Masquerading, possiede un proxy funzionante come Squid o simile, una connessione verso un ISP configurata correttamente e che la sicurezza per l'accesso alle porte TCP/UDP è stata impostata (il file /etc/inetd.conf, o altri come securetty, host.allow, etc).

In linea generale l'unica cosa da fare è riconfigurare le regole per il masquerading/filtering/accessing ogni volta che l'insieme di interfacce cambia, cioè quando l'interfaccia ppp0 viene stabilita e quando viene cancellata. Un buon posto dove farlo sono gli script ip-up e ip-down di pppd.

8.1 Un esempio per Debian 2.1

Con Debian è sufficiente installare il pacchetto ipmasq rispondendo che si vogliono cambiare le regole in modo sincrono con pppd quando lo si attiva. Verranno creati due script detro le directory /etc/ppp/ip-up.d e /etc/ppp/ip-down.d per chiamare /sbin/ipmasq che analizzano l'interfaccia esistente e creano una semplice configurazione che è valida in molti casi e che è personalizzabile utilizzando il file di regole /etc/ipmasq/rules.

Le uniche correzioni dopo l'installazione di questo pacchetto sono quelle di cancellare, quando lo script per ipmasq viene lanciato, il link simbolico da /etc/rcS.d e creandone uno nuovo in /etc/rc2.d in modo che venga lanciato dopo S20diald. Ora, quando ipmasq viene eseguito per analizzare le interfacce, sl0 già esiste. S90ipmasq è un buon nome per il nuovo link simbolico a /etc/init.d/ipmasq.

Se si utilizza Debian non c'è da preoccuparsi della versione del kernel visto che lo script /sbin/ipmasq utilizza ipfwadm o ipchains a seconda delle richieste.

8.2 Esempio per Suse 6.1

Questo esempio è di Mr Cornish Rex, troll@tnet.com.au.

I seguenti comandi per ip-masq e per il controllo dell'instradamento devono essere utilizzati con le versioni 2.2 del kernel perche', utilizzando ipchains, non sono validi per i kernel 2.0.

Stiamo supponendo che l'interfaccia di rete ha come indirizzo ip 192.168.1.1 con netmask di 16 bit e cioe' 255.255.0.0.

Questo è il file /etc/ppp/ip-up:

#!/bin/sh
# $1 = Interface
# $2 = Tty device
# $3 = speed
# $4 = local ip
# $5 = remote ip
# $6 = ipparam
/sbin/ipchains -F input
/sbin/ipchains -P input DENY
/sbin/ipchains -A input -j ACCEPT -i eth0 -s 192.168.0.0/16 -d 0.0.0.0/0
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 0:52 -l
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 54:1023 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 0:112 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 114:1023 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 6000:6010 -l
/sbin/ipchains -A input -j DENY -p icmp --icmp-type echo-request \
-i $1 -s 0.0.0.0/0 -l
/sbin/ipchains -A input -j DENY -p icmp -f -i $1 -s 0.0.0.0/0 -l
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 5555 -l
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 8000 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 8000 -l
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 6667 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 6667 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 4557 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 4559 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 4001 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 2005 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 6711 -l
/sbin/ipchains -A input -j DENY -i $1 -s 192.168.0.0/16 -d 0.0.0.0/0 -l
/sbin/ipchains -A input -j ACCEPT -i $1 -s 0.0.0.0/0 -d $4/32
/sbin/ipchains -A input -j ACCEPT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0
/sbin/ipchains -A input -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 -l

/sbin/ipchains -F output
/sbin/ipchains -P output DENY
/sbin/ipchains -A output -j ACCEPT -i eth0 -s 0.0.0.0/0 -d 192.168.0.0/16
/sbin/ipchains -A output -j DENY -i $1 -s 192.168.0.0/16 -d 0.0.0.0/0 -l
/sbin/ipchains -A output -j ACCEPT -i $1 -s $4/32 -d 0.0.0.0/0
/sbin/ipchains -A output -j ACCEPT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0
/sbin/ipchains -A output -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0

/sbin/ipchains -F forward
/sbin/ipchains -P forward DENY
/sbin/ipchains -M -S 120 120 120
/sbin/ipchains -A forward -j MASQ -s 192.168.1.0/24
/sbin/ipchains -A forward -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0

exit 0

questo è il file /etc/ppp/ip-down:

#!/bin/sh
# $1 = Interface
# $2 = Tty device
# $3 = Speed
# $4 = Local ip
# $5 = Remote ip
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward
/sbin/ipchains-restore < /etc/ppp/orig.chains

L'ultimo file nell'ultimo script, orig.chains, è il file seguente (stato originale di ipchains):

# orig.chains
# created with: ipchains-save > orig.chains
:input ACCEPT
:forward ACCEPT
:output ACCEPT
-A input -s 0.0.0.0/0.0.0.0 -d 192.168.1.1/255.255.255.255
-A output -s 192.168.1.1/255.255.255.255 -d 0.0.0.0/0.0.0.0

8.3 Esempio per Slackware 3.6

Questo esempio è di Hoo Kok Mun, hkmun@pacific.net.sg.

Questo è l'esempio più semplice che ho visto, ma è pienamente funzionale. All'inizio, prim che esista sl0 questo esempio configura il masquerading che non modifica quando viene creata l'interfaccia ppp0. Se servono considerazioni avanzate sulla sicurezza potrebbe risultare un po' limitato.

#/etc/rc.d/rc.local
/sbin/ipfwadm -F -p deny
/sbin/ipfwadm  -F -a m -S 192.168.0.0/24 -D 0.0.0.0/0

Come si può vedere è valido per le versioni 2.0 del kernel.


Avanti Indietro Indice