LReverse Proxy iconorsque l’on construit une architecture, le choix des technologies utilisées est important. Certaines différences entre les outils peuvent apporter une réelle valeur ajoutée à un projet, selon ses objectifs et enjeux.

Nous allons nous intéresser aujourd’hui aux solutions de reverse proxies (pour comprendre les reverse proxies). Les trois technologies libres et open source les plus connues pour ces équipements d’infrastructure sont les suivantes : NGINX, Squid et HAProxy. Chez NBS System, nous utilisons ces trois solutions pour des raisons et usages bien différents.

NGINX, notre reverse proxy principal

Nginx reverse proxy NBS SystemNGINX est utilisé chez NBS System pour nos reverse proxies principaux : la solution est installée en tête de notre infrastructure globale et accueille l’intégralité du trafic web de nos clients. Ce choix a été motivé par plusieurs raisons :

  • Performance : NGINX est particulièrement reconnu pour les bonnes performances qu’il offre. Cela est dû au positionnement adopté par le créateur de NGINX, Igor Sysoev, à sa conception en 2002. Plutôt que de chercher à créer un outil répondant à de nombreux besoins et pouvant « tout faire », Igor Sysoev a posé des limites dès le début du projet : l’outil sera un reverse proxy, un proxy mail et un serveur web uniquement. C’est tout ce qu’il saura faire, mais il le fera bien. Objectif réussi ! La structuration du code source de ce projet offre la possibilité de contributions efficaces et encadrées en garantissant une certaine homogénéité du code et limitant les risques de dégradation des performances ou de la sécurité. Les développeurs peuvent donc enrichir NGINX en toute sérénité. L’outil peut ainsi être relativement versatile, et très performant.
  • Montée en charge : NGINX supporte également très bien les montées en charge, ce qui en fait un candidat idéal pour une infrastructure comme la nôtre, hébergeant des clients à forte saisonnalité comme les e-commerçants (soldes, périodes de fêtes…).
  • Industrialisation : NGINX est nativement bon en termes d’aide à l’automatisation. Cela, ainsi que le fait qu’il puisse fonctionner avec plusieurs fichiers de configuration (un par client, par exemple), rendent l’outil particulièrement facile à industrialiser. Une caractéristique qui le fait répondre parfaitement aux besoins de construction d’architectures volumineuses comme en a NBS System.
  • SSl certificate iconSupport HTTPS : cette fonctionnalité fournie par NGINX a particulièrement orienté notre choix, notamment par rapport à HAProxy, qui ne supporte que du HTTP.
  • Développement : nos équipes comptant des développeurs NGINX. C’est également pour cette raison qu’il était naturel pour NBS System de s’orienter vers cette solution (ils ont notamment, plus tard, créé NAXSI, un module NGINX).

HAProxy, notre reverse proxy supplémentaire au cas par cas

HAProxy logoHAProxy est une solution créée en 2001 par Willy Tarreau. C’est un excellent reverse proxy, pouvant offrir de très bonnes performances, mais à l’époque de notre choix, il ne supportait pas le protocole HTTPS. Impossible donc, avec cette solution, de proposer des sites sécurisés, rendant donc son utilisation impensable pour nous, pour qui la sécurité informatique a toujours été un sujet majeur. Le support SSL a, depuis, été intégré a partir de la version 1.5 (stable en 2014) de HAProxy.

