Service VPN Wireguard gratuit sur AWS
Le raisonnement
L'augmentation de la censure d'Internet par les régimes autoritaires élargit le blocage des ressources Internet utiles rendant impossible l'utilisation du WEB et, en substance, viole le droit fondamental à la liberté d'opinion et d'expression consacré par la Déclaration universelle des droits de l'homme .
Article 19
Chacun a droit à la liberté d'opinion et d'expression; ce droit comprend la liberté d'opinion sans ingérence et de rechercher, recevoir et transmettre des informations et des idées par le biais de tous les médias et indépendamment des frontières.
Voici les instructions détaillées en 6 étapes pour les non-informaticiens de déployer un service VPN gratuit * sur la technologie Wireguard dans l' infrastructure cloud d'Amazon Web Services (AWS) , en utilisant un compte gratuit de 12 mois, sur une instance (machine virtuelle) exécutée par Ubuntu Server 04/18 LTS.
J'ai essayé de rendre cette procédure aussi conviviale que possible pour les personnes éloignées de l'informatique. La seule chose requise est l'assiduité dans la répétition des étapes décrites ci-dessous.
Remarque
Les étapes
- Enregistrez le compte AWS.
- Créez une instance AWS.
- Connectez-vous Ă l'instance AWS.
- Configurez le serveur Wireguard.
- Configurez les clients VPN.
- Vérifiez la connexion VPN.
Liens utiles
Les auteurs
1. Enregistrez le compte gratuit AWS
Pour enregistrer un compte AWS, vous devez fournir un numéro de téléphone valide et une carte bancaire (Visa ou Mastercard). Je recommande d'utiliser des cartes virtuelles fournies gratuitement par Yandex.Money ou Qiwi wallet.
AWS vérifie la validité de la carte en déduisant 1 $ à l'inscription suivi du remboursement.
1.1. Ouverture de la AWS Management Console
Suivez le lien: https://aws.amazon.com/ , cliquez sur le bouton Créer un compte AWS .

1.2. Création de compte AWS
Remplissez les données et cliquez sur le bouton Continuer .


Numéro de carte, date d'expiration et nom du titulaire de la carte.

1.5. Vérification du compte
AWS vérifie votre numéro de téléphone et débite 1 $ de votre carte bancaire. Ensuite, vous devriez obtenir un code à 4 chiffres sur l'écran de l'ordinateur et recevoir un appel d'Amazon. Pendant un appel, vous devez composer le code à 4 chiffres affiché à l'écran.

1.6. Choisir un plan de support AWS
Choisissez un plan de base (gratuit).

Connectez-vous Ă AWS Management Console

1.8. Choix de l'emplacement du centre de données

1.8.1. Test de vitesse Internet
Je vous ai recommandé d'exécuter un test de vitesse vers les centres de données les plus proches sur https://speedtest.net/ et de choisir le meilleur auquel vous connecter.
Voici les résultats du test de vitesse de mon emplacement:
- Singapour

- Paris

- Francfort

- Stockholm

- Londres

Le Datacenter à Londres affiche le meilleur résultat de vitesse, donc je le choisis pour continuer.
2. Créez une instance AWS
2.1 Créer une machine virtuelle (instance)
2.1.0 Suivez les étapes de création d'instance
2.1.0.1. Accédez à la page de lancement d'instance, choisissez le service EC-2

2.1.0.2. Lancez un serveur virtuel, appelé instance Amazon EC-2

2.1.0.3. Choisissez l'image de la machine Amazon (système d'exploitation) - le serveur Ubuntu 18.04 LTS

2.1.1. Choisissez le type d'instance
Le type d'instance t2.micro
est défini par défaut et est le bon t2.micro
. Cliquez sur le bouton Suivant: Configurer les détails de l'instance pour continuer.

Désactivez l'attribution automatique de l'adresse IP publique car vous en assignerez une statique à votre instance. Cliquez sur le bouton Suivant: Ajouter un stockage .

