Reverse Proxy Linux
Reverse Proxy Linux
Reverse Proxy Linux
Le problme
Solutions
Solutions techniques
Dans la pratique
Installation Ubuntu
Adresse IP
Scurisation du serveur
Rfrences
Le problme
Lorsque nous dmarrons un nouveau projet pour un client, nous mettons aussitt en place
une plateforme de recette sur un de nos serveurs interne. Cette plateforme peut
comprendre une ou plusieurs machines de faon reproduire la plateforme de production.
Dans la pratique ces machines sont souvent virtualises mais a ne change pas le problme :
elles ont chacune une adresse IP locale diffrente et nous voulons les rendre visibles de
lextrieur pour que nos clients puissent tester les dveloppements, mais nous ne disposons
que dune seule adresse IP publique. Comment associer plusieurs serveurs Web avec une
seule adresse IP ?
Page 1
~2~
Solutions
Il existe plusieurs solutions possibles : on pourrait utiliser des ports spcifiques pour chaque serveur
( :8081, :8082) mais ce nest pas trs lgant. Nous souhaitons donc associer des sous domaines
chaque machine. Nous avons donc cr autant de sous domaines que de projets : projet1.dev.cltservices.com, projet2.dev.clt-services.com.
Ce quil nous faut cest le moyen de rediriger les flux http entrants vers une machine (virtualle ou
physique) ou une autre en fonction du sous domaine.
Deux possibilits :
acheter un routeur pro qui offre cette fonction, mais cest cher
recycler un vieux pc qui ne sert plus en reverse proxy, cest ce que nous allons faire.
Lautre avantage du reverse proxy est de protger les serveurs locaux des attaques externes
ce qui accroit la scurit du systme dinformation interne. En effet la machine qui va tre
expose lextrieur est ddie cette seule fonction de routage et offre une surface
dexposition beaucoup plus rduite car elle a beaucoup moins de logiciels installes. Les
reverse-proxy offrent aussi dautres fonctions, comme un cache de requte ou des services
de fail-over ou dquilibrage de charge entre les serveurs, mais que nous nutiliserons pas ici.
Le reverse-proxy prend en charge plusieurs protocoles dont http et SSL.
Page 2
~3~
Solutions techniques
Le reverse proxy le plus frquemment cit dans les articles web cest Apache qui permet aussi cette
option en plus de faire serveur web.
Pour viter de mal configurer Apache et de laisser des trous de scurit, et aussi parce quon a juste
besoin de router le trafic entrant, pas dhberger un site ou de faire tourner php sur ce pc, on a
choisit dutiliser plutt un logiciel plus light, spcialis dans la fonction de reverse proxy.
On en a trouv 3 : Squid, Pound et nGinx. On a retenu ce dernier qui est la fois simple utiliser et
qui a fait ces preuves sur de gros sites.
Pour aller plus loin : voir le site NGinx (htpp://nginx.net) et la doc (en anglais) :
http://wiki.codemongers.com/Main
Pour le PC, on a retenu la distribution Ubuntu serveur (Feisty Fawn) mais les tapes de config
seraient peu prs les mmes sur dautres distrib.
Dans la pratique
Installation Ubuntu
Pour simplifier linstallation du reverse proxy et son administration il est prfrable
dinstaller un systme dexploitation de type GNU Linux qui possde un plus lger, ce qui
allge considrablement la charge de calcule ddi au systme. Linstallation dUbuntu peut
se faire sur un ordinateur ancien ou bon march ayant une capacit de mmoire vive
minimale gale 64 mo un disque dur de capacit suffisante pour installer le systme
(comptez plus de 2Go). Rendez-vous sur http://doc.ubuntu-fr.org plus dinformations sur la
configuration minimale et linstallation du systme dexploitation.
Note pour ceux qui ne connaissent rien Linux ; apt-get et sudo
Adresse IP
Pour le bon fonctionnement de votre systme reverse-proxy il vous faudra obligatoirement
assigner une adresse IP fixe votre serveur. Vous pouvez nanmoins choisir le rseau local
auquel il appartiendra tout en assurant la communication entre le serveur reverse-proxy et
les serveurs web locaux (sils appartiennent a un autre sous-rseau). Il est conseill dutiliser
une connexion filaire pour relier votre serveur proxy vos serveurs web.
Dans cet exemple les serveurs web et le serveur reverse-proxy sont sur la mme
segmentation rseau.
Informations du rseau :
Adresse rseau : 192.168.2.0
Page 3
~4~
Masque de sous rseau : 255.255.255.0
Passerelle par dfaut : 192.168.2.1
Ouvrez le terminal et ditez le fichier de configuration dinterfaces rseau.
Reprez la ligne correspondant la carte rseau relier au rseau local. Si une adresse IP
dynamique a t attribue votre carte rseau la ligne devrait normalement ressembler
ceci.
Enregistrer les modifications apportes au fichier. Sous vim appuyez sur la touche Echap
puis entrer :wq . Redmarrer ensuite votre carte rseau en entrant la commande :
Page 4
~5~
Etape 3 : Tlcharger la dernire version de NGYNX avec la commande dinstallation aptget puis patientez jusqu' la fin de linstallation.
[Ubuntu@ubuntu ~]$ sudo apt-get install nginx
sudo
vim /etc/nginx/nginx.conf
Attention : Vous devez disposer des droits administrateurs pour diter le fichier de
configuration des priphriques rseau ou du moins le modifier. Pour cela la commande sudo
doit prcder la commande ouvrant le fichier avec lditeur vim. Vous pouvez nanmoins
ouvrir le fichier avec votre diteur prfr.
Page 5
~6~
Notez que la proprit proxy_pass pointe vers ladresse IP du serveur web local que lon veut
atteindre avec lurl spcifi sur le port donn. De plus le chemin du fichier de journalisation a t
configur par dfaut lors de linstallation de NGINX sur votre machine, mais il vous ait normalement
possible de redfinir le chemin au fichier .log. Le numro de port dcoute est gnralement 80.
Les blocs server et location possdent bien videmment dautre paramtres que vous pouvez
retrouvez sur le site web dIgor Sysoev, lauteur de NGINX (http://nginx.net).
Scurisation du serveur
Lorsque vous connectez votre serveur reverse-proxy a internet certaines failles de scurit peuvent
apparaitre si le port SSH est ouvert. En effet, par default laccs au Shell de votre systme
dexploitation est accessible distance ce qui laisse la possibilit a certains internautes malveillants
de prendre le contrle de votre serveur sils prennent connaissance des informations utilisateur de
votre machine.
Certaines distributions linux possdent Netfilter un module qui fournit au systme des
fonctions de pare-feu. IPtables est la commande qui permet de configurer Netfilter.
Suivez les tapes suivantes pour configurer le pare-feu de votre reverse-proxy dans votre
rseau local :
Restriction des connexions entrantes
Pour viter cela il vous faut nouveau configurer IPTABLES pour contrler louverture du port SSH de
votre serveur reverse-proxy.
-
Vrifier tout dabord que lINPUT Policy est a DROP pour interdire toutes les connexions
entrantes non spcifi.
Etape 1 : Ouvrez le terminal de votre distribution linux et faites en sorte dinterdire toutes
les connexions entrantes.
Page 6
~7~
Etape 3 : Autorisez les paquets entrant de nimporte quelle source utilisant le port 80
(HTTP) ou le cas chant du port du protocole choisit.
Il est trs important dfinir une rgle anti bruteforce SSH. Ces deux rgles ci-dessous
dconnecte le client au bout de trois tentative de connections manques ou aprs 300
secondes dinactivit.
Rfrences
Pour approfondir vos connaissances sur le serveur proxy rendez-vous sur les sites web
suivant :
http://wiki.codemongers.com/Main
http://www.hsc.fr/ressources/breves/pourquoi-relais-inverse.html.en
Page 7