Serviço Wireguard VPN gratuito na AWS

Para que?


Com a crescente censura da Internet por regimes autoritários, um número crescente de recursos e sites úteis da Internet está sendo bloqueado. Incluindo informações técnicas.
Assim, torna-se impossível o uso pleno da Internet e o direito fundamental à liberdade de expressão consagrado na Declaração Universal dos Direitos Humanos está sendo violado.


Seção 19
Todo mundo tem direito à liberdade de opinião e expressão; esse direito inclui a liberdade de aderir livremente às crenças e a liberdade de buscar, receber e disseminar informações e idéias por qualquer meio e independentemente das fronteiras do estado

Neste guia, em 6 etapas, implantaremos nosso próprio serviço de VPN * gratuito baseado na tecnologia Wireguard , na infraestrutura de nuvem Amazon Web Services (AWS), usando uma conta gratuita (por 12 meses), em uma instância (máquina virtual) executando o 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 é perseverança na repetição das etapas descritas abaixo.


Nota


Etapas


  1. Registro de conta gratuita da AWS
  2. Criar instância da AWS
  3. Conectar-se a uma instância da AWS
  4. Configurando o Wireguard
  5. Configurando clientes VPN
  6. Verifique a instalação da VPN

Links úteis



1. Registro da conta da AWS


Para registrar uma conta gratuita da AWS, você precisa de um número de telefone real e um cartão de crédito Visa ou Mastercard a pagar. Eu recomendo usar cartões virtuais que a carteira Yandex.Money ou Qiwi fornece gratuitamente. Para verificar a validade do cartão, $ 1 é deduzido durante o registro, que é devolvido posteriormente.


1.1 Abrindo o AWS Management Console


Você deve abrir um navegador e acessar: https://aws.amazon.com/en/
Clique no botão "Registrar"


Página inicial da AWS Amazon


1.2 Preenchendo Dados Pessoais


Preencha os dados e clique no botão "Continuar"


Registro da conta Amazon da AWS


1.3 Preenchendo detalhes de contato


Preencha os detalhes do contato.


Informações de contato da conta Amazon AWS


1.4 Indicação de informações de cobrança.


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


Forneça informações de cobrança ao registrar uma conta Amazon AWS


1.5 Verificação de conta


Nesse estágio, o número de telefone é confirmado e $ 1 são debitados diretamente do cartão de pagamento. Um código de 4 dígitos é exibido na tela do computador e uma chamada é recebida da Amazon no telefone especificado. Durante a chamada, você deve discar o código mostrado na tela.


Verificação de conta Amazon AWS


1.6 Escolha de um plano tarifário.


Escolha - Plano básico (gratuito)


Plano de escolha da Amazon AWS


1.7 Efetue login no console de gerenciamento


Como entrar no Amazon AWS Management Console


1.8 Escolhendo um Local do Data Center


AWS Amazon Management Console


1.8.1 Teste de velocidade


Antes de escolher um data center, é recomendável testar através de https://speedtest.net a velocidade de acesso aos data centers mais próximos, na minha localização, os seguintes resultados:


  • Cingapura
    Cingapura
  • Paris
    Paris
  • Frankfurt am Main
    Frankfurt am Main
  • Estocolmo
    Estocolmo
  • Londres
    Londres

Os melhores resultados de velocidade são mostrados pelo data center em Londres. Portanto, eu o selecionei para personalização adicional.


2. Criando uma instância da AWS


2.1 Criando uma máquina virtual (instância)


2.1.0 Iniciando o passo a passo Criar Instância


2.1.0.1 Vá para a página de inicialização da instância


Vá para a página de inicialização da instância


2.1.0.2 Iniciando o passo a passo Criar Instância


Iniciando o passo a passo Criar Instância


2.1.0.3 Escolhendo um tipo de sistema operacional de instância


Escolhendo o tipo de sistema operacional


2.1.1 Selecione o tipo de instância


Por padrão, a instância t2.micro está selecionada, precisamos dela, basta clicar no botão Avançar: Configurar Detalhes da Instância


