sexta-feira, 19 de abril de 2019

Receita de OpenVPN


Escrevo este artigo, pois um colega me pediu um auxilio para instalação do openVPN no CentOS, mas faz tempo que não faço isso.
Minhas referências pesquisadas fizeram ficar travado no server, em um erro de Autenticação tls, mas foi a minha impaciência que fez a implementação não dar certo de primeira.Nada melhor que a própria notação para relembrar o ocorrido.
Só quero ver o cliente conectado com o servidor e depois disto às melhorias futuras.


Ambiente de teste

  1. Utilizei uma máquina Virtualbox no padrão centos 64;
  2. A placa de rede deixei como brigde;
  3. Baixei a iso do centos: CentOS-7-x86_64-DVD-1810.iso;
  4. Durante a instalação criei a conta com o login teste;
  5. Observei que as versões do openVPN no Linux e no Windows é 2.4.7;
  6. Tudo feito na rede interna;

Para o Servidor

Facilite sua vida

Ativa sudo na conta criada.
su
vigr

Na última linha inclua.

  • wheel:
exit
sudo su

Ative o dhcp na placa de rede.
nmtui

Desative o ipv6 e ative carga automática. Para um trabalho mais profissional fixe o ip, mas por agora em ambiente de teste, vai no dhcp.

Atualiza, instala e atualize!

yum -y update
yum -y install epel-release
yum -y update
yum -y install openvpn easy-rsa wget net-tools nc mtr mc unix2dos

Para o server

Pegando o exemplo do server config.
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn

Editando para funcionar corretamente.
vi /etc/openvpn/server.conf

Localize e descomente as linhas. Os dns podem estar com outros valores, mas não se preocupe com isso.
  • push "redirect-gateway def1 bypass-dhcp"
  • push "dhcp-option DNS 208.67.222.222"
  • push "dhcp-option DNS 208.67.222.220"

Certificados

Criando certificados e neste momento para clientes Windows não use o 3.0.3, pois causará erro de autenticação tls.

cd /usr/share/easy-rsa/3/
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-dh
./easyrsa build-server-full vpn-server nopass
./easyrsa build-client-full vpn-client-01 nopass
./easyrsa gen-crl
openvpn --genkey --secret pki/ta.key

Copiando para o local correto para o server.
cp pki/ca.crt /etc/openvpn/ca.crt
cp pki/dh.pem /etc/openvpn/dh2048.pem
cp pki/ta.key /etc/openvpn/ta.key
cp pki/crl.pem /etc/openvpn/crl.pem
cp pki/issued/vpn-server.crt /etc/openvpn/server.crt
cp pki/private/vpn-server.key /etc/openvpn/server.key

Firewall

Ajuste o forward para o firewall
vi /etc/sysctl.d/99-sysctl.conf
Adicione.
  • net.ipv4.ip_forward = 1
Confirme.
sysctl -p

Liberando o serviço no firewall.
firewall-cmd --permanent --add-service openvpn
firewall-cmd --reload
Confirme.
firewall-cmd --list-service

Serviço

Criando o serviço no sistema e iniciando, depois disto a carga será automática.
systemctl -f enable openvpn@server.service
systemctl start openvpn@server.service

Para o cliente Windows

Configuração e certificados

Cria um diretório de fácil de acesso para transferências.
mkdir -p /home/teste/client

Copia o arquivo de configuração.
cp /usr/share/doc/openvpn-*/sample/sample-config-files/client.conf /home/teste/client

Vendo o ip do momento, deverá estar na ultima linha.
ip addr |grep -A2 "2:"

Editando o client.conf.
vi /home/teste/client/config/client.conf

Procure e altere my-server-1 pelo ip.
  • remote my-server-1 1194

Adicione.
  • auth-nocache

Passando somente o necessário para o arquivo client.ovpn.
cat /home/teste/client/client.conf |grep -v '^$\|^\s*\#\|\;'  >  /home/teste/client/client.ovpn

Convertendo para ser legivel no Windows.
unix2dos /home/teste/client/client.ovpn

Copiando os certificados.
cp pki/ca.crt /home/teste/client/ca.crt
cp pki/ta.key /home/teste/client/ta.key
cp pki/issued/vpn-client-01.crt /home/teste/client/client.crt
cp pki/private/vpn-client-01.key /home/teste/client/client.key

Seja dono de tudo.
chown teste:teste -R /home/teste/client

Para o cliente no Windows

Utilizei uma estação Windows 7 professional sem antivirus e com o firewall desativado.

Instale o cliente openvpn.

Transfira os arquivos no diretório /home/teste/client/ para o %userprofile%/openvpn/config.

Sugestões de programas para transferência ssh(scp): winscp, filezilla e qualquer outro que conecte via ssh para transferência. Veja no site do putty há outros programas.

Não esqueça o firewall do Windows ou os antivírus que podem atrapalhar a conexão do teste.

Para teste costumo instalar o telnet client do Windows e vejo a porta 22 pelo ip da ponta do servidor.

telnet 10.8.0.1 22

Se ficar travado sem texto, tem algo errado, se ver o texto do ssh está funcional.

Deu certo!!!!

Até a Proxima.

Fonte:

2 comentários:

  1. Não consigo fazer o teste com o telnet. A VPN fechou com sucesso, mas também estou sem internet.

    ResponderExcluir
  2. Posta o server.conf e o client.ovpn.

    ResponderExcluir