«

»

jul 24

Imprimir Post

Instalando e configurando o OpenVPN

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×

Olá pessoal, após grande período ausente desta Comunidade “rsrs”, voltarei a escrever com uma certa frequência (pelo menos pretendo). Hoje, para iniciar minha nova aventura, irei escrever sobre como inOpenVPNstalar e configurar um server VPN, utilizando o pacote OpenVPN, na versão 7 do Debian (Wheezy).

 

Normalmente deixo a interface de rede como bridge, e para fazer isto, seguir os passos abaixo;

 

# apt-get install bridge-utils

Instalado o pacote, vamos configurar as interfaces de rede, conforme abaixo;

# vi /etc/network/interfaces
 
DE:
   auto eth0
   iface eth0 inet static
   address 192.168.x.1
   netmask 255.255.255.0
   dns-nameservers 8.8.8.8

PARA:

   auto br0
   iface br0 inet static
   address 192.168.x.1
   netmask 255.255.255.0
   dns-nameservers 8.8.8.8
   bridge_ports eth0
   bridge_maxwait 0

 

Vamos restartar o serviço das interfaces de rede e, se tudo der certo, o comando terá a saída abaixo;

# /etc/init.d/networking restart
   [warn] Running /etc/init.d/networking restart is deprecated because it may not re-enable some interfaces ... (warning).
   [....] Reconfiguring network interfaces...Ignoring unknown interface eth0=eth0.
 done.

 

Para confirmar, vamos conferir a saída do comando ifconfig;

# ifconfig
   br0 Link encap:Ethernet Endereço de HW 52:54:00:a0:e5:7c
   inet end.: 192.168.x.1 Bcast:192.168.x.255 Masc:255.255.255.0
   endereço inet6: fe80::5054:ff:fea0:e57c/64 Escopo:Link
   UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
   RX packets:75 errors:0 dropped:0 overruns:0 frame:0
   TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
   colisões:0 txqueuelen:0
   RX bytes:6748 (6.5 KiB) TX bytes:1910 (1.8 KiB)
   eth0 Link encap:Ethernet Endereço de HW 52:54:00:a0:e5:7c
   UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
   RX packets:3127054 errors:0 dropped:3 overruns:0 frame:0
   TX packets:41873 errors:0 dropped:0 overruns:0 carrier:0
   colisões:0 txqueuelen:1000
   RX bytes:330283570 (314.9 MiB) TX bytes:6878719 (6.5 MiB)

 

Agora, vamos realmente dar início à instalação do pacote OpenVPN.

# apt-get install openvpn

 

Instalado o pacote openvpn, vamos começar a configurá-lo editando o arquivo vars.

# mkdir /etc/openvpn/keys

 # cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/

 # vi vars

Alterando as linhas 39, 64, 65, 66, 67, 68, 69, conforme abaixo;

   export KEY_DIR="/etc/openvpn/keys"
   export KEY_COUNTRY="BR" # País
   export KEY_PROVINCE="SP" # Estado
   export KEY_CITY="Sao Paulo" # Cidade
   export KEY_ORG="nome_cliente" # Nome do Cliente
   export KEY_EMAIL="teste@openvpn.com.br" # Email do administrador
   export KEY_EMAIL=teste@openvpn.com.br # Email do administrador

 

Feito isto, vamos dar os comandos abaixo para reler o arquivo vars e criar as chaves do server VPN;

