Criando sua própria VPN gratuita na nuvem

Nos dias atuais temos uma preocupação (muito válida, por sinal) sobre a privacidade em relação ao tráfego na rede. Além das questões de privacidade e segurança, há também serviços e conteúdos que somente são disponibilizados em determinadas localizações ou redes.

Para contornar isso, geralmente recorremos à serviços de VPN, sejam eles pagos ou gratuitos. Mas mesmo assim, incorremos no risco de retenção de logs e dados, "espionagem", e por aí vai...

Imagem meramente educativa

Então, que tal criar sua prória VPN? Nesse artigo, vou apresentar um passo a passo para criar uma VPN na nuvem gratuitamente.

Vamos lá?

Passo a Passo

De início, precisamos criar um servidor - que será nosso VPN server. Existem inúmeras formas de criaá-lo: seja utilizando um Raspberry Pi, usando um servidor local, contratando uma VPS, etc.

Como não há o intuito de armazenar logs, então os serviços de computação em nuvem vão atender muito bem. Nesse caso, vamos criar uma conta gratuita na Oracle Cloud Infraestructure (OCI).

O legal da Oracle Cloud é que você pode criar até duas VMs (AMD com 1/8 OCPU e 1 GB de RAM) no nível gratuito para sempre (Always Free Services) - isso mesmo, 100% grátis! Como o projeto não vai precisar de configurações tão robustas, então é o suficiente para começarmos.

1) Crie sua conta na Oracle Cloud

Se você não tem uma conta na Oracle Cloud, é a hora de criar uma. Será necessário fornecer um cartão de crédito, mas não se preocupe, pois você não será cobrado.

Só se atente que nos primeiros 30 dias a Oracle fornece $ 300 em créditos para serem utilizados nos serviços. Caso você opte por serviços que não fazem parte do nível gratuito, fique de olho para que não ocorram cobranças indesejadas. Dê uma olhada nos serviços que fazem parte do Always Free para não ter nenhuma surpresa indesejada.

Enfim, para criar o seu cadastro, clique aqui. E em seguida clique em "Teste a OCI gratuitamente":

Ao criar a sua conta, você deverá escolher uma região onde seus serviços serão provisionados. Após escolher, você não pode alterar mais:

💡
Levando em consideração a criação de uma VPN, escolha a região que melhor lhe atenda.

Se tudo ocorrer bem, você vai receber um e-mail de confirmação. Basta efetuar o login.

2) Gere um par de chaves SSH

Antes de correr para o abraço na Oracle Cloud, vamos gerar uma chave SSH localmente. Portanto, abra o terminal caso use o Linux ou Mac, ou o cmd caso esteja no Windows. E digite o comando:

ssh-keygen

Deve aparecer a seguinte saída no terminal:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):

Nesse momento, você pode nomear a sua chave digitando um nome de sua preferência e depois clicando em enter. Caso você deixa em branco e pressione o enter, será gerada uma chave padrão (default). Fica à seu critério.

Em seguida, você será solicitado a digitar uma senha para a sua chave. Recomendo pular essa parte no momento, para evitar problemas de esquecimento rsrs... Então, apenas pressione o enter duas vezes.

Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Após isso, sua chave será gerada e também será indicado o caminho dos arquivos id_rsa (chave privada) e id_rsa.pub (chave pública).

🚨
Em alguns casos, do OpenSSH não estar habilitado no Windows.

Caso o OpenSSH não esteja habilitado, pesquise por Configurações, selecione Aplicativos -> Aplicativos e Recursos -> Recursos Opcionais

Veja se o OpenSSH está habilitado.

Caso não esteja instalado, clique em "Adicionar um Recurso". Procure pelo Cliente do OpenSSH e clique em "Instalar":

Depois, proceda com a criação da sua chave SSH, conforme descrito anteriormente.

3) Crie uma nova instância

Agora que criou sua chave, faça login no Console da Oracle Cloud. Na página inicial, role para baixo até encontrar a aba "Iniciar Recursos" e clique em "Criar uma instância de VM".

Você será redirecionado para a página "Criar instância de computação", que apresenta o workflow de criação da instância. Esse workflow vai permitir fazer diversas coisas, como:

  • Criar e instalar a instância Ubuntu;
  • Criar uma VCN (virtual cloud network) com sub-rede, com os compenentes necessários para acessar a internet;
  • Criar ou colar um par de chaves ssh.

4) Nomeie a instância e escolha a imagem Ubuntu

Nas opções iniciais, insira um nome para a sua instância e escolha um compartimento onde ela será criada.

Em Posicionamento, mantenha a opção Always Free Elegível para o domínio de disponibilidade. E em Segurança, matenha o padrão.

Já na aba Imagem e Forma, clique em "Editar":

Clique em “Alterar Imagem” e selecione Ubuntu (eu escolhi a Canonical Ubuntu 22.04) e clique em "Selecionar imagem".

Após selecionar, a imagem e forma terão essas características:

Nas Configurações de Rede, faça as seguintes alterações:

  • Clique em "Editar".
  • Em Rede Principal, selecione "Criar nova rede virtual na nuvem".
  • Em Novo nome da rede virtual na nuvem, crie o nome da VCN.
  • Criar no compartimento: escolha o compartimento onde a VCN será criada.
  • Em Sub-rede, selecione "Criar nova sub-rede pública".
  • Em Novo nome de sub-rede, insira o nome da sub-rede.
  • Criar no compartimento: escolha o compartimento.
  • Bloco CIDR: Use o valor padrão (10.0.0.0/24).
  • Endereço IPv4 público, selecione "Designar um endereço IPv4 público".

Agora, é a hora de Adicionar as chaves SSH. Selecione a opção "Colar chaves públicas".

  • Lembra que criamos uma chave SSH no começo desse tutorial, certo? Você vai abrir o local do arquivo em que sua chave foi salva, e abrir o arquivo id_rsa.pub com um editor de texto ou o bloco de notas.
  • Você vai copiar a chave e colar no campo "Chaves SSH":

Por fim, na aba Volume de inicialização:

  • Desmarque a opção "Especificar um tamanho de volume de inicialização do cliente".
  • Marque a opção "Usar criptografia em trânsito".
  • Desmarque a opção "Criptografar este volume com uma chave gerenciada por você".

Clique em Criar. Em alguns minutos, sua instância Ubuntu estará provisionada com sucesso.

Nas informações da instância, você vai encontra o Endereço IP Público. Copie e salve esse endereço, vamos precisar dele para fazer o acesso a instância pelo SSH.

5) Ativar o acesso à internet - liberar a porta UDP 1194

Com o workflow do passo anterior, nós criamos uma VCN. Agora, é necessário adicionar uma regra para permitir a conexão com a porta 1194 (padrão da VPN).

Para isso, abra o menu e clique em "Rede" -> "Redes Virtuais na nuvem":

Selecione sua VNC → clique na sua Subnet → e em seguida clique na Lista de Segurança.

Clique no botão "Adicionar Lista de Segurança":

Agora, adicione as seguintes informações:

  • Sem monitoramento de estado: Marcado
  • Tipo de Origem: CIDR
  • CIDR de Origem: 0.0.0.0/0
  • Protocolo IP: UDP
  • Intervalo de portas de origem: deixe vazio
  • Intervalo de Portas de Destino: 1194
  • Descrição: OpenVPN

E clique em "Adicionar regras de entrada".

6) Conecte-se a VM via SSH

Agora, vamos nos conectar à nossa instância via SSH. Se tudo ocorreu certo com a sua chave, basta usar o comando:

ssh -i nome_da_chave ubuntu@ip_da_vm

## Exemplo
ssh -i oracle ubuntu@ip_da_vm

Em seguida, digite:

sudo su

apt-get update && upgrade -y

7) Instale o OpenVPN

Para facilitar o processo, vamos utilizar um script para instalar o OpenVPN

## Instalar o wget - caso não venha por padrão na máquina
apt install -y wget

## Instalar e configurar o OpenVPN

wget -O openvpn.sh https://get.vpnsetup.net/ovpn && bash openvpn.sh

Alguns pontos durante a instalação e configuração do OpenVPN:

  • Protocolo (protocol): Selecione UDP (1)
  • Porta do servidor (What port?): 1194
  • Servidor DNS (DNS server): Google Public DNS (2)
  • Nome do cliente (Enter a name for the first client): crie um nome
  • Digite "y"

Pronto! Ao finalizar a instalação do OpenVPN, será informado onde o arquivo client foi criado. Copie o caminho do arquivo, pois será necessário para baixá-lo.

8) Baixe o arquivo client

O próximo passo é baixar o arquivo client na sua máquina local. Existem várias formas de fazer isso, seja com FTP, SFTP, entre outros. Nesse caso, vamos usar o protocolo SCP.

A sintaxe do comando é:

scp [other options] [source username@IP]:/[directory and file name] [destination username@IP]:/[destination directory]

Abra um terminal e siga o exemplo (o caminho da pasta destino vai depender caso esteja usando o Windows ou Linux):

scp -i nome_da_chave ubuntu@ip_da_VM:/home/ubuntu/client.ovpn D:/Downloads

O arquivo .ovpn será copiado para a sua pasta de destino. No meu caso, ele ficou na pasta "Downloads" padrão do Windows.

9) Testando a conexão

Para testar, é necessário ter o OpenVPN client instalado no seu computador. Você pode baixá-lo por este link.

Após instalado, clique no arquivo .ovpn (caso esteja no Windows), ou importe esse arquivo caso esteja usando o Linux.

Considerações finais

Nesse tutorial, criamos de forma bem básica a nossa VPN gratuita. Não abordamos questões de segurança e proteção de porta, mas isso pode ficar para outros tutoriais.

💡
Ah, existe uma forma bem mais "simples" de criar sua VPN na Oracle - com poucos cliques. Mas nada melhor do que aprender primeiro e depois buscar formas mais práticas 😆... Fica para um outro artigo também.

Bons estudos!

Referências