Para que serve?
Com o aumento da censura à internet por regimes autoritários, um número crescente de recursos e sites úteis está sendo bloqueado. Isso inclui informações técnicas.
Assim, torna-se impossível usar a internet de forma plena e o direito fundamental à liberdade de expressão, consagrado na .
Artigo 19
Toda pessoa tem direito à liberdade de opinião e de expressão; esse direito inclui a liberdade de ter opiniões sem interferência e a liberdade de buscar, receber e disseminar informações e ideias por quaisquer meios e independentemente de fronteiras.
Neste guia, em 6 etapas, vamos implantar nosso próprio baseado na tecnologia , na infraestrutura de nuvem (AWS), usando uma conta gratuita (por 12 meses), em uma instância (máquina virtual) com .
Tentei tornar este guia passo a passo o mais amigável possível para aqueles que estão distantes da TI. A única coisa necessária é paciência para repetir os passos descritos abaixo.
Nota
- A AWS oferece por um período de 12 meses, com um limite de 15 gigabytes de tráfego por mês.
- A versão mais atual deste guia pode ser encontrada em
Etapas
- Registro de uma conta gratuita na AWS
- Criando uma instância AWS
- Conectando-se à instância AWS
- Configurando o Wireguard
- Configurando clientes VPN
- Verificando a correção da instalação da VPN
Links Úteis
1. Registro da conta AWS
Para o registro de uma conta gratuita da AWS, é necessário um número de telefone real e um cartão de crédito Visa ou Mastercard que esteja em condições de uso. Recomendo usar cartões virtuais que são fornecidos gratuitamente por ou . Para verificar a validade do cartão, será cobrado $1 durante o registro, que será devolvido posteriormente.
1.1. Abrindo o console de gerenciamento da AWS
Você deve abrir o navegador e ir para o endereço:
Clique no botão 'Registrar'

1.2. Preenchimento de dados pessoais
Preencha as informações e clique no botão 'Continuar'

1.3. Preenchimento de dados de contato
Preencha as informações de contato.

1.4. Inserção de informações de pagamento.
Número do cartão, data de validade e nome do titular do cartão.

1.5. Confirmação da conta
Nesta etapa, o número de telefone é confirmado e um total de 1$ é debitado do cartão de pagamento. Um código de 4 dígitos é exibido na tela do computador e uma chamada da Amazon é enviada para o telefone indicado. Durante a chamada, você deve digitar o código que aparece na tela.

1.6. Escolha do plano tarifário.
Selecionamos — Plano Básico (gratuito)

1.7. Acesso ao console de gerenciamento

1.8. Seleção da localização do data center

1.8.1. Teste de velocidade
Antes de escolher o data center, é recomendável testar através de a velocidade de acesso aos data centers mais próximos, nos meus locais, os resultados são:
- Cingapura

- Paris

- Frankfurt

- Estocolmo

- Londres

O data center em Londres mostra os melhores resultados em velocidade. Portanto, eu escolhi este para a configuração posterior.
2. Criação da instância AWS
2.1 Criação da máquina virtual
2.1.1. Seleção do tipo de instância
Por padrão, a instância t2.micro é selecionada, que é a que precisamos, basta clicar no botão Continuar: Configurar Detalhes da Instância

2.1.2. Configuração das parâmetros da instância
Posteriormente, conectaremos um IP público fixo à nossa instância, por isso nesta etapa desativamos a atribuição automática do IP público e clicamos no botão Continuar: Adicionar Armazenamento

2.1.3. Conexão de armazenamento
Definimos o tamanho do "disco rígido". Para nossos propósitos, 16 gigabytes são suficientes, e clicamos no botão Continuar: Adicionar Tags

2.1.4. Configuração de tags
Se estivéssemos criando várias instâncias, poderíamos agrupá-las por tags, para facilitar a administração. Neste caso, essa funcionalidade é desnecessária, então clicamos imediatamente no botão Continuar: Configurar Grupo de Segurança

2.1.5. Abertura de portas
Nesta etapa, configuramos o firewall, abrindo as portas necessárias. O conjunto de portas abertas é chamado de "Grupo de Segurança" (Security Group). Devemos criar um novo grupo de segurança, dar-lhe um nome, descrição, adicionar a porta UDP (Regra UDP Personalizada), no campo Rort Range é necessário designar o número da porta, do intervalo 49152—65535. Neste caso, escolhi o número da porta 54321.

Após preencher os dados necessários, clicamos no botão Revisar e Iniciar
2.1.6. Revisão de todas as configurações
Nesta página, revisamos todas as configurações da nossa instância, verificamos se todas as configurações estão corretas e clicamos no botão Iniciar

