Serviço Wireguard VPN gratuito na AWS
O raciocínio
O aumento da censura da Internet por regimes autoritários expande o bloqueio de recursos úteis da Internet, impossibilitando o uso da WEB e, em essência, viola o direito fundamental à liberdade de opinião e expressão consagrado na Declaração Universal dos Direitos Humanos .
Artigo 19
Todo mundo tem direito à liberdade de opinião e expressão; esse direito inclui a liberdade de manter opiniões sem interferência e de buscar, receber e transmitir informações e idéias através de qualquer mídia e independentemente de fronteiras.
A seguir, estão as instruções detalhadas de 6 etapas para pessoas que não são de TI implantarem o serviço VPN * gratuito na tecnologia Wireguard na infraestrutura de nuvem Amazon Web Services (AWS) , usando uma conta gratuita de 12 meses, em uma Instância (máquina virtual) executada pelo Ubuntu Server 18/04 LTS.
Tentei tornar esse guia o mais amigável possível para pessoas distantes da TI. A única coisa necessária é assiduidade na repetição das etapas descritas abaixo.
Nota
Etapas
- Registre a conta da AWS.
- Crie uma instância da AWS.
- Conecte-se à instância da AWS.
- Configure o servidor Wireguard.
- Configure clientes VPN.
- Verifique a conexão VPN.
Links úteis
Os autores
1. Registre a conta gratuita da AWS
Para registrar uma conta da AWS, você precisa enviar um número de telefone válido e um cartão bancário (Visa ou Mastercard). Eu recomendo o uso de cartões virtuais fornecidos gratuitamente pela carteira Yandex.Money ou Qiwi .
A AWS verifica a validade do cartão deduzindo 1 $ no registro seguido pelo reembolso.
1.1 Abrindo o AWS Management Console
Siga o link: https://aws.amazon.com/ , clique no botão Criar uma conta da AWS .

1.2 Criação de conta da AWS
Preencha os dados e clique no botão Continuar .


Número do cartão, data de validade e nome do titular do cartão.

1.5 Verificação da conta
A AWS verifica seu número de telefone e debita $ 1 em seu cartão bancário. Em seguida, você deve obter um código de 4 dígitos na tela do computador e receber uma chamada da Amazon. Durante uma chamada, você precisa discar o código de 4 dígitos mostrado na tela.

1.6 Escolhendo um plano de suporte da AWS
Escolha um plano básico (gratuito).

Faça login no AWS Management Console

1.8 Escolhendo a localização do Datacenter

1.8.1 Teste de velocidade da Internet
Recomendamos que você execute um teste de velocidade nos datacenters mais próximos em https://speedtest.net/ e escolha o melhor para se conectar.
A seguir estão os resultados do teste de velocidade da minha localização:
- Cingapura

- Paris

- Frankfurt am Main

- Estocolmo

- Londres

O Datacenter em Londres mostra o melhor resultado de velocidade, então eu o escolhi para prosseguir.
2. Crie uma instância da AWS
2.1 Crie uma máquina virtual (instância)
2.1.0 Siga as etapas de criação da instância
2.1.0.1 Vá para a página Inicialização da Instância, escolha o serviço EC-2

2.1.0.2 Iniciar um servidor virtual, conhecido como Amazon EC-2 Instance

2.1.0.3 Escolha Amazon machine Image (Sistema operacional) - o Ubuntu Server 18.04 LTS

2.1.1 Escolha o tipo de instância
O tipo de instância t2.micro
é definido por padrão e é o caminho certo. Clique no botão Avançar: Configurar detalhes da instância para continuar.

Desative a atribuição automática do IP público, pois você atribuirá um estático à sua Instância. Clique no botão Avançar: Adicionar armazenamento .

2.1.3 Adicionar armazenamento
Especifique o tamanho da unidade - os 16 GB são suficientes.
Clique em Avançar: botão Adicionar tags .

Se você tiver várias instâncias, poderá agrupá-las por tags para permitir uma melhor administração. No entanto, essa funcionalidade é excedente. Portanto, pulamos isso pressionando o botão Avançar: Configurar grupo de segurança .

2.1.5 Abrindo portas
Configure o firewall atribuindo portas abertas. O conjunto de portas abertas é chamado de "Grupo de Segurança". Você precisa criar um novo "Grupo de Segurança", dar um nome, uma descrição e uma porta UDP (Regra UDP Personalizada).
No campo Intervalo de portas, especifique um número de porta do intervalo 49152 - 65535 de portas dinâmicas . No meu caso, escolho o número da porta 54321.
Clique no botão Revisar e Iniciar para concluir esta etapa.