Nous utilisons tout de même HAProxy en supplément de nos Reverse Proxies globaux sous NGINX dans certains cas : à la demande de certains clients, ou bien en préconisation pour les sites avec une très forte montée en charge. Nous avons fait ce choix pour les raisons suivantes :

  • Performance et montée en charge : comme NGINX, HAProxy supporte très bien les montées en charge. Il fournit nativement d’excellentes performances, autorisant un déploiement rapide impliquant peu de prérequis système et une maintenance simplifiée.
  • prise de décisionOptions de cache et prises de décision conditionnelles : là où HAProxy fait vraiment la différence, c’est sur le cache. En cas de grosse montée en charge, si les processus traitant les demandes en aval sont surchargés, il fera du délestage : HAProxy servira à certains internautes une page d’attente pour les faire patienter le temps que les processus baissent en charge, et aient assez de ressources pour traiter leurs requêtes. Mais ce n’est pas le plus intéressant : en effet, ce Reverse Proxy analyse les statistiques des utilisateurs (nombre, comportement, cookies, sessions…) et s’adapte pour servir au mieux les internautes. C’est ce qui le rend particulièrement appréciable. Il choisira par exemple, dans le cas d’un site de e-commerce, de privilégier les internautes ayant un panier rempli plutôt que les simples visiteurs. Ces derniers étant moins susceptibles de réaliser un achat, leur perte éventuelle sera moins grave pour l’entreprise, ou en tous cas aura une moindre influence sur les requêtes.

On peut également noter que HAProxy offre de très bonnes capacités de load balancing par rapport aux autres solutions (elles ne sont pas utilisées chez NBS System).

Squid, notre proxy simple

Squid logoSquid a été créé au début des années 1990 ; c’est l’une des premières solutions de reverse proxy. Cependant, elle offrait de moins bonnes performances que NGINX au moment où ce dernier est sorti.

Squid avait également des inconvénients d’exploitation : il fonctionnait avec un seul fichier de configuration, ordonné. Les directives données dans ce fichier doivent donc être à la bonne place les unes par rapport aux autres, ce qui rend complexe son industrialisation. Aujourd’hui, l’outil s’est amélioré sur ce point, mais il reste encore très loin de la souplesse de NGINX…

proxy iconCependant, là où Squid est particulièrement efficace, c’est sur sa fonction de proxy. C’est ainsi que NBS System l’utilise, comme une brique de filtrage HTTP/HTTPS.

En effet, si environ 90% du trafic d’un serveur web sont des requêtes entrantes filtrées en amont par les reverse proxies et les pare-feux, environ 10% sont des requêtes sortantes. Pour filtrer ces requêtes, nous utilisons également des pare-feux : le problème est que ces derniers ne proposent que du filtrage par adresse IP. Or certains sites web sont enregistrés avec énormément d’adresses IP, ou changent d’IP régulièrement… Impossible, donc, de filtrer les requêtes dirigées vers ces sites.

Chez NBS System, nous utilisons donc les pare-feux pour filtrer les requêtes vers les réseaux connus par le client (dont on connaît donc la ou les adresses IP). Pour le reste, nous utilisons le proxy Squid : il propose en effet du filtrage par nom de domaine ! Plus de problèmes d’adresses IP.

L’utilisation de Squid apporte également un contrôle en cas de compromission du serveur : en effet, il empêche ce dernier d’envoyer des données à un site internet. Un pirate souhaitant extraire des données devra venir directement les extraire sur la machine en question.

Une initiative de Squid est également à noter : les équipes investissent énormément dans leur solution pour respecter au maximum les RFC (Requests For Comments) en relation avec les activités de celles-ci.

Sécurité informatique et reverse proxy : que choisir ?

Les technologies open source et libres se tirant les unes les autres vers le haut, les différences pures entre les produits ne sont pas nécessairement majeures. Il convient, avant de faire un choix, d’analyser son projet pour choisir le produit le plus adapté et l’utiliser à bon escient.

Il est à noter que NBS System utilise également NGINX en tant que serveur web. Rendez-vous dans un prochain article sur le sujet !

Source technique : Denis Pompilio

Lucie Saunois
Lucie Saunois
Passionnée d'informatique, en particulier de sécurité, depuis qu'elle a rejoint l'OT Group en 2015, Lucie se spécialise dans la vulgarisation technique pour permettre à tous d'appréhender ces sujets parfois complexes.