Petit tuto sympa aujourd’hui, comment interconnecter le réseau local de son entreprise avec son espace cloud Amazon Web Services ?

Le cloud fait aujourd’hui véritablement parti de notre quotidien. C’est une solution de gestion d’infrastructure de plus en plus plébiscitée par les entreprises qui y voient un moyen de faire des économies sur leurs coûts de production et de maintenance : Réduction de la facture d’électricité, réduction des risques de pannes et/ou pertes de données, infrastructure hautement redondante ET hautement performante… Les avantages n’en finissent plus !

Dans ce tutoriel, nous allons justement voir comment une société pourrait relier son infrastructure cloud à son réseau physique, le tout de façon sécurisée, en utilisant les services d’AWS ! Go ! bb


Interconnecter son LAN avec son espace cloud AWS

 

ATTENTION, avertissement avant de poursuivre, les services d’AWS utilisés dans le cadre de ce tutoriel ne sont pas tous couverts par le free-tier, ce qui va entraîner des frais (- de 10$) ! Si vous poursuivez, vous le faites en toutes connaissances de causes. N’oubliez pas de supprimer l’ensemble de l’infrastructure créée sur la plateforme AWS quand vous aurez terminé sous peine de voir grimper votre facture !

 

Démonstration en vidéo disponible au lien suivant : Interconnecter son réseau local avec AWS via VPN
Bonus ! Ficher yaml pour stack Cloud Formation de ce tuto disponible ICI. Il ne vous restera qu’à personnaliser les champs et configurer votre VPN côté LAN. 

Amazon Web Services fournit quantité de services en tout genre permettant aux entreprises de réaliser tous leurs projets. L’intérêt d’héberger certains de ses services sur une plateforme cloud, c’est également de pouvoir en faire une véritable extension de son réseau local physique.

Ce qui va nous intéresser dans le cadre de ce tuto, ça sera justement de faire en sortes que les employés de notre entreprise puissent accéder en toute sécurité au futur site intranet de la société que l’on va héberger dans le cloud.

Ce que l’on souhaite, c’est que le serveur web qui va contenir notre site intranet ne soit pas accessible depuis l’extérieur de l’entreprise, il faudra donc qu’il soit sur un réseau “privé“. Mais s’il est sur un réseau privé, comment nos employés vont-ils pouvoir y naviguer ?

Grâce au VPN IPsec qu’AWS nous permet de créer ! (Pour en savoir plus sur les notions de VPN IPsec, c’est par ici : Introduction aux VPN et tunnel IPsec). Comme dis plus haut, on va faire une extension de notre réseau physique en montant un tunnel VPN entre notre réseau virtuel hébergé dans le cloud et notre réseau physique.

J’ai choisi pour faire plus simple (et plus rapide aussi j’avoue… *flemme*) d’utiliser Strongswan qui est un ensemble d’outils IPsec mais libre à vous d’adapter la procédure à vos propres firewall.

Une petite topologie avant de se lancer pour bien visualiser ce que l’on va obtenir :

De quoi avez-nous besoin ?

  • Un compte valide sur la plateforme AWS -> https://aws.amazon.com/fr/
  • Un serveur Linux en local (ici j’ai utilisé Debian 9.5) ayant un accès à internet
  • Un poste client dans le même réseau que le serveur précédent avec pour passerelle l’IP du serveur linux

Je considère pour la suite que votre infrastructure locale est déjà prête.
Seuls l’installation et le paramétrage basique de Strongswan seront expliqués.

Info + : Pour le serveur VPN local, j’ai fais une configuration basique pour laisser passer le flux que voici :
– Configuration IP fixe dans réseau local (ma passerelle et mon DNS sont l’adresse IP de mon routeur FAI)
– Sous l’interface réseau du fichier /etc/network/interfaces, ajout de la ligne suivante : pre-up iptables-restore < /etc/iptables_rules.save
– Modification du fichier /etc/sysctl.conf, ligne “net.ipv4.ip_forward=1” décommentée + application des changements avec la commande “sysctl -p”
– Ajout règle iptable avec la commande “iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE”
– Sauvegarde d’iptables avec la commande “iptables-save > /etc/iptables_rules.save”

