
Set up a personal VPN in the cloud
Algo VPN é um conjunto de scripts Ansible que simplificam a configuração de uma VPN WireGuard e IPsec pessoal. Utiliza os padrões mais seguros disponíveis e funciona com provedores de nuvem comuns.
Veja nosso anúncio de lançamento para mais informações.
A maneira mais fácil de ter um servidor Algo rodando é executá-lo em seu sistema local ou a partir do Google Cloud Shell e deixar que ele configure uma nova máquina virtual na nuvem para você.
Configure uma conta em um provedor de hospedagem em nuvem. O Algo suporta DigitalOcean (mais amigável), Amazon Lightsail, Amazon EC2, Vultr, Microsoft Azure, Google Compute Engine, Scaleway, DreamCompute, Linode, outras hospedagens baseadas em OpenStack, hospedagens baseadas em CloudStack, ou Hetzner Cloud.
Obtenha uma cópia do Algo. Os scripts do Algo serão executados a partir do seu sistema local. Existem duas maneiras de obter uma cópia:
Baixe o arquivo ZIP. Descompacte o arquivo para criar um diretório chamado algo-master contendo os scripts do Algo.
Use git clone para criar um diretório chamado algo contendo os scripts do Algo:
git clone https://github.com/trailofbits/algo.git
Defina suas opções de configuração. Abra config.cfg em seu editor de texto favorito. Especifique os usuários que deseja criar na lista users. Crie um usuário único para cada dispositivo que planeja conectar à sua VPN. Você também deve revisar as outras opções antes da implantação, pois mudar de ideia mais tarde .
É isso! Agora você pode configurar clientes para se conectar à sua VPN. Prossiga para Configurar os Clientes VPN abaixo.
"# 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> #"
Os certificados e arquivos de configuração que os usuários precisarão são colocados no diretório configs. Certifique-se de proteger esses arquivos, pois muitos contêm chaves privadas. Todos os arquivos são salvos em um subdiretório nomeado com o endereço IP do seu novo servidor Algo VPN.
Importante para usuários IPsec: Se quiser adicionar ou excluir usuários posteriormente, você deve selecionar yes no prompt Do you want to retain the keys (PKI)? durante a implantação do servidor. Isso preserva a autoridade certificadora necessária para o gerenciamento de usuários.
O WireGuard é usado para fornecer serviços VPN em dispositivos Apple. O Algo gera um arquivo de configuração WireGuard, wireguard/<username>.conf, e um código QR, wireguard/<username>.png, para cada usuário definido em config.cfg.
No iOS, instale o aplicativo WireGuard da App Store do iOS. Em seguida, use o aplicativo WireGuard para escanear o código QR ou enviar o arquivo de configuração via AirDrop para o dispositivo.
No macOS, instale o aplicativo WireGuard da Mac App Store. O WireGuard aparecerá na barra de menu assim que você executar o aplicativo. Clique no ícone do WireGuard, escolha Importar túnel(néis) do arquivo..., depois selecione o arquivo de configuração WireGuard apropriado.
No iOS ou macOS, você pode ativar "Conectar sob Demanda" e/ou excluir certas redes Wi-Fi confiáveis (como sua casa ou trabalho) editando a configuração do túnel no aplicativo WireGuard. (O Algo não pode fazer isso automaticamente por você.)
Se preferir usar a VPN IPsec integrada em dispositivos Apple, ou precisar de "Conectar sob Demanda" ou redes Wi-Fi excluídas configuradas automaticamente, consulte o guia de configuração do cliente Apple IPsec para instruções detalhadas de configuração.
O WireGuard é usado para fornecer serviços VPN no Android. Instale o Cliente VPN WireGuard. Importe o arquivo wireguard/<name>.conf correspondente para seu dispositivo e, em seguida, configure uma nova conexão com ele. Consulte o guia de configuração do Android para instruções detalhadas de instalação e configuração.
O WireGuard é usado para fornecer serviços VPN no Windows. O Algo gera um arquivo de configuração WireGuard, wireguard/<username>.conf, para cada usuário definido em config.cfg.
Instale o Cliente VPN WireGuard. Importe o arquivo wireguard/<username>.conf gerado para seu dispositivo e, em seguida, configure uma nova conexão com ele. Consulte as instruções de configuração do Windows para um passo a passo mais detalhado e solução de problemas.
Clientes Linux podem usar WireGuard ou IPsec:
WireGuard: O WireGuard funciona muito bem com clientes Linux. Consulte o guia de configuração do Linux WireGuard para instruções passo a passo sobre como configurar o WireGuard no Ubuntu e outras distribuições.
IPsec: Para clientes IPsec strongSwan (incluindo OpenWrt, Ubuntu Server e outras distribuições), consulte o guia de configuração do Linux IPsec para instruções detalhadas de configuração.
Para roteadores OpenWrt usando WireGuard, consulte o guia de configuração do OpenWrt WireGuard para instruções de configuração específicas do roteador.
Para dispositivos não cobertos acima ou configuração manual, você precisará de arquivos de certificado e configuração específicos. Os arquivos necessários dependem da plataforma do seu dispositivo e do protocolo VPN (WireGuard ou IPsec).
Se você ativou a função opcional de tunelamento SSH, contas de usuário locais serão criadas para cada usuário em config.cfg, e arquivos de chave autorizada SSH para eles estarão no diretório configs (user.pem). As contas de usuário SSH não têm acesso ao shell, não podem autenticar com senha e têm apenas opções limitadas de tunelamento (por exemplo, ssh -N é obrigatório). Isso garante que os usuários SSH tenham o menor acesso necessário para configurar um túnel e não possam realizar outras ações no servidor Algo.
Use o comando de exemplo abaixo para iniciar um túnel SSH substituindo <user> e <ip> pelos seus próprios. Uma vez configurado o túnel, você pode configurar um navegador ou outra aplicação para usar 127.0.0.1:1080 como proxy SOCKS para rotear o tráfego através do servidor 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
Seu servidor Algo está configurado para acesso SSH apenas com chave para fins administrativos. Abra o aplicativo Terminal, cd para o diretório algo-master onde você baixou originalmente o Algo e, em seguida, use o comando listado na mensagem de sucesso:
ssh -F configs/<ip>/ssh_config <hostname>
onde <ip> é o endereço IP do seu servidor Algo. Se você acessar o servidor regularmente, será útil carregar sua chave SSH do Algo automaticamente. Adicione o seguinte trecho ao final de ~/.bash_profile para adicioná-la permanentemente ao seu ambiente de shell:
ssh-add ~/.ssh/algo > /dev/null 2>&1
Alternativamente, você pode optar por incluir a configuração gerada para quaisquer servidores Algo criados em sua configuração SSH. Edite o arquivo ~/.ssh/config para incluir esta diretiva no topo:
Include <algodirectory>/configs/*/ssh_config
onde <algodirectory> é o diretório onde você clonou o Algo.
O Algo facilita adicionar ou remover usuários do seu servidor VPN após a implantação inicial.
Para usuários IPsec: Você deve ter selecionado yes no prompt Do you want to retain the keys (PKI)? durante a implantação inicial do servidor. Isso preserva a autoridade certificadora necessária para o gerenciamento de usuários. Você também deve salvar as senhas da chave p12 e CA exibidas durante a implantação, pois elas são mostradas apenas uma vez.
Para adicionar ou remover usuários, primeiro edite a lista users no seu arquivo config.cfg. Adicione novos nomes de usuário ou remova os existentes conforme necessário. Em seguida, navegue até o diretório algo no seu terminal e execute:
macOS/Linux:
./algo update-users
Windows:
.\algo.ps1 update-users
Após a conclusão do processo, novos arquivos de configuração serão gerados no diretório configs para quaisquer novos usuários. O servidor VPN Algo será atualizado para conter apenas os usuários listados no arquivo config.cfg. Usuários removidos não poderão mais se conectar, e novos usuários terão certificados e arquivos de configuração novos prontos para uso.
O Algo adota uma abordagem pragmática em relação à privacidade. Por padrão, minimizamos o logging enquanto mantemos informações suficientes para segurança e solução de problemas.
O que É registrado por padrão:
sudo wg - mostra último endpoint e tempo de handshake)A privacidade é controlada por duas configurações principais em config.cfg:
strongswan_log_level: -1 - Controla o logging de conexão do StrongSwan (-1 = desabilitado, 2 = debug)privacy_enhancements_enabled: true - Chave mestre para rotação de logs, limpeza de histórico, filtragem de logs e limpezaPara ativar a depuração completa ao solucionar problemas, defina tanto strongswan_log_level: 2 quanto privacy_enhancements_enabled: false. Isso capturará logs detalhados de conexão e desabilitará todos os recursos de privacidade. Lembre-se de reverter essas alterações após a depuração.
Após a implantação, verifique suas configurações de privacidade:
ssh -F configs/<server_ip>/ssh_config <hostname>
sudo /usr/local/bin/privacy-monitor.sh
A privacidade perfeita é impossível com qualquer solução VPN. Seu provedor de nuvem vê e registra metadados de tráfego de rede independentemente da configuração do servidor. E, claro, sua ISP sabe que você está se conectando a um servidor VPN, mesmo que não possa ver o que você está fazendo através dele.
Para o mais alto nível de privacidade, trate seus servidores Algo como descartáveis. Inicie uma nova instância quando precisar, use-a para seu propósito específico e, em seguida, destrua-a completamente. A natureza efêmera da infraestrutura em nuvem pode ser um recurso de privacidade se você a usar intencionalmente.
Se você leu toda a documentação e ainda tem dúvidas, crie uma nova discussão.
Estou reclamando sobre o estado lastimável dos serviços VPN há tanto tempo, que já é hora de dar uma palestra adequada sobre o assunto. Resumo: use Algo.
-- Kenn White
Antes de escolher um provedor/aplicativo VPN, certifique-se de fazer algumas pesquisas https://research.csiro.au/ng/wp-content/uploads/sites/106/2016/08/paper-1.pdf ... – ou considere Algo
-- The Register
Algo é realmente fácil e seguro.
-- the grugq
Brinquei com o Algo VPN, um conjunto de scripts que permite configurar uma VPN na nuvem em muito pouco tempo, mesmo que você não saiba muito sobre desenvolvimento. Devo dizer que fiquei bastante impressionado com a abordagem da Trail of Bits.
-- Romain Dillet para TechCrunch
Se você não se sente confortável em pagar para um provedor VPN anônimo e aleatório, esta é a melhor solução.
-- Thorin Klosowski para Lifehacker
Consulte nosso Guia de Desenvolvimento para informações sobre:
Todas as doações apoiam o desenvolvimento contínuo. Obrigado!
O Algo é licenciado e distribuído sob a AGPLv3. Se você deseja distribuir uma modificação ou serviço de código fechado baseado no Algo, por favor considere comprar uma exceção. Assim como os métodos acima, isso ajudará a apoiar o desenvolvimento contínuo.
Inicie a implantação. Volte ao seu terminal. No diretório do Algo, execute o script apropriado para sua plataforma:
macOS/Linux:
./algo
Windows:
.\algo.ps1
Na primeira vez que executar o script, ele instalará automaticamente o ambiente Python necessário (Python 3.11+). Nas execuções subsequentes, inicia imediatamente e funciona em todas as plataformas (macOS, Linux, Windows via WSL). O script PowerShell do Windows usa automaticamente o WSL quando necessário, já que o Ansible requer um ambiente Unix-like. Existem vários recursos opcionais disponíveis, nenhum dos quais é necessário para um servidor VPN totalmente funcional. Esses recursos opcionais são descritos na documentação de implantação.