2.1.6 Revisar as configurações de inicialização da instância
Revise e verifique todas as configurações do Início da Instância e, se tudo estiver OK, clique no botão Iniciar .

2.1.7 Criando chaves de acesso
Crie ou adicione uma chave SSH existente na caixa de diálogo que você usará para conexão remota à sua instância.
Escolha o "Criar um novo par de chaves" para gerar uma nova chave. Dê um nome e clique no botão Download do par de chaves para baixar a chave gerada na unidade do PC. Clique no botão Iniciar instâncias .

2.1.7.1 Salvar chaves privadas (.pem)
Ao clicar no par de chaves de download, você salva a chave como um arquivo .pem.
Para melhor gerenciamento, atribuai um nome wireguard-awskey.pem ao arquivo.

2.1.8 Resumo do Início da Instância
Em seguida, você deverá ver uma mensagem sobre o lançamento bem-sucedido da Instância que você criou. Você pode visitar a lista de suas instâncias clicando no botão Exibir instâncias .

2.2 Criando um endereço IP externo
2.2.1 Crie um IP externo
A seguir, é criada um endereço IP externo que você usará para se conectar ao servidor VPN.
Encontre os IPs elásticos na categoria REDE E SEGURANÇA do painel de navegação. Clique no botão Alocar novo endereço .

2.2.2 Configuração de IP externo
Na próxima etapa, você precisa habilitar o pool da Amazon (que é por padrão) e clicar no botão Alocar

2.2.3 Visão geral do endereço IP
A próxima janela exibe um endereço IP externo atribuído pelo pool da Amazon. Anote, pois você precisará dele para o processo de configuração e para a instalação do servidor VPN. Neste guia, como exemplo, eu uso o endereço IP 4.3.2.1 .
Depois de concluir esta etapa, clique no botão Fechar .

2.2.4 Lista de endereços IP externos
Em seguida, você deve obter uma lista dos seus endereços IP públicos (IPs do Elastics).

2.2.5 Atribuir um IP externo à instância
Escolha o endereço IP da lista (consulte 2.2.3) e clique no botão direito do mouse para obter um menu suspenso.
Nesse menu, escolha o endereço Associado para atribuir um IP à instância criada.

2.2.6 Associar endereço à instância
No menu suspenso, selecione a Instância criada e clique no botão Associar .

2.2.7 Resumo da atribuição de IP externo
Agora você deve ter uma Instância criada com um endereço IP público atribuído. Isso permite que você faça uma conexão remota com a Instância de fora (do seu PC) via SSH.

3. Conecte-se à instância da AWS
O SSH é um protocolo seguro para gerenciar dispositivos de computador remoto.
3.1 Conecte-se a partir de um PC com Windows via SSH
Baixe e instale um Putty para fazer uma conexão a partir do PC com Windows.
3.1.1 Importar chave privada para Putty
3.1.1.1 Importar chave da AWS para o Putty
Inicie um utilitário PuTTYgen para corresponder à sua chave da AWS no formato .pem com um formato .ppk adequado para o Putty.
Para fazer isso, selecione Conversões -> Import Key no menu superior.

Em seguida, escolha a chave com a qual você lidou no 2.1.7.1
No meu caso, é wireguard-awskey.pem .

3.1.1.3 Defina os parâmetros de importação de chaves
Nesta etapa, você precisa especificar os parâmetros de importação da Chave - o comentário da chave e a senha da chave . Você precisará deles em todas as conexões. Também protege a chave em si com uma senha contra acesso não autorizado.
Você pode pular a atribuição de senha. Mas isso tornará sua conexão menos segura caso a chave caia nas mãos erradas.
Quando terminar, clique no botão Salvar chave privada .

3.1.1.4 Salve a chave .ppk importada
Você pode salvar sua chave privada em um formato .ppk
adequado ao Putty na caixa de diálogo Salvar arquivo.
Especifique o nome da chave (no meu caso, wireguard-awskey.ppk
) e clique no botão Salvar .

3.1.2.1 Faça uma conexão
Execute o programa Putty, escolha a categoria Session (está aberta por padrão) e, no campo Host Name , digite o endereço IP público do servidor. Lembro que você obteve seu endereço IP público na etapa 2.2.3 .
Atribua um nome à conexão no campo Sessão salva (para mim é wireguard-aws-london
). Clique no botão Salvar .

