Post em Destaque

Do CVS ao SVN – montando um mirror para source e ports do FreeBSD

Bem, está tendo uma grande discussão na lista freebsd-stable desde que saiu o FreeBSD 9.1 RC1 pois para quem quiser experimentar esse RC só tem 2 caminhos: Baixar a ISO do FreeBSD 9.1 RC1 aqui e instalar o sistema do zero. Atualizar uma instalação do FreeBSD 9 para essa RC e para fazer isso o velho...

Leia mais...

OpenVPN interligando empresas

Posted by gondim | Posted in FreeBSD, Segurança, Software Livre | Posted on 11-06-2012

Tags:,

0

Informação sempre foi e sempre será o grande tesouro da humanidade. Algumas delas podem ser públicas e outras extremamente sigilosas. A troca de informação entre filiais de uma mesma empresa, muitas das vezes serão confidenciais e por isso existe a necessidade de recursos para que isso se torne possível.

Para que haja comunicação entre essas filiais é necessário que se tenha um meio físico por onde passará todo o fluxo de informação. A Internet é hoje o maior meio físico em comum para troca de informações e que interliga todo o mundo.

Então se temos o meio físico o que falta para uma comunicação segura e confidencial? Falta uma coisa chamada VPN (Virtual Private Network) que pode ser encriptada ou não. A definição de VPN seria a de se ter um túnel privativo interligado duas ou mais redes e apenas essas redes se enxergariam. Contudo se alguém conseguisse entrar nesse túnel teria acesso a todas as informações trafegando em texto puro. Por existir essa brecha é que utilizamos a criptografia dos dados em uma VPN com a finalidade de impossibilitar que terceiros tenham acesso ao conteúdo da comunicação.

Nesse artigo falarei sobre uma ferramenta que tem crescido muito nesses últimos anos e competindo com outras mais antigas. Seu sucesso tem se dado pela simplicidade, segurança e robustez. Irei falar aqui sobre o OpenVPN um software que nos permite criar VPNs para interligar de forma segura e simples, qualquer empresa e suas filiais. Mostrarei exemplos interligando uma empresa fictícia e suas duas filiais também fictícias.

Existe um ditado que diz: “uma imagem vale mais que 1000 palavras” e por isso vou exemplificar nosso trabalho com um desenho da rede que criaremos.

  • Empresa: BSDInfo matriz
  • Localidade: Brasil / Araruama
  • Bloco IP da Rede: 10.200.200.0/24
  • IP Público fictício: 169.169.169.1/24
  • IP VPN: 172.16.24.1/30

 

  • Empresa: BSDInfo filial
  • Localidade: Brasil / Saquarema
  • Bloco IP da Rede: 10.200.201.0/24
  • IP Público fictício: 169.169.169.2/24
  • IP VPN: 172.16.24.6/30

 

  • Empresa: BSDInfo filial
  • Localidade: Brasil / São Pedro
  • Bloco IP da rede: 10.200.202.0/24
  • IP Público fictício: 169.169.169.3/24
  • IP VPN: 172.16.24.10/30

Baseado nas informações acima o diagrama abaixo será usado como referência para o nosso laboratório:

Conforme o diagrama acima, faremos com que todas as redes 10.200.200.0/24, 10.200.201.0/24 e 10.200.202.0/24 possam trocar dados seguramente entre eles e utilizando a Internet como meio de transporte das informações.

Para a nossa configuração usaremos um servidor FreeBSD em cada localidade com 2 interfaces de rede em cada um deles.

Na BSDInfo Araruama (matriz) será onde configuraremos o OpenVPN como Servidor e nas filiais configuraremos o OpenVPN como Cliente.

Instalando o OpenVPN nos servidores:

Atualizando os ports:

# portsnap fetch update

Instalando o bash porque os scripts do OpenVPN são em bash:

# cd /usr/ports/shells/bash
# make install clean
# rehash

Instalando o OpenVPN:

# cd /usr/ports/security/openvpn
# make install clean
# rehash

Não precisa selecionar qualquer opção na próxima tela, mantenha o default e continue a instalação. Faça os passos acima nos 3 servidores do nosso diagrama.

Começaremos nossa configuração no servidor principal que receberá as conexões das filiais. Após a instalação do OpenVPN criaremos o diretório onde faremos as nossas configurações:

# mkdir /usr/local/etc/openvpn
# chmod 700 /usr/local/etc/openvpn