Selecione o tipo de instância


2.1.2 Configurar parâmetros da instância


No futuro, conectaremos um IP público permanente à nossa instância, portanto, neste estágio, desativamos a atribuição automática de IP público e clique em Avançar: Adicionar armazenamento


Configurar parâmetros da instância


2.1.3 Conexão de armazenamento


Especifique o tamanho do "disco rígido". 16 gigabytes são suficientes para nossos propósitos e clique no botão Avançar: Adicionar tags


Conexão de armazenamento


2.1.4 Personalização de tags


Se criarmos várias instâncias, elas poderão ser agrupadas por tags, para facilitar a administração. Nesse caso, essa funcionalidade é redundante, clique imediatamente no botão Avançar: Configurar o Security Gorup


Personalização de tags


2.1.5 Abertura de porta


Neste ponto, configuramos o firewall abrindo as portas necessárias. O conjunto de portas abertas é chamado de Grupo de Segurança. Precisamos criar um novo grupo de segurança, dar um nome, descrição, adicionar uma porta UDP (Regra UDP personalizada). No campo Rort Range, é necessário atribuir um número de porta do intervalo dinâmico de portas 49152–65535. Nesse caso, escolhi o número da porta 54321.


Abertura de porta


Após preencher os dados necessários, clique no botão Revisar e Iniciar


2.1.6 Visão geral de todas as configurações da instância


Nesta página, há uma visão geral de todas as configurações de nossa instância, verifique se todas as configurações estão em ordem e clique no botão Iniciar


Visão geral de todas as configurações da instância


2.1.7 Criar senhas


Em seguida, vem uma caixa de diálogo que oferece a possibilidade de criar ou adicionar uma chave SSH existente, com a qual nos conectaremos posteriormente remotamente à nossa instância. Selecionamos a opção "Criar um novo par de chaves" para criar uma nova chave. Defina seu nome e clique no botão Download do par de chaves para baixar as chaves criadas. Salve-os em um local seguro no disco do computador local. Após o download - clique no botão Iniciar instâncias


Criar senhas


2.1.7.1 Salvando Senhas


Aqui é mostrada a etapa de salvar as chaves criadas da etapa anterior. Depois de clicar no botão Download do par de chaves , a chave é salva como um arquivo de certificado com a extensão * .pem. Nesse caso, dei o nome de wireguard-awskey.pem


Salvando Senhas


2.1.8 Visão geral dos resultados da criação de instância


Em seguida, vemos uma mensagem sobre o lançamento bem-sucedido da instância que acabamos de criar. Podemos acessar a lista de nossas instâncias clicando no botão Visualizar instâncias


Visão geral dos resultados da criação de instância


2.2 Criando um endereço IP externo


2.2.1 Comece a criar um IP externo


Em seguida, precisamos criar um endereço IP externo permanente através do qual nos conectaremos ao nosso servidor VPN. Para fazer isso, no painel de navegação no lado esquerdo da tela, selecione o item Elastic IPs na categoria NETWORK & SECTURITY e clique no botão Allocate new address


Comece a criar um IP externo


2.2.2 Configurar criação de IP externo


Na próxima etapa, precisamos que a opção Pool da Amazônia esteja ativada (ativada por padrão) e clique no botão Alocar


Configurar criação de IP externo


2.2.3 Visão geral dos resultados da criação de um endereço IP externo


A próxima tela exibirá o endereço IP externo que recebemos. É recomendável lembrar e é ainda melhor anotá-la. será útil repetidamente no processo de configuração e uso adicionais do servidor VPN. Neste guia, eu uso o endereço IP 4.3.2.1 como exemplo. Como escrever o endereço, clique no botão Fechar


Visão geral dos resultados da criação de um endereço IP externo


2.2.4 Lista de endereços IP externos


Em seguida, abrimos uma lista de nossos endereços IP públicos permanentes (IP elástico).


Lista de endereços IP externos


2.2.5 Atribuindo uma Instância IP Externa


