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.417 ]

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

Como desabilitar RAID 1

Recuperar a senha do root pelo CD

Instalando o Zabbix no CentOS

Funcionalidades para o Unity

Instalando Apache2, PHP4 e MySQL

  
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