3.1.2.2 Definir um login automático do usuário
Escolha a subcategoria Dados na categoria Conexão . Digite o nome de usuário de login automático ubuntu no campo Nome de usuário de login automático . (o ubuntu é o usuário de instância padrão na AWS com o Ubuntu).

3.1.2.3 Use uma chave privada para uma conexão SSH
Siga o caminho Conexão -> SSH -> subcategoria Auth e clique no botão Procurar para escolher o arquivo de chave privada.

3.1.2.4 Abra o arquivo de chave privada
Especifique a chave que você importou anteriormente na etapa 3.1.1.4 - wireguard-awskey.ppk
e clique no botão Abrir .

3.1.2.5 Salvar alterações e iniciar uma conexão remota SSH
Na janela Session da janela Putty configuration, pressione o botão Save para aplicar todas as alterações feitas em ( 3.1.2.2 - 3.1.2.4 ).
Clique no botão Abrir para iniciar a conexão remota SSH pronta para uso.

3.1.2.7 Definir uma confiança entre hosts
Na primeira conexão, você deve receber um aviso sobre a falta de confiança entre dois computadores (hosts). O sistema pergunta se você confia no host remoto. Clique em Sim para adicionar o host remoto à lista de confiança.

3.1.2.8 Digite a senha para ativar a chave
Em uma janela do terminal Putty, digite a senha da chave que você definiu na etapa
3.1.1.3 Ao digitar a senha, ela não mostra nenhuma ação na tela. Não se preocupe, se você cometer um erro, poderá usar a tecla Backspace.

3.1.2.9 Conexão bem sucedida
Depois de digitar a senha correta, você receberá um texto de boas-vindas. Ele informa que o sistema remoto está pronto para executar seus comandos.

Abaixo está a instrução para uma instalação e gerenciamento Wireguard guiado por script.
Eu mantenho a versão mais recente da instrução no repositório: https://github.com/isystem-io/wireguard-aws
4.1 Instalar o wireguard
Digite os seguintes comandos no terminal Putty.
Você pode copiá-los para a área de transferência e colar no terminal pressionando o botão direito do mouse.
4.1.1 Clonar o repositório de scripts
Clone um repositório de scripts de instalação do Wireguard:
git clone https://github.com/pprometey/wireguard_aws.git wireguard_aws
4.1.2 Diretório do repositório de scripts
Vá para o diretório do repositório clonado:
cd wireguard_aws
4.1.3 Script de inicialização
Execute o script de instalação do Wireguard sob direitos de administrador (usuário root):
sudo ./initial.sh
O script solicita que você forneça os seguintes dados para configurar o Wireguard.
4.1.3.1 Definir ponto de extremidade de conexão (IP: porta)
Digite o endereço IP externo (consulte 2.2.3 ) e a porta aberta (consulte 2.1.5 ) do servidor Wireguard. Use o seguinte formato IP: port , por exemplo, 4.3.2.1:54321
. Pressione a tecla Enter para confirmar.
Enter the endpoint (external ip and port) in format[ipv4:port] (eg 4.3.2.1:54321): 4.3.2.1:54321
4.1.3.2 Definir endereço IP interno
Digite o endereço IP do servidor Wireguard em uma sub-rede VPN segura. Se você não souber o que é, pressione a tecla Enter para definir o valor padrão ( 10.50.0.1
).
Enter the server address in the VPN subnet (CIDR format) ([ENTER] set to default: 10.50.0.1):
4.1.3.3 Especifique o servidor DNS
Digite o endereço IP do servidor DNS ou pressione a tecla Enter para definir o valor padrão 1.1.1.1
(DNS público do Cloudflare).
Enter the ip address of the server DNS (CIDR format) ([ENTER] set to default: 1.1.1.1):
4.1.3.4 Especifique a interface WAN
Digite o nome da interface de rede externa. Essa interface detectará a interface de rede interna da VPN.
Pressione Enter para definir o padrão para a AWS ( eth0
)
Enter the name of the WAN network interface ([ENTER] set to default: eth0):
4.1.3.5 Especifique o nome do cliente
O servidor Wireguard VPN não pode ser iniciado até você adicionar pelo menos um cliente. Digite um nome de usuário VPN.
No meu caso, digitei o nome do Alex @ mobil.
Enter VPN user name: Alex@mobile
Depois disso, você deve receber um código QR de uma configuração de cliente adicionada. Este QR aplica a configuração do usuário ao cliente móvel Wireguard no Android ou iOS.
O texto do arquivo de configuração também é exibido com o QR. Você precisará no caso de configuração manual dos clientes, conforme discutido abaixo.