Nesta lista, selecionamos o endereço IP que recebemos e pressionamos o botão direito do mouse para abrir um menu suspenso. Nele, selecione o item de endereço Associado para atribuí-lo à instância criada anteriormente.


Atribuindo uma Instância IP Externa


2.2.6 Configurar atribuição de IP externo


Na próxima etapa, selecione nossa instância na lista suspensa e clique no botão Associar


Configurar atribuição de IP externo


2.2.7 Visão geral dos resultados da atribuição de IP externo


Depois disso, podemos ver nossa instância e seu endereço IP privado vinculados ao nosso endereço IP público permanente.


Visão geral dos resultados da atribuição de IP externo


Agora podemos nos conectar à nossa instância recém-criada de fora, do nosso computador via SSH.


3. Conecte-se a uma instância da AWS


O SSH é um protocolo seguro para controlar remotamente dispositivos de computador.


3.1 Conexão SSH de um computador Windows


Para conectar-se a um computador Windows, você deve primeiro baixar e instalar o programa Putty .


3.1.1 Importar uma chave privada para Putty


3.1.1.1 Após a instalação do Putty, você deve executar o utilitário PuTTYgen que acompanha o produto para importar a chave do certificado no formato PEM para um formato adequado para uso no Putty. Para fazer isso, selecione Conversões-> Importar chave no menu superior


Importar uma chave privada para Putty


3.1.1.2 Selecione a chave da AWS no formato PEM


Em seguida, selecione a chave que salvamos anteriormente na etapa 2.1.7.1. No nosso caso, seu nome é wireguard-awskey.pem


Selecione a chave da AWS no formato PEM


3.1.1.3 Definindo as principais opções de importação


Nesta etapa, precisamos especificar um comentário para esta chave (descrição) e definir uma senha e sua confirmação para segurança. Será solicitado sempre que você se conectar. Assim, protegemos a chave com uma senha contra uso inadequado. Você não pode definir uma senha, mas é menos seguro se a chave cair nas mãos erradas. Depois de clicar no botão Salvar chave privada


Definindo as principais opções de importação


3.1.1.4 Salvando uma chave importada


A caixa de diálogo Salvar arquivo é aberta e nós salvamos nossa chave privada como um arquivo com a extensão .ppk , adequada para uso em Putty .
Especifique o nome da chave (no nosso caso, wireguard-awskey.ppk ) e clique no botão Salvar .


Salvando uma chave importada


3.1.2 Criando e configurando uma conexão no Putty


3.1.2.1 Criar conexão


Abra o programa Putty, selecione a categoria Session (está aberta por padrão) e insira o endereço IP público do nosso servidor no campo Host Name , que recebemos na etapa 2.2.3. No campo Sessão salva , insira um nome arbitrário para a nossa conexão (no meu caso, wireguard-aws-london ) e clique no botão Salvar para salvar as alterações que fizemos.


Criar conexão


3.1.2.2 Configuração de login automático do usuário


Além disso, na categoria Conexão , selecione a subcategoria Dados e, no campo Nome de usuário com login automático, digite o nome de usuário do ubuntu - este é o usuário padrão da instância da AWS no Ubuntu.


Configuração de login automático do usuário


3.1.2.3 Escolhendo uma chave privada para conexão SSH


Em seguida, vamos para a subcategoria Connection / SSH / Auth e, ao lado do campo Arquivo de chave privada para autenticação , clique no botão Procurar ... para selecionar um arquivo com um certificado de chave.


Escolhendo uma chave privada para conexão SSH


3.1.2.4 Abrindo uma chave importada


Indicamos a chave que importamos anteriormente na etapa 3.1.1.4; no nosso caso, é o arquivo wireguard-awskey.ppk e clique no botão Abrir .


Abrindo uma chave importada


3.1.2.5 Salvando configurações e iniciando a conexão


Retornando à página da categoria Sessão , clique no botão Salvar novamente para salvar as alterações feitas anteriormente nas etapas anteriores (3.1.2.2 - 3.1.2.4). E então pressionamos o botão Abrir para abrir a conexão SSH remota que criamos e configuramos.


