3.2. BPF
Le filtre de paquets de
Berkeley (BPF pour Berkeley Packet Filter) est une technologie
permettant entre autres d'analyser le trafic réseau et qui fournit une
interface brute aux couches de liaisons de données pour envoyer et
recevoir des paquets de couche de liaison bruts. Il est disponible sur la
plupart des systèmes d' exploitation de type
Unix. [18]
Il permet à l'utilisateur de filtrer les paquets
circulant dans le kernel tout en évitant de devoir les transférer
vers l'espace utilisateur. Toutefois, de par son côté minimaliste,
il possède peu d'instruction.
BPF permet à un processus de l'espace
utilisateur de fournir un programme de filtrage qui spécifie les
paquets qu'il souhaite recevoir. Par exemple,
un processus tcpdump peut souhaiter recevoir uniquement les
paquets qui initient une connexion TCP.
Les filtres comme ceux-ci fonctionnent en ayant des droits
administrateurs sur le système sur lequel nous travaillons car le kernel
est directement sollicité. Pour notre projet, avoir accès au
kernel et avoir des droits d'administrateurs est indispensable. De plus, il
serait très difficile pour nous de faire fonctionner un logiciel de
pare-feu propriétaire et qui a besoin de règles alors que nous
nous basons ici sur des modèles de prédiction. Nous avons
utilisé les syntaxes de filtre BPF pour filtrer le trafic reçu.
En fait même s'il n'est pas téléchargé ou
directement utilisé, certaines bibliothèques comme scapy
l'utilisent pour gérer les paquets dans le réseau.
3.3. Filter.tlk
Filter.tlk [19] est le fruit de recherches sur la protection
des objets connectés.
Sur la figure ci-dessous, Filter.tlk comprend trois
utilitaires différents pour aider à la création de filtres
BPF:
? une interface pour concevoir les conditions de
filtrage BPF, BPF design aid tool. BDAT est responsable de la
création de filtres BPF en tant que conditions définies à
partir des couches de transport et de réseau. BDAT a été
conçue comme une application Java autonome.
? un plugin Wireshark LUA pour automatiser le test des
filtres BPF avec les ensembles de données de paquets PCAP,
BPF testing tool. Le langage Lua a été utilisé
pour implémenter un écouteur Wireshark pour évaluer les
filtres et compter les paquets correspondant à la condition BPF cible
(acceptée) ou non (rejetée). Il applique un filtre ou un ensemble
de filtres sur un fichier pcap. En conséquence, nous obtenons des
informations pour chaque filtre appliqué sur le nombre de packages
analysés, acceptés et rejetés.
? un script pour compiler facilement les filtres BPF
et créer des règles iptables, IPTable rule
builder. IPTRB est un script bash qui utilise la commande dialog pour
fournir une interface utilisateur graphique intuitive et facile à
utiliser. Il peut transformer les filtres BPF non compilés en
règles IPTables complètes guidées par l'interface. La
règle peut être générée à des fins de
filtrage et / ou d'enregistrement de paquets nuisibles.
Figure 8 : Architecture de
filter.tlk [19]
Comme nous pouvons le déduire de la figure ci-dessus,
la conception d'une règle de pare-feu avec Filter.tlk comprend trois
étapes réalisées avec différents outils inclus dans
le package. Nous commençons par profiter du BDAT (outil d'aide à
la conception BPF) pour concevoir une condition de filtrage afin de
détecter un certain type de paquet. Ensuite Les filtres BPF peuvent
être testés avec différents ensembles de paquets (un
ensemble de paquets correspondant au format pcap et d'autres ne correspondant
pas au format pcap) à l'aide de l'outil de test BPF (BTT).Une fois les
règles BPF testées, elles peuvent être finalement
transformées en règles iptables à l'aide du script
IPTRB.
Enfin, ils ont utilisé Ansible (un outil
d'automatisation informatique) pour automatiser l'installation de Filter.tlk
sur toutes les plates-formes prises en charge.
Notre projet diffère de celui-ci dans le sens où
nous ne créons pas de règles iptables. Nous voulons simplifier le
travail du pare-feu. Les modèles d'apprentissage profond proposés
sont censés nous aider à détecter plus facilement le
trafic dont nous ne voulons pas et à décider plus rapidement
quel paquet est accepté et quel paquet est refusé.
L'inconvénient que nous avons trouvé à cet outil serait la
création de règles redondantes ou qui se ressemblent
énormément où l'un ferait en partie le travail d'une autre
règle.
|