2.1.3. Ajouter du stockage
Spécifiez la taille du lecteur - les 16 Go suffisent.
Cliquez sur le bouton Suivant: Ajouter des balises .

Si vous disposez de plusieurs instances, vous pouvez les regrouper par balises pour permettre une meilleure administration. Pourtant, cette fonctionnalité est excédentaire. Nous ignorons donc cela en appuyant sur le bouton Suivant: Configurer le groupe de sécurité .

2.1.5. Ouverture des ports
Configurez le pare-feu en attribuant des ports ouverts. L'ensemble des ports ouverts est appelé «groupe de sécurité». Vous devez créer un nouveau "groupe de sécurité", lui donner un nom, une description et un port UDP (règle UDP personnalisée).
Dans le champ Port Range, spécifiez un numéro de port compris entre 49152 et 65535 des ports dynamiques . Dans mon cas, j'ai choisi le numéro de port 54321.
Cliquez sur le bouton Vérifier et lancer pour terminer cette étape.

2.1.6. Vérifier les paramètres de lancement d'instance
Vérifiez et vérifiez tous les paramètres de lancement d'instance, et si tout est OK, cliquez sur le bouton Lancer .

2.1.7. Création de clés d'accès
Créez ou ajoutez une clé SSH existante dans la boîte de dialogue que vous utiliserez pour la connexion à distance à votre instance.
Choisissez la "Créer une nouvelle paire de clés" pour générer une nouvelle clé. Donnez-lui un nom et cliquez sur le bouton Télécharger la paire de clés pour télécharger la clé générée sur le lecteur PC. Cliquez sur le bouton Lancer les instances .

2.1.7.1. Enregistrer les clés privées (.pem)
Lorsque vous cliquez sur Télécharger la paire de clés, vous enregistrez la clé en tant que fichier .pem.
Pour une meilleure gestion, j'ai attribué un nom wireguard-awskey.pem au fichier.

2.1.8. Résumé du lancement de l'instance
Ensuite, vous devriez voir un message sur le lancement réussi de l'instance que vous avez créée. Vous pouvez consulter la liste de vos instances en cliquant sur le bouton Afficher les instances .

2.2. Création d'une adresse IP externe
2.2.1. Créer une IP externe
Vient ensuite la création d'une adresse IP externe, que vous utiliserez pour vous connecter au serveur VPN.
Recherchez les IP élastiques dans la catégorie RÉSEAU ET SÉCURITÉ du panneau de navigation. Cliquez sur le bouton Attribuer une nouvelle adresse .

2.2.2. Configuration IP externe
À l'étape suivante, vous devez activer le pool Amazon (qui est par défaut) et cliquez sur le bouton Allouer

2.2.3. Présentation de l'adresse IP
La fenêtre suivante affiche une adresse IP externe attribuée par le pool Amazon. Notez-le, car vous en aurez besoin pour le processus de configuration et pour la configuration du serveur VPN. Dans ce guide, à titre d'exemple, j'utilise l'adresse IP 4.3.2.1 .
Une fois cette étape terminée, cliquez sur le bouton Fermer .

2.2.4. Liste des adresses IP externes
Ensuite, vous devriez obtenir une liste de vos adresses IP publiques (Elastics IP).

2.2.5. Attribuer une IP externe Ă l'instance
Choisissez l'adresse IP dans la liste (voir 2.2.3), et cliquez sur le bouton droit de la souris pour un menu déroulant.
Dans ce menu, choisissez l' adresse associée pour attribuer une IP à l'instance créée.

2.2.6. Adresse associée à l'instance
Dans le menu déroulant, sélectionnez l'instance créée et cliquez sur le bouton Associer .

2.2.7. Résumé de l'attribution IP externe
Vous devez maintenant avoir une instance créée avec une adresse IP publique attribuée. Cela vous permet d'établir une connexion à distance à l'instance depuis l'extérieur (depuis votre PC) via SSH.

