As redes privadas virtuais (VPNs) permitem que você oculte o tráfego da Internet e melhore a segurança enquanto navega na Internet em locais públicos. Muitos provedores de serviços online oferecem opções de VPN gratuitas e pagas para você usar. No entanto, mesmo os planos mais bem pagos podem ser pouco confiáveis ou lentos às vezes.
Se você pudesse criar VPN Entre o seu laptop e o computador doméstico.
Na verdade, esse processo é mais fácil do que você imagina. Hoje vamos discutir como você pode usar o OpenVPN para criar uma conexão cliente-servidor segura em uma máquina Linux.
Tenha em mente que estaremos criando uma configuração de roteamento e não Ferramenta de conexão , Que deve ser adequado para a maioria dos casos de uso. Os usuários do Windows podem acompanhar lendo Documentação OpenVPN , Começando com a seção sobre como configurar a autoridade de certificação. Os comandos usados no Windows serão semelhantes aos mostrados abaixo.
O que você precisa
Você precisará de dois computadores - um é a máquina do servidor, enquanto o outro é o cliente. A máquina do servidor pode ser um desktop doméstico ou uma instância Linux de DigitalOcean أو Linode. A máquina cliente é o computador que você usa regularmente. Como este tutorial está no Linux, ambas as máquinas precisam rodar o Linux também.
Observação: para este tutorial, usaremos o Ubuntu como nossa distribuição para a máquina servidor e cliente.
Instale OpenVPN
Para começar, você precisa ter o OpenVPN e o Easy-RSA instalados em seu servidor. Em seguida, instale o OpenVPN em sua máquina cliente.
No Ubuntu, você deve instalar o Easy-RSA a partir de Esta página do Github. Ubuntu inclui Easy-RSA 2 em seus repositórios. O link do Github apresenta o Easy-RSA versão 3, que segue os comandos que usarei neste artigo.
sudo apt-get install openvpn
git clone https://github.com/OpenVPN/easy-rsa.git
No diretório para o qual você copiou o repositório Github, copie o diretório “easyrsa3” que ele contém em “/ etc / easy-rsa /”.
sudo mkdir /etc/easy-rsa
sudo cp -r ./easyrsa3/* /etc/easy-rsa/
Infraestrutura de chave pública (PKI)
O OpenVPN usa uma infraestrutura de chave pública (PKI) para identificar servidores e clientes para que essas entidades separadas possam se comunicar entre si. A PKI usa uma autoridade de certificação mestre (CA) junto com certificados individuais e chaves privadas para cada servidor e cliente.
A autoridade de certificação deve registrar os certificados do servidor e do cliente. O OpenVPN então verifica se o servidor está autenticando a identidade de cada cliente e, ao mesmo tempo, cada cliente verifica a identidade do servidor.
A configuração aqui é mais complicada do que você pode achar com conexões de estilo PPTP, mas fornece melhor segurança para os usuários e dá ao servidor mais liberdade para aceitar ou rejeitar conexões de cliente de entrada solicitadas.
Crie um certificado CA
Para maior segurança, é recomendado que sua CA seja diferente de seu servidor. Para resumir, este artigo usará o mesmo dispositivo para ambas as tarefas. Os procedimentos de cópia de arquivo devem ser alterados para acomodar sua situação - seja usando scp para transferência de rede ou usando uma chave USB para transferir arquivos manualmente.
Observação: se estiver usando um computador separado como dispositivo CA, você precisará instalar o Easy-RSA nesta máquina.
1. Você deve alterar os diretórios para “/ etc / easy-rsa /:”
cd /etc/easy-rsa/
2. Se necessário, copie “/etc/easy-rsa/vars.example” para “/ etc / easy-rsa / vars” e abra o vars para editar seu conteúdo:
sudo cp ./vars. exemplo ./vars
sudo nano ./vars
3. Insira detalhes como seu país, província, cidade, organização e e-mail. Remova as linhas encontradas aqui removendo o “#” no início de cada uma.
export EASYRSA=$(pwd) sudo ./easyrsa init-pki sudo ./easyrsa build-ca
sudo cp /etc/easy-rsa/pki/ca.crt /etc/openvpn/server/ sudo chown root:root /etc/openvpn/server/ca.cr
Criar certificado de servidor e chave privada
cd /etc/easy-rsa sudo ./easyrsa init-pki sudo ./easyrsa gen-req ServerName nopass
Você pode alterar “ServerName” no comando acima para o nome que desejar. Certifique-se de reverter essa alteração ao copiar a nova chave para o diretório do servidor OpenVPN:
sudo cp /etc/easy-rsa/pki/private/ServerName.key / etc / openvpn / server /
Método de troca de chave
O OpenVPN usa o Diffie-Hellman (DH) Key Exchange para trocar chaves de criptografia com segurança pela rede. Você criará um arquivo de parâmetros DH com o seguinte comando:
sudo openssl dhparam -out /etc/openvpn/server/dh.pem 2048
O número final, 2048, neste comando exibe o número de bits usados para criar o arquivo. Por exemplo, você pode usar 4096, mas demorará mais para criar o arquivo e não melhorará a segurança significativamente. O padrão é 2048 e este valor é suficiente para a maioria dos casos de uso.
Autenticação de mensagem baseada em hash
O OpenVPN também usa o registro Hash-Based Message Authentication (HMAC) para proteger contra vulnerabilidades de autenticação de mensagem SSL / TLS. Crie o arquivo com este comando:
sudo openvpn --genkey --secret /etc/openvpn/server/ta.key
Arquivos de cliente
Neste ponto, você criou vários arquivos para o seu servidor. Agora é a hora de criar arquivos para seus clientes. Você pode repetir esse processo várias vezes para quantos clientes forem necessários. Você pode criar arquivos de cliente com segurança em qualquer computador que tenha o Easy-RSA instalado.
Entre no diretório Easy-RSA e configure a PKI novamente se ainda não o fez:
cd /etc/easy-rsa sudo ./easyrsa init-pki
Crie uma chave e um certificado do cliente. Altere os diretórios se você ignorou a etapa anterior.
cd /etc/easy-rsa sudo ./easyrsa gen-req ClientName nopass
Se você repetir o processo, não precisará configurar a PKI para cada novo cliente. Apenas certifique-se de alterar “ClientName” para ser único todas as vezes.
Registro do servidor e certificados do cliente
A CA deve agora registrar seus certificados de servidor e cliente.
Se você olhar no arquivo “/ etc / easy-rsa / pki / reqs /”, deverá ver todos os arquivos de solicitação (.req). O Easy-RSA foi criado nos comandos genrc-rech anteriores do easyrsa.
Nesta captura de tela, há apenas dois arquivos .req. Seu número será diferente se você tiver feito mais de um cliente na etapa anterior.
Se estiver usando um dispositivo CA separado, você deve agora transferir esses arquivos .req para a CA para registro. Depois de concluído, mude para o diretório Easy-RSA e registre seus arquivos com os seguintes comandos, certificando-se de inverter o local apropriado para cada endereço .req e o nome de cada servidor e cliente.
cd /etc/easy-rsa sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ServerName.req Server1 sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ClientName.req Client1 sudo ./easyrsa sign-req server Server1 sudo ./easyrsa sign-req client Client1
Observe que você precisará fornecer ao Easy-RSA um nome diferente para seus certificados de servidor e cliente. ServerName.req será usado aqui, por exemplo, para criar Server1.crt.
Agora você deve encontrar dois novos arquivos - “/etc/easy-rsa/pki/issued/Server1.crt” e “/etc/easy-rsa/pki/issued/Client1.crt” - que serão transferidos para ambos os dispositivos (consulte Na próxima seção deste artigo). Você pode excluir qualquer arquivo .req que restar.
Passe adiante arquivos .CRT
Agora, os certificados assinados (todos .crt) estão prontos para funcionar para seus respectivos proprietários. Transfira o arquivo do servidor para seu site OpenVPN e crie um novo diretório para certificados de cliente:
sudo mv /etc/easy-rsa/pki/issued/Server1.crt /etc/openvpn/server/ sudo chown root:root /etc/openvpn/server/Server1.crt sudo mkdir /etc/easy-rsa/pki/signed sudo mv /etc/easy-rsa/pki/issued/Client1.crt /etc/easy-rsa/pki/signed/
Criar uma pasta "... pki / assinado /" aqui fornece um local categorizado para colocar vários certificados de cliente.
Arquivos compartilhados de servidor e cliente
Agora você deve ter cinco arquivos no diretório “/ etc / openvpn / server /”: ca.crt, dh.pem, Server1.crt, ServerName.key e ta.key.
Você precisará de dois desses mesmos arquivos na pasta do cliente OpenVPN na máquina cliente. Você tem que gravá-lo usando scp ou disco flash, conforme apropriado. Copie "/etc/openvpn/server/ca.crt" e "/etc/openvpn/server/ta.key" para "/ etc / openvpn / client /."
Certifique-se de copiar o certificado do cliente e a chave para este site. Copie “/etc/easy-rsa/pki/signed/Client1.crt” e “/etc/easy-rsa/pki/private/ClientName.key” para seu cliente “/ etc / openvpn / client /”. Repita esse processo para quaisquer clientes adicionais que você possa ter criado.
Para qualquer cliente, agora você deve ter quatro arquivos em “/ etc / openvpn / client:” Client1.crt, ClientName.key, ca.crt e ta.key.
Arquivos de configuração de servidor e cliente
A última etapa antes de iniciar uma VPN é editar os arquivos de configuração do servidor e do cliente. Primeiro, localize os arquivos “server.conf” padrão e o arquivo “client.conf”. Eles provavelmente estariam em um destes locais:
“/usr/share/openvpn/examples” "/ usr / share / doc / openvpn / examples / sample-config-files /" (توجد إعدادات Ubuntu هنا)
Nota: No Ubuntu, você precisará descompilar o arquivo "server.conf.gz". Use gunzip -d ./server.conf.gz para obter o arquivo server.conf do pacote zip.
Copie cada arquivo de configuração em seus respectivos diretórios "/ etc / openvpn / server /" e / etc / openvpn / client /.
Em server.conf, faça as seguintes alterações. Certifique-se de que os nomes e locais de ca.crt, Server1.crt, ServerName.key e dh.pem estejam listados em seu arquivo de configuração. Você pode precisar usar os caminhos completos - como a linha que diz “cert /etc/openvpn/server/Server1.crt”.
Mude a linha tls-auth ... para ler tls-crypt ta.key. Novamente, um caminho completo pode ser necessário.
(Remova “;”) da linha “usuário ninguém” e “grupo ninguém”.
Para o seu cliente, você fará alterações semelhantes. Depois de criar o arquivo de configuração, inverta os nomes e locais de ca.crt, Client1.crt, ClientName.key e ta.key (com a mesma etapa de tls-auth… para tls-crypt…), insira o nome ou endereço IP e porta de seu servidor.
Hora de se comunicar
Agora você pode iniciar seu próprio servidor e cliente. Este é um problema menor se tudo acima correr conforme o planejado.
Inicie o servidor com:
openvpn /etc/openvpn/server/server.conf
E o cliente com:
openvpn /etc/openvpn/client/client.conf
A criação bem-sucedida de uma VPN aparecerá quando o cliente ler “Sequência de inicialização concluída” no final de sua saída. Você também encontrará um novo tipo de conexão nas interfaces de rede disponíveis.
Esta captura de tela mostra a interface “tun0”. Isso é o que o servidor OpenVPN forneceu. Você pode ver seu endereço como 10.8.0.1 e executar ping nesse endereço do cliente para verificar uma conexão bem-sucedida.
Tráfego direto da Internet através do servidor
Nesse ponto, você provavelmente precisará acessar a Internet por meio do servidor a partir do cliente remoto. Para fazer isso, primeiro você precisa alterar o arquivo de configuração do servidor. Adicione a linha “push-gateway def1” ao arquivo de configuração do seu servidor.
echo "push \" redirect-gateway def1 \ "" | sudo tee -a /etc/openvpn/server/server.conf
Você também precisará informar ao servidor para rotear adequadamente as solicitações de tráfego da Internet do cliente. Este comando mudará as regras para filtrar seus Iptables:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Se você não alterou a linha “server 10.8.0.0 255.255.255.0” no arquivo server.conf, o endereço IP deve funcionar nesse comando. Você precisará alterar “eth0” para corresponder à interface Ethernet do seu servidor. Você pode ver nas imagens anteriores que meu dispositivo “enp19s0” está usando.
Depois disso, você pode enviar as configurações de DNS para o cliente. Qualquer endereço que o cliente pode acessar pode ser pago. Você pode usar este comando como ponto de partida:
echo "push \"dhcp-option DNS 10.8.0.1\"" | sudo tee -a /etc/openvpn/server/server.conf
Finalmente, você pode ativar o encaminhamento de pacotes no servidor da seguinte maneira:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Agora você deve conseguir usar o cliente para acessar a Internet por meio da VPN.
Conclusão
Eu sei que foi um longo caminho. Esperamos que você tenha criado uma rede privada virtual (VPN) com sucesso e se conectado à Internet de forma segura.
Se nada mais, esta seria uma boa experiência de aprendizado do que é necessário para criar um túnel digital seguro. Obrigado por se juntar a mim até o fim.