Todos os procedimentos acima deverão ser feitos em todos os servidores da VPN.

Começaremos então a configuração do servidor principal da VPN.

Para facilitar a criação de VPNs, o OpenVPN vem com uma coleção de scripts para criação dos certificados e chaves que iremos utilizar nas conexões dos clientes com o servidor.

Façamos os procedimentos abaixo para nos facilitar:

# cd /usr/local/etc/openvpn
# cp -rp /usr/local/share/doc/openvpn/easy-rsa/2.0 .
# cd 2.0
# chmod +x build-ca build-dh build-inter build-key build-key-pass build-key-pkcs12 build-key-server build-req build-req-pass clean-all inherit-inter list-crl pkitool revoke-full sign-req whichopensslcnf

Dentro deste diretório 2.0 estão todos os shell scripts que falei. Dentro dele existe um arquivo chamado vars e faremos uma configuração nele antes de gerarmos os certificados. Mudaremos as variáveis abaixo do arquivo vars.

export KEY_COUNTRY=”US”
export KEY_PROVINCE=”CA”
export KEY_CITY=”SanFrancisco”
export KEY_ORG=”Fort-Funston”
export KEY_EMAIL=”me@myhost.mydomain”
export KEY_EMAIL=mail@host.domain
export KEY_CN=changeme
export KEY_NAME=changeme
export KEY_OU=changeme

 Mudaremos o bloco acima para o nosso exemplo:

export KEY_COUNTRY=”BR”
export KEY_PROVINCE=”RJ”
export KEY_CITY=”Araruama”
export KEY_ORG=”BSDInfo”
export KEY_EMAIL=”ti@bsdinfo.com.br”
export KEY_CN=vpnsrv
export KEY_NAME=vpnsrv
export KEY_OU=TI

Após a configuração do arquivo vars com os dados da criação dos nossos certificados, precisamos inicializar a estrutura que acomodará os certificados que os scripts criarão. Executaremos os seguintes passos:

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

Com os comandos acima armazenaremos os valores das variáveis que configuramos, em memória, para que os scripts possam usar. Importante executar o bash antes de executar qualquer coisa senão os scripts não funcionarão.

O próximo procedimento só deve ser feito apenas uma vez porque este irá criar a estrutura de controle dos certificados e chaves. Se for feito após a criação de qualquer certificado, todos quem foram criados serão apagados e o controle iniciará do zero.

# ./clean-all

Após o comando acima será criado o diretório /usr/local/etc/openvpn/2.0/keys com os arquivos: index.txt e serial que serão usados no controle da criação dos certificados.

Vamos agora criar Diffie-Hellman do nosso servidor de VPN:

# cd /usr/local/etc/openvpn/2.0
# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
…..+…………………..++*++*++*

A configuração é um pouco trabalhosa mas não é nenhum bicho de 7 cabeças. Após tudo funcionando, configurar outros servidores será muito simples. A única coisa que poderá deixar complexa a sua configuração é quando existirem muitas redes atrás dos servidores e elas precisarem ser acessadas de todos os lugares.

Agora criaremos o certificado da CA do nosso servidor. Muito cuidado com ele porque é o segredo da segurança da nossa VPN. Qualquer certificado assinado por ele será autorizado à conectar em nossa VPN. Esse é o principal motivo de não se usar certificados de CAs conhecidas. Necessitamos de criar nossa própria CA.

# ./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) [RJ]:
Locality Name (eg, city) [Araruama]:
Organization Name (eg, company) [BSDInfo]:
Organizational Unit Name (eg, section) [TI]:
Common Name (eg, your name or your server’s hostname) [vpnsrv]:BSDInfo – CA
Name [vpnsrv]:
Email Address [ti@bsdinfo.com.br]:

Vamos dar uma olhada agora no nosso diretório de keys?

# ls -l /usr/local/etc/openvpn/2.0/keys/
total 16
-rw-r–r–  1 root  wheel  1334 May 28 01:29 ca.crt
-rw——-  1 root  wheel   887 May 28 01:29 ca.key
-rw-r–r–  1 root  wheel   245 May 28 01:24 dh1024.pem
-rw-r–r–  1 root  wheel     0 May 28 01:11 index.txt
-rw-r–r–  1 root  wheel     3 May 28 01:11 serial