Avec cette configuration, le poste client dans le LAN doit avoir pour passerelle l’adresse du VPN local et pouvoir pinguer sur l’extérieur (pour le DNS, j’ai laissé celui de mon routeur FAI).

Rentrons maintenant dans le vif du sujet blum. Si vous êtes perdu par moment, n’hésitez pas à coupler l’article avec la vidéo de démo pour mieux vous repérez au niveau des menus.

 

On va commencer par installation de Strongswan sur notre serveur VPN local avec la commande suivante :

apt-get install strongswan -y

Ensuite on va préparer la configuration de la future liaison VPN. Editez le fichier /etc/ipsec.conf et ajoutez les lignes suivantes à la suite, en ajoutant “votre_ip_publique” (bien entendu, on oublie pas d’adapter les adresses des réseaux selon sa propre config !) :

conn lan-to-aws
type=tunnel
authby=secret
left=192.168.1.254          #ip du serveur VPN
leftid=votre_ip_publique    #ip publique du lan
leftsubnet=192.168.1.0/24   #réseau du lan
right=à_ajouter_plus_tard   #ip publique aws
rightsubnet=172.16.1.0/24   #réseau de AWS
auto=start
keyexchange=ikev1
ike=aes128-sha1-modp1024
ikelifetime=8h
esp=aes128-sha1-modp1024
lifetime=1h

Info ++ : Attention Strongswan est très susceptible avec ce fichier, toutes les lignes écrites après “conn nom_de_votre_liaison” doivent obligatoirement commencer par une tabulation sinon le démarrage d’ipsec sera en erreur. Cela devrait vous donner un fichier qui ressemblera à ça :

Éditez le fichier /etc/ipsec.secrets et ajoutez-y la ligne suivante, toujours en modifiant, “votre_ip_publique” :

votre_ip_publique ip_pub_aws_à_ajouter_après : PSK "clé_partagée"

 

C’est tout pour le moment, nous reviendrons sur cette configuration lorsque l’infrastructure hébergée aura été créée. Connectez-vous au tableau de bord de la plateforme AWS.

Rechercher et ouvrir le service “VPC“. Allez sur “Vos VPC” dans le menu de gauche.

Nous allons créer un nouveau “VPC”, un “Virtual Private Cloud” qui sera notre propre réseau virtuel hébergé et qui contiendra l’ensemble des ressources que nous ajouterons dans notre environnement cloud.

Nommez le futur VPC comme vous le voulez mais de façon reconnaissable.

Définir le bloc d’adresse réseau spécifique à ce VPC, ici 172.16.0.0/16 que nous allons découper en allant dans la partie “Sous-réseaux” du menu de gauche.

Nous allons créer deux sous-réseaux, un qui sera accessible depuis l’extérieur (172.16.0.0/24) pour héberger un site internet par exemple et l’autre qui restera cloisonné pour note site intranet (172.16.1.0/24).

Créez le sous-réseau public en 172.16.0.0/24. Dans la partie VPC, veillez à bien choisir le VPC précédemment créé (une fois encore, donnez des noms significatifs à ce que vous créez afin de bien les distinguer par la suite).

Choisir la 1ère zone de disponibilité disponible.

Recommencez l’opération pour le sous-réseau privé en 172.16.1.0/24, en choisissant une autre zone de disponibilité cette fois-ci. Le résultat ressemble plus ou moins à ça (un VPC et des configs par défaut existent déjà sur AWS, libre à vous de les utiliser ou non, j’ai choisi pour ce tuto de tout supprimer et créer toute mon infra moi même) :

On va maintenant s’attaquer à l’accès sur l’extérieur pour nos ressources.

Dans le menu de gauche, allez dans la partie “Passerelle Internet“. Cliquez simplement sur “Créer une passerelle internet” donnez lui un nom. AWS fera le reste pour vous laugh

Cochez la nouvelle passerelle internet qui est à l’état “detached“, cliquez sur le bouton “Actions” et sur “Associer au VPC“.

L’état de la passerelle passera alors sur “attached“.

Dans le menu de navigation de gauche, se rendre dans la partie “Passerelle NAT” et cliquez sur “Créer…

On va choisir d’attribuer cette nouvelle passerelle NAT à notre sous-réseau public.

