últimas notícias

Crie uma rede privada virtual (VPN) no Linux com OpenVPN

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.

Crie uma rede privada virtual (VPN) no Linux com OpenVPN - 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.

Crie uma rede privada virtual (VPN) no Linux com OpenVPN - Linux
Depois de editar, salve (Ctrl + O) e saia (Ctrl + X).
4. Configure sua nova PKI e gere a chave mestra da autoridade de certificação que você usará para registrar certificados individuais de servidor e cliente:
export EASYRSA=$(pwd)

sudo ./easyrsa init-pki

sudo ./easyrsa build-ca
Copie o arquivo ca.crt que acabou de criar para o diretório do servidor OpenVPN. Você também deve alterar seu proprietário e grupo com Chown:
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

Volte para o diretório Easy-RSA e crie o certificado e a chave privada do servidor:
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.

Crie uma rede privada virtual (VPN) no Linux com OpenVPN - Linux

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

Crie uma rede privada virtual (VPN) no Linux com OpenVPN - Linux

Mude a linha tls-auth ... para ler tls-crypt ta.key. Novamente, um caminho completo pode ser necessário.

Crie uma rede privada virtual (VPN) no Linux com OpenVPN - Linux

(Remova “;”) da linha “usuário ninguém” e “grupo ninguém”.

Crie uma rede privada virtual (VPN) no Linux com OpenVPN - Linux

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.

Crie uma rede privada virtual (VPN) no Linux com OpenVPN - Linux

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.

Crie uma rede privada virtual (VPN) no Linux com OpenVPN - Linux

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.

Crie uma rede privada virtual (VPN) no Linux com OpenVPN - Linux

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.

DzTech

Sou um engenheiro estadual com vasta experiência nas áreas de programação, criação de sites, SEO e redação técnica. Sou apaixonado por tecnologia e me dedico a fornecer informação de qualidade ao público. Posso me tornar um recurso mais valioso para usuários que procuram informações precisas e confiáveis ​​sobre análises de produtos e aplicações especializadas em diversos campos. Meu compromisso inabalável com a qualidade e a precisão garante que as informações fornecidas sejam confiáveis ​​e úteis para o público. A busca constante pelo conhecimento me leva a acompanhar os mais recentes desenvolvimentos tecnológicos, garantindo que as ideias compartilhadas sejam transmitidas de forma clara e acessível.
Ir para o botão superior