3. Connectez-vous Ă l'instance AWS
SSH est un protocole sécurisé pour gérer les périphériques informatiques distants.
3.1. Connectez-vous Ă partir d'un PC Windows via SSH
Téléchargez et installez un mastic pour établir une connexion à partir du PC Windows.
3.1.1. Importer une clé privée pour Putty
3.1.1.1. Importer la clé AWS dans Putty
Lancez un utilitaire PuTTYgen pour faire correspondre votre clé AWS au format .pem avec un format .ppk adapté au Putty.
Pour ce faire, sélectionnez Conversions -> Importer la clé dans le menu supérieur.

Ensuite, choisissez la clé que vous avez traitée dans 2.1.7.1
Dans mon cas, c'est wireguard-awskey.pem .

3.1.1.3. Définissez les paramètres d'importation des clés
À cette étape, vous devez spécifier les paramètres d'importation de la clé - le commentaire de clé et la phrase secrète de clé . Vous en aurez besoin à chaque connexion. Il protège également la clé elle-même avec un mot de passe contre tout accès non autorisé.
Vous pouvez ignorer l'attribution du mot de passe. Mais cela rendra votre connexion moins sécurisée au cas où la clé tomberait entre de mauvaises mains.
Une fois que vous avez terminé, cliquez sur le bouton Enregistrer la clé privée .

3.1.1.4. Enregistrez la clé .ppk importée
Vous pouvez enregistrer votre clé privée au format .ppk
adapté à Putty dans la boîte de dialogue d'enregistrement de fichier.
Spécifiez le nom de la clé (dans mon cas, wireguard-awskey.ppk
) et cliquez sur le bouton Enregistrer .

3.1.2.1. Établissez une connexion
Exécutez le programme Putty, choisissez la catégorie Session (elle est ouverte par défaut) et dans le champ Host Name entrez l'adresse IP publique du serveur. Je rappelle que vous avez obtenu votre adresse IP publique à l'étape 2.2.3 .
Donnez n'importe quel nom à la connexion dans le champ Session enregistrée (pour moi, c'est wireguard-aws-london
). Cliquez sur le bouton Enregistrer .

3.1.2.2. Définir une connexion automatique utilisateur
Choisissez la sous-catégorie Données dans la catégorie Connexion . Saisissez le nom d'utilisateur de connexion automatique ubuntu dans le champ Nom d'utilisateur de connexion automatique . ( ubuntu est l'utilisateur d'instance standard sur AWS avec Ubuntu).

3.1.2.3. Utiliser une clé privée pour une connexion SSH
Suivez le chemin Connexion -> SSH -> Sous- catégorie Auth et cliquez sur le bouton Parcourir pour choisir le fichier de clé privée.

3.1.2.4. Ouvrez le fichier de clé privée
Spécifiez la clé que vous avez importée précédemment à l'étape 3.1.1.4 - wireguard-awskey.ppk
, puis cliquez sur le bouton Ouvrir .

3.1.2.5. Enregistrer les modifications et lancer une connexion Ă distance SSH
Dans la catégorie Session de la fenêtre de configuration Putty, appuyez sur le bouton Enregistrer pour appliquer toutes les modifications que vous avez apportées dans ( 3.1.2.2 - 3.1.2.4 ).
Cliquez sur le bouton Ouvrir pour lancer la connexion Ă distance SSH prĂŞte Ă l'emploi.

3.1.2.7. Définir une confiance entre les hôtes
Lors de la première connexion, vous devriez recevoir un avertissement concernant le manque de confiance entre deux ordinateurs (hôtes). Le système vous demande si vous faites confiance à l'hôte distant. Cliquez sur Oui pour ajouter l'hôte distant à la liste de confiance.

