Installer une Passerelle Linux Debian (avec FreeBox)
debian

Ce manuel décrit comment configurer correctement une machine dotée de deux cartes réseau et possédant une installation de Linux Debian (noyau 2.4 minimum) pour faire office de passerelle qui partage une connexion internet ADSL, grâce à un boitier de type FreeBox en ethernet.

Plan de ce document :

  1. Installation de la passerelle
  2. Configuration de la passerelle sur le réseau
  3. Configuration du serveur dhcp
  4. Installation de la FreeBox sur eth1
  5. Configuration d'iptables pour partager la connexion internet
  6. Entretien quotidien

Installation de la passerelle :

Matériel requis :
Un ordinateur doté de deux cartes réseau, l'une pour le réseau local et une autre pour l'accès internet. L'ordinateur utilisé pour cet article est un Dell Optiplex GX1 PII350 avec 192Mo de RAM, un disque dur Western Digital 20Go, un chipset réseau intégré et une carte réseau PCI 3com 3C905B. Un lecteur CD-Rom pour installer Linux (Il est aussi possible de faire une installation par le réseau mais cette technique n'est pas abordée ici).

Procurez-vous un CD-Rom de la distribution Linux Debian. La description de l'installation a été faite avec une Debian 3.0 r1.
Insérez le CD-Rom dans le lecteur et redémarrez avec celui-ci. A l'invite de Linux, tapez bf24 pour installer Linux avec le noyau 2.4 et non 2.2. Le noyau 2.4 contient en effet iptables qui permet de facilement faire du NAT pour le partage de connexion et du firewalling. L'installation de Linux démarre.

1 - Choix du clavier et de la langue

Commencez-par demander une installation en Français, et choisissez le clavier adequat.

2 - Partitionnement du disque dur

Pour installer Linux sur votre future passerelle, votre disque dur doit comporter obligatoirement deux partitions :

  1. Linux Swap : de 128Mo par exemple, pour la mémoire virtuelle. La taille dépend de votre mémoire système et de votre utilisation. (hda1)
  2. / : du reste de la place disponible, sur lequel le système de base sera installé (hda2)

L'utilitaire de partitionnement du disque est assez clair.

3 - Installation du noyau
a - Configurer les modules des pilotes matériel

La passerelle comporte deux cartes réseau, une pour le réseau local, une seconde pour la Freebox (Ethernet). Il faut donc s'assurer que les pilotes sont correctement installés dans le noyau.
Pour une 3com 3C905B il faut par exemple ajouter le pilote kernel/drivers/net -> 3c59x. Validez une fois ceci terminé.

b - Configurer le réseau

Configurez les choses suivantes :

  1. nom de machine (triforce)
  2. interface à utiliser pour une installation réseau (eth0/eth1 : interface sur laquelle est branché le modem)
  3. DHCP automatique (non)
  4. adresse IP (192.168.0.1)
  5. masque (255.255.255.0)
  6. passerelle (192.168.0.1)
  7. nom de réseau (monrezolocal)
  8. adresses des serveurs DNS (adresses fournies par votre FAI, deux en général)
4 - Installation du système de base

Patientez...

5 - Rendre le système amorçable
6 - Créer une disquette de boot
7 - Rebooter

A ce stade, nous allons devoir installer tous les programmes nécessaires au bon fonctionnement de la passerelle.

8 - Installation des logiciels
a - Réglage des paramètres régionaux
b - Sécurité des mots de passe
c - Remove PCMCIA packages

En effet, notre passerelle n'est pas un ordinateur portable donc normalement nous pouvons retirer le package PCMCIA du noyau.

d - Sources apt d'installation du système
e - Tasksel

Lancez Tasksel et sélectionnez les packages suivants :

Ne lancez pas dselect ensuite. A partir de la, apt va installer les softs. Il est possible que vous ayez le message d'erreur Kernel Failure Info. ce n'est pas grave, continuez en l'ignorant et sans essayer de recommencer l'installation.

Configuration des daemons :
  1. ssh (allow ssh2 only (yes) run the server (yes))
  2. psfont manager (postscript printer (no) papersize (a4))
  3. cvs (/var/libs/cvs)
  4. diald (use the standard default ip address)
  5. fetchmail (no)
  6. isdn (passez cela)
  7. samba
  8. wwwoffle
  9. Xfree-86
  10. leaf-node (client newsgroup)
Configuration de la passerelle sur le réseau :

Notre réseau local utilise une classe d'adresse réservée aux réseaux privés de classe C : 192.168.0.x. La passerelle possède deux cartes réseau :

