Du point de vue du discours, ce mouvement est très intéressant à comparer avec celui qui alimentait les présentations commerciale il y a à peine deux ou trois ans : installez un firewall et vous serez tranquille. De l'avis de toute personne saine d'esprit et disposant d'un poil de sens critique, il y avait là un énorme mensonge. Loin de remettre en cause l'utilité d'un pare-feu, il était bien évident que ce dernier ne protégeait pas de tout. Et là, on passe carrément de l'autre côté : votre firewall ne sert à rien, vous pouvez le jeter, on va vous proposer mieux. Ah ouais... Sauf que de mon point de vue, passer d'un extrême à l'autre n'a jamais sauvé personne et le discours du zéro firewall n'est pas plus convaincant que celui du tout firewall.

Alors c'est quoi un firewall ? C'est un filtre, un système de contrôle d'accès niveau réseau. Ni plus, ni moins. Son boulot, c'est de faire de la compartimentation et du filtrage de flux. Point à la ligne. Forcément, ce type de définition ne va pas satisfaire énormément de gens qui vendent ce genre de produits, sans parler des gens qui ont cru le discours de ces derniers[1], qui essayent de prêter à ces engins des vertus curatives proches du chamanisme soit qu'ils n'ont pas, soit qu'il est extrêmement difficile de leur donner. Des choses comme par exemple la fameuse inspection des protocoles applicatifs... Avant, on faisait ça avec des proxies, en interceptant le flux. Simple, efficace. Maintenant, on essaye de faire ça à la volée, avec des mélange de proxies, d'IDS, d'IPS et de beaucoup de glace. Sauf que, au final, on se retrouve avec les mêmes problèmes et les mêmes techniques de contournement, en particulier si on commence à toucher à des joyaux de complexité comme les RPC Windows ou tout simplement les applications Web.

Donc acte. Un firewall, ça se contourne, en particulier dès qu'on attaque le niveau 7 et encore mieux si c'est chiffré. Pour autant, est-ce une nouveauté dans la paysage ? Est-ce que votre bon vieux firewall bloquait les attaques à destination de vos applications ? Non. Il ne serait jamais venu à l'idée d'un administrateur[2] de compter sur son firewall pour bloquer une bonne vieille format string sur son non moins vieux (mais pas aussi bon) wu-ftpd. Le firewall, il est là pour restreindre l'accès aux seuls services proposés, pas pour les protéger.

Je sais, ce n'est pas sexy du tout, mais non, un firewall ne protège pas vos applications. Au mieux, il pourra disposer de modules qui essayeront. Pour autant, est-il inutile ? Hummm. Laissons cette question pour plus tard.

Bisounours

Maintenant, passons à l'applicatif, puisque c'est lui que nous voulons protéger. Et pour ce faire, je vais prendre l'exemple du Web qui me parait le plus criant, à plusieurs titre. D'abord parce que les applications web sont pleins de bugs. Et un "cross-site scripting" (XSS) par ci, et un "SQL injection" par là, un "directory traversal" à droite, un "code injection" à gauche, ce ne sont pas les problèmes de sécurité qui manquent. Solution ? C'est le second point qui rend ces applications intéressantes. On nous rabat les oreilles à grands coups de reverse proxy. Et mon reverse proxy par ci, et mon mod_security par là, et si je colle ma wonder-box-rouge-qui-clignote là, je suis safe. Force est de constater que ça ne marche pas. Pourquoi ? Parce qu'on ne rustine pas un applicatif pourri. Et tant que les gens n'auront pas compris que la sécurité, c'est un process qui réclame une implication globale à tous les niveaux[3], on n'y arrivera pas. Sans parler des super concepts de la mort et des idées formidables qui ne marchent pas, comme limiter la taille des payloads TCP pour combattre les buffers overflow, chercher 1=1 pour éviter les injection SQL ou balancer des RST après les paquets d'attaques en espérant les bloquer[4].