3.1.2.8. Entrez le mot de passe pour activer la clé
Dans une fenêtre de terminal Putty, entrez le mot de passe clé que vous avez défini à l'étape
3.1.1.3 . Lors de la saisie du mot de passe, il ne montre aucune action à l'écran. Pas de soucis, si vous faites une erreur, vous pouvez utiliser la touche de retour arrière.

3.1.2.9. Connexion réussie
Une fois que vous avez entré le mot de passe correct, vous devriez recevoir un texte de bienvenue. Il vous informe que le système distant est prêt à exécuter vos commandes.

Vous trouverez ci-dessous les instructions pour une installation et une gestion Wireguard pilotée par script.
Je garde la dernière version de l'instruction dans le référentiel: https://github.com/isystem-io/wireguard-aws
4.1. Installer le protège-fil
Entrez les commandes suivantes dans le terminal Putty.
Vous pouvez les copier dans le presse-papiers et les coller dans le terminal en appuyant sur le bouton droit de la souris.
4.1.1. Clonez le référentiel de scripts
Clonez un référentiel de scripts d'installation Wireguard:
git clone https://github.com/pprometey/wireguard_aws.git wireguard_aws
4.1.2. Répertoire du référentiel de scripts
Accédez au répertoire du référentiel cloné:
cd wireguard_aws
4.1.3 Script d'initialisation
Exécutez le script d'installation Wireguard sous les droits d'administrateur (utilisateur root):
sudo ./initial.sh
Le script vous demande de fournir les données suivantes pour configurer Wireguard.
4.1.3.1. Définir le point de terminaison de la connexion (IP: port)
Saisissez l'adresse IP externe (voir 2.2.3 ) et le port ouvert (voir 2.1.5 ) du serveur Wireguard. Utilisez le format IP suivant: port , par exemple, 4.3.2.1:54321
. Appuyez sur la touche Entrée pour confirmer.
Enter the endpoint (external ip and port) in format[ipv4:port] (eg 4.3.2.1:54321): 4.3.2.1:54321
4.1.3.2. Définir l'adresse IP interne
Saisissez l'adresse IP du serveur Wireguard dans un sous-réseau VPN sécurisé. Si vous ne savez pas de quoi il s'agit, appuyez sur la touche Entrée pour définir la valeur par défaut ( 10.50.0.1
).
Enter the server address in the VPN subnet (CIDR format) ([ENTER] set to default: 10.50.0.1):
4.1.3.3. Spécifiez le serveur DNS
Saisissez l'adresse IP du serveur DNS ou appuyez sur la touche Entrée pour définir la valeur par défaut 1.1.1.1
(DNS public Cloudflare).
Enter the ip address of the server DNS (CIDR format) ([ENTER] set to default: 1.1.1.1):
4.1.3.4. Spécifiez l'interface WAN
Saisissez le nom de l'interface réseau externe. Cette interface détectera l'interface réseau interne du VPN.
Appuyez sur Entrée pour définir la valeur par défaut pour AWS ( eth0
)
Enter the name of the WAN network interface ([ENTER] set to default: eth0):
4.1.3.5. Indiquez le nom du client
Le serveur VPN Wireguard ne peut pas démarrer tant que vous n'ajoutez pas au moins un client. Saisissez un nom d'utilisateur VPN.
Dans mon cas, j'ai entré le nom Alex @ mobil.
Enter VPN user name: Alex@mobile
Après cela, vous devriez recevoir un code QR d'une configuration client ajoutée. Ce QR applique la configuration utilisateur au client mobile Wireguard sur Android ou iOS.
Le texte du fichier de configuration est également affiché avec QR. Vous aurez besoin en cas de configuration manuelle des clients comme discuté ci-dessous.

