Contexte et problématique

Le filtrage de paquets est largement utilisé dans plusieurs appliances et applications réseau, en particulier pour bloquer le trafic malveillant (protéger les infrastructures réseau via des pare-feu et des systèmes de détection d'intrusion) et à déployer sur les routeurs, les commutateurs et les équilibreurs de charge pour la classification des paquets.

Ce mécanisme s'appuie sur les champs d'en-tête du paquet pour filtrer ce trafic en utilisant des règles de plage d'adresses IP ou de ports.

Cependant, l'ensemble de filtres de paquets doit gérer un nombre croissant de nœuds connectés et nombre d'entre eux sont compromis et utilisés comme sources d'attaques.

Par exemple, les ensembles de filtres IP disponibles dans les listes noires peuvent atteindre plusieurs millions d'entrées et peuvent nécessiter un espace mémoire important pour leur stockage dans les appareils de filtrage.

Numeryx propose une nouvelle méthode basée sur une représentation de préfixe IP à double masque avec un algorithme de transformation linéaire pour construire un ensemble minimisé de règles de plage.

Les règles de représentation du double masque sont définies formellement sur la plage et ils prouvent que le nombre de masques requis pour toute plage est au plus de 2w 4, où w est la longueur d'un champ.

Présentation de la solution

Grâce à ses travaux de R&D menés depuis plusieurs années, la société Numeryx Technologies a pu développer une solution de sécurisation légère et performante, aujourd’hui brevetée : le filtrage IP à double masque.

La méthode de filtrage de paquets basée sur une nouvelle représentation des préfixes IP, associée à̀ un algorithme de transformation linéaire. Il s’agit de construire un ensemble minimisé de règles de plage.

La représentation contient 3 parties :

  • Netref : utilisée pour représenter l'adresse réseau.
  • Masque 1 : définit toutes les adresses IP acceptées.
  • Masque 2 : toutes les adresses IP exclues de la liste des adresses IP acceptées.

Considérons l’exemple illustré le principe de fonctionnement du double masque dans la figure suivante :
Exemple illustrant le principe de fonctionnement du double masque

Dans cette représentation, toute adresse sélectionnée (ou filtrée) doit avoir ses 26 premiers bits égaux aux 26 premiers bits 192.168.100.100, qui est égal au format binaire à 11000000.10101000.01100100.01 et au moins l'un des 2 bits suivants (27ème ou 28ème) ne doit pas être égal à sa valeur correspondante dans 192.168.100.100.

La figure ci-dessous illustre le fonctionnement du filtrage à double masque pour cet exemple spécifique.
Liste des ips approuvées et réfusées

Les listes noires d’IP ont été fournies par l’INRIA à travers des projets de partenariats avec notre société et se renforceront lors des nouveaux partenariats ou avec les clients.

L'utilisation de cette représentation permet d’augmenter la sécurité des réseaux et de configuration d’accès des pare-feux :

  • Nous pouvons compresser, optimiser et distribuer les règles de filtrage puisque nous pouvons accepter et rejeter des adresses IP à l'aide d'une seule règle ;
  • La configuration devient plus simple puisque l'ordre des règles n'affecte pas la décision finale de rapprochement ;
  • On ajoute plus de flexibilité et efficacité dans le déploiement des règles.

Notre solution permet donc de garantir une continuité et une disponibilité du système.

Cette technologie a été utilisée par Numeryx Technologies et dans le cadre d’une thèse CIFRE sur les flux de routage en partenariat avec l’INRIA.

Les résultats de compression des règles sont présentés dans la figure suivante, dans le cas de données d’entrées synthétiques.

Résultats de compression du double masque par rapport au simple masque IP

Les avantages qualitatifs et quantitatifs de la solution par rapport à une solution de filtrage IP standard sont les suivants :

  • Diminution du nombre de règles de filtrage de 80 % dans le cas de données synthétisées ;
  • Augmentation de l’efficacité du filtrage ;
  • Réduction des contraintes d’une TCAM pour maximiser le stockage des règles de routage et de filtrage ;
  • Diminution du temps de traitement des requêtes firewall ;
  • Gain en ressources (CPU, RAM, DISK).

Conception et Cycle de vie

Le plugin fdm est conçu pour être paramétrer depuis une interface utilisateur(front-end) et aussi depuis la ligne de commande (back-end).

Ceci dit , le plugin fdm interagit avec différentes composantes du DMSsdwan et dévéloppé en utilisant différents langages de programmation qui sont :

  • HTML5 + CSS3 + javascript + jQuery ( front-end )
  • PHP7 ( back-end part 1 )
  • C ( back-end part 2 : kernel UNIX BSD )

conception et cycle de vie dms

Le modèle ci-dessus présente le cycle de vie et le fonctionnement du service "Filtre double masque".

Le cycle de vie du fdm nous permettera de comprendre son fonctionnement ainsi que les différentes parties du systeme avec les quelles il interagit :

  • L'action qui suit est attachée à l'activation ET le sauvegarde d'une nouvelle régle dans le pare-feu : fdm charge le fichier XML et extrait les regles <rule> qui sont dans la balise <filter>
  • Le controlleur du plugin fdm se charge du traitement des régles extraites pour les comprésser selon les techniques des algorithmes double masques, et les transformer en une structure qui nous est propre et les sauvgarder dans un fichier xml situé sous /conf/fdm.xml.
    chaque régle du fichier fdm.xml comprend une <action>, une <source_sm>, et une/ou plusieurs <destin_dm>.
    Le noeud <brut_trace> est là pour des raisons de débugage, le noeud <brut> contient les donnée qui seront traitées par le noyau UNIX par la suite.
  • Le fichier SettingsController.php communique avec le fichier pfctl.c à travers les fonctions C : void disable_fdm(void) qui permet de désactiver le plugin, et la fonction C void enable_fdm(void) qui permet d'activer le plugin.
  • Lors de son activation, fdm écrit dans se qu'on appelle des "character devices" (/dev/), l'un est nomé "fdm_s" et dans lequel le status du fdm est sauvgardé (enabled=1, disabled=0), l'autre est nomé "fd_masks" et dans lequel le contenu du noeud <brut> , précédement défini, est sauvgardé.

    NB:Si vous remarquez un comportement anormal du plugin fdm, pensez à augmentez la taille de la mémoire réservée pour le "brut"
    char brut_content[10000];
    char command[12800];

  • Le fdm est intégré pour fonctionner en parfaite harmonie avec le module Kernel .
    Au niveau du noyau UNIX, on fait un "hook" du fdm attaché à la fonction de filtrage , ainsi, si notre plugin est activé, on traite l'adresse IP avec des fonctions qui sont propres au double masques (définis dans pf.c), sinon le PF fera sont travail ordinaire.
    C'est la fonction pf_test() qui est responsable de prendre la décision de faire passer ou bloquer une adresse IP donnée (PF_PASS et PF_DROP).

Intégration du module

Objectif


L'objectif du module « Filter à double masque » que nous créons dans l'exemple est de filtrer les adresses IPs.

Aperçu