Debian logo [inetdoc.LINUX]

4.2. Interconnexion de réseaux avec contrôle d'accès

Cette catégorie d'interconnexion est apparue consécutivement au développement de l'Internet. L'Internet a d'abord été perçu comme un fantastique moyen de travail coopératif entre équipes de recherche universitaires et ensuite entre sociétés commerciales. Relativement aux lignes spécialisées, le coût d'interconnexion du réseau des réseaux est toujours très attractif. L'enthousiasme des premiers temps s'est très vite estompé face à la multiplication des comportements malveillants. Les modes d'interconnexion évoluent donc vers des fonctions de contrôle d'accès et de confidentialité dans les échanges.

On reprend ici les éléments définis dans la définition du Périmètre de contrôle d'accès.

4.2.1. Définition du contrôle d'accès

La notion de contrôle d'accès regroupe plusieurs traitements :

  • Le filtrage

  • La qualité de service

  • La traduction d'adresses

Ces traitements utilisent les mêmes composants du système.

Traitement des données réseau

Le document Kernel Packet Traveling Diagram aide à distinguer les fonctions de contrôle de trafic des fonctions de filtrage.

[Note] Utilisation avec GNU/Linux

Le vocabulaire GNU/Linux parle de contrôle de trafic (traffic control) plutôt que de qualité de service. Le noyau Linux intègre un jeu de fonctions génériques utilisables pour tous les traitements. Voir la version française du LARTC : HOWTO du routage avancé et du contrôle de trafic sous Linux

4.2.2. Contrôle de trafic avec Linux

Pour une introduction complète sur le fonctionnement du contrôle de trafic, consulter le document Linux Traffic Control - Next Generation.

Voici une présentation des composants systèmes extraite des documents de référence sur le contrôle de trafic.

Input de-multiplexing

Les paquets entrants sont examinés pour être :

  • directement transmis au réseau ; sur une autre interface si la machine est un routeur ou un pont,

  • transférés vers les couches supérieures de la pile de protocole ; vers les protocoles UDP ou TCP de la couche transport.

Upper layers

Les couches hautes peuvent aussi générer leurs propres données et les passer aux couches basses pour des traitements tels que l'encapsulation, le routage et éventuellement la transmission.

Forwarding

Ce composant comprend la sélection de l'interface de sortie, la sélection du prochain saut (pont, routeur ou commutateur), l'encapsulation, etc.

Output queueing

Une fois tous les traitements précédents effectués, c'est à ce niveau que le contrôle de trafic intervient.

Parmi les fonctions du contrôle de trafic, on trouve plusieurs types de décisions :

  • Décision de mise en file d'attente (queueing) ou d'abandon d'un paquet si une limite de taille ou de débit a été atteinte.

  • Décision sur l'ordre d'émission des paquets en fonction des priorités sur les types de flux.

  • Décision sur le délai d'attente avant émission dans le cas où le débit de sortie a été limité.

Une fois que le contrôle de trafic a libéré un paquet pour qu'il soit émis, le pilote d'interface réseau le prend et l'envoie sur le réseau.

L'échange d'information sur le contrôle de trafic se fait par l'intermédiaire du marquage des paquets. Dans le cas des Services Différenciés (Differentiated Services [ Differentiated Services on Linux]) on utilise le champ TOS de l'en-tête de paquet IP ou un champ spécifique appelé DS Field spéficié par le document RFC2474 Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers.

[Note] Utilisation avec GNU/Linux

Les options de sélection des composants du contrôle de trafic implantés dans le noyau Linux sont accessibles à partir des options réseau. Le paquet iproute contient les outils utilisateurs de configuration.

4.2.3. Le filtrage avec Linux

Le filtrage reprend l'utilisation des composants présentés ci-avant. Le rôle du filtrage n'est pas de mettre en forme le trafic réseau entre deux points mais de décider si un paquet doit être transmis ou non. Dans le cas du système GNU/Linux, le filtrage sert aussi à la traduction d'adresses. Il s'agit alors de décider vers quel hôte ou quel réseau un paquet doit être transmis.

Depuis l'origine, le filtrage sur les noyaux Linux est basé sur la notion de chaîne. Avant d'aborder les chaînes créées par l'utilisateur, un paquet doit toujours passer par au moins une des trois chaînes qui correspondent aux composants présentés ci-avant.

  • INPUT pour les paquets entrant dans le système,

  • FORWARD pour les paquets entrant et sortant du système,

  • OUTPUT pour les paquets sortant du système.

