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
- Registro de conta gratuita da AWS
- Criar instância da AWS
- Conectar-se a uma instância da AWS
- Configurando o Wireguard
- Configurando clientes VPN
- 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"

1.2 Preenchendo Dados Pessoais
Preencha os dados e clique no botão "Continuar"

1.3 Preenchendo detalhes de contato
Preencha os detalhes do contato.

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

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.

1.6 Escolha de um plano tarifário.
Escolha - Plano básico (gratuito)

1.7 Efetue login no console de gerenciamento

1.8 Escolhendo um Local do Data Center

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

- Paris

- Frankfurt am Main

- Estocolmo

- 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

2.1.0.2 Iniciando o passo a passo Criar Instância

2.1.0.3 Escolhendo um tipo de sistema operacional de instância

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

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

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

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

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.

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

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

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

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

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

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

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

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).

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.

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

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.

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

Em seguida, selecione a chave que salvamos anteriormente na etapa 2.1.7.1. No nosso caso, seu nome é wireguard-awskey.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

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 .

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.

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.

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.

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 .

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.

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.

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 .

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.

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.

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:

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

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.

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.

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.

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
)

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

5.2.6 Estabelecer uma conexão VPN
Selecione este arquivo de configuração e conecte-se clicando no botão Conectar .

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/

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.