Configurando o OpenVPN para múltiplos clientes

Neste artigo explico como configurar o OpenVPN com múltiplos clientes. Cada um utilizando seu próprio certificado gerado através do OpenSSL.

[ Hits: 138.259 ]

Por: Ricardo Franzen em 07/08/2009 | Blog: http://rfranzen.com.br


Gerando os certificados



Certificado da entidade certificadora (apenas um):

# openssl req -nodes -new -x509 -keyout my-ca.key -out my-ca.crt -days 3650

Certificado do cliente (um para cada cliente):

# openssl req -nodes -new -keyout xx.key -out xx.csr
# openssl ca -out xx.crt -in xx.csr


Parâmetros Diffie Hellman no servidor:

# openssl dhparam -out dh1024.pem 1024

Outra alternativa é utilizar o easy-rsa (recomendado para quando for necessário gerar vários certificados).

Modelo do arquivo servidor.conf

Como o próprio nome diz, este é o arquivo de configuração do servidor. Este arquivo deve ficar localizado em /etc/openvpn.

Lembrando que no servidor devemos ter os certificados da unidade certificadora, do servidor e as chaves públicas dos clientes.

port 443 #modifiquei a porta padrão do openvpn
proto tcp
dev tun
ca pmg.crt #certificado da unidade certificadora
cert xx.crt #chave pública do cliente
key xx.key #chave privada do cliente
dh dh1024.pem
client-config-dir ccd #criar o diretório "ccd" dentro de /etc/openvpn
route 10.0.1.0 255.255.255.0
server 10.0.1.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3

Modelo do arquivo cliente.conf

Hum... em qual das máquinas vai este arquivo? ;) Claro que é na máquina cliente, no diretório /etc/openvpn.

Lembrando que no cliente devemos ter a chave pública da unidade certificadora, do servidor e as chaves pública e privada do próprio cliente.

dev tun0
proto tcp
remote 111.111.111.11 443 #endereço IP do servidor
nobind
persist-key
persist-tun
ca xx.crt #certificado do órgão certificador
cert xx.crt #certificado público do cliente
key xx.key #chave privada do cliente
comp-lzo
verb 3
Com essas configurações podemos iniciar o openvpn e sair conectando os clientes. Os endereços IP serão atribua­dos dinamicamente.
#openvpn --config /etc/openvpn/servidor.conf --daemon

Conclusão

Podemos concluir que o OpenVPN é um excelente software para interligar dois ou mais pontos com segurança através da internet. Com ele não é necessário deixar portas de SSH ou TS abertas em seu firewall. Quem necessita de acesso remoto pode receber um certificado e, com o OpenVPN, pode acessar os serviços da rede da empresa como se estivesse localmente.

Com a criação de algumas rotas é possível fazer com que as filiais possam se "enxergar" e trocar informações entre si.

Links:
Página anterior    

Páginas do artigo
   1. Introdução, download e instalação do OpenVPN
   2. Modelo do arquivo openssl.cnf
   3. Gerando os certificados
Outros artigos deste autor

Monitorando seu servidor Jabber

Leitura recomendada

Local Web Server visível na Internet com DynDNS

Slackware 14.2 - Configuração pós-instalação

Clusters de alta disponibilidade (HA - High Availability)

Instalando o bugzilla no OpenSuSE 10.2

Instalando o Sun Java System Web Proxy Server no Linux Slackware 12.0

  
Comentários
[1] Comentário enviado por edusite em 17/08/2009 - 20:34h

de 0 a 10 dou 5 , amigo faltou algumas coisas para explicar, pra quem é novo em vpn vai precisar juntar seu
artigo com um mais completo ,ex: o que é ca pmg.crt em que momento isso foi gerado?,
vc esta carregando servidor.conf dentro do cliente?
para que serve a criaçao do diretorio ccd
route 10.0.1.0 255.255.255.0
server 10.0.1.0 255.255.255.0

clinte windows?

[2] Comentário enviado por rfranzen em 18/08/2009 - 09:15h

Bom dia edusite. Tenho que concordar e discordar de você.
Realmente, as informações sobre o diretório ccd, que é onde devemos colocar as configurações de ip e rota do cliente caso queiramos atribuir endereços fixos a eles. ex:
ifconfig-push <ip cliente> <mascara> <gateway da vpn/ip do servidor>

O artigo explica perfeitamente como gerar os certificados e onde cada arquivo de configuração é utilizado e o SO em que tudo foi feito, basta ler o artigo.

Abraços.

[3] Comentário enviado por tiagoferla em 01/10/2009 - 17:00h

era examente oq eu precisava!!
os certificado SSL!!
mas amigo, segui todos os seus passos corretamente, mas na hora da criação do segundo certificado para o cliente!!
ele deu um erro!!! copiei o seu arquivo /etc/ssl/openssl.cnf com vc citou no tutorial! e mesmo assim continua dando o mesmo erro!!
se puder me ajudar!! empaquei nessa parte e não consigo sair! ;/

abraços.

[4] Comentário enviado por fernandoborges em 02/10/2009 - 19:42h

É... Beeeem resumido seu artigo. Pra levantar uma VPN robusta, com os recursos necessários pra interligar efetivamente gateways remotos, é preciso bem mais. Mas esse seria o primeiro passo. Como o amigo edusite comentou, é necessário ler artigos mais aprofundados pra completar o seu. Mas... Parabéns mesmo assim!
Em breve estarei colocando meu primeiro artigo aqui no VOL sobre esse tema.
Abraço.

