Home » Comment ça marche, Internet

Comment brûle un firewall ?

9 septembre 2010 aucun commentaire
tags : ,
Download PDF

Crédit photo : Ian Lloyd (flickr)

Après les émotions d’hier, il est temps de revenir à nos bons vieux fondamentaux techniques.

Laissons de coté les croyances de certaines personnes haut placées mélangeant firewall et traitement de texte. Un firewall c’est un logiciel (non, pas un matériel, malgré ce que d’autres personnes tentent de vendre) qui sert à filtrer des paquets.

Nous avons deja abordé le fonctionnement d’IP et de TCP, je n’y reviendrais donc pas.

Contrairement à une croyance tenace, probablement héritée de films plus ou moins anciens, on ne peut pas, même en étant très doué, pirater tout et n’importe quoi via internet.

La première chose à avoir pour pirater une machine, c’est une porte qui puisse être défoncée. Dans la vraie vie, vous pouvez toujours taper dans un mur dans le but d’y faire un trou pour rentrer, sur le réseau, si une machine refuse vos demandes de connexions pernicieuses, vous ne pourrez jamais la forcer à les accepter.

Partant de la, un firewall sur une machine qui refuse déjà toute connexion, ca n’a strictement aucune utilité.

La ou ça a un intérêt, c’est

  • d’une part lorsqu’on ne maîtrise pas ce qui est installé sur une machine (généralement faute de compétences) .
  • mais aussi et surtout lorsqu’on souhaite autoriser de manière sélective l’accès à des ports ou renforcer la sécurité de logiciels qui ne proposent que des contrôles trop légers à son gout.
  • et enfin, les firewall peuvent également servir à filtrer le trafic sortant. C’est par exemple le cas des réseaux d’entreprise qui veulent interdire MSN, le P2P ou autre.

Quelques exemples pratiques :

  • Madame Michu a tout un tas de logiciels sur son PC. Elle a activé le firewall de Windows pour se protéger comme Mme Albanel elle a dit. Mme michu devrait penser à aller faire un tour dans les paramètres du firewall pour bien vérifier que des logiciels ne se sont pas octroyés plus ou moins discrètement le droit de passer outre la protection.
  • Un hébergeur peut installer un firewall centralisé entre sa sortie vers internet et ses clients pour gérer en un seul point la sécurité de la plateforme. Dans ce cas, on pratique généralement le « tout est fermé en entrée et on ouvre sélectivement ce dont on a besoin et tout est ouvert en sortie et on ferme sélectivement ce qui pose problème au cas par cas ».
  • Une entreprise dont le patron est très axé productivité peut installer, en plus d’un routeur qui fait du NAT (et protège donc mécaniquement de tout trafic entrant, tout en permettant de n’avoir qu’une seule IP publique), un firewall filtrant le sortant pour n’autoriser que l’accès au web, voir pire, une redirection automatique vers un proxy qui permettra de choisir précisément quels sites peuvent être autorisés ou interdits.

Si vous avez bien suivi les exemples, vous avez compris qu’un firewall peut se trouver aussi bien sur la machine finale à protéger qu’en amont dans le réseau. Intéressons nous au second cas en détaillant un peu le fonctionnement.

Comme je l’ai dit dans quelques précédents articles, un paquet de données sur internet transporte plusieurs informations (en plus de sa « charge utile » : la partie du paquet constituée des données à transmettre) dont :

  • Les adresses IP source et destination
  • Les ports source et destination
  • Le protocole utilisé au dessus d’IP
  • Les éventuels numéros de séquence de la connexion s’il s’agit de TCP

Le logiciel faisant office de firewall dispose d’un certain nombre de directives autorisant ou interdisant les éléments ci dessus.

Le comportement générique d’un firewall (celui qu’on voit le plus souvent chez le particulier) est d’interdire la totalité de ce qui peut entrer et d’autoriser tout ce qui peut sortir.

Si vous êtes un peu au calme et attentif, vous avez tout de suite saisi le problème. Il n’y a pas de notion de communication mais uniquement des paquets sur le réseau. Si on autorise toutes les sorties mais qu’on interdit toutes les entrées, on ne risque pas de pouvoir communiquer avec qui que ce soit.

Pour contourner ce problème, le firewall fait un suivi systématique des connexions légitimement ouvertes et fermées. Concretement, lorsque votre navigateur va établir une connexion avec l’extérieur, il choisi un port local et envoie son paquet a destination de dehors sur le port 80 (web). Le firewall va stocker les 4 informations (port et IP source, port et IP destination) pour laisser passer la réponse (qui aura strictement les mêmes informations mais dans l’autre sens). Lorsqu’une demande de clôture passe, le firewall supprime cette autorisation temporaire (il la supprime aussi s’il n’a pas vu passer de paquets depuis un certain temps de l’ordre de quelques minutes pour éviter de laisser une porte béante ouverte si la communication n’a pas été terminée proprement.

Dans une activité de protection de serveurs, ce fonctionnement n’est pas nécessairement opportun. On prendra par contre soin d’ouvrir en entrée le port 80 d’un serveur web pour que les visiteurs puissent accéder au contenu. A coté de ça, si la machine n’a pas besoin d’accéder au réseau, toutes ses sorties seront fermés pour éviter qu’un attaquant ayant éventuellement compromis la machine ne puisse l’utiliser pour faire du mal ailleurs.

Mais, me direz vous, si on fait bien attention à ce qui tourne sur une machine et qu’on n’a donc que le strict nécessaire et que les autres ports sont fermés, à quoi sert le firewall ?

Eh bien par exemple, si vous installez un serveur MySQL et que vous souhaitez qu’il puisse être consulté depuis une machine ailleurs sur le net, même si MySQL embarque un contrôle d’accès par identifiants et par IP, le port 3306 sera tout de même ouvert à tous les vents et exposera donc la machine a un petit malin qui pourrait vouloir y rentrer ou le harceler dans le but de le faire planter ou de le saturer. On prendra donc soin d’interposer un firewall qui ne laissera passer le trafic que depuis le serveur distant qu’on souhaite autoriser et qui fermera de facto le port aux autres IP qui pourraient vouloir tenter de se connecter.

L’avantage du firewall situé sur le réseau, c’est que la sécurité est centralisée. Si vous détectez une IP qui tente d’entrer par tous les moyens,  vous pouvez la bloquer pour l’ensemble du réseau d’un seul coup. Le problème de la centralisation, c’est que si votre firewall rencontre une difficulté (plantage, saturation, mauvaise configuration…), toutes vos machines sont plus ou moins dans le noir.

C’est pour quoi on porte généralement une attention toute particulière à tout ceci et que les machines les infrastructures les plus critiques disposent soit d’un firewall dédié en amont, soit d’une configuration de protection locale, voir des deux, couplé à un système permettant de contourner un firewall « en panne » pour ne plus reposer que sur la configuration de sécurité locale.

Lorsque dans un film, vous entendez l’acteur jouant le rôle du héro-robin-des-bois crier qu’il a réussi à casser le deuxième firewall et qu’il en reste encore 3, c’est pour le show. on empile rarement 5 firewall et au final, le problème de sécurité se situe le plus souvent sur l’application qui est ouverte à tous les vents sur le firewall que sur celle qui est masquée derrière un port fermé.

En matière de sécurité, la règle est simple : plus un logiciel est utilisé et répandu,  plus il est sujet à des problèmes de sécurité. Non qu’il soit plus vulnérable en lui-même, il est simplement plus intéressant pour une personne souhaitant exploiter une faille de passer du temps à casser un logiciel répandu qui lui ouvrira les portes de nombreuses machines plutôt que de tester les vulnérabilités d’un logiciel rarissime.

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.


neuf − = 3