2.1.7. Criação de chaves de acesso
Em seguida, aparece uma janela de diálogo que oferece a opção de criar ou adicionar uma chave SSH existente, com a qual iremos nos conectar remotamente ao nosso instância. Selecionamos a opção "Create a new key pair" para criar uma nova chave. Damos um nome a ela e clicamos no botão Baixar Par de Chaves, para baixar as chaves criadas. Armazene-as em um local seguro no disco do computador local. Depois de baixá-las, pressione o botão Iniciar Instâncias

2.1.7.1. Salvando as Chaves de Acesso
Aqui está ilustrada a etapa de salvamento das chaves criadas na etapa anterior. Depois de termos pressionado o botão Baixar Par de Chaves, a chave é salva como um arquivo de certificado com a extensão *.pem. Neste caso, eu lhe dei o nome wireguard-awskey.pem

2.1.8. Revisão dos Resultados da Criação da Instância
Em seguida, vemos uma mensagem de sucesso sobre o lançamento da instância que acabamos de criar. Podemos acessar a lista de nossas instâncias clicando no botão Ver instâncias

2.2. Criação de um Endereço IP Externo
2.2.1. Iniciando a Criação de um IP Externo
Agora precisamos criar um endereço IP externo permanente, através do qual nos conectaremos ao nosso servidor VPN. Para isso, no painel de navegação no lado esquerdo da tela, é necessário selecionar o item IPs Elásticos da categoria REDE & SEGURANÇA e clicar no botão Alocar novo endereço

2.2.2. Configurando a Criação de um IP Externo
Na próxima etapa, precisamos ter a opção Amazon pool (ativada por padrão), e clicamos no botão Alocar

2.2.3. Revisão dos Resultados da Criação do Endereço IP Externo
Na próxima tela, será exibido o endereço IP externo que recebemos. É recomendável memorizá-lo, ou melhor ainda, anotá-lo. Ele nos será útil várias vezes no processo de configuração e uso do servidor VPN. Neste guia, como exemplo, estou usando o endereço IP 4.3.2.1. Depois de anotar o endereço, pressionamos o botão Fechar

2.2.4. Lista de Endereços IP Externos
Em seguida, temos acesso à lista de nossos endereços IP públicos permanentes (IPs elásticos).

2.2.5. Atribuindo um IP Externo à Instância
Nesta lista, escolhemos o endereço IP que recebemos e clicamos com o botão direito do mouse para abrir o menu suspenso. Nele, selecionamos a opção Associar endereço, para designá-lo à instância que criamos anteriormente.

2.2.6. Configurando a Atribuição do IP Externo
Na próxima etapa, escolhemos nossa instância a partir da lista suspensa e clicamos no botão Associar

2.2.7. Visão geral dos resultados da atribuição do IP externo
Após isso, podemos ver que nossa instância está vinculada ao nosso endereço IP público fixo e seu endereço IP privado.

Agora podemos nos conectar à nossa nova instância externamente, do nosso computador via SSH.
3. Conectando-se à instância AWS
— é um protocolo seguro de controle remoto de dispositivos de computação.
3.1. Conexão por SSH de um computador com Windows
Para conectar de um computador com Windows, primeiro é necessário baixar e instalar o programa .
3.1.1. Importando a chave privada para Putty
3.1.1.1. Após a instalação do Putty, é necessário abrir a ferramenta PuTTYgen que vem junto com ele para importar a chave do certificado no formato PEM para o formato utilizável pelo programa Putty. Para isso, no menu superior, selecionamos a opção Conversions->Import Key

3.1.1.2. Seleção da chave AWS no formato PEM
Em seguida, escolhemos a chave que previamente salvamos na etapa 2.1.7.1, no nosso caso seu nome é wireguard-awskey.pem

3.1.1.3. Definindo os parâmetros de importação da chave
Neste passo, precisamos especificar um comentário para esta chave (descrição) e definir uma senha para segurança, além da sua confirmação. Ela será solicitada a cada conexão. Assim, protegemos a chave com uma senha contra o uso não autorizado. A senha pode ser deixada em branco, mas isso é menos seguro, caso a chave caia em mãos erradas. Em seguida, pressionamos o botão Save private key

3.1.1.4. Salvando a chave importada
Uma janela de diálogo para salvar o arquivo é aberta, e salvamos nossa chave privada como um arquivo com a extensão .ppk, apropriada para uso no programa Putty.
Escrevemos o nome da chave (no nosso caso, wireguard-awskey.ppk) e pressionamos o botão Salvar.