Dans le fichier de configuration suivant, commentez (avec #) et décommentez les section en fonction des services que votre passerelle offrira.

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
 		auto lo
 		iface lo inet loopback
# eth0 (lan) : la carte réseau eth0 est branchée sur le LAN
# on attribue une adresse statique à la passerelle sur le lan auto eth0 iface eth0 inet static address 192.168.0.1 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255
# eth1 (internet) : la carte eth1 est branchée au modem adsl
# les lignes suivantes spécifient que l'adressage est dynamique (dhcp du FAI) auto eth1 iface eth1 inet dhcp

Configuration du serveur dhcp :

Le serveur DHCP de la passerelle permettra d'attribuer automatiquement aux machines du réseau une adresse IP faisant partie de 192.168.0.X. La règle d'adressage est la suivante : certaines machines sont enregistrées (grâce à leur adresse MAC) et auront toujours la même adresse IP, les autres auront une adresse IP attribuée dynbamiquement, entre 192.168.0.100 et 192.168.0.200. Tout ceci est défini dans le fichier dhcpd.conf :

# Fichier de configuration du serveur DHCP Debian GNU/Linux
# Consultez "man dhcpd.conf" pour avoir toutes les informations sur les options   	  

# DEBUT des options GLOBALES
# Les options globales s'appliqueront par défaut à tous les sous-réseaux
# Nom de domaine du réseau local option domain-name "xxl"; # Adresses des serveurs DNS (séparées par une virgule) option domain-name-servers 212.27.32.176,212.27.32.177; # Durée du bail en secondes default-lease-time 6000; max-lease-time 6000; # Le serveur DHCP est autoritaire pour les sous-réseaux déclarés ci-dessous authoritative; # FIN des options GLOBALES # DEBUT de la déclaration des sous-réseaux et des machines # Déclaration du sous-réseau 192.168.0.0/255.255.255.0 subnet 192.168.0.0 netmask 255.255.255.0 { # Plage d'adresses à attribuer pour les machines non déclarées range 192.168.0.100 192.168.0.200; # Adresse du routeur option routers 192.168.0.1; } # Déclaration de la machine "clarkwan" # La déclaration d'une machine permet de lui attribuer une adresse IP fixe host clarkwan { # Adresse MAC de la machine hardware ethernet 00:50:8D:A6:4C:3D; # Adresse IP à attribuer fixed-address 192.168.0.3; } # Déclaration de la machine "panini" # La déclaration d'une machine permet de lui attribuer une adresse IP fixe host panini { # Adresse MAC de la machine hardware ethernet 00:50:BF:61:A1:FF; # Adresse IP à attribuer fixed-address 192.168.0.2; } # FIN de la déclaration des sous-réseaux et des machines

Installation de la FreeBox sur eth1 :

La FreeBox ne nécessite aucun driver spécifique pour fonctionner. De plus, elle s'identifie et se connecte toute seule au réseau. Il suffit donc de la brancher sur la carte réseau eth1 de la machine et de la brancher sur la prise téléphonique.

Configuration d'iptables pour partager la connexion internet :

iptables remplit deux fonctions :

les règles de décision d'iptables sont définies dans un script qui est lancé au démarrage de la passerelle, grâce à un lien symbolique dans init.d.

#!/bin/sh
# Script "iptables.sh"
# Fichier contenant les règles de filtrage "iptables"
# Debian GNU/Linux
 	    	  

# REMISE à ZERO des règles de filtrage
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# DEBUT des règles de FIREWALLING
# DEBUT des politiques par défaut
# Je veux que les connexions entrantes soient bloquées par défaut
# Je veux que les connexions destinées à être forwardées soient acceptées par défaut
# Je veux que les connexions sortantes soient acceptées par défaut
# FIN des politiques par défaut

# J'accepte les packets entrants relatifs à des connexions déjà établies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# J'autorise les connexions TCP entrantes sur les ports 20 et 21
# (pour que mon serveur FTP soit joignable de l'extérieur)
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# J'autorise les connexions TCP entrantes sur le port 22
# (pour que mon serveur SSH soit joignable de l'extérieur)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# J'autorise les connexions TCP entrantes sur le port 25
# (pour que mon serveur de mail soit joignable de l'extérieur)
iptables -A INPUT -p tcp --dport 25 -j ACCEPT

# connexion au port 4662 pour E-Mule
iptables -A INPUT -p tcp --dport 4662 -j ACCEPT

# J'autorise les connexions TCP et UDP entrantes sur le port 53
# (pour que mon serveur DNS soit joignable de l'extérieur)
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

# J'autorise les connexions TCP entrantes sur le port 80
# (pour que mon serveur HTTP soit joignable de l'extérieur)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# J'autorise les connexions TCP et UDP entrantes sur le port 139
# mais uniquement sur l'interface "eth1"
# (pour que mon serveur Samba soit joignable depuis mon LAN seulement)
iptables -A INPUT -p tcp --dport 139 -i eth0 -j ACCEPT
iptables -A INPUT -p udp --dport 139 -i eth0 -j ACCEPT

# J'autorise les connexions UDP entrantes sur le port 177
# (pour que des clients puissent se connecter à mon système par XDMCP)
#iptables -A INPUT -p udp --dport 177 -j ACCEPT

# J'autorise les connexions TCP entrantes sur le port 6001
# (pour que je puisse me connecter par XDMCP à une machine distante)
#iptables -A INPUT -p tcp --dport 6001 -j ACCEPT

# J'autorise les connexions TCP entrantes sur le port 2401
# (pour permettre l'accès au CVS à des utilisateurs qui n'ont
# pas de compte sur le système via le "pserver")
#iptables -A INPUT -p tcp --dport 2401 -j ACCEPT

# J'autorise les flux UDP entrants sur le port 1234
# (pour pourvoir reçevoir les flux VideoLAN)
#iptables -A INPUT -p udp --dport 1234 -j ACCEPT

# J'autorise les flux UDP envoyés sur l'adresse multicast 224.2.127.254
# et dont le port destination est 9875 (pour reçevoir les annonces SAP)
#iptables -A INPUT -p udp -d 224.2.127.254 --dport 9875 -j ACCEPT

# J'autorise les flux TCP et UDP entrants nécessaires au fonctionnement de GnomeMeeting
#iptables -A INPUT -p tcp --dport 30000:33000 -j ACCEPT
#iptables -A INPUT -p tcp --dport 1720 -j ACCEPT
#iptables -A INPUT -p udp --dport 5000:5006 -j ACCEPT

# J'accepte le protocole ICMP (i.e. le "ping")
#iptables -A INPUT -p icmp -j ACCEPT

# J'accepte le protocole IGMP (pour le multicast)
#iptables -A INPUT -p igmp -j ACCEPT

# Pas de filtrage sur l'interface de "loopback"
iptables -A INPUT -i lo -j ACCEPT

# La règle par défaut pour la chaine INPUT devient "REJECT"
# (il n'est pas possible de mettre REJECT comme politique par défaut)
iptables -A INPUT -j REJECT

# FIN des règles FIREWALLING 		
# DEBUT des règles pour le PARTAGE DE CONNEXION (i.e. le NAT)

# Je veux que mon système fasse office de "serveur NAT"
# (Remplaçez "eth1" par votre interface connectée à Internet)
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# FIN des règles pour le PARTAGE DE CONNEXION (i.e. le NAT)
# DEBUT des règles de PORT FORWARDING

# Je veux que les requêtes TCP reçues sur le port 80 soient forwardées
# à la machine dont l'IP est 192.168.0.3 sur son port 80
# (la réponse à la requête sera forwardée au client)
#iptables -t nat -A PREROUTING -p tcp --dport 22 -i ppp0 -j DNAT --to-destination 127.0.0.0:22
#iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ppp0 -j DNAT --to-destination 192.168.0.3:4662
#iptables -t nat -A PREROUTING -p udp --dport 4672 -i ppp0 -j DNAT --to-destination 192.168.0.3:4672

# FIN des règles de PORT FORWARDING

Entretien quotidien :

Pour garder un niveau de sécurité acceptable et maintenir la passerelle, rien ne vaut une mise à jour hebdomadaire voire quotidienne de votre OS. Pour cela, sous Debian, apt est votre ami. Il suffit de lancer les commandes :

apt-get update
apt-get dist-upgrade

pour mettre à jour automatiquement tous les paquets qui ont besoin d'être mis à jour. Aucun redémarrage du système n'est en principe nécessaire à l'issue de cette mise à jour.

Assurez-vous que le fichier sources.list d'apt est correct. Il se trouve dans /etc/apt : le fichier suivant est celui de ma passerelle, qui est en unstable.

#deb cdrom:[Debian GNU/Linux 3.0 r1 _Woody_ - Official i386  	Binary-1 (20021218)] / unstable contrib main non-US/contrib non-US/main
# si vous voulez rester en version "stable"
# deb http://security.debian.org/ stable/updates main
# deb ftp://ftp.minet.net/debian/ stable main non-free contrib
# si vous voulez passez en "unstable"
deb http://security.debian.org/ stable/updates main
deb ftp://ftp.minet.net/debian/ unstable main non-free contrib
# pour avoir gnome 2.2
deb http://ftp.acc.umu.se/mirror/mirrors.evilgeniuses.org.uk/debian/backports/woody/ gnome2.2/