[5] Comentário enviado por rfranzen em 05/10/2009 - 11:56h

Bom dia fernandoborges obrigado pelo comentário.

Não entendi o que você quer dizer com "VPN robusta". A partir do momento que a VPN funciona e seus hosts conseguem se comunicar pela mesma, os detalhes de robustez e segurança são feitos através de firewall e rotas mais detalhadas (o que não está no escopo do artigo).

Também é importante lembrar que este artigo foi escrito em 6 de Outubro de 2006 (link original: www.rfranzen.com.br/2006/10/06/configurando-o-openvpn-para-multiplos-clientes/). Muita coisa mudou em 3 anos de projeto OpenVPN. Inclusive a quantidade de material sobre o assunto, que hoje é incrivelmente superior à existente em 2006.

Podemos dizer até que hoje, é relativamente simples configurar uma VPN simples sem nenhum esforço, apenas um pouco de conhecimento técnico.

Ficaremos no aguardo do seu artigo...
Abraços.

[6] Comentário enviado por removido em 19/10/2009 - 16:03h

Legal Seu Artigo Amigo.
Continue Assim.

[7] Comentário enviado por btavares em 05/11/2009 - 15:38h

Como faço no caso de vpn host-to-server? Ou seja quero que meus vendedores se conectem na nossa rede através de um notebook
e um minimodem 3G, através do VPN GUI, no ipcop eu faço isso com 1 min, mas nunca consegui fazer em um servidor modo texto puro
tenho alguns servidores Debian e Ubuntu Server em clientes, mas nos clientes que precisam de VPN dessa maneira que falei,
uso o IPCOP, foi a solução de VPN mais prã tica que achei.

NO mais, tá excelente seu artigo, parabéns, e fica a sugestão de fazer um artigo que use o VPN GUI instalado em um WinXP "discando"
para o servidor VPN e entrando na rede.

Grande Abraço.

[8] Comentário enviado por nariz em 25/11/2009 - 10:11h

em um ambiente onde o meu cliente é um gateway com uma rede interna atras dele....
ServidorPrincipalVPN-------->ClienteVPN---------->RedeInternaClienteVPN
Como ficaria por exemplo uma rota para que o ServidorPrincipal consiga pingar uma maquina que está na RedeInternaClienteVPN ???
Usando chaves estáticas e com várias interfaces de tunelamento no servidor eu coloco as rotas apontando para interface TUN referente ao cliente e funciona legal.
Usando certificado ainda nao consegui fazer essa comunição...

[9] Comentário enviado por rfranzen em 25/11/2009 - 11:03h

Bom dia nariz,

Você precisa criar nele uma rota para a rede interna do cliente, utilizando como gateway o IP que o cliente vpn possui dentro da rede da vpn...

Não sei se fui claro... :-S

[10] Comentário enviado por cabriocario em 11/12/2009 - 11:01h

Aos participantes: Instalei no meu gateway (debian lenny) o openvpn -apt-get openvpn, coloquei os certifcados que me sao fornecidos dentro de /etc/openvpn, mas nao consigo fazer funcionar. Startei o openvpn tudo ok.
ANalisei o log do openvpn: WARNING: file 'etc/openvpn/arquivo.key' is group or others acessible logo abaixo: canot open file key.
file 'arquivo.key' NO SUCH file is directory.
Me certifiquei do endereco correto no .conf e se o arquivo.key estava no local indicado.
Se alguém tiver uma sguestao. Favor postar.

[11] Comentário enviado por rfranzen em 11/12/2009 - 12:05h

Olá Flavio,
Pelo erro que você está reportando, é só corrigir as permissões do seu certificado... O OpenVPN não está conseguindo ler o arquivo.

[12] Comentário enviado por leo_conectiva009 em 04/04/2010 - 23:38h

Parabéns bela iniciativa e oa vontade....

mas:

Download do OpenVPN: - (FIZ O DOWNLOAD NORMAMENTE)

# wget http://openvpn.net/release/openvpn-2.0.9.tar.gz

Descompactar o conteúdo do arquivo:

# tar -zxvf openvpn-2.0.9.tar.gz - (OK TAMBÉM)

Isto é só para a organização:

# mv openvpn-2.0.9/ /usr/src/ (OK)

Compilar e pronto:

# cd /usr/src/openvpn-2.0.9 - (OK)
# ./configure --prefix=/usr/local/openvpn -(OK)
# make && make install -(NÃO CONSEGUI) "ERRO - make: *** No targets specified and no makefile found. Stop."

Ou ainda mais simples que tudo isso (acima)...

# apt-get install openvpn - tudo OK...

Usuários iniciantes que nem eu, recomendo o nosso amigo APT-GET :p

[13] Comentário enviado por rfranzen em 05/04/2010 - 00:11h

Olá leo_conectiva009, obrigado por comentar...

Realmente, usar o apt-get, geralmente é uma ótima opção, não só para usuários iniciantes, mas também para avançados. Tudo vai depender da aplicação =)

[14] Comentário enviado por removido em 15/07/2010 - 18:31h

Bom artigo cara.
Simples e direto.

Abraço


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts