Accueil Page suivante


TP ipchains


-


Les Firewalls


(pare-feu)








Auteur : Alois Aubel

But: Le but est de comprendre l'écriture de règles pour les écluses ("firewall") avec ipchains sous Linux.
 



 
 

Les facilités d'ouverture et de communication apportées par les protocoles liés à TCP/IP (donc sur les réseaux de type Internet / Intranet) sont malheureusement à double tranchant : s'il est vrai qu'il permettent une ouverture sans précédent vers la quasi-totalité des systèmes existants ils peuvent aussi être un moyen d'intrusion dans vos systèmes. La sécurité est donc devenu un point critique quand un organisme décide de relier son réseau privé à l'Internet. Or, un nombre toujours croissant d'utilisateurs de réseaux privés demandent un accès à l'Internet. De plus les entreprises veulent de plus en plus mettre à disposition du public un site web ainsi qu'un serveur FTP. Il en incombe donc à l'administrateur réseau de faire la connexion et d'en sécuriser l'utilisation. Pour cela, il existe des dispositifs appelés firewall soit pare-feu en français ou encore écluse qui permettent d'instaurer une politique de sécurité.

Le logiciel que nous allons utiliser dans ce TP appelé "ipchains" est un firewall. Il nous faudra le configurer afin dans un premier temps, de donner accès aux machines du réseau privé à l'Internet et dans un deuxième temps, de sécurisé la connexion. Pour comprendre le fonctionnement d'ipchains il est indispensable de comprendre ce qu'est un firewall. Donc, la première partie de ce compte rendu présentera les firewalls et plus particulièrement ipchains. Nous aborderons ensuite la pratique avec la configuration d'ipchains et enfin nous nous étendrons sur les différentes applications des firewalls.
 
 

1. Documentation

1.1 Les firewalls

Un firewall est un (ou plusieurs) dispositif(s) qui assure(nt) le respect d'une politique de sécurité entre un réseau privé et l'Internet. Il décide quels services sont accessible de l'extérieur, qui peuvent y accéder et quels services extérieurs sont accessibles de l'intérieur. En ce sens, il est plus évolué que le routeur qui lui transmet juste les données.
L'objectif d'un firewall est double, il permet :

A l'origine, un firewall est un système comportant au minimum deux interfaces réseau permettant ainsi la sécurisation d'un réseau interne. On distingue alors l'interface externe (reliée à l'Internet) et l'interface interne (reliée au réseau local).
 
 


fig. 1 - Présentation d'un firewall






Pour qu'un firewall soit efficace, il faut que tout le trafic allant ou provenant d'Internet passe par le firewall. Ainsi le trafic pourra être surveillé. Il doit permettre seulement aux paquets autorisés de passer. De plus, il doit être immuniser contre toute intrusion.

Il existe différents types de firewall:

Les filtres de paquets analysent tous les paquets qu'ils reçoivent et les confrontent à un certain nombre de règles préalablement définies. En fonction du résultat, le paquet est accepté ou rejeté. Les critères utilisés pour l'établissement des règles sont principalement les adresses IP et ports source et destination contenu dans les paquets analysés.
ipchains fait justement parti de cette catégorie comme on le verra plus loin.

Lorsqu'un firewall de type proxy est utilisé sur un réseau, il n'y a aucune connexion directes entre les systèmes du réseau local et le réseau Internet : les machines internes se connectent sur le firewall pour lui demander un service. Après une éventuelle procédure d'authentification, le firewall se charge de relayer la requête au serveur Internet puis de renvoyer la réponse au client interne.
L'absence de connexion directe entre réseau local et Internet est un élément important de sécurité; il est ainsi généralement admis que ce type de firewall offre un meilleur niveau de sécurité, mais au détriment d'une moins bonne flexibilité.
squid est le proxy que l'on à utilisé dans les TP précédents et il est disponible dans la plupart des distributions Linux mais n'est pas comme ipchains intégré dans le noyau.

Enfin, des technologies hybrides existent à mi-chemins entre filtre de paquets et proxy, tentant de réconcilier les avantages de chacune de ces deux technologies (flexibilité et haut niveau de sécurité). Citons, par exemple, la technologie "Stateful Inspection" implémenté dans Checkpoint Firewall-1, produit leader sur le marché.
 

1.2. Le module ipchains