Salvando configurações e iniciando a conexão


3.1.2.7 Configurando a Confiança entre Hosts


Na próxima etapa, na primeira vez em que você tentar se conectar, recebemos um aviso, não configuramos a confiança entre os dois computadores e pergunta se confia no computador remoto. Clicamos em Sim , adicionando-o à lista de hosts confiáveis.


Configurando a Confiança entre Hosts


3.1.2.8 Digite a senha para acessar a chave


Depois disso, a janela do terminal é aberta, onde a senha da chave é solicitada, se você a instalou anteriormente na etapa 3.1.1.3. Ao digitar a senha, nenhuma ação na tela ocorre. Se você cometer um erro, poderá usar a tecla Backspace .


Digite a senha para acessar a chave


3.1.2.9 Mensagem de boas-vindas em conexão bem-sucedida


Após digitar a senha com sucesso, um texto de boas-vindas é exibido no terminal, informando que o sistema remoto está pronto para executar nossos comandos.


Mensagem de boas-vindas em conexão bem-sucedida


4. Configurando o servidor Wireguard


As instruções mais atuais para instalar e usar o Wireguard usando os scripts descritos abaixo podem ser encontradas no repositório: https://github.com/isystem-io/wireguard-aws


4.1 Instale o Wireguard


No terminal, digite os seguintes comandos (você pode copiar para a área de transferência e colar no terminal clicando com o botão direito do mouse):


4.1.1 Clonagem de Repositório


Clonamos um repositório com scripts de instalação do Wireguard


 git clone https://github.com/pprometey/wireguard_aws.git wireguard_aws 

4.1.2 Indo para o diretório de scripts


Vá para o diretório com o repositório clonado


 cd wireguard_aws 

4.1.3 Executando o script de inicialização


Execute o script de instalação do Wireguard como administrador (usuário root)


 sudo ./initial.sh 

Durante a instalação, você será solicitado a fornecer certos dados necessários para configurar o Wireguard


4.1.3.1 Digite o ponto de conexão


Digite o endereço IP externo e abra a porta do servidor Wireguard. Obtivemos o endereço IP externo do servidor na etapa 2.2.3 e abrimos a porta na etapa 2.1.5. Nós os especificamos juntos, 4.3.2.1:54321 dois pontos, por exemplo, 4.3.2.1:54321 e, em seguida, pressione Enter
Exemplo de saída:


 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 Digite o 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 é, basta pressionar Enter para definir o valor padrão ( 10.50.0.1 )
Exemplo de saída:


 Enter the server address in the VPN subnet (CIDR format) ([ENTER] set to default: 10.50.0.1): 

4.1.3.3 Especificando um servidor DNS


Digite o endereço IP do servidor DNS ou pressione Enter para definir o valor padrão como 1.1.1.1 (DNS público do Cloudflare)
Exemplo de saída:


 Enter the ip address of the server DNS (CIDR format) ([ENTER] set to default: 1.1.1.1): 

4.1.3.4 Especificando a interface WAN


Em seguida, insira o nome da interface de rede externa que escutará na interface de rede interna da VPN. Basta pressionar Enter para definir o valor padrão da AWS ( eth0 )
Exemplo de saída:


 Enter the name of the WAN network interface ([ENTER] set to default: eth0): 

4.1.3.5 Nome do Cliente


Digite o nome do usuário da VPN. O fato é que o servidor Wireguard VPN não poderá iniciar até que pelo menos um cliente tenha sido adicionado. Nesse caso, digitei o nome Alex@mobile
Exemplo de saída:


 Enter VPN user name: Alex@mobile 

Depois disso, um código QR deve ser exibido na tela com a configuração do cliente recém-adicionado, que deve ser lido usando o cliente móvel Wireguard no Android ou iOS para configurá-lo. Além disso, o texto do arquivo de configuração será exibido abaixo do código QR no caso de configuração manual dos clientes. Como fazer isso será descrito abaixo.


Instalação completa do Wireguard


4.2 Adicionando um novo usuário VPN


