
Set up a personal VPN in the cloud
Algo VPN est un ensemble de scripts Ansible qui simplifient la mise en place d'un VPN personnel WireGuard et IPsec. Il utilise les réglages sécurisés par défaut les plus robustes et fonctionne avec les fournisseurs cloud courants.
Consultez notre annonce de publication pour plus d'informations.
Le moyen le plus simple de faire fonctionner un serveur Algo est de l'exécuter sur votre système local ou depuis Google Cloud Shell et de le laisser configurer une nouvelle machine virtuelle dans le cloud pour vous.
Configurez un compte chez un fournisseur d'hébergement cloud. Algo prend en charge DigitalOcean (le plus convivial), Amazon Lightsail, Amazon EC2, Vultr, Microsoft Azure, Google Compute Engine, Scaleway, DreamCompute, Linode, d'autres hébergements cloud basés sur OpenStack, des hébergements cloud basés sur CloudStack, ou Hetzner Cloud.
Obtenez une copie d'Algo. Les scripts Algo seront exécutés depuis votre système local. Il y a deux façons d'obtenir une copie :
Téléchargez le fichier ZIP. Décompressez le fichier pour créer un répertoire nommé algo-master contenant les scripts Algo.
Utilisez git clone pour créer un répertoire nommé algo contenant les scripts Algo :
git clone https://github.com/trailofbits/algo.git
Définissez vos options de configuration. Ouvrez config.cfg dans votre éditeur de texte préféré. Spécifiez les utilisateurs que vous souhaitez créer dans la liste . Créez un utilisateur unique pour chaque appareil que vous prévoyez de connecter à votre VPN. Vous devriez également examiner les autres options avant le déploiement, car changer d'avis par la suite .
C'est tout ! Vous pouvez maintenant configurer des clients pour se connecter à votre VPN. Passez à Configurer les clients VPN ci-dessous.
"# Congratulations! #"
"# Your Algo server is running. #"
"# Config files and certificates are in the ./configs/ directory. #"
"# Go to https://whoer.net/ after connecting #"
"# and ensure that all your traffic passes through the VPN. #"
"# Local DNS resolver 172.16.0.1 #"
"# The p12 and SSH keys password for new users is XXXXXXXX #"
"# The CA key password is XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX #"
"# Shell access: ssh -F configs/<server_ip>/ssh_config <hostname> #"
Les certificats et fichiers de configuration dont les utilisateurs auront besoin sont placés dans le répertoire configs. Assurez-vous de sécuriser ces fichiers car beaucoup contiennent des clés privées. Tous les fichiers sont enregistrés dans un sous-répertoire nommé avec l'adresse IP de votre nouveau serveur Algo VPN.
Important pour les utilisateurs IPsec : Si vous souhaitez ajouter ou supprimer des utilisateurs ultérieurement, vous devez sélectionner yes à l'invite Do you want to retain the keys (PKI)? lors du déploiement du serveur. Cela préserve l'autorité de certification nécessaire à la gestion des utilisateurs.
WireGuard est utilisé pour fournir des services VPN sur les appareils Apple. Algo génère un fichier de configuration WireGuard, wireguard/<nom_utilisateur>.conf, et un code QR, wireguard/<nom_utilisateur>.png, pour chaque utilisateur défini dans config.cfg.
Sur iOS, installez l'application WireGuard depuis l'App Store iOS. Ensuite, utilisez l'application WireGuard pour scanner le code QR ou transférer le fichier de configuration par AirDrop vers l'appareil.
Sur macOS, installez l'application WireGuard depuis le Mac App Store. WireGuard apparaîtra dans la barre de menu une fois l'application lancée. Cliquez sur l'icône WireGuard, choisissez Importer les tunnels depuis un fichier..., puis sélectionnez le fichier de configuration WireGuard approprié.
Sur iOS ou macOS, vous pouvez activer « Connect on Demand » et/ou exclure certains réseaux Wi-Fi de confiance (comme ceux de votre domicile ou de votre travail) en modifiant la configuration du tunnel dans l'application WireGuard. (Algo ne peut pas le faire automatiquement pour vous.)
Si vous préférez utiliser le VPN IPsec intégré sur les appareils Apple, ou si vous avez besoin que « Connect on Demand » ou les réseaux Wi-Fi exclus soient configurés automatiquement, consultez le guide de configuration du client IPsec Apple pour des instructions détaillées.
WireGuard est utilisé pour fournir des services VPN sur Android. Installez le client VPN WireGuard. Importez le fichier wireguard/<nom>.conf correspondant sur votre appareil, puis configurez une nouvelle connexion avec celui-ci. Consultez le guide de configuration Android pour des instructions d'installation et de configuration détaillées.
WireGuard est utilisé pour fournir des services VPN sur Windows. Algo génère un fichier de configuration WireGuard, wireguard/<nom_utilisateur>.conf, pour chaque utilisateur défini dans config.cfg.
Installez le client VPN WireGuard. Importez le fichier wireguard/<nom_utilisateur>.conf généré sur votre appareil, puis configurez une nouvelle connexion avec celui-ci. Consultez les instructions de configuration Windows pour une procédure plus détaillée et des informations de dépannage.
Les clients Linux peuvent utiliser WireGuard ou IPsec :
WireGuard : WireGuard fonctionne très bien avec les clients Linux. Consultez le guide de configuration WireGuard pour Linux pour des instructions pas à pas sur la configuration de WireGuard sur Ubuntu et d'autres distributions.
IPsec : Pour les clients IPsec strongSwan (y compris OpenWrt, Ubuntu Server et d'autres distributions), consultez le guide de configuration IPsec pour Linux pour des instructions de configuration détaillées.
Pour les routeurs OpenWrt utilisant WireGuard, consultez le guide de configuration WireGuard pour OpenWrt pour des instructions de configuration spécifiques au routeur.
Pour les appareils non couverts ci-dessus ou pour une configuration manuelle, vous aurez besoin de fichiers de certificat et de configuration spécifiques. Les fichiers nécessaires dépendent de la plateforme de votre appareil et du protocole VPN (WireGuard ou IPsec).
Si vous avez activé le rôle optionnel de tunneling SSH, des comptes d'utilisateurs locaux seront créés pour chaque utilisateur dans config.cfg, et leurs fichiers authorized_key SSH se trouveront dans le répertoire configs (user.pem). Les comptes utilisateur SSH n'ont pas d'accès shell, ne peuvent pas s'authentifier avec un mot de passe et n'ont que des options de tunneling limitées (par exemple, ssh -N est requis). Cela garantit que les utilisateurs SSH ont le minimum d'accès requis pour configurer un tunnel et ne peuvent effectuer aucune autre action sur le serveur Algo.
Utilisez l'exemple de commande ci-dessous pour démarrer un tunnel SSH en remplaçant <utilisateur> et <ip> par les vôtres. Une fois le tunnel configuré, vous pouvez configurer un navigateur ou une autre application pour utiliser 127.0.0.1:1080 comme proxy SOCKS afin d'acheminer le trafic via le serveur Algo :
ssh -D 127.0.0.1:1080 -f -q -C -N <utilisateur>@algo -i configs/<ip>/ssh-tunnel/<utilisateur>.pem -F configs/<ip>/ssh_config
Votre serveur Algo est configuré pour un accès SSH par clé uniquement à des fins administratives. Ouvrez l'application Terminal, cd dans le répertoire algo-master où vous avez téléchargé Algo, puis utilisez la commande indiquée dans le message de succès :
ssh -F configs/<ip>/ssh_config <nom_hôte>
où <ip> est l'adresse IP de votre serveur Algo. Si vous vous connectez régulièrement au serveur, il sera utile de charger automatiquement votre clé SSH Algo. Ajoutez l'extrait suivant à la fin de ~/.bash_profile pour l'ajouter définitivement à votre environnement shell :
ssh-add ~/.ssh/algo > /dev/null 2>&1
Alternativement, vous pouvez choisir d'inclure la configuration générée pour tous les serveurs Algo créés dans votre configuration SSH. Modifiez le fichier ~/.ssh/config pour inclure cette directive en haut :
Include <répertoirealgo>/configs/*/ssh_config
où <répertoirealgo> est le répertoire dans lequel vous avez cloné Algo.
Algo facilite l'ajout ou la suppression d'utilisateurs de votre serveur VPN après le déploiement initial.
Pour les utilisateurs IPsec : Vous devez avoir sélectionné yes à l'invite Do you want to retain the keys (PKI)? lors du déploiement initial du serveur. Cela préserve l'autorité de certification nécessaire à la gestion des utilisateurs. Vous devez également conserver les mots de passe de la clé p12 et de la clé CA affichés lors du déploiement, car ils ne sont affichés qu'une seule fois.
Pour ajouter ou supprimer des utilisateurs, modifiez d'abord la liste users dans votre fichier config.cfg. Ajoutez de nouveaux noms d'utilisateur ou supprimez ceux qui existent, selon vos besoins. Ensuite, naviguez vers le répertoire algo dans votre terminal et exécutez :
macOS/Linux :
./algo update-users
Windows :
.\algo.ps1 update-users
Une fois le processus terminé, de nouveaux fichiers de configuration seront générés dans le répertoire configs pour les nouveaux utilisateurs. Le serveur VPN Algo sera mis à jour pour ne contenir que les utilisateurs listés dans le fichier config.cfg. Les utilisateurs supprimés ne pourront plus se connecter, et les nouveaux utilisateurs disposeront de certificats et fichiers de configuration frais, prêts à l'emploi.
Algo adopte une approche pragmatique de la confidentialité. Par défaut, nous minimisons la journalisation tout en conservant suffisamment d'informations pour la sécurité et le dépannage.
Ce qui EST journalisé par défaut :
sudo wg – montre la dernière extrémité et l'heure de la poignée de main)La confidentialité est contrôlée par deux paramètres principaux dans config.cfg :
strongswan_log_level: -1 – Contrôle la journalisation des connexions StrongSwan (-1 = désactivé, 2 = débogage)privacy_enhancements_enabled: true – Interrupteur principal pour la rotation des journaux, l'effacement de l'historique, le filtrage des journaux et le nettoyagePour activer le débogage complet lors du dépannage, définissez à la fois strongswan_log_level: 2 et privacy_enhancements_enabled: false. Cela capturera des journaux de connexion détaillés et désactivera toutes les fonctionnalités de confidentialité. N'oubliez pas d'annuler ces modifications après le débogage.
Après le déploiement, vérifiez vos paramètres de confidentialité :
ssh -F configs/<adresse_serveur>/ssh_config <nom_hôte>
sudo /usr/local/bin/privacy-monitor.sh
Une confidentialité parfaite est impossible avec n'importe quelle solution VPN. Votre fournisseur cloud voit et journalise les métadonnées du trafic réseau, quelle que soit la configuration de votre serveur. Et bien sûr, votre FAI sait que vous vous connectez à un serveur VPN, même s'il ne peut pas voir ce que vous faites à travers.
Pour le plus haut niveau de confidentialité, traitez vos serveurs Algo comme jetables. Créez une nouvelle instance lorsque vous en avez besoin, utilisez-la pour votre objectif spécifique, puis détruisez-la complètement. La nature éphémère de l'infrastructure cloud peut être une fonctionnalité de confidentialité si vous l'utilisez intentionnellement.
Si vous avez lu toute la documentation et avez d'autres questions, créez une nouvelle discussion.
Je me plains de l'état lamentable des services VPN depuis si longtemps, il est probablement temps de donner une vraie conférence sur le sujet. En résumé : utilisez Algo.
-- Kenn White
Avant de choisir un fournisseur/application VPN, assurez-vous de faire quelques recherches https://research.csiro.au/ng/wp-content/uploads/sites/106/2016/08/paper-1.pdf ... – ou envisagez Algo
-- The Register
Algo est vraiment facile et sécurisé.
-- the grugq
J'ai joué avec Algo VPN, un ensemble de scripts qui vous permettent de configurer un VPN dans le cloud en très peu de temps, même si vous ne connaissez pas grand-chose au développement. Je dois dire que j'ai été assez impressionné par l'approche de Trail of Bits.
-- Romain Dillet pour TechCrunch
Si vous n'êtes pas à l'aise de donner de l'argent à un fournisseur VPN anonyme et aléatoire, c'est la meilleure solution.
-- Thorin Klosowski pour Lifehacker
Consultez notre Guide de développement pour des informations sur :
Tous les dons soutiennent le développement continu. Merci !
Algo est sous licence et distribué selon les termes de l'AGPLv3. Si vous souhaitez distribuer une modification ou un service closed-source basé sur Algo, veuillez envisager d'acheter une exception. Comme pour les méthodes ci-dessus, cela aidera à soutenir le développement continu.
usersLancez le déploiement. Revenez à votre terminal. Dans le répertoire Algo, exécutez le script approprié pour votre plateforme :
macOS/Linux :
./algo
Windows :
.\algo.ps1
La première fois que vous exécutez le script, il installera automatiquement l'environnement Python requis (Python 3.11+). Lors des exécutions suivantes, il démarre immédiatement et fonctionne sur toutes les plateformes (macOS, Linux, Windows via WSL). Le script PowerShell Windows utilise automatiquement WSL si nécessaire, car Ansible nécessite un environnement de type Unix. Plusieurs fonctionnalités optionnelles sont disponibles, dont aucune n'est requise pour un serveur VPN pleinement fonctionnel. Ces fonctionnalités optionnelles sont décrites dans la documentation de déploiement.