4.2. Ajouter un nouvel utilisateur VPN
Pour ajouter un nouvel utilisateur, vous devez exécuter le script add-client.sh
dans le terminal
sudo ./add-client.sh
Le script demande le nom d'utilisateur:
Enter VPN user name:
Le nom d'utilisateur peut être utilisé comme paramètre de script (dans mon cas, le nom d'utilisateur est Alex @ mobile):
sudo ./add-client.sh Alex@mobile
L'exécution du script conduit à la création du fichier de configuration client dans le répertoire client.
Fichier de configuration client: /etc/wireguard/clients/{ClientName}/{ClientName}.conf
Annuaire client:
/etc/wireguard/clients/{ClientName}
4.2.1. Fichier de configuration utilisateur
Exécutez la commande cat pour obtenir le contenu du fichier .conf
pour la configuration manuelle du client.
sudo cat/etc/wireguard/clients/Alex@mobile/Alex@mobile.conf
le résultat de l'exécution de la commande comme suit:
[Interface] PrivateKey = oDMWr0toPVCvgKt5oncLLRfHRit + jbzT5cshNUi8zlM = Address = 10.50.0.2/32 DNS = 1.1.1.1 [Peer] PublicKey = mLnd + mul15U0EP6jCH5MRhIAjsfKYuIU / j5ml8Z2SEk = PresharedKey = wjXdcf8CG29Scmnl5D97N46PhVn1jecioaXjdvrEkAc = AllowedIPs = 0.0.0.0/0, :: / 0 Endpoint = 4.3.2.1:54321
description du fichier de configuration client:
[Interface] PrivateKey = Client's private key Address = Client IP Address DNS = DNS used by the client [Peer] PublicKey = Public key server PresharedKey = Shared server and client key AllowedIPs = Allowed addresses for connection (all - 0.0.0.0/0, :: / 0) Endpoint = IP address and port for connection
4.2.2. Configuration client avec QR code
Exécutez la commande qrencode -t ansiutf8
pour obtenir le QR d'une configuration client créée. (dans mon cas, le nouveau nom du client est Alex @ mobile).
sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf | qrencode -t ansiutf8
5.1. Configuration du client mobile Android
Téléchargez le client mobile Wireguard pour Android à partir de la boutique GooglePlay officielle .
Scannez le code QR pour importer la configuration client (voir 4.2.2 ) et attribuez-lui un nom.

Après avoir importé la configuration, vous pouvez activer le tunnel VPN. Un petit symbole clé dans le système Android confirme la connexion VPN.

5.2. Configuration du client Windows
Téléchargez et installez TunSafe , qui est un client Wireguard pour Windows.
5.2.1. Créer un fichier texte local pour importer la configuration
Créez un fichier texte factice sur le bureau de votre PC.

5.2.2. Copiez le fichier de configuration depuis le serveur
Copiez le contenu du fichier de configuration depuis le serveur.
Revenez ensuite au terminal Putty et affichez le contenu du fichier de configuration utilisateur (voir 4.2.1 ).
Utilisez le clic droit de la souris pour copier le texte de configuration dans le terminal Putty.

5.2.3. Collez le texte de configuration dans un fichier texte local
Collez le texte de configuration du presse-papiers dans un fichier texte factice que nous avons créé précédemment sur le bureau (voir 5.2.1 ).

5.2.4. Enregistrez le fichier de configuration local
Enregistrez le fichier texte au format .conf (dans mon cas comme london.conf
)

5.2.5. Importer un fichier de configuration local
Importez le fichier de configuration dans le programme TunSafe.

5.2.6. Établir une connexion VPN
Dans le programme TunSafe, sélectionnez le fichier de configuration importé et cliquez sur le bouton Connecter .

6. Vérifiez la connexion VPN
Utilisez la ressource https://2ip.ua/en/ pour vérifier la connexion du tunnel VPN. Si l'adresse IP affichée correspond à celle que nous avons obtenue en 2.2.3 , le tunnel VPN est donc opérationnel.

Dans un terminal Linux, vous pouvez vérifier votre adresse IP en exécutant la commande suivante:
curl http://zx2c4.com/ip