Le Firewall : son rôle et son fonctionnement
Courant en entreprise mais moins connu dans le domaine privé, le firewall est un des piliers qui assure notre sécurité vis-à-vis du réseau et notamment sur internet.
C’est pourquoi je vous propose dans cet article de vous présenter son rôle et son fonctionnement.
Le rôle du firewall
Le rôle du firewall (ou pare-feu en français) est de filtrer les communications entre deux réseaux différents : un réseau à protéger et un réseau jugé moins sûr. Le but est d’éviter les attaques provenant du réseau le moins sûr vers le réseau à protéger.
Par exemple entre le réseau internet (moins sûr) et le réseau domestique (réseau à protéger).
Le firewall permet de ne laisser passer uniquement certains types de communications venant de l’extérieur en suivant une série de règles prédéfinies.
Le fonctionnement du firewall
Afin de mieux appréhender son fonctionnement, il est nécessaire de comprendre d’abord comment fonctionne une communication sur un réseau TCP/IP.
L’adressage IP
Sur un réseau communiquant en TCP/IP (Transmission Control Protocol / Internet Protocol), chaque machine ou équipement possède une adresse IP qui lui permet de communiquer avec l’ensemble des machines connectés au réseau.
Il existe deux versions différentes d’adresses IP :
- L’IP version 4 qui se représente sous la forme xxx.xxx.xxx.xxx soit par exemple 192.168.0.1.
C’est une suite de 4 chiffres décimaux qui vont 0 à 255. Elle se code sur 4 octets soit 32 bits.
- L’IP version 6 qui se représente sous la forme xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx.xxxx soit par exemple 21f7:000a:aa75:a745:b847:487d:a874:5618.
C’est une suite de 8 chiffres hexadécimaux. Elle se code sur 16 octets soit 128 bits.
L’IP version 4, permet d’avoir 232 soit 4,29 milliards d’adresses différentes.
En effet, avec l’essor et l’expansion qu’a connu internet, nous arrivons à court d’adresses disponibles.
C’est pourquoi l’IP version 6 a vu le jour avec ses 2128 soit 340 sextillions d’adresses différentes ce qui nous donne 7,92 x 1028 fois plus d’adresses que la version 4.
Pour dialoguer entre elles, les machines vont donc échanger des paquets de données sur le réseau: des trames réseau.
Dans chaque trame, on y trouve l’adresse de la source et l’adresse de destination du paquet ainsi que les données (data) à transférer.
À ce stade, on sait d’où vient et où va chaque trame sur le réseau. Côté machine, lorsqu’une trame est reçue, la machine a besoin de savoir à quelle application elle est destinée.
C’est pour cela que les ports réseaux ont été développés.
Les ports réseaux
Les différents ports réseaux
- Le port physique : la prise réseau RJ45 sur une machine ou un équipement;
- Le port logiciel : c’est celui qui nous intéresse ici.
Un port réseau logiciel est défini par un nombre décimal allant de 0 à 65 535.
L’intérêt du port logiciel est qu’en étant associé à une adresse, il forme ce qu’on appelle un socket : une interface de connexion.
Ainsi, dès qu’une trame réseau arrive sur une machine, en regardant le socket (l’adresse + le port logiciel), le système sait à quel logiciel il doit envoyer la trame pour traitement.
Certains ports sont normalisés et réservés à des applications spécifiques, l’Internet Assigned Numbers Authority (IANA) a pour rôle de centraliser et de répertorier les ports en fonctions de leurs applications :
- Les ports 0 à 1 023 sont des ports réservés pour le système ;
- Les ports 1 024 à 49 151 sont des ports utilisateurs utilisables pour les applications ;
- Les ports 49 152 à 65 535 sont des ports privés / dynamiques.
Les ports peuvent avoir plusieurs états par exemple :
- Ouvert (à l’écoute) : une application a ouvert un port et elle est en attente d’une connexion externe ;
- Fermé : Le port est fermé et n’accepte aucune connexion ;
- Filtré : Le port est filtré, un firewall en empêche l’accès.
En plus de contenir l’adresse source et l’adresse de destination, les trames sur le réseau vont également contenir le port source et le port de destination.
Exemple concret
Aline ouvre une page web et saisit l’adresse https://www.google.fr depuis son navigateur.
Le navigateur réserve un numéro de port dynamique (dans la plage 49 152 à 65 535) par exemple, le port 49 152 s’il est disponible. Ensuite, il se connecte sur le serveur de google sur le port 80 : le port réservé aux communications WEB en HTTP. De son côté le serveur de google est en écoute sur ce port.
Le serveur de google va lui envoyer la page à afficher en HTML sur l’adresse source et le port source (ici le port 49 152).
À la réception, la machine d’Aline sait que la trame reçue est à destination du navigateur internet grâce au socket. Il va donc lui rediriger la trame pour qu’il la traite.
Les ports / services
Il existe une multitude de ports et de services, voici un exemple des plus connus :
Port | Service | Description |
20 | ftp-data | File Transfer [Default Data] |
21 | ftp | File Transfer Protocol [Control] |
22 | ssh | The Secure Shell (SSH) Protocol |
23 | telnet | Telnet |
25 | smtp | Simple Mail Transfer |
37 | time | Time |
80 | http | World Wide Web HTTP |
107 | rtelnet | Remote Telnet Service |
110 | pop3 | Post Office Protocol – Version 3 |
115 | sftp | Simple File Transfer Protocol |
143 | imap | Internet Message Access Protocol |
161 | snmp | SNMP |
194 | irc | Internet Relay Chat Protocol |
443 | https | http protocol over TLS/SSL |
989 | ftps-data | ftp protocol, data, over TLS/SSL |
990 | ftps | ftp protocol, control, over TLS/SSL |
992 | telnets | telnet protocol over TLS/SSL |
993 | imaps | IMAP over TLS protocol |
995 | pop3s | POP3 over TLS protocol |
Source iana.org
Prenons par exemple le port 23 utilisé pour le service Telnet.
Ce service permet de d’ouvrir une console, un terminal distant sur une machine :
A partir de cette console, il est possible de lancer des commandes à distance.
Pour que cela fonctionne, le port 23 doit être ouvert sur la machine cible et le service Telnet doit tourner.
Le port 23 est le port par défaut qu’utilise le service Telnet mais il est tout à fait possible de lancer le service Telnet en écoute sur un autre port (en modifiant sa configuration).
Il est donc nécessaire de fermer le port 23 afin qu’il ne puisse pas être utilisé pour exécuter un terminal à distance.
Ceci n’est qu’un service parmi tous ceux disponibles. Le tableau des ports / services les plus connus ci-dessus n’est qu’un petit extrait de tous les ports et services disponibles. Il en existe à foison : service de partage de fichier, service pour le bureau à distance, service FTP, service SSH, …
Consultez le site de l’IANA pour plus de détail.
Pour que ces services ne puissent pas être utilisés à des fins malveillantes, il est nécessaire de fermer les ports réseaux non utilisés pour empêcher des machines extérieures de s’y connecter.
C’est exactement le rôle d’un firewall. Le firewall est un élément de filtrage. Il ne va laisser passer que les connexions en suivant les règles qui lui ont été préalablement configurées.
Le firewall peut être :
- Logiciel : présent directement dans nos ordinateurs.
Par défaut, la majorité des systèmes d’exploitation en possèdent. Il faut les activer et les utiliser.
L’avantage d’un firewall logiciel est qu’en plus de surveiller les flux, il va lever des alertes dès qu’un processus ou une application tente d’accéder à internet (ou au réseau).
Néanmoins, il a quand même un point faible : étant installé sur un ordinateur, en cas de compromission de la machine par un code malveillant ou un virus, il pourra être facilement désactivé.
- Physique :
C’est le plus sûr car les fonctions de filtrage sont réalisées par un matériel dédié. Il est très difficile de l’attaquer depuis ses ports. Sauf si vous avez délibérément laissé le mot de passe d’usine ou choisi un mot de passe faible…
En général l’administration depuis l’extérieur (le réseau le moins sûr) est désactivée par défaut.
Ces firewalls de base, font uniquement du filtrage de ports logiques. Des modèles permettent de faire du filtrage avancé comme le DPI (Deep Packet Inspection): une inspection profonde du trafic reposant sur un système d’empreinte à l’image du fonctionnement d’un antivirus.
Par contre, ce type de filtrage demande beaucoup de ressources CPU et nécessite une mise à jour des bases d’empreintes (tout comme le fait un antivirus).
Il est conseillé d’avoir ces deux types de firewalls car ils possèdent des fonctions complémentaires.
À la maison les box internet embarquent la fonction de firewall et font office de firewall physique.
Il est fortement recommandé d’activer les pares-feux logiciels de chaque machine du réseau pour les raisons évoquées plus haut.
Comment le paramétrer ?
Pour paramétrer un firewall, partez du principe qu’il faut bloquer toutes les communications entrantes. Ensuite, ouvrir uniquement les ports dont on a besoin.
J’espère ne pas vous avoir perdu dans mes explications. J’ai essayé de rester le plus simple possible de manière à ce qu’un plus grand nombre de lecteurs puisse comprendre le fonctionnement de base d’un Firewall.
Néanmoins, si une explication plus détaillée vous intéresse : comment sont construites les trames, comment fonctionne les translations d’adresses, les adresses MAC, les couches du modèles OSI, … Dites le moi dans les commentaires et je me ferai un plaisir de faire un article avancé sur le sujet.