Lycée Le Castel Proxy Inverse Varnish Quentin Baptier 2014-2015
Présentation d'un proxy Un serveur proxy, appelé également serveur mandataire en français, est une machine faisant l intermédiaire entre un réseau local (LAN) et internet. Généralement utilisé pour relayer les requêtes HTTP. Il a été inventé par le Centre européen de recherche nucléaire en 1994 - le cache - la journalisation des requêtes - la sécurité du réseau local - le filtrage et l'anonymat 2
Présentation d'un proxy inverse Un reverse proxy effectue le travail opposé à celui d un proxy. Un proxy inversé se place entre un serveur et tout ses clients. Le reverse proxy récupère les requêtes HTTP des clients et se charge de les transmettre aux serveurs internes désignés par les requêtes correspondantes. Les Différentes solutions proposées Apache Le logiciel libre Apache HTTP Server est un serveur HTTP créé et maintenu au sein de la fondation Apache. Multiplateforme depuis la version 1.2 C'est le serveur HTTP le plus populaire. Il est distribué selon les termes de la licence Apache. Date de création : 1995 Dernière version : 21 Juillet 2014 version 2.4.10 Par le biais de mod_proxy il est possible de se servir de Httpd Server comme d'un véritable Proxy. Apache à la possibilité de répartir la charge entre les serveurs web. Les aptitudes de proxy inverse sont suffisamment au point pour une mise en production sans difficultés à partir de la version 2.1. Squid Squid est un serveur proxy et inverse capable d'utiliser les protocoles FTP, HTTP, Gopher, et HTTPS. Contrairement aux serveurs proxy classiques, un serveur Squid gère toutes les requêtes en un seul processus d'entrée/sortie, non bloquant. C'est un logiciel libre distribué sous licence GNU GPL. Originaire du projet Harvest datant de 1990, début développement 1996 Dernière version : 3.5 Squid garde les données les plus fréquemment utilisées en mémoire. Il conserve aussi en mémoire les requêtes DNS, ainsi que les requêtes ayant échoué. Les requêtes DNS sont non bloquantes. Il est compatible avec IPv6 à partir de sa version 3. 3
Nginx Nginx est un logiciel libre de serveur Web (ou HTTP) ainsi qu'un proxy inverse Multiplateforme à partir de la version 0.7.52 Dernière version 1.7.9 Ecrit par Igor Sysoev Début du développement : 2002 Date de sortie : 2004 Ses sources sont disponibles sous une licence de type BSD. Nginx est un serveur asynchrone Possible d y implanter des modules afin de compléter les fonctions de base Varnish en détail Varnish est un cache HTTP hautes performances Plateforme : Linux Date de sortie : 2006 Dernière version 3.0.6 Le concepteur est le danois Poul-Henning Kamp, également contributeur au projet FreeBSD. Utilisé pour améliorer les performances des sites web à fort trafic, Varnish dispose également de fonctionnalités de répartition de charge et permet de tester la disponibilité des serveurs produisant le contenu web. Varnish est notamment utilisé par Facebook. Varnish stocke une partie de ses données dans la mémoire virtuelle. La configuration de l outil est réalisée à partir de fichiers VCL, Varnish supporte partiellement la norme ESI (Edge Side Includes). Varnish est distribué sous licence BSD. 4
Varnish et le langage VCL backend vm1 {.host = "192.168.0.10";.port = "80";.connect_timeout = 6000s;.first_byte_timeout = 6000s;.between_bytes_timeout = 6000s; backend vm2 {.host = "192.168.0.11";.port = "80";.connect_timeout = 6000s;.first_byte_timeout = 6000s;.between_bytes_timeout = 6000s; backend vm3 {.host = «192.168.0.13";.port = "80";.connect_timeout = 6000s;.first_byte_timeout = 6000s;.between_bytes_timeout = 6000s; Les backends permettent de définir les serveurs qui seront cachés. 5
Varnish et la répartition de charge backend web3 {.host = "192.168.0.30";.port = "80";.probe = {.request = "GET / HTTP/1.1" "Host: www.monsite.fr" "Connection: close";.timeout = 6s;.interval = 20s;.window = 8;.threshold = 3; director lb random {.retries = 5; {.backend = web3;.weight = 7; {.backend = web2;.weight = 7; {.backend = web1;.weight = 7;... sub vcl_recv {... set req.backend=lb; if (req.request == "GET" && req.url ~ "^\/files\/") { set req.backend = web3; Ici la charge est répartie entre les trois serveurs web. Conclusion Avantages : Ce type d infrastructure permet de contrôler en un unique point l accès aux serveurs. Le proxy va également permettre de filtrer de manière efficace les requêtes qui sont transmises aux serveurs. On peut laisser à la charge du proxy de déchiffrer le traffic SSL/TLS qu il intercepte Ce système permet d obtenir une couche supplémentaire de sécurité, à la place d avoir plusieurs serveurs visibles de l extérieur, il n y a que le proxy qui est mis en avant ce qui permet de cacher le reste des serveurs. Cacher la topologie réseau permet de donner beaucoup moins d informations aux attaquants et ainsi offrir une meilleure résistance aux attaques mais également d effectuer des changements internes sans avoir à en notifier les utilisateurs. 6
Inconvénients : Un seul point d accès au réseau permet d accroître la sécurité mais cela signifie qu il existe un unique point de défaillance du système : si le reverse proxy est attaqué, cela peut engendrer des conséquences graves car l attaquant aura accès à tout le réseau. On peut remédier à cela en mettant en place plusieurs reverse proxy afin de limiter les risques de défaillances. 7