# source vars

 # ./clean-all

 # ./build-ca
   Generating a 1024 bit RSA private key
   .......++++++
   ....................................++++++
   writing new private key to 'ca.key'
   -----
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [BR]:
   State or Province Name (full name) [SP]:
   Locality Name (eg, city) [Sao Paulo]:
   Organization Name (eg, company) [teste-openvpn]:
   Organizational Unit Name (eg, section) [changeme]:
   Common Name (eg, your name or your server's hostname) [changeme]:
   Name [changeme]:
   Email Address [teste@openvpn.com.br]:

 # ./build-key-server nome_do_server
   Generating a 1024 bit RSA private key
   .++++++
   ...............................++++++
   writing new private key to 'teste-openvpn.key'
   -----
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [BR]:
   State or Province Name (full name) [SP]:
   Locality Name (eg, city) [Sao Paulo]:
   Organization Name (eg, company) [teste-openvpn]:
   Organizational Unit Name (eg, section) [changeme]:
   Common Name (eg, your name or your server's hostname) [teste-openvpn]:
   Name [changeme]:
   Email Address [teste@openvpn.com.br]:
   Please enter the following 'extra' attributes
   to be sent with your certificate request
   A challenge password []:
   An optional company name []:
   Using configuration from /usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl-1.0.0.cnf
   Check that the request matches the signature
   Signature ok
   The Subject's Distinguished Name is as follows
   countryName :PRINTABLE:'BR'
   stateOrProvinceName :PRINTABLE:'SP'
   localityName :PRINTABLE:'Sao Paulo'
   organizationName :PRINTABLE:'teste-openvpn'
   organizationalUnitName:PRINTABLE:'changeme'
   commonName :PRINTABLE:'teste-openvpn'
   name :PRINTABLE:'changeme'
   emailAddress :IA5STRING:'teste@openvpn.com.br'
   Certificate is to be certified until Jul 21 12:21:31 2024 GMT (3650 days)
 Sign the certificate? [y/n]:y
   1 out of 1 certificate requests certified, commit? [y/n]y
   Write out database with 1 new entries
   Data Base Updated

 

OBS.: Lembrando que é preciso digitar y nas perguntas abaixo;

Certificate is to be certified until Jul 21 12:21:31 2024 GMT (3650 days)
Sign the certificate? [y/n]

e

1 out of 1 certificate requests certified, commit? [y/n]

 

 

# ./build-dh
   Generating DH parameters, 1024 bit long safe prime, generator 2
   This is going to take a long time
   .....................................++*++*++*

 

 

Dar os comandos abaixo para configurar o

# vi /etc/openvpn/nome_do_server.conf
   proto udp
   port 1194
   dev tap0
   dh keys/dh1024.pem
   ca keys/ca.crt
   cert keys/nome_do_server.crt
   key keys/nome_do_server.key
   server-bridge 192.168.x.1 255.255.255.0 192.168.x.100 192.168.x.150
   push route "192.168.x.0 255.255.255.0 192.168.x.1"
   ifconfig-pool-persist ips.txt
   tun-mtu 1500
   keepalive 10 120
   status openvpn.stats
   verb 3
   script-security 2
   up "/etc/openvpn/tap0-up.sh"
   down "/etc/openvpn/tap0-down.sh"

Agora, vamos criar os arquivos para inicializar as interfaces tap’s no diretório /etc/openvpn.

# vi tap0-up.sh
   #!/bin/bash
   openvpn --mktun --dev tap0
   ifconfig tap0 0.0.0.0 promisc up
   brctl addif br0 tap0

e

 

# vi tap0-down.sh
   #!/bin/bash
   ifconfig tap0 0.0.0.0 promisc down
   brctl delif br0 tap0
   openvpn --rmtun --dev tap0

 

Para dar as devidas permissões nestes arquivos, digitar o comando a seguir;

# chmod +x tap0*

Configurado o arquivo nome_do_server.conf, vamos criar as chaves para os clients VPN. Iremos novamente no diretório /usr/share/doc/openvpn/examples/easy-rsa/2.0/ e dar os seguintes comandos;

 

# . vars 
   NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/keys

 

 

# ./build-key cliente1
   Generating a 1024 bit RSA private key
   ..............................................++++++
   ...........++++++
   writing new private key to 'cliente1.key'
   -----
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [BR]:
   State or Province Name (full name) [SP]:
   Locality Name (eg, city) [Sao Paulo]:
   Organization Name (eg, company) [teste-openvpn]:
   Organizational Unit Name (eg, section) [changeme]:
   Common Name (eg, your name or your server's hostname) [cliente1]:
   Name [changeme]:
   Email Address [teste@openvpn.com.br]:
   Please enter the following 'extra' attributes
   to be sent with your certificate request
   A challenge password []:
   An optional company name []:
   Using configuration from /usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl-1.0.0.cnf
   Check that the request matches the signature
   Signature ok
   The Subject's Distinguished Name is as follows
   countryName :PRINTABLE:'BR'
   stateOrProvinceName :PRINTABLE:'SP'
   localityName :PRINTABLE:'Sao Paulo'
   organizationName :PRINTABLE:'teste-openvpn'
   organizationalUnitName:PRINTABLE:'changeme'
   commonName :PRINTABLE:'cliente1'
   name :PRINTABLE:'changeme'
   emailAddress :IA5STRING:'teste@openvpn.com.br'
   Certificate is to be certified until Jul 21 13:47:52 2024 GMT (3650 days)
   Sign the certificate? [y/n]:y
   
   1 out of 1 certificate requests certified, commit? [y/n]y
   Write out database with 1 new entries
   Data Base Updated


 

OBS.: Lembrando que é preciso digitar y nas perguntas abaixo;

Certificate is to be certified until Jul 21 13:47:52 2024 GMT (3650 days)
Sign the certificate? [y/n]

e

1 out of 1 certificate requests certified, commit? [y/n]

 

Agora, vamos configurar o certificado do cliente1.

# vi /etc/openvpn/keys/cliente1.ovpn
   client
   float
   dev tap
   proto udp
   remote ip_valido_do_server_VPN 1194
   ca ca.crt
   cert cliente1.crt
   key cliente1.key
   comp-lzo
   mssfix
   tun-mtu 1500
   verb 3
   ping-restart 60

 

Sobre o certificado do cliente, temos algumas observações a fazer.

OBS.1: criei o arquivo com a extensão .ovpn já, pronta para ser utilizada em maquinas com Sistema Operacional Windows. Se for utilizar em S.O. Linux, criar o arquivo com extensão .conf. Em MacOSX, roda tanto com .ovpn, quanto .conf.

OBS.2: No campo “remote”, se o IP válido do servidor não for fixo, será necessário criar um no-ip, porém irei tratar deste tópico em outro post ;D.

 

Configurado o certificado do Cliente, vamos editar o arquivo ips.txt. Neste arquivo vamos definir qual IP será atribuído para cada certificado.

 

# vi /etc/openvpn/ips.txt
   cliente1,192.168.x.100
   cliente2,192.168.x.101
   .
   .
   .
   cliente51,192.168.x.150

 

Restarte o serviço openvpn;

 

# /etc/init.d/openvpn restart

 

Pronto, finalizado a instalação/configuração da VPN. A única coisa que está faltando é liberar no script de firewall, utilizando regras de INPUT e OUTPUT.

 

Lembrando que, é preciso copiar os certificados do cliente1 (cliente1.crt , cliente1.key ,  cliente1.ovpn , ca.crt), e cole os certificados dentro de C:/Computador/Arquivos de Programas/OpenVPN/config.

 

E é isso Pessoal, espero ter ajudado e até o próximo Post ;D.

 

Jardel Fernandes Fernandes da Costa (15 Posts)


0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×

Sobre o autor

Jardel Fernandes Fernandes da Costa

Link permanente para este artigo: http://comunidade.aw2net.com.br/instalando-e-configurando-o-openvpn/

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×