Ce mémo a été publié le 1 août 2015 et peut contenir des informations qui peuvent être incomplètes, non mises à jour voir erronées du fait de son ancienneté. N'hésitez pas à compléter votre recherche sur des articles plus récents.

Avertissement

Je rappel que les tutoriels présentés doivent permettre de créer une infrastructure web dans un environnement de test, le plus proche possible d’un serveur de production se rapprochant d’un serveur mutualisé chez un hébergeur comme 1&1.

Cette infrastructure présente les bases de la configuration et ne possède aucun moyen de défense contre d’éventuelles intrusions.

Par conséquent, vous êtes seul responsable si vous vous contentez de suivre ce tutoriel pour une mise en ligne d’un serveur web sur internet avec un accès public.

Vous voilà averti, passons aux choses sérieuses.

Introduction

Ce tuto fait parti d’un ensemble qui conduit à créer une infrastructure de serveurs web avec différents rôles en utilisant VirtualBox : “[Tuto – Infrastructure Web – Debian 8] – Présentation et objectifs”.
Il va vous permettre de mettre en place un serveur virtuel local avec un proxy et un reverse proxy.
L’objectif est de construire un vlan dans lequel seront installées les VMs web, base de données et administration / monitoring et ainsi n’avoir qu’un seul point d’entré pour une multitude de sites web.

Cloner la machine gabarit

Il vous faut tout d’abord cloner et configurer la machine gabarit préparée dans “[Tuto – Infrastructure Web – Debian 8] – La machine gabarit” puis dans “[Tuto – Infrastructure Web – Debian 8] – Cloner et préparer la machine gabarit“.

Dans ce tutoriel, je vais la nommer « jbnet-proxy »

Configuration de la VM

Avant de démarrer la VM « jbnet-proxy », il faut faire quelques ajustements dans sa configuration.

Pour la mémoire, 512 Mo suffisent largement.
Dans « Réseau », vous devez avoir le mode d’accès réseau de la carte 1 positionnée sur « Accès par pont ».

Par contre, il va falloir ajouter une seconde carte réseau pour le VLAN.

Cliquez sur « Carte 2 ».

  1. Activez la carte.
  2. « Mode d’accès réseau » : sélectionnez « Réseau interne »
  3. Validez en cliquant sur le bouton [Ok]

Démarrez la VM.

Configuration réseau

Activer et configurer la carte eth1

Puisque vous avez suivi le guide “[Tuto – Infrastructure Web – Debian 8] – Cloner et préparer la machine gabarit“, vous déjà probablement attribué une ip fixe à la carte eth0 (carte 1 de VirtualBox). Dans la suite de ce tutoriel, j’ai attribué l’ip 10.0.0.100 à la carte 1.

Pour la carte 2 (eth1), il faut ajouter son fichier de configuration dans le répertoire /etc/network/interfaces.d/.

Dupliquez le fichier /etc/network/interfaces.d/eth0.conf vers /etc/network/interfaces.d/eth1.conf

Éditez le fichier et modifiez les paramètres pour arriver à cette configuration :

Relancez le serveur pour la prise en compte :

Un ifconfig pour vérifier que tout est en ordre :

Activer le transfert entre eth0 et eth1 avec l’ip forwarding et iptables

Il faut maintenant activer le lien entre les 2 cartes : c’est l’ip forwarding.

Vous pouvez vérifier l’état actuel de l’ip forwarding avec cette commande :

Résultat :

Pour activer de façon permanente, décommentez la ligne suivante dans le fichier /etc/sysctl.conf

Exécutez ces commandes pour la prise en compte de la modification (ou rebootez la VM) :

Résultat :

Il faut maintenant activer le transfert réseau entre les 2 cartes réseaux grâce à iptables :

A partir de là, le transfert s’établit, mais n’est pas encore permanent.

Rendre permanente la configuration iptables

Il faut pour cela charger les règles iptables au démarrage du serveur.

Tout d’abord, sauvegardez les règles déjà configurées plus haut en créant le fichier /etc/iptables.up.rules

Le fichier /etc/iptables.up.rules devrait contenir ces lignes :

