Connecter un réseau privé à l'Internet avec un serveur dédié qui gère le routage des paquets à partir du réseau local vers l'Internet tout en proposant des services de proxy/cache et la sécurité d'un firewall est un thème complexe qui va au-delà du but de ce document. Il existe d'autres « Howto » qui expliquent ces sujets de manière beaucoup plus compréhensible. Vous trouverez, à la fin de ce document, une liste de liens et de références vers ces documents.
Ici, nous nous contentons de configurer Diald en supposant que l'ordinateur
fait déja du masquage d'adresses IP (IP-Masquerading), dispose d'un proxy
tel que Squid, d'une connexion à un FAI correctement configurée
et que la sécurité des accès aux ports TCP/UDP a été revue (fichiers
/etc/inetd.conf
et autres tels que securetty
,
host.allow
, etc.).
Pour faire simple, il suffit uniquement de reconfigurer les règles pour le
masquage/le filtrage/l'accès, à chaque fois que le jeu d'interfaces change, donc
quand l'interface ppp0 est établie et qu'elle est détruite. De bons endroits pour
faire cela sont les scripts ip-up
et ip-down
de pppd.
Avec Debian il vous suffit d'installer le paquetage ipmasq et de dire, au
moment de la configuration, que vous voulez changer les règles de manière
synchrone à pppd.
Des scripts seront créés dans les répertoires
/etc/ppp/ip-up.d
et /etc/ppp/ip-down.d
pour prendre en charge
le lancement de /sbin/ipmasq
, un script qui analyse les interfaces
existantes et crée une configuration simple qui est valable dans la plupart des
cas ; vous pouvez le personnaliser à l'aide des fichiers de règles de
/etc/ipmasq/rules
.
La seule correction à faire après avoir installé ce paquetage est de modifier le
moment du lancement du script ipmasq en effaçant le lien symbolique contenu
dans le répertoire /etc/rcS.d
et en en créant un nouveau dans
/etc/rc2.d
après S20diald
. À présent, quand ipmasq
est
exécuté pour analyser les interfaces, s10
existe déjà. S90ipmasq
est
un bon nom pour ce lien symbolique qui pointe vers /etc/init.d/ipmasq
.
Le fait d'utiliser Debian vous permet de ne pas avoir à vous soucier de la
version de votre noyau puisque le script /sbin/ipmasq
utilise
ipfwadm
ou ipchains
selon le cas.
Cet exemple nous vient de M. Cornish Rex,
troll@tnet.com.au
.
Les commandes d'ip-masq et du contrôle de routage mises en oeuvre ici sont à employer avec les noyaux version 2.2 qui utilisent ipchains et ne sont pas valides pour les versions 2.0.
Nous allons supposer que l'interface ethernet a l'adresse ip 192.168.1.1 avec un masque réseau de 16 bits, soit 255.255.0.0.
Voici le fichier /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
Voici le fichier /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
Voici le dernier fichier du dernier script, origin.chain
(statut original
d'ipchains) :
# orig.chains
# crée avec : 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
Cet exemple nous a été donné par Hoo Kok Mun,
hkmun@pacific.net.sg
.
C'est l'exemple le plus simple qu'il m'ait été donné de voir mais il est
complètement fonctionnel. Cet exemple nous montre comment
configurer le masquage avant l'existence de l'interface s10
et il ne
change pas quand l'interface ppp0 apparaît. Si vos exigences en matière de
sécurité sont assez élevées, il peut s'avérer limité.
#/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
Comme vous pouvez le voir, il est destiné aux noyaux version 2.0.