Comment héberger votre propre VPN avec Algo et Cloud Hosting



Partout dans le monde, des entreprises proposent des services de VPN pour sécuriser votre présence en ligne. Mais peut-on vraiment se fier à ces fournisseurs ? Si vous préférez une solution plus personnelle, vous avez la possibilité de créer votre propre réseau privé virtuel grâce au logiciel open-source Algo, associé au service d’hébergement cloud de votre choix.

VPN et la question de la confiance

Malgré les promesses de confidentialité et les affirmations d’audits de sécurité sur les blogs d’entreprises, rien n’empêche un VPN de surveiller vos activités en ligne. Choisir un service VPN revient donc à faire un acte de confiance.

Si vous êtes réticent à l’idée de confier vos données à des services en ligne impersonnels, une alternative consiste à gérer votre propre serveur VPN. Cette tâche, autrefois complexe, est désormais accessible grâce au projet open-source Algo de la société de sécurité Trail of Bits. Créer son propre VPN n’a jamais été aussi simple.

Pour un coût d’environ 5 $ par mois, vous pouvez administrer et contrôler votre serveur VPN à temps plein. Mieux encore, Algo vous permet de configurer et de désactiver vos serveurs VPN selon vos besoins, ce qui peut vous faire économiser de l’argent.

La configuration d’Algo se fait via la ligne de commande. Si cela vous intimide, pas de panique, nous vous guiderons à chaque étape.

Ces instructions peuvent sembler longues, mais c’est parce que nous nous efforçons d’être aussi clairs que possible. Une fois que vous aurez configuré un VPN avec Algo à plusieurs reprises, le processus deviendra beaucoup plus rapide. De plus, l’environnement d’installation d’Algo ne doit être configuré qu’une seule fois. Ensuite, la création d’un nouveau serveur VPN se fait en quelques manipulations.

Mais comment être sûr que les scripts d’Algo n’ont pas d’arrière-pensée ? La bonne nouvelle, c’est que le code d’Algo est public sur GitHub, accessible à tous. De plus, de nombreux experts en sécurité s’intéressent à ce projet, ce qui limite fortement la possibilité d’actions malveillantes.

Fonctionnalités d’Algo et ses limites

Un VPN est un excellent moyen de protéger votre activité en ligne, surtout sur un réseau Wi-Fi public, dans un aéroport ou un café. Il renforce la sécurité de votre navigation web et bloque les éventuels intrus qui pourraient se trouver sur le même réseau Wi-Fi. Un VPN peut aussi être utile si votre FAI (fournisseur d’accès internet) bride certains types de trafic, comme les torrents.

Attention, cependant ! Télécharger du contenu illégal via votre propre VPN n’est pas une bonne idée, car vos activités peuvent être plus facilement retracées jusqu’à vous.

De plus, si vous souhaitez regarder Netflix via votre VPN, il faudra chercher une autre solution car Algo n’est pas compatible avec ce service. Il existe toutefois de nombreux services commerciaux qui le prennent en charge.

Prérequis pour Algo

Pour faire fonctionner un serveur VPN Algo, vous avez besoin d’un interpréteur de commandes Unix Bash. Sur un système Mac ou Linux, vous pouvez utiliser votre application Terminal. Sous Windows, vous devrez activer le sous-système Windows pour Linux (WSL). Voici comment installer et utiliser le shell Linux Bash sous Windows 10.

Vous aurez également besoin d’un compte auprès d’un fournisseur de serveurs cloud. Algo prend en charge les services suivants:

DigitalOcean
Amazon Lightsail
Amazon EC2
Vultr
Microsoft Azure
Google Compute Engine
Scaleway
Hetzner Cloud
Il est également compatible avec les instances OpenStack et CloudStack.

Si vous n’avez jamais utilisé l’un de ces services, nous vous recommandons DigitalOcean, car il est très intuitif. C’est également le service que nous utilisons pour ce tutoriel. Le processus sera légèrement différent si vous choisissez un autre fournisseur.