Créez le fichier /etc/network/if-pre-up.d/iptables :

Le fichier doit être exécutable :

Rebooter la VM puis affichez la liste des règles iptables.

Résultat :

Comme l’indique la partie « Chain POSTROUTING », tous les paquets réseau sont redirigés vers eth0.

A ce stade, ce n’est utile que pour les serveurs sur le vlan (192.168.2.x).
Ils pourront principalement communiquer avec internet pour se mettre à jour, c’est la fonction proxy.

Mais en ce qui concerne l’hébergement de site, nous avons besoin que des connexion extérieures arrivent sur un serveur dans le vlan.
C’est donc l’inverse d’un proxy, on parle alors de reverse proxy.

Installer un reverse proxy avec NGINX

Installer et paramétrer NGINX

Créez le fichier /etc/apt/sources.list.d/nginx.list :

Récupérez la clé de sécurité apt :

Mettez à jour la liste des dépôts et installez nginx :

Créez une sauvegarde du fichier /etc/nginx/nginx.conf :

Éditez le fichier et adaptez-le pour arriver cette configuration (volontairement très simple) :

Vous pouvez ajuster ces paramètres suivant la configuration du serveur :

  • worker_processes : nombre de CPU du serveur.
  • worker_connections : nombre de connections simultanées qui doit être égal ou inférieur à la valeur renvoyée par la commande « ulimit -a »

Créez le fichier /etc/nginx/conf.d/proxy.conf :

Source : http://wiki.nginx.org/FullExample

Avant de redémarrer NGINX, effectuez un test pour vérifier que la configuration ne comporte pas d’erreur :

Résultat :

Puis relancez NGINX :

Configurer un site web

Il faut maintenant indiquer à NGINX quel serveur solliciter dans le vlan suivant l’URL demandée.

Créez les répertoires :

  • sites-available : contient les fichiers de configuration des sites web
  • sites-enabled : contient un lien symbolique vers les fichiers de configuration des sites web actifs.

Exemple de fichier pour le site test.jbnet.lan : /etc/nginx/sites-available/test.jbnet.lan.conf

Pour activer la configuration, il faut créer un lien symbolique :

Pour que NGINX puisse prendre en compte les fichiers des sites web actifs, il faut ajouter une ligne dans le fichier /etc/nginx/nginx.conf :

Ce qui donne :

Redémarrez NGINX pour prendre en compte cette nouvelle configuration :

ftp-proxy

ftp-proxy permet de mettre en place un proxy spécialement dédié au FTP.
Il va permettre de se connecter directement au serveur web situé dans un vlan.

Installation

Le fichier de configuration est : /etc/proxy-suite/ftp-proxy.conf

Faites-en une copie au cas où…

Modifiez les paramètres suivant :

Commentez la ligne :

Créez le répertoire de log :

Activer le service et le démarrage automatique au boot

Editez le fichier /etc/default/ftp-proxy et modifiez RUN_DAEMON à yes :

Démarrez le service :

Le fichier /etc/hosts pour « orienter » la connexion FTP

Le serveur ftp-proxy a besoin de connaitre l’IP du serveur ftp cible.
Pour cela, il utilise le nom du serveur spécifié dans le nom d’utilisateur (ex : jbnet-user@test.jbnet.lan) et du fichier /etc/hosts.

Pour chaque site web ajouté sur un serveur web dans le vlan, il faut ajouter une ligne dans le fichier /etc/hosts du serveur proxy.

Par exemple, si le site web test.jbnet.lan est hébergé sur le serveur jbnet-web01 qui possède l’ip 192.168.2.10 :

Connexion avec FileZilla

A partir de maintenant, pour vous connecter en FTP de votre PC vers une VM à l’intérieur du vlan, vous devez utiliser ces paramètres de connexion :

  • Hôte : test.jbnet.lan (ou ip du serveur proxy)
  • Identifiant : jbnet-user@test.jbnet.lan
  • Mot de passe : celui que vous avez utilisé.
  • Port : 21

Mais il faut d’abord créer le serveur web…
RDV au prochain chapitre.