Page suivante - Page précédente - Table des matières

8. Connexion d'un proxy/firewall à un FAI à l'aide d'un modem et de PPP

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.

8.1 Exemple pour Debian 2.1

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.

8.2 Exemple pour Suse 6.1

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

8.3 Exemple pour Slackware 3.6

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.


Page suivante - Page précédente - Table des matières