
Richte ein persönliches VPN in der Cloud ein.
Algo VPN ist eine Sammlung von Ansible-Skripten, die die Einrichtung eines persönlichen WireGuard- und IPsec-VPNs vereinfachen. Es verwendet die sichersten verfügbaren Standardeinstellungen und funktioniert mit gängigen Cloud-Anbietern.
Weitere Informationen finden Sie in unserer Release-Ankündigung.
Der einfachste Weg, einen Algo-Server zum Laufen zu bringen, besteht darin, ihn auf Ihrem lokalen System oder von Google Cloud Shell aus auszuführen und ihn eine neue virtuelle Maschine in der Cloud für Sie einrichten zu lassen.
Richten Sie ein Konto bei einem Cloud-Hosting-Anbieter ein. Algo unterstützt DigitalOcean (am benutzerfreundlichsten), Amazon Lightsail, Amazon EC2, Vultr, Microsoft Azure, Google Compute Engine, Scaleway, DreamCompute, Linode, andere OpenStack-basierte Cloud-Hosting-Anbieter, CloudStack-basierte Cloud-Hosting-Anbieter oder Hetzner Cloud.
Besorgen Sie sich eine Kopie von Algo. Die Algo-Skripte werden von Ihrem lokalen System aus ausgeführt. Es gibt zwei Möglichkeiten, eine Kopie zu erhalten:
Laden Sie die ZIP-Datei herunter. Entpacken Sie die Datei, um ein Verzeichnis mit dem Namen algo-master zu erstellen, das die Algo-Skripte enthält.
Verwenden Sie git clone, um ein Verzeichnis mit dem Namen algo zu erstellen, das die Algo-Skripte enthält:
git clone https://github.com/trailofbits/algo.git
Legen Sie Ihre Konfigurationsoptionen fest. Öffnen Sie config.cfg in Ihrem bevorzugten Texteditor. Geben Sie die Benutzer an, die Sie in der Liste erstellen möchten. Erstellen Sie einen eindeutigen Benutzer für jedes Gerät, das Sie mit Ihrem VPN verbinden möchten. Sie sollten auch die anderen Optionen vor der Bereitstellung überprüfen, da eine spätere Änderung .
Das war's! Sie können nun Clients einrichten, um sich mit Ihrem VPN zu verbinden. Fahren Sie unten mit VPN-Clients konfigurieren fort.
"# 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> #"
Zertifikate und Konfigurationsdateien, die Benutzer benötigen, werden im Verzeichnis configs abgelegt. Stellen Sie sicher, dass Sie diese Dateien schützen, da viele private Schlüssel enthalten. Alle Dateien werden in einem Unterverzeichnis gespeichert, das nach der IP-Adresse Ihres neuen Algo-VPN-Servers benannt ist.
Wichtig für IPsec-Benutzer: Wenn Sie später Benutzer hinzufügen oder löschen möchten, müssen Sie während der Serverbereitstellung bei der Abfrage Do you want to retain the keys (PKI)? yes auswählen. Dadurch wird die für die Benutzerverwaltung erforderliche Zertifizierungsstelle erhalten.
WireGuard wird verwendet, um VPN-Dienste auf Apple-Geräten bereitzustellen. Algo erzeugt für jeden in config.cfg definierten Benutzer eine WireGuard-Konfigurationsdatei wireguard/<username>.conf und einen QR-Code wireguard/<username>.png.
Installieren Sie unter iOS die WireGuard-App aus dem iOS App Store. Verwenden Sie dann die WireGuard-App, um den QR-Code zu scannen oder die Konfigurationsdatei per AirDrop an das Gerät zu senden.
Installieren Sie unter macOS die WireGuard-App aus dem Mac App Store. WireGuard erscheint in der Menüleiste, sobald Sie die App ausführen. Klicken Sie auf das WireGuard-Symbol, wählen Sie Import tunnel(s) from file... und anschließend die entsprechende WireGuard-Konfigurationsdatei aus.
Unter iOS oder macOS können Sie „Connect on Demand" aktivieren und/oder bestimmte vertrauenswürdige WLAN-Netzwerke (z. B. zu Hause oder bei der Arbeit) ausschließen, indem Sie die Tunnelkonfiguration in der WireGuard-App bearbeiten. (Algo kann das nicht automatisch für Sie erledigen.)
Wenn Sie das integrierte IPsec-VPN auf Apple-Geräten bevorzugen oder „Connect on Demand" bzw. ausgeschlossene WLAN-Netzwerke automatisch konfiguriert benötigen, finden Sie ausführliche Konfigurationshinweise in der Einrichtungsanleitung für Apple-IPsec-Clients.
WireGuard wird verwendet, um VPN-Dienste unter Android bereitzustellen. Installieren Sie den WireGuard VPN Client. Importieren Sie die entsprechende Datei wireguard/<name>.conf auf Ihr Gerät und richten Sie dann eine neue Verbindung damit ein. Eine ausführliche Installations- und Konfigurationsanleitung finden Sie in der Android-Einrichtungsanleitung.
WireGuard wird verwendet, um VPN-Dienste unter Windows bereitzustellen. Algo erzeugt für jeden in config.cfg definierten Benutzer eine WireGuard-Konfigurationsdatei wireguard/<username>.conf.
Installieren Sie den WireGuard VPN Client. Importieren Sie die erzeugte Datei wireguard/<username>.conf auf Ihr Gerät und richten Sie dann eine neue Verbindung damit ein. Eine ausführlichere Anleitung und Fehlerbehebung finden Sie in den Windows-Einrichtungsanweisungen.
Linux-Clients können entweder WireGuard oder IPsec verwenden:
WireGuard: WireGuard funktioniert hervorragend mit Linux-Clients. Eine Schritt-für-Schritt-Anleitung zur Konfiguration von WireGuard unter Ubuntu und anderen Distributionen finden Sie in der Linux-WireGuard-Einrichtungsanleitung.
IPsec: Für strongSwan-IPsec-Clients (einschließlich OpenWrt, Ubuntu Server und anderen Distributionen) finden Sie in der Linux-IPsec-Einrichtungsanleitung ausführliche Konfigurationshinweise.
Für OpenWrt-Router mit WireGuard finden Sie in der OpenWrt-WireGuard-Einrichtungsanleitung routerspezifische Konfigurationshinweise.
Für Geräte, die oben nicht abgedeckt sind, oder für die manuelle Konfiguration benötigen Sie spezifische Zertifikats- und Konfigurationsdateien. Die benötigten Dateien hängen von Ihrer Geräteplattform und Ihrem VPN-Protokoll (WireGuard oder IPsec) ab.
Wenn Sie die optionale SSH-Tunneling-Rolle aktiviert haben, werden für jeden Benutzer in config.cfg lokale Benutzerkonten erstellt, und die SSH-authorized_key-Dateien für diese befinden sich im Verzeichnis configs (user.pem). SSH-Benutzerkonten haben keinen Shell-Zugriff, können sich nicht mit einem Passwort authentifizieren und haben nur eingeschränkte Tunneling-Optionen (z. B. ist ssh -N erforderlich). Dadurch wird sichergestellt, dass SSH-Benutzer nur den minimalen Zugriff haben, der zum Einrichten eines Tunnels erforderlich ist, und keine anderen Aktionen auf dem Algo-Server ausführen können.
Verwenden Sie das folgende Beispielkommando, um einen SSH-Tunnel zu starten, indem Sie <user> und <ip> durch Ihre eigenen Werte ersetzen. Sobald der Tunnel eingerichtet ist, können Sie einen Browser oder eine andere Anwendung so konfigurieren, dass 127.0.0.1:1080 als SOCKS-Proxy verwendet wird, um den Datenverkehr über den Algo-Server zu leiten:
ssh -D 127.0.0.1:1080 -f -q -C -N <user>@algo -i configs/<ip>/ssh-tunnel/<user>.pem -F configs/<ip>/ssh_config
Ihr Algo-Server ist für den SSH-Zugriff zu administrativen Zwecken ausschließlich per Schlüssel konfiguriert. Öffnen Sie die Terminal-App, wechseln Sie per cd in das Verzeichnis algo-master, in das Sie Algo ursprünglich heruntergeladen haben, und verwenden Sie dann das in der Erfolgsmeldung aufgeführte Kommando:
ssh -F configs/<ip>/ssh_config <hostname>
wobei <ip> die IP-Adresse Ihres Algo-Servers ist. Wenn Sie sich regelmäßig beim Server anmelden, ist es sinnvoll, Ihren Algo-SSH-Schlüssel automatisch zu laden. Fügen Sie den folgenden Ausschnitt am Ende von ~/.bash_profile hinzu, um ihn dauerhaft zu Ihrer Shell-Umgebung hinzuzufügen:
ssh-add ~/.ssh/algo > /dev/null 2>&1
Alternativ können Sie die erzeugte Konfiguration für alle erstellten Algo-Server in Ihre SSH-Konfiguration aufnehmen. Bearbeiten Sie die Datei ~/.ssh/config, um diese Direktive am Anfang einzufügen:
Include <algodirectory>/configs/*/ssh_config
wobei <algodirectory> das Verzeichnis ist, in das Sie Algo geklont haben.
Algo macht es einfach, nach der ersten Bereitstellung Benutzer zu Ihrem VPN-Server hinzuzufügen oder von ihm zu entfernen.
Für IPsec-Benutzer: Sie müssen während der ersten Serverbereitstellung bei der Abfrage Do you want to retain the keys (PKI)? yes ausgewählt haben. Dadurch bleibt die für die Benutzerverwaltung erforderliche Zertifizierungsstelle erhalten. Sie sollten außerdem die während der Bereitstellung angezeigten p12- und CA-Schlüsselpasswörter speichern, da sie nur einmal angezeigt werden.
Um Benutzer hinzuzufügen oder zu entfernen, bearbeiten Sie zunächst die Liste users in Ihrer Datei config.cfg. Fügen Sie nach Bedarf neue Benutzernamen hinzu oder entfernen Sie vorhandene. Navigieren Sie dann in Ihrem Terminal zum algo-Verzeichnis und führen Sie Folgendes aus:
macOS/Linux:
./algo update-users
Windows:
.\algo.ps1 update-users
Nach Abschluss des Vorgangs werden für alle neuen Benutzer neue Konfigurationsdateien im Verzeichnis configs erzeugt. Der Algo-VPN-Server wird so aktualisiert, dass er nur die in der Datei config.cfg aufgeführten Benutzer enthält. Entfernte Benutzer können sich nicht mehr verbinden, und neue Benutzer erhalten frische Zertifikate und einsatzbereite Konfigurationsdateien.
Algo verfolgt einen pragmatischen Ansatz in Bezug auf den Datenschutz. Standardmäßig minimieren wir die Protokollierung, behalten aber genügend Informationen für Sicherheit und Fehlerbehebung bei.
Was standardmäßig protokolliert wird:
sudo wg - zeigt letzten Endpunkt und Handshake-Zeit)Der Datenschutz wird über zwei Haupteinstellungen in config.cfg gesteuert:
strongswan_log_level: -1 - steuert die StrongSwan-Verbindungsprotokollierung (-1 = deaktiviert, 2 = Debug)privacy_enhancements_enabled: true - Hauptschalter für Protokollrotation, Verlaufslöschung, Protokollfilterung und BereinigungUm bei der Fehlerbehebung die vollständige Debug-Ausgabe zu aktivieren, setzen Sie sowohl strongswan_log_level: 2 als auch privacy_enhancements_enabled: false. Dadurch werden detaillierte Verbindungsprotokolle erfasst und alle Datenschutzfunktionen deaktiviert. Denken Sie daran, diese Änderungen nach der Fehlerbehebung rückgängig zu machen.
Überprüfen Sie nach der Bereitstellung Ihre Datenschutzeinstellungen:
ssh -F configs/<server_ip>/ssh_config <hostname>
sudo /usr/local/bin/privacy-monitor.sh
Perfekte Privatsphäre ist mit keiner VPN-Lösung möglich. Ihr Cloud-Anbieter sieht und protokolliert Metadaten des Netzwerkverkehrs, unabhängig von Ihrer Serverkonfiguration. Und natürlich weiß Ihr ISP, dass Sie sich mit einem VPN-Server verbinden, auch wenn er nicht sehen kann, was Sie darüber tun.
Für das höchste Maß an Privatsphäre behandeln Sie Ihre Algo-Server als Wegwerfressourcen. Starten Sie eine neue Instanz, wenn Sie sie benötigen, nutzen Sie sie für Ihren spezifischen Zweck und zerstören Sie sie dann vollständig. Die ephemere Natur der Cloud-Infrastruktur kann eine Datenschutzfunktion sein, wenn Sie sie bewusst nutzen.
Wenn Sie die gesamte Dokumentation gelesen haben und weitere Fragen haben, erstellen Sie eine neue Diskussion.
Ich schimpfe schon so lange über den beklagenswerten Zustand der VPN-Dienste, dass es wohl an der Zeit ist, einen ordentlichen Vortrag darüber zu halten. TL;DR: nutzt Algo.
-- Kenn White
Bevor Sie einen VPN-Anbieter/eine VPN-App auswählen, sollten Sie sich informieren https://research.csiro.au/ng/wp-content/uploads/sites/106/2016/08/paper-1.pdf ... – oder ziehen Sie Algo in Betracht
-- The Register
Algo ist wirklich einfach und sicher.
-- the grugq
Ich habe mit Algo VPN herumgespielt, einer Reihe von Skripten, mit denen Sie in kürzester Zeit ein VPN in der Cloud einrichten können, selbst wenn Sie sich mit Entwicklung nicht gut auskennen. Ich muss sagen, dass mich der Ansatz von Trail of Bits ziemlich beeindruckt hat.
-- Romain Dillet für TechCrunch
Wenn Sie sich unwohl dabei fühlen, einem anonymen, beliebigen VPN-Anbieter Geld zu geben, ist dies die beste Lösung.
-- Thorin Klosowski für Lifehacker
Informationen zu den folgenden Themen finden Sie in unserem Entwicklungsleitfaden:
Alle Spenden unterstützen die weitere Entwicklung. Danke!
Algo ist unter der AGPLv3 lizenziert und wird unter dieser vertrieben. Wenn Sie eine Closed-Source-Modifikation oder einen auf Algo basierenden Dienst vertreiben möchten, ziehen Sie bitte den Kauf einer Ausnahme in Betracht. Wie bei den oben genannten Methoden trägt auch dies zur Unterstützung der weiteren Entwicklung bei.
usersStarten Sie die Bereitstellung. Kehren Sie zu Ihrem Terminal zurück. Führen Sie im Algo-Verzeichnis das für Ihre Plattform geeignete Skript aus:
macOS/Linux:
./algo
Windows:
.\algo.ps1
Beim ersten Ausführen des Skripts wird automatisch die erforderliche Python-Umgebung (Python 3.11+) installiert. Bei späteren Ausführungen startet es sofort und funktioniert auf allen Plattformen (macOS, Linux, Windows über WSL). Das Windows-PowerShell-Skript verwendet bei Bedarf automatisch WSL, da Ansible eine Unix-ähnliche Umgebung benötigt. Es stehen mehrere optionale Funktionen zur Verfügung, von denen keine für einen voll funktionsfähigen VPN-Server erforderlich ist. Diese optionalen Funktionen werden in der Bereitstellungsdokumentation beschrieben.