[Abstract] [Copyright Notice]

Firewalling sous Linux - Chapitre 2
Définitions


Le mot Firewall est un terme générique employé pour désigner un système ou un groupe de systèmes formant une passerelle définissant une politique de contrôle d'accès entre deux ou plusieurs réseaux.

Les outils de firewalling disponibles sous Linux pour les noyaux 2.2 (et 2.4 à venir) permettent de spécifier les règles de filtrage et de translation d'adresses (NAT, communément appelé masquerading sous Linux).

Ceux-ci s'appuient de manière directe sur le code du noyau permettant d'effectuer un certain nombre d'actions à des endroits-clé de la traversée de paquets dans la pile de protocoles.

Le firewall implémente une politique de contrôle d'accès, afin d'éviter que des esprits mal intentionnés (dont Internet est censé regorger) puissent nuire à l'intégrité d'un réseau d'entreprise.

Ainsi, on crée des compartiments virtuels, et l'on choisit le degré d'étanchéité des diverses cloisons qui les séparent.

Filtrage et translation d'adresses sont les deux mécanismes principaux fournis par un firewall Linux.

Les logiciels libres de firewalling sous Linux permettent le filtrage des paquets au niveau de la couche IP, voire des couches applicatives, en choisissant d'accepter ces derniers, de les refuser, ou de les ignorer, d'après un certain nombre de paramètres (adresses et ports source/destination, interfaces, fragmentation, contenu, etc.).

D'autre part, il peuvent assurer la translation d'adresses statiques ou dynamiques, ce qui permet typiquement à des machines situées sur un réseau interne à classe d'adresses privées (non routées sur Internet) d'accéder à l'extérieur par l'intermédiaire du firewall, en protégeant la visibilité des machines internes depuis l'extérieur.

Le firewall est le premier rempart contre les tentatives de connexion par l'intermédiaire d'un service donné.

Une politique sage en matière de contrôle d'accès est de refuser l'ensemble des connexions par défaut, pour n'autoriser que les connexions explicitement identifiées.


2.1 Notion de paquet et de connexion

Tout le trafic circulant dans un réseau est envoyé sous la forme de paquets. Le début de chaque paquet, l'en-tête, précise où celui-ci va, d'où il vient, le type du paquet, et divers autres détails.

Quelques protocoles, comme TCP, qui est notamment utilisé pour le trafic Web, mail et les accès à distance, utilisent le concept de « connexion ». En effet, avant que le moindre paquet de données ne soit envoyé, divers paquets de configuration (avec des en-têtes spéciales) sont échangés en vue d'établir une connexion. Ensuite les paquets "normaux" sont échangés.


2.2 La translation d'adresses

Souvent, les machines d'un réseau interne possèdent des adresses IP privées définies par la RFC 1597 (c'est-à-dire 10.*.*.*, 172.16.*.* ou 192.168.*.*). Celles-ci ne sont pas routables sur Internet.

Ainsi, les paquets venant du réseau privé ne traversent jamais l'Internet sans traitement spécial, et vice-versa.

Ce traitement, nommé masquerading, réécrit l'en-tête des paquets traversant par le pare-feu de sorte qu'ils semblent toujours venir du pare-feu lui-même. De même, le firewall réécrit ensuite les réponses afin qu'elles semblent venir du destinataire originel.

Ainsi les machines d'un réseau privé peuvent-elles malgré tout accéder à des services situés sur Internet, bien que ne disposant pas d'adresse IP valide routée sur ce dernier. Le firewall joue dans ce cadre le rôle d'une sorte de proxy IP.


2.3 Le filtrage et la translation d'adresses sous Linux

Les outils de firewalling disponibles sous Linux pour les noyaux 2.2 (et 2.4 à venir) permettent de spécifier les règles de filtrage et de translation d'adresses (NAT = Network Address Translation, communément appelé masquerading sous Linux).

Ceux-ci s'appuient de manière directe sur le code du noyau permettant d'effectuer un certain nombre d'actions à des endroits-clés de la traversée de paquets dans la pile de protocoles.

Les logiciels libres de firewalling sous Linux permettent le filtrage des paquets au niveau de la couche IP, voire des couches applicatives, en choisissant de refuser un paquet (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é), d'après un certain nombre de paramètres (adresses et ports source/destination, interfaces, fragmentation, contenu, etc.).

Le masquerading permet au firewall de servir de passerelles aux machines du réseau privé, protégeant la visibilité des machines internes depuis l'extérieur. Le masquerading dispose sous Linux de modules noyau séparés afin de gérer les protocoles complexes, tels que FTP, RealAudio, Quake, etc.


2.4 Architecture Firewall à 3 branches

Le firewall est en prise directe avec la connexion Internet, et tout le trafic entre l'Internet, le réseau interne, et l'éventuelle zone dite "démilitarisée" (DMZ) doit transiter par son intermédiaire, afin de garantir un contrôle total sur les différents échanges.

Il est donc indispensable de sécuriser autant que possible l'accès à cette machine, qu'il soit physique ou à distance.

Quoiqu'il en soit, l'usage des commandes d'administration du firewall est exclusivement réservé à l'administrateur, connecté en tant que root.

La machine firewall doit héberger un nombre de services aussi limité que possible, ce qui réduit d'autant les risques potentiels d'intrusion sur celle-ci, et donc sur les machines qu'elle protège.

Cependant, il est clair qu'il ne faut en aucun cas se baser sur une théorique invulnérabilité de ce dernier, et que l'on ne peut pour autant s'affranchir de garantir un bon niveau de sécurité sur les machines du réseau abrité.

On s'attachera à évaluer l'efficacité de Linux en tant que firewall au travers de la mise en place d'un réseau classique à trois branches (Internet, réseau interne, DMZ), représentant le cas le plus général. Ainsi, on analysera les capacités de filtrage entre les diverses branches suivant la nature des protocoles échangés (HTTP, FTP, DNS, telnet, ssh,...), et ce à divers niveaux (TCP, UDP, couche applicative,...).

De même, on étudiera les capacités Linux en matière de translation d'adresse sur des protocoles relativement complexes comme FTP (actif ou passif) au moyen des logiciels libres existant actuellement sous Linux.


[Abstract] [Copyright Notice]

Firewalling sous Linux
Hervé Eychenne herve.eychenne@alcove.fr