3.1.2. Criando e configurando a conexão no Putty
3.1.2.1. Criando a conexão
Abrimos o programa Putty, selecionamos a categoria Sessão (ela está aberta por padrão) e no campo Host Name digitamos o endereço IP público do nosso servidor, que obtivemos na etapa 2.2.3. No campo Saved Session digitamos um nome arbitrário para nossa conexão (no meu caso, wireguard-aws-london), e depois pressionamos o botão Salvar para salvar as alterações que fizemos.

3.1.2.2. Configurando o login automático do usuário
Em seguida, na categoria Conexão, selecionamos a subcategoria Dados e no campo Auto-login username digitamos o nome do usuário ubuntu — este é o usuário padrão da instância na AWS com Ubuntu.

3.1.2.3. Seleção da chave privada para a conexão por SSH
Em seguida, vamos para a subcategoria Conexão/SSH/Auth e ao lado do campo Arquivo de chave privada para autenticação clicamos no botão Procurar… para selecionar o arquivo do certificado da chave.

3.1.2.4. Abrindo a chave importada
Indicamos a chave que importamos anteriormente na etapa 3.1.1.4, neste caso, este é o arquivo wireguard-awskey.ppk, e pressionamos o botão Abrir.

3.1.2.5. Salvando configurações e iniciando a conexão
Voltando à página da categoria Sessão clicamos mais uma vez no botão Salvar, para salvar as alterações que fizemos nas etapas anteriores (3.1.2.2 — 3.1.2.4). Em seguida, pressionamos o botão Abrir para abrir a conexão remota que criamos e configuramos via SSH.

3.1.2.7. Configurando a confiança entre hosts
Na próxima etapa, ao tentar se conectar pela primeira vez, recebemos um aviso de que não temos confiança configurada entre os dois computadores e é perguntado se devemos confiar no computador remoto. Clicaremos no botão Sim, adicionando-o assim à lista de hosts confiáveis.

3.1.2.8. Inserindo a senha para acessar a chave
Depois disso, uma janela de terminal se abre, solicitando a senha da chave, caso você a tenha configurado anteriormente na etapa 3.1.1.3. Ao inserir a senha, nenhuma ação aparece na tela. Se cometer um engano, você pode usar a tecla Backspace.

3.1.2.9. Mensagem de boas-vindas sobre conexão bem-sucedida
Após a entrada bem-sucedida da senha, o texto de boas-vindas aparece no terminal, informando que o sistema remoto está pronto para executar nossos comandos.

4. Configurando o servidor Wireguard
As instruções mais atualizadas para instalação e uso do Wireguard utilizando os scripts descritos abaixo podem ser encontradas no repositório:
4.1. Instalando o Wireguard
No terminal, digitamos os seguintes comandos (pode ser copiado para a área de transferência e colado no terminal pressionando o botão direito do mouse):
4.1.1. Clonando o repositório
Clonamos o repositório com os scripts de instalação do Wireguard
git clone https://github.com/pprometey/wireguard_aws.git wireguard_aws4.1.2. Acessando o diretório dos scripts
Acessamos o diretório do repositório clonado
cd wireguard_aws4.1.3. Iniciando o script de inicialização
Executamos como administrador (usuário root) o script de instalação do Wireguard
sudo ./initial.shDurante a instalação, serão solicitadas certas informações necessárias para configurar o Wireguard
4.1.3.1. Inserindo o ponto de conexão
Insira o IP externo e a porta aberta do servidor Wireguard. O IP externo do servidor foi obtido na etapa 2.2.3, e a porta foi aberta na etapa 2.1.5. Indique-os juntos, separados por dois pontos, por exemplo 4.3.2.1:54321, e depois pressione a tecla Enter
Exemplo de saída:
Insira o endpoint (ip externo e porta) no formato [ipv4:porta] (por exemplo, 4.3.2.1:54321): 4.3.2.1:543214.1.3.2. Inserindo o IP interno
Insira o endereço IP do servidor Wireguard na sub-rede VPN protegida, se não souber o que é isso, basta pressionar a tecla Enter para definir o valor padrão (10.50.0.1)
Exemplo de saída:
Insira o endereço do servidor na sub-rede VPN (formato CIDR) ([ENTER] definido como padrão: 10.50.0.1):4.1.3.3. Especificando o servidor DNS
Insira o endereço IP do servidor DNS, ou simplesmente pressione a tecla Enter para definir o valor padrão 1.1.1.1 (DNS público do Cloudflare)
Exemplo de saída:
Insira o endereço IP do servidor DNS (formato CIDR) ([ENTER] definido como padrão: 1.1.1.1):4.1.3.4. Especificando a interface WAN
Agora é necessário inserir o nome da interface de rede externa que irá escutar a interface de rede interna VPN. Basta pressionar Enter para definir o valor padrão para AWS (eth0)
Exemplo de saída:
Insira o nome da interface de rede WAN ([ENTER] definido como padrão: eth0):4.1.3.5. Especificando o nome do cliente
Insira o nome do usuário VPN. O fato é que o servidor VPN Wireguard não poderá iniciar até que pelo menos um cliente seja adicionado. Neste caso, digitei o nome Alex@mobile
Exemplo de saída:
Insira o nome do usuário VPN: Alex@mobileDepois disso, deve aparecer na tela um código QR com a configuração do cliente recém-adicionado, que deve ser escaneado usando o cliente móvel Wireguard no Android ou iOS, para sua configuração. Além disso, abaixo do código QR aparecerá o texto do arquivo de configuração para o caso de configuração manual dos clientes. Como fazer isso será explicado a seguir.