Une fois votre compte DigitalOcean prêt à l’emploi, connectez-vous. Dans le tableau de bord principal, sélectionnez « API » dans le panneau de gauche, sous l’en-tête « Compte ».

Sur la page suivante, cliquez sur « Générer un nouveau jeton ». Un jeton d’accès est une longue série de lettres et de chiffres qui permet d’accéder aux ressources de votre compte sans utiliser votre identifiant et votre mot de passe. Vous devrez donner un nom à ce nouveau jeton. Il est généralement recommandé de le nommer d’après l’application que vous utilisez, par exemple « algo » ou « ian-algo » (si vous vous appelez Ian).

Capture d’écran du menu « Applications et API » de DigitalOcean.

Une fois le nouveau jeton généré, copiez-le et collez-le dans un document texte sur votre ordinateur. Vous en aurez besoin dans quelques minutes.

Configuration de votre environnement

De retour sur votre bureau, ouvrez une nouvelle fenêtre de terminal, tapez « cd » (pour « changer de répertoire », le terme utilisé dans l’environnement Unix pour désigner les dossiers) et appuyez sur Entrée. Cela vous permettra de travailler à partir du répertoire personnel du terminal.

Au moment où ces lignes sont écrites, Algo requiert Python 3.6 ou une version plus récente. Tapez la commande suivante dans votre programme de terminal:

python3 --version

Si vous obtenez une réponse comme « Python 3.6.9 », vous êtes prêt. Sinon, vous devrez installer Python 3.

Pour installer Python 3 sur Mac, vous pouvez utiliser le gestionnaire de paquets Homebrew. Une fois Homebrew prêt, tapez la commande suivante dans une fenêtre de terminal:

brew install python3

Si vous utilisez Ubuntu Linux ou WSL sous Windows, Python 3 devrait être installé par défaut. Sinon, les méthodes d’installation varient en fonction de votre version de Linux. Effectuez une recherche en ligne en tapant « installer Python 3 sur [votre version de Linux] » pour trouver les instructions spécifiques.

Ensuite, vous devrez installer Virtualenv de Python 3 pour créer un environnement Python isolé pour Algo. Tapez ce qui suit dans Bash sur un Mac:

python3 -m pip install --upgrade virtualenv

Sur Ubuntu Linux et WSL, la commande est la suivante:

sudo apt install -y python3-virtualenv

Notez que ce tutoriel est orienté vers Ubuntu et les distributions associées, mais ces instructions fonctionneront également pour d’autres versions de Linux avec quelques ajustements mineurs. Si vous utilisez CentOS, par exemple, vous remplacerez les instructions utilisant « apt » par « dnf ».

Ensuite, nous devons télécharger Algo en utilisant la commande « wget ». Les Mac n’ont pas « wget » installé par défaut. Pour l’obtenir via Homebrew, tapez la commande suivante :

brew install wget

L’utilitaire wget téléchargeant les fichiers d’installation d’Algo.

Téléchargeons maintenant les fichiers d’Algo:

wget https://github.com/trailofbits/algo/archive/master.zip

Une fois « wget » terminé, vous trouverez un fichier compressé nommé « master.zip » dans le répertoire personnel de votre terminal. Vérifions sa présence avec la commande « ls ».

Si « master.zip » apparaît dans la liste des fichiers et dossiers, tout est en ordre. Sinon, essayez de relancer la commande « wget ».

Il faut maintenant décompresser ce fichier. Tapez donc :

unzip master.zip

Une fois cette opération effectuée, tapez de nouveau « ls ». Vous devriez voir un nouveau dossier nommé « algo-master » dans votre répertoire personnel.

Nous sommes presque prêts à passer à l’action. Il nous faut d’abord configurer notre environnement isolé et installer quelques dépendances supplémentaires. Nous allons travailler à présent dans le dossier « algo-master ».

Tapez la commande suivante pour vous déplacer vers ce dossier:

cd ~/algo-master

Vérifiez que vous vous trouvez bien au bon endroit avec la commande:

pwd

Cette commande, qui signifie « afficher le répertoire de travail », devrait afficher un chemin comme « /home/Bob/algo-master » ou « /Users/Bob/algo-master ». Maintenant que nous sommes au bon endroit, préparons tout.

Copiez-collez ou tapez la commande ci-dessous sur une seule ligne (ne validez pas avant d’avoir tout saisi) :

python3 -m virtualenv --python="$(command -v python3)" .env && source .env/bin/activate && python3 -m pip install -U pip virtualenv && python3 -m pip install -r requirements.txt

Cela déclenche une série d’actions dans le répertoire d’Algo pour se préparer à l’exécution.

Ensuite, vous devez nommer les utilisateurs du VPN. Si vous ne le faites pas à ce moment-là, vous devrez soit conserver les clés de sécurité (ce qui est moins sûr), soit créer un nouveau serveur à partir de zéro plus tard.

Dans tous les cas, tapez la commande suivante dans le terminal :

nano config.cfg

Ceci ouvre l’éditeur de texte en ligne de commande Nano. Le fichier de configuration d’Algo contient beaucoup d’informations, mais seule la partie concernant les « utilisateurs » nous intéresse. Il vous suffit de supprimer les noms d’utilisateurs par défaut (téléphone, ordinateur portable, ordinateur de bureau) et de saisir un nom pour chaque appareil que vous souhaitez connecter à votre VPN.

Par exemple, si je crée un VPN pour moi-même, Bill et Mary, le fichier de configuration pourrait ressembler à ceci:

users: - Ian_PC - Bill_Mac - Mary_PC - Ian_Android - Bill_iPhone - Mary_iPhone

Une fois que vous avez nommé tous les utilisateurs, appuyez sur Ctrl + O pour enregistrer le fichier, puis sur Ctrl + X pour quitter.

Nous sommes presque prêts à passer à l’action, mais les utilisateurs de Windows doivent d’abord effectuer un petit détour. WSL ne définit généralement pas les bonnes permissions utilisateur pour le dossier d’Algo, ce qui perturbe Ansible (l’outil sur lequel s’appuie Algo pour déployer un serveur).

Sur WSL, tapez la commande suivante pour revenir à votre répertoire personnel:

cd

Ensuite, tapez la commande suivante:

chmod 755 -R ~/algo-master

Pour revenir au dossier d’Algo, tapez:

cd ~/algo-master

Lancement d’Algo

C’est maintenant le moment de vérité.

Dans le dossier « algo-master », tapez la commande suivante dans la fenêtre du terminal:

./algo

La configuration d’Algo devrait commencer. Vous saurez que tout fonctionne quand le programme vous demandera quel fournisseur cloud vous souhaitez utiliser. Dans notre cas, nous allons sélectionner le numéro (1) pour DigitalOcean.

Si Algo échoue, cela peut être dû à de nombreuses raisons que nous ne pouvons pas prévoir ici. Si l’erreur indique que votre répertoire est « modifiable par tout le monde », suivez les instructions ci-dessus pour modifier les permissions.

Si vous obtenez une erreur différente, consultez la page de dépannage dans le référentiel du projet Algo sur GitHub. Vous pouvez aussi copier le message d’erreur et le coller dans Google pour lancer une recherche. Il y a de fortes chances que vous trouviez un message sur un forum qui vous aidera, car vous ne serez probablement pas la première personne à rencontrer cette erreur.

Ensuite, le programme vous demandera le jeton d’accès que vous avez copié précédemment depuis votre compte DigitalOcean. Copiez-le et collez-le dans le terminal. Vous ne verrez rien, car Bash n’affiche pas les caractères pour les mots de passe et les phrases de sécurité. Du moment que vous appuyez sur « Coller » puis sur « Entrée », tout devrait bien se passer.

Si cela ne fonctionne pas, vous avez peut-être fait une erreur en collant le jeton, ce qui arrive à tout le monde avec Bash. Tapez simplement la commande suivante pour réessayer :