Voici le synoptique fourni par Rusty Russel dans la section Comment les paquets traversent les filtres du Linux 2.4 Packet Filtering HOWTO.

                                 _____
       Incoming                 /     \         Outgoing
              -->[Routing ]--->|FORWARD|------->
                 [Decision]     \_____/        ^
                      |                        |
                      v                      ____
                     ___                    /    \
                    /   \                  |OUTPUT|
                   |INPUT|                  \____/
                    \___/                      ^
                      |                        |
                       ----> Local Process ----
       (c)2000 Rusty Russell

4.2.3.1. Les opérations de filtrage

Les traitements effectués sur les paquets à partir des trois chaînes de base sont eux-mêmes implantés sous forme de chaînes :

ACCEPT

Le paquet est accepté et continue sa traversée du système.

DROP

Le paquet est abandonné sans aucune notification.

LOG

La traversée de la chaîne est enregistrée par le système.

REJECT

Le paquet est rejeté avec notification.

RETURN

Retour au traitement de la chaîne précédente.

QUEUE

Le paquet est redirigé vers un traitement défini par l'utilisateur. Il s'agit avant tout de pouvoir ajouter de nouveaux traitements spécifiques.

4.2.3.2. Les spécifications de filtrage

Le filtrage s'applique en spécifiant les éléments suivants :

  • Adresses IP source et/ou destination (ex. 192.168.100.2/24).

  • Protocoles (ex. TCP, UDP, ICMP).

  • Interface (ex. eth0).

  • Fragments acceptés ou non.

  • Extensions TCP sur les champs de l'en-tête (SYN, ACK, FIN, RST,URG, PSH) ainsi que sur les ports source et destination.

  • Extensions UDP sur les ports source et destination.

  • Extension ICMP sur le type.

  • Adresses MAC source et/ou destination (ex. 00:60:08:91:CC:B7).

  • Limite du nombre des demandes enregistrées par seconde (détection des attaques DoS et SYNflood).

  • Propriétaire du paquet généré sur le système.

4.2.3.3. Suivi de communication (stateful inspection)

Cette fonction est essentielle pour tracer les échanges de de paquets pour chaque «communication» TCP, UDP et ICMP entre 2 hôtes. L'analyse est réalisée à l'aide d'indicateurs d'état (State Match).

NEW

Le paquet crée une nouvelle connexion.

ESTABLISHED

Le paquet appartient à une connexion existante.

RELATED

Le paquet est associé à une connexion sans appartenance (ex. Erreur ICMP ou Donnée FTP).

INVALID

Le paquet ne peut pas être identifié.

4.2.4. Comment utiliser le filtrage ?

Déterminer une politique de sécurité nécessite une réflexion approfondie. Il n'existe pas de solution «clé en main» en matière de sécurité réseau. Autre difficulté, il est extrêmement difficile de mesurer l'efficacité réelle d'une politique de sécurité (système de filtrage). On peut cependant dégager deux principes d'application du filtrage.

4.2.4.1. Deux principes d'application

Principe 1 : Tout ce qui n'est pas autorisé est interdit

Cette approche est la plus rigoureuse. Seul le trafic réseau explicitement autorisé peut traverser l'équipement d'extrémité filtrant. De cette façon, on limite le trafic à surveiller (celui que l'on a autorisé) et on se protège contre les défauts de sécurité même inconnus.

Principe 2 : Tout ce qui n'est pas interdit est autorisé

Cette approche interdit le trafic potentiellement dangereux. De cette façon, on ne limite que le trafic identifié comme générateur de problèmes de sécurité.

4.2.4.2. Où appliquer ces Principes ?

De façon pragmatique, on utilise les deux principes de filtrage en fonction de son niveau de «maîtrise» de l'interconnexion réseau. Suivant la distribution des périmètres on peut appliquer une hiérarchie dans la politique sécurité.

Plus le périmètre est petit, plus l'identification du trafic réseau est facile. Il est donc possible d'appliquer le premier principe, le plus rigoureux, sur les réseaux d'agence ou les périmètres départementaux. Ceci revient à dire qu'il faut appliquer le niveau de sécurité le plus élevé au plus près du réseau à protéger

A l'inverse, identifier la totalité des trafics possibles à l'échelle d'un périmètre d'interconnexion de campus est souvent une gageure. Le responsable de la sécurité réseau s'attirera les foudres de la quasi-totalité des utilisateurs s'il cherche à exercer un contrôle trop strict sur un trafic qu'il ne peut pas identifier complètement. En effet, trop de sécurité peut entraver le bon fonctionnement des applications dont les utilisateurs ont légitimement besoin. C'est donc le second principe qui convient le mieux aux réseaux d'interconnexion.