Dans la partie “ID d’allocation…” si vous disposez déjà d’une adresse elastic chez AWS, vous pouvez la sélectionner. Sinon cliquez sur “Créer une nouvelle adresse IP elastique“.

Au bout d’une ou deux minutes, le statut de la passerelle passera de “en suspens” à “disponible”.

On va maintenant commencer à monter notre liaison VPN. Toujours dans le menu de gauche, allez dans “Passerelle client” et cliquez sur “Créer…

Cette passerelle client sera la déclaration de votre adresse IP publique pour établir le lien VPN. C’est ici que vous allez dire à AWS qu’il devra créer un tunnel privé sécurisé avec le réseau de votre entreprise.

Laissez le routage en statique.

Dans le menu de gauche, allez cette fois-ci dans “Passerelle virtuelle privée“.

Ici, on créé une passerelle. Tout ce que vous avez à faire c’est de lui donner un nom. Laissez AWS gérer l’ASN.

Sélectionnez la passerelle virtuelle privée précédemment créée, cliquez sur le bouton “Actions” et “Attacher au VPC“.

Sélectionnez le VPC que l’on a créé au début.

Pour terminer, allez au menu “Connexions VPN site à site” et créez une nouvelle connexion.

Choisir la passerelle privée virtuelle et la passerelle client (customer gateway) que l’on vient de créer. Les options de routage seront statiques. Ajouter au tableau des préfixes, l’adresse du réseau local que vous voulez joindre à travers la liaison VPN.

Petit zoom sur la seconde partie de cette page de connexions VPN que nous ne modifierons pas ici mais qui est très intéressante.

On peut ici gérer les “Options de tunnel“, à savoir, définir ses propres clés partagés pour le(s) tunnel(s), définir l’adressage du réseau VPN (range apipa si généré par AWS mais aucunement problématique)

PETIT RAPPEL, des frais vont s’appliquer à la fin de la création de la connexion VPN.

Si vous cochez la case “Edit Tunnel Options“, vous aurez l’occasion de choisir très en détails les configurations que vous souhaitez pour cette liaison VPN telle que les versions d’IKE, les algorithmes, les groupes diffie hellman, les lifetime… A vous de configurer ce point selon la politique de sécurité de votre entreprise.

Les configurations resteront par défaut dans le cadre de ce tuto.

Voilà pour cette partie de configuration de la liaison VPN, nous reviendrons dans ce menu plus tard 😉

On va maintenant faire un peu de routage ! Dans le menu de navigation, remontez sur “Tables de routage“.

Créez une table de routage pour notre réseau public et une pour notre réseau privé.

Il suffit à cette étape de nommer la table de routage et de sélectionner le VPC concerné.

On va commencer par paramétrer la table de routage de notre sous-réseau privé. Sélectionnez le dans la liste. Dans la console inférieure, allez dans l’onglet “Associations de sous-réseau (subnet)” et cliquez sur le bouton “Modifier des associations…

Choisissez d’associer le sous-réseau privé à la table de routage pour le subnet privé (logique oui…).

Ensuite, toujours pour notre table de routage associée au subnet privé, allez cette fois-ci dans l’onglet “Routes” et cliquez sur le bouton “Modifier des routes“.

Pour notre subnet privé, on va avoir besoin d’ajouter 2 routes. Une pour spécifier quel chemin prendre pour aller sur le réseau local de notre entreprise et une seconde pour pouvoir sortir sur internet pour les mises à jour etc…

Pour rejoindre le réseau local, on va indiquer son adresse dans la partie destination (ici 192.168.1.0/24) et nous allons, en tant que cible, sélectionner la passerelle virtuelle privée que nous avons créée pour la liaison VPN.

Et seconde règle, pour que nos instances puissent sortir sur internet, peu importe l’adresse, nous allons définir comme destination une adresse “default” qui est 0.0.0.0/0.

La cible sera par contre cette fois-ci la Passerelle NAT.

Voici les règles de routage finale pour notre sous-réseau privé :

On passe à la table de routage pour le sous-réseau public ! Si vous avez bien suivi la manœuvre jusqu’ici, vous devriez pouvoir le faire seul ;).

N’oubliez pas d’associer le subnet public à la table de routage dédié à ce sous-réseau !