4.2 Adicionar novo usuário VPN
Para adicionar um novo usuário, você precisa executar o script add-client.sh
no terminal
sudo ./add-client.sh
O script pede o nome de usuário:
Enter VPN user name:
O nome de usuário pode seguir como um parâmetro de script (no meu caso, o nome de usuário é Alex @ mobile):
sudo ./add-client.sh Alex@mobile
A execução do script leva à criação do arquivo de configuração do cliente no diretório do cliente.
Arquivo de configuração do cliente: /etc/wireguard/clients/{ClientName}/{ClientName}.conf
.
Diretório do cliente:
/etc/wireguard/clients/{ClientName}
4.2.1 Arquivo de configuração do usuário
Execute o comando cat para obter o conteúdo do arquivo .conf
para configuração manual do cliente.
sudo cat/etc/wireguard/clients/Alex@mobile/Alex@mobile.conf
o resultado da execução do comando da seguinte maneira:
[Interface] PrivateKey = oDMWr0toPVCvgKt5oncLLRfHRit + jbzT5cshNUi8zlM = Address = 10.50.0.2/32 DNS = 1.1.1.1 [Peer] PublicKey = mLnd + mul15U0EP6jCH5MRhIAjsfKYuIU / j5ml8Z2SEk = PresharedKey = wjXdcf8CG29Scmnl5D97N46PhVn1jecioaXjdvrEkAc = AllowedIPs = 0.0.0.0/0, :: / 0 Endpoint = 4.3.2.1:54321
descrição do arquivo de configuração do cliente:
[Interface] PrivateKey = Client's private key Address = Client IP Address DNS = DNS used by the client [Peer] PublicKey = Public key server PresharedKey = Shared server and client key AllowedIPs = Allowed addresses for connection (all - 0.0.0.0/0, :: / 0) Endpoint = IP address and port for connection
4.2.2 Configuração do cliente com código QR
Execute o comando qrencode -t ansiutf8
para obter o QR de uma configuração de cliente criada. (no meu caso, o novo nome do cliente é Alex @ mobile).
sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf | qrencode -t ansiutf8
5.1 Configuração do cliente móvel Android
Faça o download do cliente móvel Wireguard para Android na loja oficial do GooglePlay .
Digitalize o código QR para importar a configuração do cliente (consulte 4.2.2 ) e atribua um nome a ele.

Após importar a configuração, você pode ativar o túnel da VPN. Um pequeno símbolo de chave no sistema Android confirma a conexão VPN.

5.2 Instalação do cliente Windows
Baixe e instale o TunSafe , que é um cliente Wireguard para Windows.
5.2.1 Crie um arquivo de texto local para importar a configuração
Crie um arquivo de texto fictício na área de trabalho do seu PC.

5.2.2 Copie o arquivo de configuração do servidor
Copie o conteúdo do arquivo de configuração do servidor.
Depois, volte ao terminal Putty e exiba o conteúdo do arquivo de configuração do usuário (consulte 4.2.1 ).
Use o botão direito do mouse para copiar o texto de configuração no terminal Putty.

5.2.3 Cole o texto de configuração em um arquivo de texto local
Cole o texto de configuração da área de transferência no arquivo de texto fictício que criamos anteriormente na área de trabalho (consulte 5.2.1 ).

5.2.4 Salve o arquivo de configuração local
Salve o arquivo de texto como o formato .conf (no meu caso como london.conf
)

5.2.5 Importar arquivo de configuração local
Importe o arquivo de configuração para o programa TunSafe.

5.2.6 Estabelecer uma conexão VPN
No programa TunSafe, selecione o arquivo de configuração importado e clique no botão Conectar .

6. Verifique a conexão VPN
Use https://2ip.ua/en/ resource para verificar a conexão do túnel da VPN. Se o endereço IP exibido corresponder ao endereço 2.2.3 , o túnel da VPN estará instalado e funcionando.

Em um terminal Linux, você pode verificar seu endereço IP executando o seguinte comando:
curl http://zx2c4.com/ip