
Configurare una VPN personale nel cloud.
Algo VPN è un insieme di script Ansible che semplificano la configurazione di una VPN personale WireGuard e IPsec. Utilizza le impostazioni più sicure disponibili e funziona con i comuni provider cloud.
Leggi il nostro annuncio di rilascio per maggiori informazioni.
Il modo più semplice per ottenere un server Algo in esecuzione è eseguirlo sul tuo sistema locale o da Google Cloud Shell e lasciare che configuri una nuova macchina virtuale nel cloud per te.
Crea un account su un provider di hosting cloud. Algo supporta DigitalOcean (il più user-friendly), Amazon Lightsail, Amazon EC2, Vultr, Microsoft Azure, Google Compute Engine, Scaleway, DreamCompute, Linode, altri hosting cloud basati su OpenStack, hosting cloud basati su CloudStack, o Hetzner Cloud.
Ottieni una copia di Algo. Gli script Algo verranno eseguiti dal tuo sistema locale. Ci sono due modi per ottenere una copia:
Scarica il file ZIP. Decomprimi il file per creare una directory chiamata algo-master contenente gli script Algo.
Usa git clone per creare una directory chiamata algo contenente gli script Algo:
git clone https://github.com/trailofbits/algo.git
Imposta le opzioni di configurazione. Apri config.cfg nel tuo editor di testo preferito. Specifica gli utenti che vuoi creare nell'elenco users. Crea un utente unico per ogni dispositivo che intendi connettere alla tua VPN. Dovresti anche rivedere le altre opzioni prima del deploy, poiché cambiarle in seguito .
Questo è tutto! Ora puoi configurare i client per connetterti alla tua VPN. Prosegui con Configura i Client VPN qui sotto.
"# 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> #"
I certificati e i file di configurazione necessari agli utenti vengono inseriti nella directory configs. Assicurati di proteggere questi file poiché molti contengono chiavi private. Tutti i file vengono salvati in una sottodirectory denominata con l'indirizzo IP del tuo nuovo server VPN Algo.
Importante per gli utenti IPsec: Se in seguito desideri aggiungere o eliminare utenti, devi selezionare sì al prompt Vuoi conservare le chiavi (PKI)? durante il deploy del server. Questo preserva l'autorità di certificazione necessaria per la gestione degli utenti.
WireGuard viene utilizzato per fornire servizi VPN sui dispositivi Apple. Algo genera un file di configurazione WireGuard, wireguard/<username>.conf, e un codice QR, wireguard/<username>.png, per ogni utente definito in config.cfg.
Su iOS, installa l'app WireGuard dall'App Store iOS. Quindi, usa l'app WireGuard per scansionare il codice QR o AirDrop il file di configurazione al dispositivo.
Su macOS, installa l'app WireGuard dal Mac App Store. WireGuard apparirà nella barra dei menu una volta avviata l'app. Fai clic sull'icona di WireGuard, scegli Importa tunnel da file... , quindi seleziona il file di configurazione WireGuard appropriato.
Su iOS o macOS, puoi abilitare "Connetti su richiesta" e/o escludere determinate reti Wi-Fi fidate (come casa o lavoro) modificando la configurazione del tunnel nell'app WireGuard. (Algo non può farlo automaticamente per te.)
Se preferisci utilizzare la VPN IPsec integrata sui dispositivi Apple, o hai bisogno di "Connetti su richiesta" o reti Wi-Fi escluse configurate automaticamente, consulta la guida alla configurazione del client Apple IPsec per istruzioni dettagliate.
WireGuard viene utilizzato per fornire servizi VPN su Android. Installa il Client VPN WireGuard. Importa il file wireguard/<name>.conf corrispondente sul tuo dispositivo, quindi configura una nuova connessione con esso. Consulta la guida di configurazione Android per istruzioni dettagliate di installazione e configurazione.
WireGuard viene utilizzato per fornire servizi VPN su Windows. Algo genera un file di configurazione WireGuard, wireguard/<username>.conf, per ogni utente definito in config.cfg.
Installa il Client VPN WireGuard. Importa il file wireguard/<username>.conf generato sul tuo dispositivo, quindi configura una nuova connessione con esso. Consulta le istruzioni di configurazione Windows per una guida più dettagliata e risoluzione dei problemi.
I client Linux possono utilizzare WireGuard o IPsec:
WireGuard: WireGuard funziona benissimo con i client Linux. Consulta la guida di configurazione WireGuard per Linux per istruzioni passo passo sulla configurazione di WireGuard su Ubuntu e altre distribuzioni.
IPsec: Per i client IPsec strongSwan (inclusi OpenWrt, Ubuntu Server e altre distribuzioni), consulta la guida di configurazione IPsec per Linux per istruzioni dettagliate.
Per i router OpenWrt che utilizzano WireGuard, consulta la guida di configurazione WireGuard per OpenWrt per istruzioni specifiche per router.
Per i dispositivi non coperti sopra o per la configurazione manuale, avrai bisogno di file specifici di certificato e configurazione. I file necessari dipendono dalla piattaforma del tuo dispositivo e dal protocollo VPN (WireGuard o IPsec).
Se hai attivato il ruolo opzionale di tunneling SSH, verranno creati account utente locali per ogni utente in config.cfg, e i file delle chiavi autorizzate SSH saranno nella directory configs (user.pem). Gli account utente SSH non hanno accesso a una shell, non possono autenticarsi con password e hanno solo opzioni di tunneling limitate (ad esempio, è richiesto ssh -N). Questo garantisce che gli utenti SSH abbiano il minimo accesso necessario per configurare un tunnel e non possano eseguire altre azioni sul server Algo.
Usa il comando di esempio qui sotto per avviare un tunnel SSH sostituendo <user> e <ip> con i tuoi. Una volta configurato il tunnel, puoi configurare un browser o un'altra applicazione per utilizzare 127.0.0.1:1080 come proxy SOCKS per instradare il traffico attraverso il server Algo:
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
Il tuo server Algo è configurato per l'accesso SSH solo con chiave per scopi amministrativi. Apri l'app Terminale, cd nella directory algo-master dove hai scaricato originariamente Algo, quindi usa il comando elencato nel messaggio di successo:
ssh -F configs/<ip>/ssh_config <hostname>
dove <ip> è l'indirizzo IP del tuo server Algo. Se accedi regolarmente al server, sarà utile caricare automaticamente la tua chiave SSH di Algo. Aggiungi il seguente snippet in fondo a ~/.bash_profile per aggiungerla permanentemente al tuo ambiente shell:
ssh-add ~/.ssh/algo > /dev/null 2>&1
In alternativa, puoi scegliere di includere la configurazione generata per qualsiasi server Algo creato nel tuo file di configurazione SSH. Modifica il file ~/.ssh/config includendo questa direttiva all'inizio:
Include <algodirectory>/configs/*/ssh_config
dove <algodirectory> è la directory in cui hai clonato Algo.
Algo semplifica l'aggiunta o la rimozione di utenti dal tuo server VPN dopo il deploy iniziale.
Per gli utenti IPsec: Devi aver selezionato sì al prompt Vuoi conservare le chiavi (PKI)? durante il deploy iniziale del server. Questo preserva l'autorità di certificazione necessaria per la gestione degli utenti. Dovresti anche salvare le password della chiave p12 e CA mostrate durante il deploy, poiché vengono visualizzate una sola volta.
Per aggiungere o rimuovere utenti, modifica prima l'elenco users nel tuo file config.cfg. Aggiungi nuovi nomi utente o rimuovi quelli esistenti come necessario. Quindi naviga nella directory algo nel tuo terminale ed esegui:
macOS/Linux:
./algo update-users
Windows:
.\algo.ps1 update-users
Dopo il completamento del processo, verranno generati nuovi file di configurazione nella directory configs per tutti i nuovi utenti. Il server VPN Algo verrà aggiornato per contenere solo gli utenti elencati nel file config.cfg. Gli utenti rimossi non potranno più connettersi, e i nuovi utenti avranno certificati e file di configurazione freschi pronti per l'uso.
Algo adotta un approccio pragmatico alla privacy. Per impostazione predefinita, minimizziamo la registrazione mantenendo comunque informazioni sufficienti per la sicurezza e la risoluzione dei problemi.
Cosa viene registrato per impostazione predefinita:
sudo wg - mostra l'ultimo endpoint e il tempo di handshake)La privacy è controllata da due impostazioni principali in config.cfg:
strongswan_log_level: -1 - Controlla la registrazione delle connessioni StrongSwan (-1 = disabilitato, 2 = debug)privacy_enhancements_enabled: true - Interruttore principale per rotazione log, cancellazione cronologia, filtraggio log e puliziaPer abilitare il debug completo durante la risoluzione dei problemi, imposta sia strongswan_log_level: 2 che privacy_enhancements_enabled: false. Questo catturerà log di connessione dettagliati e disabiliterà tutte le funzionalità di privacy. Ricorda di ripristinare queste modifiche dopo il debug.
Dopo il deploy, verifica le tue impostazioni sulla privacy:
ssh -F configs/<server_ip>/ssh_config <hostname>
sudo /usr/local/bin/privacy-monitor.sh
La privacy perfetta è impossibile con qualsiasi soluzione VPN. Il tuo provider cloud vede e registra i metadati del traffico di rete indipendentemente dalla configurazione del tuo server. E ovviamente, il tuo ISP sa che ti stai connettendo a un server VPN, anche se non può vedere cosa stai facendo attraverso di esso.
Per il massimo livello di privacy, tratta i tuoi server Algo come usa e getta. Crea una nuova istanza quando ne hai bisogno, usala per il tuo scopo specifico, poi distruggila completamente. La natura effimera dell'infrastruttura cloud può essere una caratteristica di privacy se la usi intenzionalmente.
Se hai letto tutta la documentazione e hai ulteriori domande, crea una nuova discussione.
Ho criticato a lungo lo stato pietoso dei servizi VPN, probabilmente è ora di fare un discorso adeguato sull'argomento. TL;DR: usa Algo.
-- Kenn White
Prima di scegliere un provider/app VPN, assicurati di fare delle ricerche https://research.csiro.au/ng/wp-content/uploads/sites/106/2016/08/paper-1.pdf ... – o considera Algo
-- The Register
Algo è davvero facile e sicuro.
-- the grugq
Ho sperimentato con Algo VPN, un insieme di script che ti permettono di configurare una VPN nel cloud in pochissimo tempo, anche se non sai molto di sviluppo. Devo dire che sono rimasto molto colpito dall'approccio di Trail of Bits.
-- Romain Dillet per TechCrunch
Se non ti senti a tuo agio a dare soldi a un provider VPN anonimo e casuale, questa è la soluzione migliore.
-- Thorin Klosowski per Lifehacker
Consulta la nostra Guida allo Sviluppo per informazioni su:
Tutte le donazioni supportano lo sviluppo continuo. Grazie!
Algo è concesso in licenza e distribuito sotto AGPLv3. Se desideri distribuire una modifica closed-source o un servizio basato su Algo, contatta per acquistare un'eccezione. Come per i metodi sopra, questo aiuterà a sostenere lo sviluppo continuo.
Avvia il deploy. Torna al tuo terminale. Nella directory di Algo, esegui lo script appropriato per la tua piattaforma:
macOS/Linux:
./algo
Windows:
.\algo.ps1
La prima volta che esegui lo script, installerà automaticamente l'ambiente Python richiesto (Python 3.11+). Nelle esecuzioni successive, parte immediatamente e funziona su tutte le piattaforme (macOS, Linux, Windows tramite WSL). Lo script PowerShell di Windows utilizza automaticamente WSL quando necessario, poiché Ansible richiede un ambiente Unix-like. Sono disponibili diverse funzionalità opzionali, nessuna delle quali è necessaria per un server VPN completamente funzionale. Queste funzionalità opzionali sono descritte nella documentazione di deploy.