4.2. Adicionando um novo usuário VPN
Para adicionar um novo usuário, é necessário executar o script no terminal add-client.sh
sudo ./add-client.shO script solicitará o nome de usuário:
Exemplo de saída:
Insira o nome do usuário VPN: Além disso, o nome do usuário pode ser passado como um parâmetro do script (neste caso Alex@mobile):
sudo ./add-client.sh Alex@mobileComo resultado da execução do script, no diretório com o nome do cliente no caminho /etc/wireguard/clients/{ИмяКлиента} um arquivo com a configuração do cliente será criado /etc/wireguard/clients/{ИмяКлиента}/{ИмяКлиента}.conf, e na tela do terminal aparecerá um código QR para a configuração de clientes móveis e o conteúdo do arquivo de configuração.
4.2.1. Arquivo de configuração do usuário
Para exibir o conteúdo do arquivo .conf na tela, para configuração manual do cliente, você pode usar o comando cat
sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.confresultado 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:54321Descrição do arquivo de configuração do cliente:
[Interface]
PrivateKey = Chave privada do cliente
Address = Endereço IP do cliente
DNS = DNS utilizado pelo cliente
[Peer]
PublicKey = Chave pública do servidor
PresharedKey = Chave compartilhada entre servidor e cliente
AllowedIPs = Endereços permitidos para conexão (todos - 0.0.0.0/0, ::/0)
Endpoint = Endereço IP e porta para conexão4.2.2. Código QR de configuração do cliente
O código QR de configuração para o cliente criado anteriormente pode ser exibido na tela do terminal usando o comando qrencode -t ansiutf8 (neste exemplo, estamos usando um cliente chamado Alex@mobile):
sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf | qrencode -t ansiutf85. Configuração de clientes VPN
5.1. Configuração do cliente móvel Android
O cliente oficial Wireguard para Android pode ser
Após isso, é necessário importar a configuração, lendo o código QR com a configuração do cliente (veja seção 4.2.2) e dando um nome a ele:

Após a importação bem-sucedida da configuração, o túnel VPN pode ser ativado. A conexão bem-sucedida será indicada pelo ícone de chave na barra de status do Android

5.2. Configuração do cliente Windows
Primeiramente, é necessário baixar e instalar o programa — este é o cliente Wireguard para Windows.
5.2.1. Criação do arquivo de configuração para importação
Clique com o botão direito 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, como descrito no passo 4.2.1.
Depois, selecione com o botão direito o texto da configuração no terminal Putty; ao final da seleção, ele será copiado automaticamente para a área de transferência.

5.2.3. Copiando a configuração para o arquivo de configuração local
Depois disso, voltamos ao arquivo de texto que criamos anteriormente na área de trabalho e colamos nele o texto da configuração da área de transferência.

5.2.4. Salvando o arquivo de configuração local
Salve o arquivo com a extensão .conf (neste caso com o nome london.conf)

5.2.5. Importando o arquivo de configuração local
Agora é necessário importar o arquivo de configuração no programa TunSafe.

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

6. Verificação da conexão bem-sucedida
Para verificar a conexão através do túnel VPN, abra o navegador e acesse o site

O endereço IP exibido deve coincidir com aquele que obtivemos na etapa 2.2.3.
Se for esse o caso, o túnel VPN está funcionando corretamente.
No terminal do Linux, você pode verificar seu endereço IP digitando o comando:
curl http://zx2c4.com/ipOu você pode simplesmente acessar um site adulto se estiver no Cazaquistão.
Fonte: habr.com