La nuance pour ce réseau, c’est que la destination sera donc, une fois encore, le réseau 0.0.0.0/0, mais la cible sera la passerelle internet.

Et c’est terminé pour les tables de routage !

On va poursuivre avec une partie sécurité importante sur AWS, les groupes de sécurité.

La notion de groupe de sécurité est en fait équivalente à un firewall (statefull) qui va filtrer le flux autorisé ou rejeté sur notre réseau. Rendez-vous dans le menu “Groupes de sécurité” sur la gauche de votre écran.

Créer un nouveau groupe de sécurité qui sera utilisé par notre VPC. Une fois créé, allez dans la partie inférieure, onglet “Règles entrantes” et cliquez sur le bouton “Modifier les règles“.

Nous allons autoriser 3 protocoles pour ce tuto : HTTP (80), SSH (22) et l’ICMP pour pouvoir pinguer.

Ajouter une 1ère règle et choisir “Tous les ICMP – IPv4” dans la liste des types de protocoles disponibles.

Pour rappel, ce groupe de sécurité sera appliqué pour notre réseau privé. Il ne doit y avoir QUE le réseau de l’entreprise autorisé à entrer. L’adresse source sera donc 192.168.1.0/24.

Répétez l’opération pour le trafic HTTP et SSH et enregistrez. Ce qui nous donnera le résultat final suivant :

Pour résumer ce que nous venons de faire, nous avons autoriser le réseau local de l’entreprise (192.168.1.0/24) à envoyer des requêtes ICMP, HTTP et SSH sur notre réseau virtuel hébergé dans le cloud.

Bon maintenant on va (enfin) créer une machine virtuelle sur AWS, qu’on appelle techniquement une instance.

Cliquez en haut à gauche de votre écran sur “Services” et sur “EC2“.

On arrive sur la console où l’on va pouvoir gérer nos ressources. Cliquez sur “Lancer une instance“.

A partir de ce point, AWS va proposer un grand choix d’AMI c’est à dire d’image machine pré-configurée. Windows clients/serveurs, nombreuses distributions Linux… Il y en a pour tous les goûts !

Je vous conseille de prendre la 1ère AMI proposée qui doit être floquée “Éligible à l’offre” ce qui signifie qu’elle est gratuite. Cliquez sur le bouton “Sélectionner“.

Petit point sur les différents types d’instances. En fait le type d’instance dépendra tout simplement de sa taille/puissance (RAM, NIC, vCPU, stockage…)

Veillez à bien sélectionner “t2.micro” pour ne pas être facturé et cliquez sur “Suivant…

Dans la 3ème étape, on ne va modifier que les paramètres “Réseau” et “Sous-réseau“. Choisissez bien le bon VPC et le sous-réseau privé !

AWS nous permet de définir combien d’instances de ce type l’on souhaite créer et si on doit y activer l’auto-scaling, c’est à dire le service d’ajustement d’AWS qui va permettre d’ajouter automatiquement des instances, sur le même modèle que celle que nous sommes en train de créer, en cas de flux trop important, ou à contrario d’en supprimer si elles ne sont pas utilisés afin de gagner sur les coûts.

Dans la partie Interfaces réseau, on peut choisir d’attribuer directement une adresse IP privée à la carte ethernet de notre instance. Ne nous en privons pas ! La machine virtuelle sera dans notre réseau virtuel privé (172.16.1.0/24), elle hébergera le site intranet de l’entreprise, je lui attribue donc comme adresse IP la 172.16.1.80 et je poursuis.

L’étape n°4 est réservée au stockage. On peut ici définir l’espace que l’on souhaite pour notre machine virtuelle, si l’on souhaite que les données y soient cryptées (fortement préconiser en production) et le type de volume (SSD, magnétique ou IOPS). Ne rien modifier et poursuivre.

Je ne détaillera pas la partie balises mais n’hésitez pas à l’utiliser notamment pour nommer vos instances avec la clé “Name” et la valeur “Nom_de_votre_VM“.

La 6ème étape de configuration de notre instance, le groupe de sécurité. Nous avons déjà défini nos règles de sécurité, cocher la case “Sélectionner un groupe de sécurité existant” et sélectionner le groupe créé précédemment.

La dernière étape est un récapitulatif de notre configuration demandée. Vérifiez bien votre paramétrage et cliquez sur le bouton “Lancer“.

