Avant tout, apprenons à compiler le paquetage iptables. Il est important de réaliser que la configuration et la compilation d'iptables sont étroitement liées à celles du noyau. Certaines distributions sont fournies avec le paquetage iptables préinstallé, Red Hat en fait partie. Cependant, sous Red Hat, il est désactivé par défaut. Nous montrerons comment l'activer, et nous verrons d'autres distributions au cours de ce chapitre.
Tout d'abord, dépaquetez l'archive d'iptables.
Dans le cas présent, le paquetage iptables 1.2.6a est
utilisé, ainsi que le noyau 2.4 (vanilla). Dépaquetez le de manière
classique, avec la commande
bzip2 -cd iptables-1.2.6a.tar.bz2 | tar -xvf - (ou avec
tar -xjvf iptables-1.2.6a.tar.bz2, qui devrait aboutir
au même résultat ; cependant, ça peut ne pas marcher avec d'anciennes
versions de la commande tar). Cette archive doit être
dépaquetée dans un répertoire appelé
iptables-1.2.6a. N'hésitez pas à lire le
fichier iptables-1.2.6a/INSTALL qui contient
des informations pertinentes sur la compilation et la préparation à
l'exécution du programme.
Ensuite, vous avez la possibilité de configurer et installer les modules et options supplémentaires du noyau. L'étape décrite à présent vérifie et installe les patches standards en attente d'être intégrés au noyau. Il y a d'autres patches encore plus expérimentaux, qui devraient être disponibles seulement après certaines étapes.
|
Note |
|---|---|
|
Certains de ces patches sont particulièrement expérimentaux et les installer pourrait ne pas être une très bonne idée. Pourtant, il y a une quantité de correspondances et de cibles extrèmement intéressantes lors de cette étape d'installation, donc n'ayez pas peur d'y jeter un oeil. |
Pour finaliser cette étape, il suffit d'exécuter ceci à partir de la racine de l'archive d'iptables :
make pending-patches KERNEL_DIR=/usr/src/linux/
La variable KERNEL_DIR devrait pointer sur
l'emplacement des sources du noyau. Normalement, il s'agit de
/usr/src/linux/, mais ça peut changer et vous
connaissez sûrement leur localisation.
On vous interroge seulement sur certains patches qui, de toute façon, sont presque entrés dans le noyau. Il peut y avoir davantage de patches et d'ajouts que les développeurs de Netfilter aimeraient voir ajouter au noyau, mais qui en sont encore un peu éloignés actuellement. Voici une façon de les installer :
make most-of-pom KERNEL_DIR=/usr/src/linux/
La commande précédente vous interroge sur les éléments à installer - ce que
l'on appelle patch-o-matic dans le monde de Netfilter,
mais éviter les patches les plus extrêmes, qui peuvent causer des ravages
dans votre noyau. Observez qu'il est écrit « interroge », parce
que c'est le comportement actuel de ces commandes. Elles vous interrogent
avant de modifier quoi que ce soit dans les sources du noyau. Afin
de forcer l'installation de tous les éléments de
patch-o-matic, vous devez exécuter la commande
suivante :
make patch-o-matic KERNEL_DIR=/usr/src/linux/
N'oubliez pas de lire attentivement l'aide de chaque patch avant de faire
quoi que ce soit. Certains patches en détruisent d'autres, alors que
d'autres encore détruisent votre noyau si vous les associez avec certains
patches de patch-o-matic, etc.
|
Note |
|---|---|
|
Vous pouvez ignorer complètement les étapes précédentes si vous ne
souhaitez pas patcher votre noyau, autrement dit, elles ne sont pas
obligatoires. Toutefois, quelques éléments de
|
Après cela, vous en avez fini avec l'installation des éléments de
patch-o-matic. Vous pouvez maintenant compiler un
nouveau noyau pour vous servir des nouveaux patches que vous avez inclus
dans les sources. N'oubliez pas de reconfigurer le noyau puisque les
nouveaux patches ne font certainement pas partie des options définies.
Vous pouvez procéder à la compilation du noyau après celle du programme
iptables de l'espace utilisateur, si ça vous chante.
Poursuivez en compilant l'application iptables. Pour lancer cette compilation, vous entrez une simple commande comme ceci :
make KERNEL_DIR=/usr/src/linux/
L'application du domaine utilisateur devrait se compiler sans difficulté. Si ce n'est pas le cas, vous êtes face à vous-même, ou vous pouvez vous inscrire à la liste de diffusion de Netfilter , où vous avez la chance de pouvoir demander de l'aide sur vos problèmes. Il y a peu de choses qui peuvent mal tourner dans l'installation d'iptables, donc ne paniquez pas si ça ne fonctionne pas. Soyez logique et découvrez ce qui cloche, ou bien trouvez quelqu'un susceptible de vous aider.
Si tout s'est passé en douceur, vous êtes prêt désormais à installer les fichiers binaires. Pour ce faire, vous devez appliquer la commande suivante :
make install KERNEL_DIR=/usr/src/linux/
Soyons optimiste, tout doit maintenant fonctionner parfaitement dans le
programme. Pour exploiter toute modification de l'application
iptables, vous devez à présent recompiler et
réinstaller vos noyau et modules, si ce n'est pas déjà fait.
Pour approfondir l'installation des applications à partir des sources,
lisez le fichier INSTALL qui accompagne
les sources et contient d'excellentes informations sur le sujet.
Red Hat 7.1 est fournie avec un noyau 2.4.x précompilé avec
Netfilter et iptables.
Il contient aussi tous les programmes élémentaires du domaine utilisateur
et les fichiers de configuration exigés pour l'exécution. Cependant,
l'équipe de Red Hat a désactivé la totalité en optant pour la
rétrocompatibilité avec le module ipchains.
Ennuyé de répéter la même chose, et comme nombre de gens continuent à
demander sur différentes listes de diffusion pourquoi
iptables ne marche pas, abordons rapidement comment
désactiver le module d'ipchains pour le remplacer par
iptables.
|
Note |
|---|---|
|
L'installation par défaut de Red Hat 7.1 donne malheureusement une vieille version des applications de l'espace utilisateur. De fait, vous désirerez certainement compiler une nouvelle version des applications, associée à un noyau récent et personnalisé avant d'exploiter complètement iptables. |
En premier lieu, il faut arrêter le module ipchains
de telle sorte qu'il ne démarre plus à l'avenir. Pour cela, quelques noms
de fichiers doivent être changés dans l'arborescence
/etc/rc.d/. La commande suivante devrait
suffire :
chkconfig --level 0123456 ipchains off
Avec ceci, tous les liens symboliques qui pointent vers le script
/etc/rc.d/init.d/ipchains sont déplacés vers
K92ipchains. La première lettre, S par défaut, indique de lancer le script
de démarrage (« initscript ») correspondant. La conversion du S
en K stipule d'interrompre (« Kill ») le service, ou de ne pas
exécuter le script si le service n'a pas déjà démarré. Dorénavant, le
script ne démarrera plus.
D'autre part, pour arrêter dès maintenant le service en cours d'exécution, il est nécessaire de lancer une autre commande. Il s'agit de la commande service qui permet de manipuler des services en cours d'exécution. Ainsi, pour stopper le service ipchains, il suffit de faire :
service ipchains stop
Enfin, il reste à démarrer le service iptables. Tout d'abord, il faut connaître les niveaux d'exécution (« run-levels ») où l'on veut positionner ce service. Normalement, ça devrait être les niveaux 2, 3 et 5. Ils servent aux choses suivantes :
2. Multi-utilisateur sans NFS ou identique à 3 en l'absence de réseau
3. Mode multi-utilisateur intégral, c.-à-d. le niveau d'exécution normal
5. X11. Utilisé si vous démarrez automatiquement sous Xwindow.
On impose de lancer iptables dans ces niveaux d'exécution avec la commande :
chkconfig --level 235 iptables on
La commande ci-dessus permet de lancer le service iptables dans les niveaux d'exécution 2, 3 et 5. Si vous désirez qu'il en soit autrement, modifiez la commande en conséquence. Toutefois, aucun des autres niveaux d'exécution ne devrait être sélectionné, donc vous n'avez pas besoin d'activer iptables pour ces niveaux-là. Le niveau 1 concerne le mode utilisateur unique, c-à-d. quand vous devez réparer une machine dysfonctionnante. Le niveau 4 devrait être inutilisé, et le niveau 6 est réservé à l'extinction de l'ordinateur.
Pour activer le service iptables, lancez simplement la commande :
service iptables start
Initialement, il n'y a aucune règle dans le script
iptables. Pour ajouter des règles sur une Red Hat 7.1,
il existe deux méthodes. Premièrement, vous pouvez éditer le script
/etc/rc.d/init.d/iptables.
Cette approche a un désagréable inconvénient, celui de voir toutes ses
règles effacées si vous mettez à jour le paquetage iptables par RPM.
La deuxième méthode consiste à charger le livre de règles, puis à le
sauvegarder par le biais de la commande iptables-save,
et enfin à automatiser son chargement au démarrage avec les scripts de rc.d.
Tout d'abord, sera décrite la configuration d'iptables avec des manipulations de copier/coller dans le script iptables du répertoire init.d. Pour ajouter des règles qui seront appliquées au démarrage du service, vous pouvez les insérer soit derrière la section start), soit à l'intérieur de la fonction start(). Si vous choisissez la section start), vous devez penser à empêcher l'exécution de la fonction start() dans cette section. A propos, songez également à éditer la section stop) pour préciser au script les actions à entreprendre soit lorsqu'on éteint l'ordinateur, soit lorsqu'on active un niveau d'exécution qui ne nécessite pas iptables. Par la même occasion, n'oubliez pas de vérifier les sections "restart" et "condrestart". Sachez que tout votre travail sera sûrement effacé si vous avez opté pour "Red Hat Network" qui met à jour automatiquement vos paquetages. Ce sera aussi le cas avec une mise à jour du paquetage RPM iptables.
La seconde méthode de configuration est décrite ici. En premier lieu, créez
un livre de règles qui répond à votre besoin, et écrivez-le dans un fichier
de script shell ou utilisez-le directement avec iptables,
mais n'oubliez pas de l'expérimenter. Lorsque vous trouvez une
configuration qui fonctionne sans problème et sans faille, utilisez la
commande iptables-save. Typiquement, vous pouvez faire
iptables-save > /etc/sysconfig/iptables,
pour sauvegarder le livre de règles dans le fichier
/etc/sysconfig/iptables. Ce fichier est lu
automatiquement par le script iptables de rc.d/ pour
restituer le livre de règles à la demande.
Une autre possibilité est de sauvegarder le script en exécutant
service iptables save, qui sauvegarde automatiquement
vers le fichier /etc/sysconfig/iptables.
Au prochain démarrage de votre ordinateur, le script
iptables de rc.d fera appel à la commande
iptables-restore pour restituer le livre de règles à
partir du fichier sauvegardé /etc/sysconfig/iptables.
Ne mélangez pas ces deux méthodes, susceptibles de se nuire mutuellement
et rendre votre pare-feu inopérant.
Une fois toutes ces étapes achevées, vous pouvez désinstaller les paquetages ipchains et iptables. En effet, ceci permet d'éviter au système tout risque de confusion entre l'application iptables préinstallée et l'application iptables de l'espace utilisateur. Cette étape n'est utile que si vous installez iptables à partir des fichiers sources. Il n'y a rien d'inhabituel à voir le nouveau et l'ancien paquetage se mélanger, puisque l'installation à partir de rpm positionne les fichiers à des emplacements non standards qui ne seront pas écrasés par l'installation du nouveau paquetage iptables. Pour procéder à la désinstallation, exécutez ceci :
rpm -e iptables
D'ailleurs, pourquoi conserver également ipchains s'il n'a plus d'utilité ? Supprimez-le de la même manière que les vieux fichiers binaires d'iptables avec la commande :
rpm -e ipchains
Enfin, vous avez terminé la mise à jour du paquetage d'iptables à partir des sources, en suivant les instructions d'installation. Maintenant, plus un seul fichier binaire, de bibliothèque ou de directive d'inclusion ne devrait résider sur le système.
Vous êtes ici :