Para adicionar um novo usuário, você deve executar o script add-client.sh no terminal


 sudo ./add-client.sh 

O script pede o nome de usuário:
Exemplo de saída:


 Enter VPN user name: 

Além disso, o nome pode ser passado aos usuários como um parâmetro de script (neste caso, Alex@mobile ):


 sudo ./add-client.sh Alex@mobile 

Como resultado da execução do script, no diretório com o nome do cliente no caminho /etc/wireguard/clients/{} , um arquivo será criado com a configuração do cliente /etc/wireguard/clients/{} CustomerName►.conf e será exibido na tela do terminal Código QR para configurar clientes móveis e o conteúdo do arquivo de configuração.


4.2.1 Arquivo de configuração do usuário


Você pode mostrar o conteúdo do arquivo .conf na tela, para configuração manual do cliente, usando o cat


 sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf 

resultado da execução:


 [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 =    Address = IP   DNS =    [Peer] PublicKey =    PresharedKey =      AllowedIPs =     ( - 0.0.0.0/0, ::/0) Endpoint = IP      

4.2.2 Código de configuração do cliente QR


Você pode exibir o código QR do código de configuração para o cliente criado anteriormente na tela do terminal usando o qrencode -t ansiutf8 (neste exemplo, o cliente chamado Alex @ mobile é usado):


 sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf | qrencode -t ansiutf8 

5. Configurando clientes VPN


5.1 Configuração do cliente móvel Android


O cliente oficial Wireguard para Android pode ser instalado na loja oficial do GooglePlay


Depois disso, você precisa importar a configuração lendo o código QR com a configuração do cliente (consulte o parágrafo 4.2.2) e forneça um nome:


Configurando o cliente Android Wireguard


Após importar com êxito a configuração, você pode ativar o túnel da VPN. Sobre a conexão bem-sucedida, será exibido o esconderijo da chave no painel do sistema Android


Executando o Android Wireguard Client


5.2 Configuração do cliente Windows


Inicialmente, você precisa baixar e instalar o TunSafe para Windows - este é um cliente Wireguard para Windows.


5.2.1 Criando um arquivo de configuração para importação


Clique com o botão direito do mouse para criar um arquivo de texto na área de trabalho.


Criar arquivo de texto


5.2.2 Copiando o conteúdo do arquivo de configuração do servidor


Em seguida, retornamos ao terminal Putty e exibimos o conteúdo do arquivo de configuração do usuário desejado, conforme descrito na etapa 4.2.1.
Em seguida, selecione o texto de configuração no terminal Putty com o botão direito do mouse; após a seleção, ele será automaticamente copiado para a área de transferência.


Copiar texto com configuração


5.2.3 Copiar configuração para o arquivo de configuração local


Este campo retorna ao arquivo de texto que criamos anteriormente na área de trabalho e cole o texto de configuração nele na área de transferência.


Copiar texto com configuração


5.2.4 Salvando um arquivo de configuração local


Nós salvamos o arquivo com a extensão .conf (neste caso, com o nome london.conf )


Salvando arquivo de configuração


5.2.5 Importar um arquivo de configuração local


Em seguida, você precisa importar o arquivo de configuração para o programa TunSafe.


Importar arquivo de configuração para o TunSafe


5.2.6 Estabelecer uma conexão VPN


Selecione este arquivo de configuração e conecte-se clicando no botão Conectar .
Conecte-se a um servidor VPN através do TunSafe


6. Verificando o sucesso da conexão


Para verificar o sucesso da conexão através do túnel da VPN, você precisa abrir um navegador e acessar o site https://2ip.ua/ru/


Conecte-se a um servidor VPN através do TunSafe


O endereço IP exibido deve corresponder ao que recebemos na etapa 2.2.3.
Nesse caso, o túnel da VPN está funcionando com êxito.


Em um terminal no Linux, você pode verificar seu endereço IP digitando o comando:


 curl http://zx2c4.com/ip 

Ou você pode simplesmente ir ao hub pornô se estiver no Cazaquistão.

Source: https://habr.com/ru/post/pt448528/


All Articles