Nouvelle étape importante. AWS va vous demandez de sélectionner ou créer une paire de clés. Cette paire de clé est extrêmement importante et permettra de se connecter à vos instances. Un tel système est une couche de sécurité supplémentaire qui permet de s’affranchir d’une connexion avec un mot de passe, ce qui n’est pas négligeable !

Si vous possédez déjà une paire de clé, sélectionnez son nom et lancez l’instance. Dans le cas contraire, choisissez de la créer.

Attention, enregistrez précieusement cette clé sur votre ordinateur et ne la communiquer à personne. Elle doit rester secrète sous peine de voir votre système compromis !

Après quelques secondes/minutes, vous verrez votre instance prête sur le tableau de bord des ressources EC2.

Bon, nous avons maintenant une machine virtuelle hébergée dans le cloud ! Ce qui serait bien maintenant c’est de pouvoir s’y connecter depuis le réseau de l’entreprise parce que… c’est le but de ce tuto !

Dans la console AWS, retournez sur le service VPC, et dans le menu “Connexions VPN site à site“. Sélectionnez la liaison VPN que nous avons créée et cliquer sur le bouton “Télécharger la configuration“.

Sauf si vous avez du matériel bien spécifique, sélectionnez le fournisseur et la plateforme “Generic“. Cliquez sur “Télécharger” pour obtenir le fichier contenant toute les informations dont nous aurons besoin pour monter le VPN côté réseau local.

Info ++ : Vous pouvez sélectionner directement la configuration pour strongswan mais attention de bien suivre et comprendre les consignes décrites dans le fichier, selon la configuration que vous souhaitez côté LAN (double tunnel, routage…), il ne faut pas tenir compte de tout donc si vous ne maîtrisez pas bien cette partie, il est préférable de suivre ce tuto avant de tenter d’autres manips.

A première vue, le contenu de ce fichier peut faire peur… Il est en fait très simple. Il se compose de 2 parties car AWS créé pour nous 2 tunnels VPN différents, chacun ayant sa propre adresse IP publique et sa propre clé privée (pensez redondance !).

Vous allez retrouver toutes les configurations faites à la création du VPN (version IKE, méthode d’authentification, algorithmes…)

Pour ce tuto, nous aurons besoin de seulement 2 informations : l’adresse IP publique que AWS nous a assigné (la passerelle virtuelle privée donc) et la clé partagée qui lui correspond.

Retournons sur notre serveur VPN local avec Strongswan.

On va aller définir l’adresse IP fournie par AWS dans la configuration effectuée au début de cet article.

Editez le fichier /etc/ipsec.conf et ajouter l’adresse correspondante à “right” à la place de “à_ajouter_plus_tard“.

right=3.121.129.15   #ip publique aws

Éditez le fichier /etc/ipsec.secrets et ajoutez-y également l’adresse IP à la place de “ip_pub_aws_à_ajouter“.

90.125.180.140 3.121.129.15 : PSK "clé_partagée"

Modifiez également la partie “clé_partagée” par celle fourni par AWS. Ce qui nous donnera ceci :

90.125.180.140 3.121.129.15 : PSK "4RCqVCjzubXb98HpqdS1k4kLerJdf21O"

On fait un petit redémarrage du service ipsec et on monte la liaison VPN avec les commandes suivantes :

ipsec restart
ipsec up lan-to-aws

La connexion sera établie très (très) rapidement !

On vérifie qu’on peut accéder à notre instance ? OK. Alors faisons un ping !

Notre réseau local est désormais connecté avec notre réseau hébergé dans le cloud !
beach

 

Cette article étant déjà très (trop wacko ) long, je ne détaillerai pas la connexion à la machine virtuelle grâce à la clé privée ni la partie accès au site intranet. Vous avez toutes ces infos dans la vidéo de démonstration dispo : ICI

 

N’oubliez pas de supprimer l’ensemble des ressources créés dans le cadre de ce tuto !

 

Ne négligez pas le cloud qui est une formidable ressource pour améliorez vos infrastructures ! A très vite cool


[Tuto] Monter un VPN entre son réseau local et le cloud d’AWS (+ vidéo)

Articles pouvant vous intéresser