You are on page 1of 7

~1~

Plusieurs serveurs Web avec une seule


adresse IP publique : mise en place dun
reverse-proxy sous Ubuntu.
Nous disposons que dune seule adresse IP publique et nous voulons permettre laccs nos
diffrents serveurs web locaux depuis le rseau public selon le nom de domaine utilis.
Aprs avoir expos les diffrentes solutions envisages, cet article explique comment nous
avons mis en place un reverse-proxy en recyclant un vieux PC, avec Linux (Ubuntu) et NGinx.

Le problme

Solutions

Reverse proxy, quesako ?

Solutions techniques

Dans la pratique

Installation Ubuntu

Adresse IP

Administration depuis un poste Windows

Installation et configuration NGinx

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 ?

Mise en place dun reverse-proxy sous Ubuntu

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.

Reverse proxy, quesako ?


Le reverse proxy comme son nom lindique est linverse du proxy. Son rle est de permettre
laccs dun client distant vers un ou plusieurs serveurs locaux. Lintrt principal du serveur
reverse proxy est de pouvoir accder via une seule adresse publique aux adresses prives du
domaine local en se servant de lentte http des paquets envoys par le client distant. Ce
systme servira rediriger lurl demand vers le bon serveur web.
Fonctionnement du reverse proxy.

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.

Mise en place dun reverse-proxy sous Ubuntu

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

Mise en place dun reverse-proxy sous Ubuntu

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.

eth0 est le nom de la carte rseau de notre exemple.

Modifier la ligne pour quelle telle que suit :

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 :

Si la commande ne marche pas redmarrez votre ordinateur.

Administration depuis un poste Windows


SHH + Putty pour faciliter ladmin depuis un autre poste (pratique par exemple pour copier/coller les
instructions qui suivent)
Maintenant vous pouvez accder au shell de votre serveur reverse-proxy depuis Windows. Putty est
un freeware qui vous permettra daccder au terminal de votre serveur depuis Windows, il est
disponible gratuitement sur internet et est trs simple dinstallation et dutilisation. A louverture de
Putty spcifi ladresse rseau du serveur reverse proxy et la connexion en mode ssh.
Note sur la scurit : Pour faciliter la mise au point de la configuration, on va installer le
reverse proxy en laissant toutes les connexions ouvertes ; une fois que notre serveur sera
rgl, on le scurisera en fermant les ports qui ne sont pas ncessaires et en restreignant les
adresses ip. Nous verrons a dans la dernire partie de cet article.

Installation et configuration NGinx


Pour installer correctement NGINX suivez les tapes suivantes :
Mise en place dun reverse-proxy sous Ubuntu

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

La plupart des applications et en particulier les applications client-serveur fonctionnant sur un


systme GNU\ Linux possdent un ou plusieurs fichiers de configuration. En rgle gnrale, le nom
du fichier de configuration principale se termine par un .conf , cest le cas pour le fichier de
configuration de NGINX.
Ouvrez maintenant le fichier de configuration avec lditeur choisi en mode administrateur.
[Ubuntu@ubuntu ~]$

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.

Reprer les lignes suivantes :

Listen : Port dcoute du protocole HTTP.


serverName : URL du serveur web.
access_log : Fichier de journalisation du serveur.
root : chemin vers le rpertoire web (option a choisir si le site est interne au serveur reverse-proxy).
Index, index.html et index.htm sont les pages a charg par dfaut du site web.
Pour arriver a configurer correctement votre reverse-proxy vous devez dfinir un serveur avec
comme suit :

Mise en place dun reverse-proxy sous Ubuntu

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.

Etapes 4 : Autorisez les paquets entrant des connexions dj tablie.

Mise en place dun reverse-proxy sous Ubuntu

Page 6

~7~

Ouvrir le trafic HTTP depuis lextrieur

Etape 3 : Autorisez les paquets entrant de nimporte quelle source utilisant le port 80
(HTTP) ou le cas chant du port du protocole choisit.

Ouvrir le trafic SSH depuis les postes autoriss administrer


- Autoriser la connexion SSL a ladresse IP du poste que vous avez choisi, cela permettra a
ordinateur autoriss de se connecter au Shell de votre reverse proxy.

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

Mise en place dun reverse-proxy sous Ubuntu

Page 7

You might also like