Agora já temos o certificado da CA (ca.crt) que usaremos para assinar o certificado do nosso servidor da VPN e dos outros servidores clientes.

Vamos agora criar nosso primeiro certificado do servidor das VPNs:

# cd /usr/local/etc/openvpn/2.0/
# ./build-key-server vpnsrv
Generating a 1024 bit RSA private key
……………..++++++
…….++++++
writing new private key to ‘vpnsrv.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) [RJ]:
Locality Name (eg, city) [Araruama]:
Organization Name (eg, company) [BSDInfo]:
Organizational Unit Name (eg, section) [TI]:
Common Name (eg, your name or your server’s hostname) [vpnsrv]:
Name [vpnsrv]:
Email Address [ti@bsdinfo.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/local/etc/openvpn/2.0/openssl-0.9.8.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName           :PRINTABLE:’BR’
stateOrProvinceName   :PRINTABLE:’RJ’
localityName          :PRINTABLE:’Araruama’
organizationName      :PRINTABLE:’BSDInfo’
organizationalUnitName:PRINTABLE:’TI’
commonName            :PRINTABLE:’vpnsrv’
name                  :PRINTABLE:’vpnsrv’
emailAddress          :IA5STRING:’ti@bsdinfo.com.br’
Certificate is to be certified until May 26 05:20:25 2022 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

Aproveitando que estamos criando os certificados, vamos agora criar os certificados das VPNs cliente. Primeiro a da BSDInfo – Saquarema:

# ./build-key vpnsaq
Generating a 1024 bit RSA private key
..++++++
…………++++++
writing new private key to ‘vpnsaq.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) [RJ]:
Locality Name (eg, city) [Araruama]:
Organization Name (eg, company) [BSDInfo]:
Organizational Unit Name (eg, section) [TI]:
Common Name (eg, your name or your server’s hostname) [vpnsaq]:
Name [vpnsrv]:vpnsaq
Email Address [ti@bsdinfo.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/local/etc/openvpn/2.0/openssl-0.9.8.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName           :PRINTABLE:’BR’
stateOrProvinceName   :PRINTABLE:’RJ’
localityName          :PRINTABLE:’Araruama’
organizationName      :PRINTABLE:’BSDInfo’
organizationalUnitName:PRINTABLE:’TI’
commonName            :PRINTABLE:’vpnsaq’
name                  :PRINTABLE:’vpnsaq’
emailAddress          :IA5STRING:’ti@bsdinfo.com.br’
Certificate is to be certified until May 26 06:22:01 2022 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 Update

Agora o certificado e chave da BSDInfo – São Pedro:

# ./build-key vpnspa
Generating a 1024 bit RSA private key
….++++++
………………………………………………………………………………..++++++
writing new private key to ‘vpnspa.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) [RJ]:
Locality Name (eg, city) [Araruama]:
Organization Name (eg, company) [BSDInfo]:
Organizational Unit Name (eg, section) [TI]:
Common Name (eg, your name or your server’s hostname) [vpnspa]:
Name [vpnsrv]:vpnspa
Email Address [ti@bsdinfo.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/local/etc/openvpn/2.0/openssl-0.9.8.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName           :PRINTABLE:’BR’
stateOrProvinceName   :PRINTABLE:’RJ’
localityName          :PRINTABLE:’Araruama’
organizationName      :PRINTABLE:’BSDInfo’
organizationalUnitName:PRINTABLE:’TI’
commonName            :PRINTABLE:’vpnspa’
name                  :PRINTABLE:’vpnspa’
emailAddress          :IA5STRING:’ti@bsdinfo.com.br’
Certificate is to be certified until May 26 06:31:52 2022 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

Vamos dar uma olhada agora nos certificados e chaves que temos:

# ls -l /usr/local/etc/openvpn/2.0/keys/
total 84
-rw-r–r–  1 root  wheel  4030 May 28 02:21 01.pem
-rw-r–r–  1 root  wheel  3913 May 28 03:23 02.pem
-rw-r–r–  1 root  wheel  3913 May 28 03:31 03.pem
-rw-r–r–  1 root  wheel  1334 May 28 01:29 ca.crt
-rw——-  1 root  wheel   887 May 28 01:29 ca.key
-rw-r–r–  1 root  wheel   245 May 28 01:24 dh1024.pem
-rw-r–r–  1 root  wheel   360 May 28 03:31 index.txt
-rw-r–r–  1 root  wheel    21 May 28 03:31 index.txt.attr
-rw-r–r–  1 root  wheel    21 May 28 03:23 index.txt.attr.old
-rw-r–r–  1 root  wheel   240 May 28 03:23 index.txt.old
-rw-r–r–  1 root  wheel     3 May 28 03:31 serial
-rw-r–r–  1 root  wheel     3 May 28 03:23 serial.old
-rw-r–r–  1 root  wheel  3913 May 28 03:23 vpnsaq.crt
-rw-r–r–  1 root  wheel   708 May 28 03:22 vpnsaq.csr
-rw——-  1 root  wheel   891 May 28 03:22 vpnsaq.key
-rw-r–r–  1 root  wheel  3913 May 28 03:31 vpnspa.crt
-rw-r–r–  1 root  wheel   708 May 28 03:31 vpnspa.csr
-rw——-  1 root  wheel   887 May 28 03:31 vpnspa.key
-rw-r–r–  1 root  wheel  4030 May 28 02:21 vpnsrv.crt
-rw-r–r–  1 root  wheel   708 May 28 02:20 vpnsrv.csr
-rw——-  1 root  wheel   887 May 28 02:20 vpnsrv.key

Agora que temos todos os certificados e chaves que iremos utilizar podemos enfim criar o arquivo de configuração do servidor:

# cd /usr/local/etc/openvpn/
# mkdir /var/log/openvpn
# chmod 750 /var/log/openvpn
# mkdir ccd
# openvpn –genkey –secret ta.key
# cat <<EOF>> vpnsrv.conf
port 1190
proto tcp
dev tun
ca /usr/local/etc/openvpn/2.0/keys/ca.crt
cert /usr/local/etc/openvpn/2.0/keys/vpnsrv.crt
key /usr/local/etc/openvpn/2.0/keys/vpnsrv.key
dh /usr/local/etc/openvpn/2.0/keys/dh1024.pem
server 172.16.24.0 255.255.255.0
ifconfig-pool-persist /usr/local/etc/openvpn/ipp.txt
client-config-dir /usr/local/etc/openvpn/ccd
tls-auth /usr/local/etc/openvpn/ta.key 0
keepalive 10 120
comp-lzo
persist-key
persist-tun
log-append /var/log/openvpn/openvpn.log
status /var/log/openvpn/status.log
client-to-client

# Saquarema Network
route 10.200.201.0 255.255.255.255

# Sao Pedro Network
route 10.200.202.0 255.255.255.255
EOF

O parâmetro cliente-to-client é extremamente importante para que as redes dos clientes possam trocar dados entre si. Caso contrário eles só trocarão dados com a rede do servidor da VPN (10.200.200.0/24).

O diretório ccd é usado para armazenarmos as configurações que forçaremos os clientes à usarem. Nós também criamos e usaremos o ta.key para aumentarmos a segurança e evitarmos um DoS na porta 1190/TCP do nosso servidor OpenVPN. Você pode alterar a porta e o protocolo para UDP como bem quiser, desde que configure também nos clientes.

Adicionamos também as rotas paras as redes 10.200.201.0/24 e 10.200.202.0/24. No parâmetro server definimos a rede usada pelas VPNs entre si que será 172.16.24.0/24.

Estamos quase acabando o servidor. Agora precisamos configurar ele para iniciar no boot do sistema:

# cd /usr/local/etc/rc.d
# ln –sf openvpn vpnsrv
# cat <<EOF>> /etc/rc.conf
vpnsrv_enable=”YES”
vpnsrv_if=”tun”
vpnsrv_configfile=”/usr/local/etc/openvpn/vpnsrv.conf”
vpnsrv_dir=”/usr/local/etc/openvpn”
EOF

Agora sim podemos iniciar nosso servidor de VPN:

 # service vpnsrv start

Se tudo correr bem teremos o serviço rodando e algo já nos logs:

# cat /var/log/openvpn.log
Mon May 28 06:47:48 2012 OpenVPN 2.2.2 amd64-portbld-freebsd9.0 [SSL] [LZO2] [eurephia] built on May 27 2012
Mon May 28 06:47:48 2012 NOTE: OpenVPN 2.1 requires ‘–script-security 2’ or higher to call user-defined scripts or executables
Mon May 28 06:47:48 2012 Control Channel Authentication: using ‘/usr/local/etc/openvpn/ta.key’ as a OpenVPN static key file
Mon May 28 06:47:48 2012 TUN/TAP device /dev/tun0 opened
Mon May 28 06:47:48 2012 /sbin/ifconfig tun0 172.16.24.1 172.16.24.2 mtu 1500 netmask 255.255.255.255 up
add net 10.200.201.0: gateway 172.16.24.2
add net 10.200.202.0: gateway 172.16.24.2
add net 172.16.24.0: gateway 172.16.24.2
Mon May 28 06:47:48 2012 Listening for incoming TCP connection on [undef]:1190
Mon May 28 06:47:48 2012 TCPv4_SERVER link local (bound): [undef]:1190
Mon May 28 06:47:48 2012 TCPv4_SERVER link remote: [undef]
Mon May 28 06:47:48 2012 Initialization Sequence Completed
Mon May 28 06:47:48 2012 Ipv6 in tun mode is not supported in OpenVPN 2.2

Notaremos uma nova interface de rede que será usada nos túneis das VPNs:

# ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500
options=80000<LINKSTATE>
inet6 fe80::a00:27ff:fed0:bdc3%tun0 prefixlen 64 scopeid 0x4
inet 172.16.24.1 à 172.16.24.2 netmask 0xffffffff
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
Opened by PID 42385

Agora precisamos finalizar nosso servidor criando os arquivos de configuração para as outras VPNs naquele diretório /usr/local/etc/openvpn/ccd:

# cd /usr/local/etc/openvpn/ccd/
# cat <<EOF>> vpnsaq
ifconfig-push 172.16.24.6 172.16.24.5
iroute 10.200.201.0 255.255.255.0
EOF

O nome do arquivo, vpnsaq, é muito importante e deve ser o mesmo nome que usamos quando criamos o certificado para BSDInfo Saquarema. Reparem no trecho abaixo:

Organization Name (eg, company) [BSDInfo]:
Organizational Unit Name (eg, section) [TI]:
Common Name (eg, your name or your server’s hostname) [vpnsaq]:

Como podem ver mantive o nome vpnsaq no Common Name e esse deve ser o nome do arquivo de configuração porque quando o cliente se conectar no servidor VPN, o mesmo irá checar o Common Name e tentará abrir o arquivo com aquele nome no /usr/local/etc/openvpn/ccd e aí passará o IP e configurações para o cliente da VPN.

O parâmetro “ifconfig-push 172.16.24.6 172.16.24.5” diz ao cliente VPN de Saquarema que ele usará o IP 172.16.24.6 e seu gateway 172.16.24.5.

Já o parâmetro “eyste 10.200.201.0 255.255.255.0” serve para disponibilizar a rede interna de Saquarema para os demais clientes que no caso do nosso exemplo, seria a VPN de São Pedro. Sem esse parâmetro, a rede de São Pedro (10.200.202.0/24) não conseguiria acessar a rede de Saquarema (10.200.201.0/24).

Agora faremos o mesmo para a VPN da BSDInfo São Pedro:

# cd /usr/local/etc/openvpn/ccd/
# cat <<EOF>> vpnspa
ifconfig-push 172.16.24.10 172.16.24.9
iroute 10.200.202.0 255.255.255.0
EOF

Assim terminamos nossa configuração no servidor da nossa VPN. Passaremos para a configuração dos outros 2 servidores que serão os clientes nesse nosso artigo.

Para configurarmos os clientes precisaremos levar alguns arquivos para esses servidores:

BSDInfo Saquarema:

  • /usr/local/etc/openvpn/ta.key
  • /usr/local/etc/openvpn/2.0/keys/ca.crt
  • /usr/local/etc/openvpn/2.0/keys/vpnsaq.crt
  • /usr/local/etc/openvpn/2.0/eys/vpnsaq.key

BSDInfo São Pedro:

  • /usr/local/etc/openvpn/ta.key
  • /usr/local/etc/openvpn/2.0/eys/ca.crt
  • /usr/local/etc/openvpn/2.0/eys/vpnspa.crt
  • /usr/local/etc/openvpn/2.0/eys/vpnspa.key

No servidor de VPN da BSDInfo Saquarema faremos a instalação do OpenVPN conforme mostrado no início do nosso artigo. Criaremos o diretório /usr/local/etc/openvpn e o /var/log/openvpn. Não precisaremos mexer com a estrutura dos certificados e chaves, uma vez que já fizemos esse trabalho no servidor que atenderá as conexões das VPNs.

Colocaremos os arquivos de certificados e chaves, que trouxemos do servidor, em /usr/local/etc/openvpn. Após isso criaremos nosso arquivo de configuração assim:

# cd /usr/local/etc/openvpn/
# cat <<EOF>> vpnsaq.conf
client
dev tun
proto tcp
remote 169.169.169.1 1190
ns-cert-type server
nobind
persist-key
persist-tun
ca /usr/local/etc/openvpn/ca.crt
cert /usr/local/etc/openvpn/vpnsaq.crt
key /usr/local/etc/openvpn/vpnsaq.key
tls-auth /usr/local/etc/openvpn/ta.key 1
comp-lzo
log-append /var/log/openvpn/openvpn.log
status /var/log/openvpn/status.log

# Araruama Network
route 10.200.200.0 255.255.255.0

# Sao Pedro Network
route 10.200.202.0 255.255.255.0
EOF

Após criarmos esse arquivo de configuração teremos os seguintes arquivos:

# ls -l /usr/local/etc/openvpn/
total 20
-rw-r–r–  1 root  wheel  1334 May 28 08:46 ca.crt
-rw——-  1 root  wheel   636 May 28 08:46 ta.key
-rw-r–r–  1 root  wheel   337 May 28 08:47 vpnsaq.conf
-rw-r–r–  1 root  wheel  3913 May 28 08:46 vpnsaq.crt
-rw——-  1 root  wheel   891 May 28 08:46 vpnsaq.key

Para finalizarmos colocando o OpenVPN na inicialização do sistema:

# cd /usr/local/etc/rc.d
# ln –sf openvpn vpnsaq
# cat <<EOF>> /etc/rc.conf
vpnsaq_enable=”YES”
vpnsaq_if=”tun”
vpnsaq_configfile=”/usr/local/etc/openvpn/vpnsaq.conf”
vpnsaq_dir=”/usr/local/etc/openvpn”
EOF

Para finalizar nosso último cliente da VPN, usaremos os mesmos procedimentos citados no BSDInfo Saquarema mas alterando um pouco a conf e usando os certificados e chaves corretos:

# cd /usr/local/etc/openvpn/
# cat <<EOF>> vpnspa.conf
client
dev tun
proto tcp
remote 169.169.169.1 1190
ns-cert-type server
nobind
persist-key
persist-tun
ca /usr/local/etc/openvpn/ca.crt
cert /usr/local/etc/openvpn/vpnspa.crt
key /usr/local/etc/openvpn/vpnspa.key
tls-auth /usr/local/etc/openvpn/ta.key 1
comp-lzo
log-append /var/log/openvpn/openvpn.log
status /var/log/openvpn/status.log

# Araruama Network
route 10.200.200.0 255.255.255.0

# Saquarema Network
route 10.200.201.0 255.255.255.0
EOF

No final teremos os seguintes arquivos em /usr/local/etc/openvpn/:

# ls -l /usr/local/etc/openvpn/
total 20
-rw-r–r–  1 root  wheel  1334 May 28 08:46 ca.crt
-rw——-  1 root  wheel   636 May 28 08:46 ta.key
-rw-r–r–  1 root  wheel   337 May 28 08:47 vpnspa.conf
-rw-r–r–  1 root  wheel  3913 May 28 08:46 vpnspa.crt
-rw——-  1 root  wheel   891 May 28 08:46 vpnspa.key

Finalizando o artigo com a configuração para a inicialização dessa VPN:

# cd /usr/local/etc/rc.d
# ln -sf openvpn vpnspa
# cat <<EOF>> /etc/rc.conf
vpnspa_enable=”YES”
vpnspa_if=”tun”
vpnspa_configfile=”/usr/local/etc/openvpn/vpnspa.conf”
vpnspa_dir=”/usr/local/etc/openvpn”
EOF

Qualquer problema sempre consultem os logs gerados em /var/log/openvpn, afinal é para isso que os logs servem. Para nos auxiliar em problemas, informações e gerar estatísticas.

Mais informações sobre OpenVPN podem ser consultadas aqui:

Autor: Marcelo Gondim gondim em bsdinfo.com.br

Data: 29/05/2012

Este artigo é livre para ser distribuído, alterado e melhorado desde que respeitando meus créditos e os créditos de todo aquele que vier à contribuir com este documento.

Share Button