Alors qu'est-ce qui protège un applicatif ? Lui-même. Un outil bien pensé, un développement bien cadré, une bonne installation, du moindre privilège, etc. Pas mal de gens ont du mal à intégrer ça, en particulier ceux qui développent de grosses applications, custom de préférence. Autant qu'ils ont du mal à se faire à l'idée que le 100% n'existe pas en sécurité. Ils aiment se le répéter, mais c'est un peu comme parler du père fouettard (le beau-frère de Candyman). Tout le monde le fait, mais personne n'y croit. On se dit que bon, avoir les équipe d'admin d'un côté, en séparant bien le réseau de l'applicatif de préférence, et la sécurité d'un autre, et tout le monde qui se renvoie la balle façon passe-à-dix, ça suffira. Ben non, désolé, l'expérience le montre tous les jours : ça ne marche pas.

Tout ça pour dire que, finalement, et comme l'écrit Laurent (mais j'aime bien noircir le trait), les firewalls ça sert. Mais pas à protéger les applications, cadre dans lequel on peut les contourner. Ils restent donc à mon humble avis indispensables pour, au risque de me répéter, d'abord compartimenter son réseau et ensuite pour restreindre les flux entre les compartiments. Des exemples de ce que ça donne ? Prenez Slammer. Est-ce que port UDP 1434 aurait été joignable depuis Internet avec une bonne politique de filtrage réseau ? Est-ce que des paquets à destination de ce même port aurait pu sortir ? Au final est-ce qu'avec un bête filtrage de port tous ces sites auraient participé à la grande fête du ver de janvier 2003 ? Fin de plaidoirie.

Alors, oui, les applications sont les cibles des attaques. C'est d'ailleurs une affirmation tellement évidente que je m'étonne à l'écrire. Peut-on les protéger avec des équipements périphériques ? Dans une certaine mesure oui, mais certainement pas à la mesure de ce que la plupart des gens attendent. Leur meilleur protection reste donc leur design et la manière dont elles sont déployées. Pour revenir sur le Web, un hébergeur qui se fait rooter un serveur par croisement de vulnérabilité sur des sites différents mérite les plumes et le goudron[5]. Un gars qui se fait pourrir son Dotclear avec la dernière faille publiée mérite la honte publique, rapport aux conditions d'exploitation.

Donc en entrée, ça sert. Et en sortie ? Parce que c'est bien là le centre du discours en faveur de l'abolition du firewall. Ils sont également censé empêcher les gens de sortir à tort et à travers. Et là encore, on va lui trouver pleins de défauts, en particulier qu'il est simple de le contourner. De nombreux outils P2P nous en font la démonstration tous les jours, de Skype à Teredo en passant par Hamachi. Alors à quoi servent nos dispositifs de filtrage si tous ces outils peuvent les contourner ? J'aurais tendance à dire qu'ils forcent l'utilisation de ces outils, ce qui est déjà pas mal. D'abord d'un point de vue technique, en ce qu'il existe pas mal de méthodes pour restreindre de manière assez forte l'installation de programmes sur un poste de travail. De plus, certains travaux avancent des pistes intéressantes pour la détection de tunnels. C'est certes fastidieux, mais il faut savoir ce qu'on veut. Ensuite d'un point de vue politique, parce que si votre politique de sécurité interdit l'utilisation de ce type de programme, on pousse l'utilisateur à la violer, ce qui au final nous arrange aussi, ne serait-ce que parce que ça permet de taper sur le contrevenant quand les choses se passent mal.

Bon d'accord, ce billet est long, en plus il est très brouillon. Mais finalement, il veut avancer dire deux choses :

  1. Oui, les firewalls servent à quelque chose quand on les utilise correctement, c'est à dire pour faire ce qu'ils savent faire, à savoir de la compartimentation et du filtrage réseau.
  2. Non, les firewalls ne sont pas la solution universelle, ils ne sont qu'une brique technologique, certes non négligeable, parmis tant d'autre dans le dispositif de sécurité du système d'information.

Le salut ne me semble donc pas résider dans l'une ou l'autre des deux extrêmes que sont le tout firewall et le zéro firewall. Pour autant, les partisans de cette dernière vision avancent des idées et des concepts intéressants. Il est juste un peu dommage qu'ils les pensent suffisant pour sauver l'Internet...

Notes

[1] On a toujours du mal à admettre s'être fait rouler dans la farine

[2] Le vrai, pas le gars formé au click'o'drome qui ne comprend pas le quart des concepts qui régissent le monde dans lequel il évolue.

[3] Ça y est, j'ai laché la phrase favorite de pas mal de consultants

[4] J'adore celle-là

[5] Et même la chounga par la même occasion