ipchains; est en fait un module du noyaux Linux. Il a été introduit à partir de la version 2.1.102 remplaçant ainsi ipfwadm.il est utilisé pour contrôler à la fois le camouflage et le cache transparent, alors que ce sont des notions séparées du filtrage de paquets (l'implémentation actuelle de Linux les brouille tous les trois de façon inhabituelle, laissant l'impression qu'ils sont très proches). Dans le dernier noyau, ipchains a été finalement remplacé par un autre logiciel appelé netfilter qui est sensé être plus efficace et plus simple à configurer.

Tout le trafic circulant dans un réseau est envoyé sous la forme de paquets. Le début de chaque paquet précise sa destination, sa source, le type du paquet, et divers autres détails administratifs. Le début de chaque paquet est appelé l'entête (header). Le reste du paquet, contenant les données à transmettre, est couramment appelé le corps (body).

Un filtre de paquet est un logiciel qui regarde l'entête des paquets lorsque ceux-ci passent, et décide du destin du paquet entier. Il peut décider de le refuser (le supprimer comme s'il n'avait jamais été reçu), de l'accepter (le laisser circuler) ou de le rejeter (effet identique au refus, mais il est précisé à la source que le paquet n'a pas été accepté).

ipchains fait partie des firewalls dits "filtre de paquets" ou encore "firewall de niveau réseau". A ce titre, il traite tous les paquets passant par son interface de routage. C'est en configurant d'une certaine façon cette interface que l'on peut appliquer un filtre. Ce filtre agit sur les champs suivants:

Même si tout les routeurs filtres de paquets ne peuvent pas tous filtrer le port source, la plupart d'entre eux ont cette capacité. Certains ont même des capacités étendues comme détecter par quelle interface réseau le paquet est arrivé. C'est le cas pour ipchains et nous utiliserons même cet extra critère pour nous protéger des attaques de type IP Spoofing.

Pour bloquer une connexion à (ou venant) d'un serveur web ou d'un réseau, le filtre peut être appliqué de plusieurs façons. Par exemple vous pouvez décider de bloquer les connexions provenant d'adresses ou de site non sûres, ou vous pouvez décidez de bloquer toutes les connexions venant de l'extérieur. Tout cela se fait par la mise en place de règles de filtrage au niveau d'ipchains. Il existe trois listes de règles: chaîne d'entrée (input), chaîne de transmission (forward) et chaîne de sortie (output). Lorsqu'un paquet arrive au niveau de l'interface d'ipchains, il utilise la chaîne input pour décider de son sort. S'il le paquet est accepté et qu'il est destiné à une autre machine il est transmis (routed) suivant les règles définies dans la chaîne forward. Enfin, juste avant que le paquet ne ressorte, un dernier filtrage est effectué avec la chaîne output.

Une chaîne est une vérification de règles. Chaque règle énonce: "si l'entête du paquet ressemble à ceci, alors voilà ce qu'il faut en faire". Si la règle ne vérifie pas le paquet, alors la règle suivante dans la chaîne est consultée. Enfin, s'il n'y a plus de règles à consulter, alors le noyau regarde la chaîne politique (police) pour décider ce qu'il doit faire. Dans un système orienté sécurité, cette police dit généralement au noyau de rejeter ou de refuser le paquet.

Voici comment se présente ipchains

fig.2 - fonctionnement du filtrage dans le module ipchains




L'utilisation d'ipchains c-a-d la configuration et la mise en route se fait en ligne de commande. Voici les principales fonctions:


# ipchains -L 
Pour afficher toutes les règles en vigueur.

# ipchains-save > firewall_backup
# ipchains-restore < firewall_backup 
Pour sauvegarder dans un fichier (file_backup) les règles précèdemment insérées ou les restaurer à partir d'un fichier

# ipchains -[AD] <chaine> <regle> 
A, Ajoute une ou plusieurs règles à la fin de la chaîne spécifiée.
D, Efface la ou les règles spécifiées

 

# ipchains -[FP] <chaine> 
F, Efface toute les règles d'une chaîne.
P, Configure la politique de la chaîne.

# ipchains -M <options> 
Pour les options de masquages (inutile dans ce TP).

<chaine>

input, pour la chaîne entrée
output, pour la chaîne de sortie

<regle> se compose de plusieurs paramètres:
-s, source
-d, destination
-p, protocole
-i, interface

-j, action à effectuer si la il y a correspondance de la règle.

!, pour faire le complément (l'inverse)

Exemples:

# ipchains -A output -d 199.95.207.0/24 -j REJECT 
ajoute une règle à la chaîne de sortie qui rejette les connexions ayant pour destination l'adresse IP 199.95.207.x

 

Maintenant que nous connaissons les bases, nous pouvons passer à l'expérimentation.


Accueil Page suivante