./algo

Une fois qu’Algo est en cours d’exécution, répondez aux questions qu’il vous pose. Elles sont toutes relativement simples, comme le nom que vous souhaitez donner à votre serveur (il est conseillé d’utiliser « algo » dans le nom).

Ensuite, le programme vous demandera si vous souhaitez activer la « Connexion à la demande » pour les appareils Mac et iOS. Si vous n’utilisez aucun de ces appareils, tapez « N » pour « non ». Le programme vous demandera également si vous souhaitez conserver les clés PKI pour ajouter d’autres utilisateurs ultérieurement. En général, tapez « N » ici aussi.

C’est tout ! Algo va maintenant mettre entre 15 et 30 minutes pour que votre serveur soit opérationnel.

Utilisation d’Algo

Lorsque la configuration d’Algo est terminée, le terminal revient à une invite de ligne de commande, ce qui signifie que le VPN est prêt à être utilisé. Comme de nombreux services commerciaux, Algo utilise le protocole WireGuard VPN, qui est la nouvelle technologie tendance dans le monde des VPN. Il offre une bonne sécurité, des vitesses plus élevées et est plus facile à utiliser.

Pour vous montrer ce qu’il faut faire ensuite, nous allons activer Algo sous Windows. Pour configurer d’autres appareils, vous pouvez consulter le dépôt d’Algo sur GitHub.

Tout d’abord, nous allons installer le client de bureau Windows standard à partir du site de WireGuard. Ensuite, nous devons alimenter le programme avec notre fichier de configuration pour le PC. Les fichiers de configuration sont stockés dans un sous-dossier du dossier « algo-master » à l’adresse : « ~/algo-master/configs/[adresse IP du serveur VPN]/wireguard/ ».

Il existe deux types de fichiers pour configurer les périphériques clients VPN : .CONF et .PNG. Les fichiers .PNG sont des codes QR pour des appareils comme les téléphones, qui peuvent scanner ces codes. Les fichiers .CONF (configuration) sont des fichiers texte pour les clients WireGuard de bureau.

Sous Mac et Ubuntu, vous devriez trouver facilement le dossier « algo-master » en dehors de la ligne de commande. Sur Mac, « algo-master » se trouve dans votre dossier « Accueil » : utilisez simplement Finder>Aller>Accueil pour y accéder. Sur Ubuntu, ouvrez Nautilus, et le dossier sera dans votre répertoire personnel.

Sous Windows, cependant, WSL est séparé du reste du système d’exploitation. C’est pourquoi il est plus facile de copier les fichiers via la ligne de commande.

En utilisant notre exemple précédent, imaginons que nous voulons utiliser le fichier de configuration « Mary-PC.conf » sur un PC Windows 10. La commande ressemblerait à ceci:

cp ~/algo-master/configs/[adresse IP du serveur VPN]/wireguard/Mary-PC.conf /mnt/c/Users/[nom de votre compte utilisateur Windows]/Desktop/

Notez l’espace entre « Mary-PC.conf » et « /mnt/c/ ». C’est ainsi que Bash sait où se trouve le fichier à copier et où il doit être déplacé. La casse est également importante, assurez-vous donc de bien saisir les majuscules là où c’est nécessaire.

Il est naturel sous Windows de vouloir mettre une majuscule à la lettre « C » du lecteur « C: », mais ce n’est pas le cas sous Bash. N’oubliez pas non plus de remplacer les informations entre crochets par les valeurs réelles de votre PC.

Par exemple, si votre dossier utilisateur se trouve sur le lecteur « D: » et non « C: », remplacez « /mnt/c/ » par « /mnt/d/ ».

Une fois le fichier copié, ouvrez le client WireGuard pour Windows. Cliquez sur « Importer des tunnels à partir d’un fichier » puis sélectionnez votre fichier de configuration sur le bureau. Une fois cette action effectuée, cliquez sur « Activer ».

En quelques secondes, vous serez connecté à votre propre VPN !