SME-101.08 Serveur mandataire inversé

From SME Server
Revision as of 03:54, 12 November 2018 by Michelandre (talk | contribs) (GA-1.0.2 // Ajustement pour TOC // Mise à jour des liens pour le Cours SME-101 // 2018-11-11 @21h54 HNE.)
Jump to navigationJump to search

Description générale

Ce Cahier-8 du Cours SME-101 décrit les étapes pour l'installation d'un service de mandataire inversé sur un Serveur SME principal connecté à l'Internet afin qu'un autre Serveur SME, sur le réseau LOCAL, devienne accessible depuis l'Internet. Le serveur principal devient transparent pour le serveur WEB LOCAL et ce dernier semble directement branché à l'Internet.

Icone-NoteAPT.png  Le serveur LOCAL peut être physique ou virtuel.


But final de ce Cahier

Serveur local physique

Serveur local virtuel

MandataireInv-015-ResultatPourPhysique-A-1.png
MandataireInv-016-ResultatPourVirtuel-A-1.png


But final du cours SME-101

Après avoir suivi le cours SME-101, l'Étudiant possédera un site de Commerce en ligne fiable et hautement sécuritaire. De plus, il pourra utiliser un clone de son site, sur un Serveur SME virtuel sur sa station de travail, pour tester de nouvelles extensions et applications sans compromettre la sécurité ou l'intégrité de son site en ligne.


SME-101-ButFinal.png


Documentation

Le cours SME-101, se voulant une base solide pour la création d'un site de Commerce en ligne, comprend plusieurs cahiers:


Icone-NoteAPT.png Tous les logiciels nécessaires sont du domaine public ou LIBRE sous licence GPL; ils ne coûtent pas un sous. Le seul achat nécessaire est l'obtention d'un nom de domaine FQDN au prix initial de $15 CAD et son renouvellement annuel d'environ $30 CAD.


Particularités de ce document

Notes au lecteur

  • Les captures d’écrans ne sont que des références.
  • Les informations écrites ont préséance sur celles retrouvées dans les captures d’écrans. Se référer aux différents tableaux lorsque ceux-ci sont présents.

Conventions

  • Toutes les commandes à entrer à la console du Serveur SME commencent habituellement avec l'invite # pour l'usager root ou $ pour un usager sans privilège particulier.
  • L'invite mysql> de la console MySQL est toujours présente.
  • La sortie de la commande est séparée de celle-ci par une ligne vide sans couleur de fond.
  • L'invite de retour n'est jamais présent pour la plupart des commandes.
  • Les affichages à surveiller sont en rouge, bleu, orange ou magenta.
# ping 192.168.1.149
192.168.1.149 is alive


Les liens de référence Internet sont en bleu de même que ceux intra-document mais, ces derniers débute par un " # ".

Icone-SeTirerDembarrasAPT.png  Manipulation, truc ou ruse pour se tirer d’embarras.

Icone-AstuceAPT.png  Une recommandation ou astuce.

Icone-NoteAPT.png  Une note.

Icone-AsurveillerAPT.png  Une étape, note ou procédure à surveiller.

Icone-DangerAPT.png  Danger pour la sécurité du système.

IconePlusieursLignesAPT.png  Indique que la commande est sur une seule ligne. Pour ce document en PDF, il faudra copier la commande entière dans un éditeur de texte ASCII tel que NotePad++ et la mettre sur une seule ligne avant de la copier à la console.

Une chaîne de caractères en magenta indique qu’il faut remplacer cette chaîne par vos propres paramètres.

Commande à exécuter si ce n'est déjà fait.
Commande indiquée à titre d'information seulement.


Mandataire inversé

Serveur directement relié à l'Internet

Normalement, notre Serveur SME est directement relié à l'Internet à travers un modem ADSL/VDSL tel qu'illustré ci-dessous.

MandataireInv-001-ReseauSTD.png


MandataireInv-002-SM-Domaine-Passerelle.png

Si nous voulons accéder à notre installation Web depuis l'Internet, il faut avoir un nom de domaine FQDN et celui-ci doit pointer vers une i-bay.

Server-Manager > Configuration > Domaines > Modifier.

Notre nom de domaine est: micronator.org et notre installation Web est située dans l'i-bay Primary (site primaire). Il faut donc que ce domaine pointe vers cette i-bay.


MandataireInv-003-SM-ServeurDNS.png

Serveurs DNS du domaine

Pour l'i-bay Primary, toujours utiliser: Serveur DNS de l'Internet.

Pour les autres i-bays, toujours utiliser: Résolu localement.

Serveur local sur un intranet

Référence: https://wiki.contribs.org/SME_Server:Documentation:ProxyPass.

Notre Serveur SME secondaire est sur le réseau LOCAL (192.168.1.0/24) de notre serveur principal. On parle alors d'un serveur intranet. Habituellement, ce genre de serveur n'a pas d'adresse IP publique pour son réseau externe mais, une adresse privée (192.168.1.11).

Serveur intranet physique. Serveur intranet virtuel.
MandataireInv-004-ServeurInternePhysique-A-2.png
MandataireInv-005-ServeurInterneVirtuel-A-3.png


Serveur mandataire inversé

Référence: https://fr.wikipedia.org/wiki/Proxy_inverse.

MandataireInv-006-DiagrammeExplicatif.png

Un mandataire inversé (reverse proxy) est un type de serveur, habituellement placé en frontal des serveurs Web. Contrairement au serveur mandataire qui permet à un utilisateur d'accéder au réseau Internet, le mandataire inversé permet à un utilisateur d'Internet d'accéder à des serveurs internes (situés sur le réseau LOCAL du serveur principal/passerelle).

Préparation du serveur local de destination

Installation d'un Serveur SME

Voir le Cahier-2: SME-101.02 Serveur SME.

Pour un serveur de test, prendre un minimum de 8 GB pour le disque principal.

Icone-SeTirerDembarrasAPT.png  Lors de la configuration initiale, prendre les valeurs ci-dessous.

Mode de fonctionnement

Serveur uniquement

Interface de liaison de canaux

Désactivé

Configuration du serveur DHCP

Désactivé

MandataireInv-007-ModeDeFonctionnement.png
MandataireInv-008-LiaisonDeCanaux.png
MandataireInv-009-ConfigurationDHCP.png


Mise à jour du Serveur

Avant de commencer quoi que ce soit, il est toujours préférable de mettre à jour le Serveur SME.

Voir le chapitre Mise à jour dans le Cahier-2.


Serveur DNS du domaine

On ajuste le pointeur des Serveurs DNS du domaine pour qu'il pointe vers les Serveurs DNS de l'Internet.

Icone-NoteAPT.png  Ceci est une exception à la règle car, habituellement, un serveur local a toujours la propriété Serveurs DNS du domaine pointant sur Résolu localement. Cette exception est dûe au fait de l'utilisation d'un serveur mandataire inversé.

Icone-SeTirerDembarrasAPT.png  Il faut donc, exceptionnellement, changer la propriété Serveurs DNS du domaine de notre serveur LOCAL.

Server Manager > Domaines > Modifier. Serveur DNS du domaine > dérouler et choisir Serveurs DNS de l'Internet > Modifier. On s'assure du succès de l'opération.
MandataireInv-010-ResoluLocalement-A-1.png
MandataireInv-011-ServeursDNSdeInternet-A-1.png
MandataireInv-012-RapportDeEtat-A-1.png


Fichier /etc/hosts

On s'assure que le fichier /etc/hosts du serveur local soit correctement configuré.

# cat /etc/hosts
#------------------------------------------------------------
#              !!DO NOT MODIFY THIS FILE!!
#
# Manual changes will be lost when this file is regenerated.
#
# Please read the developer's guide, which is available
# at http://www.contribs.org/development/
#
# Copyright (C) 1999-2006 Mitel Networks Corporation
#------------------------------------------------------------
127.0.0.1        localhost
192.168.1.11     sme-92.micronator-101.com sme-92


Passerelle par défaut

On s'assure que la passerelle par défaut soit bien notre serveur principal dorgee.micronator.org (192.168.1.1).


Serveur physique

# route

Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth1
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth1


Serveur virtuel

À la console du serveur.

# route

Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
pc-00001.micron *               255.255.255.255 UH    0      0        0 eth1
192.168.1.0     *               255.255.255.0   U     0      0        0 eth1
default         pc-00001.micron 0.0.0.0         UG    0      0        0 eth1

Icone-NoteAPT.png  Le Serveur SME-9.2 virtuel passe par la carte réseau du poste de travail (pc-00001.micron).


À la console du poste de travail, dans un écran de commandes, on lance la commande ipconfig.

C:\Users\michelandre> ipconfig

Configuration IP de Windows
...
Carte Ethernet Ethernet : 

   Suffixe DNS propre à la connexion. . . :
   Adresse IPv4. . . . . . . . . . . . . .: 192.168.1.81
   Masque de sous-réseau. . . . . . . . . : 255.255.255.0
   Passerelle par défaut. . . . . . . . . : 192.168.1.1
...


On vérifie l'adresse IP du serveur. (Nous sommes en mode Serveur uniquement.)

# ifconfig

eth1      Link encap:Ethernet  HWaddr 08:00:27:06:AE:18
          inet adr:192.168.1.11  Bcast:192.168.1.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1890 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1210 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:211092 (206.1 KiB)  TX bytes:198261 (193.6 KiB)

lo        Link encap:Boucle locale
          inet adr:127.0.0.1  Masque:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1227 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1227 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:415992 (406.2 KiB)  TX bytes:415992 (406.2 KiB)

Icone-AsurveillerAPT.png  L'adresse externe i.e. eth1 192.168.1.11, servira plus tard comme pointeur de destination pour le serveur mandataire inversé.


Préparation du Serveur principal

Vérification des domaines

Icone-SeTirerDembarrasAPT.png  Si auparavant on a fait quelques tests, on vérifie que le domaine micronator-101.com n'existe plus sur le serveur principal.

MandataireInv-013-VerificationDesDomaines.png

Icone-AsurveillerAPT.png  Comme on le voit, il n'existe aucune référence à micronator-101.com. Si oui, on doit supprimer ce domaine du serveur principal.

Icone-NoteAPT.png  Le FQDN du serveur principal est: micronator.org.

Transformation du serveur principal en mandataire inversé

La prochaine étape est de modifier le serveur principal, dorgee.micronator.org, pour qu'il devienne un serveur mandataire inversé de notre serveur Web LOCAL sme-92.micronator-101.com.

À l'aide de PuTTY, on se logue sur le serveur principal.

login as: root

root@192.168.1.1's password: Mot-de-passe


On vérifie qu'on est bien sur le serveur principal.

# hostname

dorgee


On vérifie l'adresse IP de son réseau LOCAL.

# ifconfig eth1

eth1      Link encap:Ethernet  HWaddr 00:50:8B:AE:88:89
          inet adr:192.168.1.1  Bcast:192.168.1.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8106669 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14527260 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:910237336 (868.0 MiB)  TX bytes:17641271800 (16.4 GiB)


Configuration du serveur principal

On crée le domaine virtuel micronator-101.com sur le serveur principal.

# db domains set micronator-101.com domain


On indique que le serveur de noms pour ce domaine virtuel est sur l'internet.

# db domains setprop micronator-101.com Nameservers internet


On indique l'adresse de la cible c.-à-d. le Serveur SME LOCAL hébergeant le domaine micronator-101.com.

# db domains setprop micronator-101.com ProxyPassTarget http://192.168.1.11/


On indique le chemin d'un gabarit pour ce nouveau domaine virtuel.

# db domains setprop micronator-101.com TemplatePath ProxyPassVirtualHosts


On signale les changements de configuration au serveur principal afin qu'il crée le nouveau domaine virtuel.

# signal-event domain-create micronator-101.com


On s'assure que le nouveau domaine virtuel a bien été créé.

 db domains show
...
micronator-101.com=domain
    Nameservers=internet
    ProxyPassTarget=http://192.168.1.11/
    TemplatePath=ProxyPassVirtualHosts
...


MandataireInv-014-DomaineLocalSurPrincipal-A-1.png

Dans le gestionnaire Server Manager, sur le serveur principal qui est devenu un mandataire inversé, un nouveau domaine a été créé pour micronator-101.com.

Résultat final

Serveur local physique

Serveur local virtuel

MandataireInv-015-ResultatPourPhysique-A-1.png
MandataireInv-016-ResultatPourVirtuel-A-1.png

Vérification

On lance deux ping à la console du serveur principal.

# ping -c 2 micronator-101.com
PING micronator-101.ddns.net (206.248.138.152) 56(84) bytes of data.
 64 bytes from 206-248-138-152.dsl.teksavvy.com (206.248.138.152): icmp_seq=1 ttl=64 time=0.028 ms
 64 bytes from 206-248-138-152.dsl.teksavvy.com (206.248.138.152): icmp_seq=2 ttl=64 time=0.041 ms

 --- micronator-101.com ping statistics ---
 2 packets transmitted, 2 received, 0% packet loss, time 1002ms


L'adresse IP 206.248.138.152 est celle du serveur principal et c'est lui qui répond car, un mandataire inversé ne transmet seulement que les requêtes Web.

On lance le navigateur TOR et on se rend à http://www.micronator-101.com.

Icone-SeTirerDembarrasAPT.png  Si nous avons recours à un service de DNS dynamique, il ne faut pas utiliser www avec un tel domaine.

MandataireInv-017-PageDexemple.png


Le mandataire inversé fonctionne correctement.


Désinstallation du "service" mandataire inversé

Si on veut désinstaller ce service, pour quelque raison que ce soit, on exécute les commandes suivantes.


Sur le serveur principal

On supprime le domaine virtuel.

# db domains delete  micronator-101.com


On signale les changements de configuration au serveur principal afin qu'il supprime le domaine virtuel.

# signal-event domain-modify


On vérifie avec grep que le domaine micronator-101.com n'existe plus sur le serveur principal.

# db domains show | grep  micronator-101.com

Icone-NoteAPT.png  Aucune information n'est retournée car, le serveur virtuel n'existe plus sur le serveur principal.


Sur le serveur local

Sur le serveur local, il faut remettre le pointeur Serveurs DNS du domaine vers Résolu localement.


Remarques importantes

Mise en garde

La sécurité est à surveiller car, le Serveur SME local est maintenant accessible depuis l'Internet.


Certificat

Lorsqu'un internaute accède le serveur local avec une requête https:

  • Son navigateur se connecte au serveur principal et une négociation SSL débute.
  • Le navigateur et le serveur principal échange leur clé publique et la communication chiffrée débute.
  • Le navigateur envoie sa requête (nom d'hôte + URL).
  • Sur le serveur principal, le démon Apache débute son rôle de mandataire inversé:
    • il crée une connexion avec le serveur local,
    • il lui envoie la requête du navigateur de l'internaute
    • et termine en retournant la réponse au navigateur de l'internaute.

C'est le certificat du serveur mandataire inversé qui est utilisé pour chiffrer la communication avec le navigateur de l'internaute. Il n'y a aucune possibilité que le certificat du serveur local puisse être présenté au navigateur de l'internaute et qu'il soit utilisé pour le chiffrage.


Courriel

Un mandataire inversé est utilisé pour servir d'intermédiaire seulement pour les requêtes Web.

Si le serveur qui sert de mandataire reçoit un courriel, c'est qmail qui s'en occupe et non pas le démon Apache.

À toute fin pratique, le domaine local existe dans le gestionnaire Server Manager du serveur principal. Ainsi, si le récepteur du courriel n'existe pas en tant qu'utilisateur sur le serveur principal, le courriel est pris en charge par le paramètre Courriels destinés à des utilisateurs inconnus du gestionnaire Server Manager du serveur principal.

Icone-AstuceAPT.png  Toutefois, on peut accéder à Webmail du serveur local depuis l'Internet car, l'accès à Webmail est une requête Web: https://www.micronator-101.com/webmail.


WordPress

Si WordPress, sur le serveur local, envoie un courriel à un usager existant sur le serveur local, cet usager recevra ce courriel car, le domaine existe sur le serveur local et le courriel y sera envoyé sans passer par l'Internet. Si l'usager n'existe pas sur le serveur local, le courriel sera envoyé dans l'Internet via le serveur principal qui sert de passerelle pour le serveur local.


Mot de la fin

Icone-NoteAPT.png  On peut utiliser cette marche à suivre afin de faire une demande de certificat Let's Encrypt pour un serveur intranet. Vous n'aurez pas à configurer l'authentification par clé publique SSH, pour que root puisse commnuniquer avec le serveur passerelle, afin de récupérer le certificat émis par Let's Encrypt. Le certificat sera directement déposé dans le répertoire /etc/dehydrated/certs/FQDN-de-votre-domaine du serveur local.




caption  Victoire totale, hissons la bannière de la victoire.


  1. FQDN: Dans le DNS, un Fully Qualified Domain Name (FQDN, ou nom de domaine complètement qualifié) est un nom de domaine qui révèle la position absolue d'un nœud dans l'arborescence DNS en indiquant tous les domaines de niveau supérieur jusqu'à la racine. On parle également de domaine absolu, par opposition aux domaines relatifs. Par convention, le FQDN est ponctué par un point final.
    Référence: https://fr.wikipedia.org/wiki/Fully_qualified_domain_name.