Claudio Borges

Technical blog about Linux, BSD, Mac OS X, Games and etc.

Configurando um servidor de openvpn parte 2

with 2 comments

Dando continuidade a parte 1 do artigo, vamos configurar o lado do cliente.

Chaves e certificados para a filial

server:~/easy-rsa# ./build-key filial1
Generating a 2048 bit RSA private key
......................+++
..........+++
writing new private key to 'filial1.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]:"Sao Paulo"
Organization Name (eg, company) [Personal OpenVPN Client]:
Organizational Unit Name (eg, section) []: POC
Common Name (eg, your name or your server's hostname) []:filial1
Email Address [but3k4@gmail.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /root/easy-rsa/openssl.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          : T61STRING:'"Sao Paulo"'
organizationName      : PRINTABLE:'Personal OpenVPN Client'
organizationalUnitName: PRINTABLE:'POC'
commonName            : PRINTABLE:'filial1'
emailAddress          : IA5STRING:'but3k4@gmail.com'
Certificate is to be certified until Aug  9 14:59:05 2018 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
server:~/easy-rsa# 

Com os certificados criados, vamos copiá-los para o /etc/openvpn:

server:~/easy-rsa# mkdir /etc/openvpn/{certs,ccd,keys}
server:~/easy-rsa# cp keys/*.crt /etc/openvpn/certs/
server:~/easy-rsa# cp keys/*.key keys/dh2048.pem /etc/openvpn/keys/

Criando o arquivo de rotas

O arquivo /etc/openvpn/ccd/filial1 é responsável por definir rotas individuais para os clientes, ou seja, sem ele, o servidor nao vai saber que as maquinas de ambos os lados querem se comunicar e com isso a comunicação fica restrita apenas aos servidores.

server:~/easy-rsa# echo "iroute 192.168.1.0 255.255.255.0" > /etc/openvpn/ccd/filial1

Ajustando as permissões de arquivos / diretórios

server:~/easy-rsa# cd /etc/openvpn/
server:/etc/openvpn# chown -R nobody:nogroup keys certs ccd
server:/etc/openvpn# chmod 0400 keys/* certs/* ccd/*

Criando o diretorio de log

Precisamos criar o diretório de log, pois nossa configuração salva estas informações em arquivos específicos

server:/etc/openvpn# mkdir /var/log/openvpn

Startando o openvpn do lado matriz

server:/etc/openvpn# /etc/init.d/openvpn start
Starting virtual private network daemon: openvpn(OK).
server:/etc/openvpn#

Com o lado do servidor ok, vamos criar os arquivos para a filial:

server:/etc/openvpn# mkdir -p filial1/{certs,keys}
server:/etc/openvpn# cp certs/{ca.crt,filial1.crt} filial1/certs/
server:/etc/openvpn# cp keys/{filial1.key,shared.key} filial1/keys/

Criando o arquivo /etc/openvpn/filial1/openvpn.conf:

# /etc/openvpn/openvpn.conf filial configuration file

# diretorio onde esta os arquivos de configuracao / certificados
cd /etc/openvpn

# Especifica que este certificado eh de um cliente
client

# Define o ip do servidor para o cliente conectar
remote	189.47.25.20

# porta usada para os clientes conectarem no servidor
port	1194

# protocolo usado na conexao
proto	udp

# device usado pelo openvpn
dev	tun

# Diz que o certificado foi assinado pelo servidor
ns-cert-type	server

# Habilita conexoes tls
# Ajuda a bloquear ataques DoS e flooding na porta usada pelo openvpn
tls-client

# arquivo de chave compartilhada usado pelo tls-server
# O mesmo adiciona uma camada a mais de seguranca, habilitando controle de conexoes tls
tls-auth	keys/shared.key 1

# Certificado de autoridade
# Tem que ser o mesmo em todos os hosts
# que conectarem a sua vpn
ca	certs/ca.crt

# Certificado e chave privada do servidor
# Cada maquina tem que ter seu certificado e chave
cert	certs/filial1.crt
key	keys/filial1.key

# Habilita ping de 10 em 10 segundos para dizer ao lado da filial que a matriz
# esta no ar, usado para manter a conexao ativa
ping-timer-rem
keepalive 10 120

# Tipo de criptografia usada
cipher	DES-EDE3-CBC

# habilita compressão no link VPN
comp-lzo

# Ativa a opcao de se conectar, caso o cliente nao esteja na internet, ou
# o mesmo tenha perdido a conexao.
resolv-retry	infinite

# Nao especifica uma porta local para o cliente ouvir.
nobind

# usuário e grupo sob o qual o openvpn ira rodar
user	nobody
group	nogroup

# Permite um restart sem fechar a conexão e re-ler as chaves
persist-key
persist-tun

# Log de status das conexoes
status	/var/log/openvpn/openvpn-status.log

# define um arquivo de log, pois o default é o /var/log/syslog
log	/var/log/openvpn/openvpn.log
log-append	/var/log/openvpn/openvpn.log

# Nivel de log
# 0 silencioso, exceto para erros fatais
# 4 razoavel para uso geral
# 5 e 6 podem ajudar a debugar problemas de conexoes
# 9 maximo debug, muito util para tentar descobrir erros caso a vpn nao suba
verb	3

# desabilita mensagens repetitivas, ou seja, erros ou conexoes em sequencia
# acima de 20, ele dropa.
mute	20

Compactando os arquivos para a filial:

server:/etc/openvpn# tar -czpf filial1.tar.gz filial1

Envie o arquivo filial1.tar.gz para o /tmp/ da filial.

Agora do lado da filial, é necessário instalar o openvpn e descompactar os arquivos:

filial1:~# apt-get install -y openvpn

Com o openvpn instalado, edite o arquivo /etc/default/openvpn e descomente a linha #AUTOSTART=”all”. Agora descompacte o arquivo filial1.tar.gz que está no /tmp/:

filial1:~# cd /tmp/
filial1:~# tar xzf filial1.tar.gz
filial1:~# mv filial1/* /etc/openvpn/
filial1:~# rm -rf /tmp/filial1*

Criando o diretorio /var/log/openvpn:

filial1:/etc/openvpn# mkdir /var/log/openvpn

Startando o openvpn do lado filial:

filial1:/etc/openvpn# /etc/init.d/openvpn start
Starting virtual private network daemon: openvpn(OK).
filial1:/etc/openvpn#

Pronto, seu openvpn esta instalado e matriz/filial estao se comunicando. Não esqueça de liberar no fw da matriz a porta 1194 udp de sua interface externa e tudo na interface da vpn que é tun0.

Caso necessite configurar um notebook para acessar o servidor, basta seguir os passos da criação das configurações para a filial, alterando é claro o nome de filial para notebook ou qualquer outro nome.

Abraços.

Written by but3k4

January 29th, 2010 at 10:45 pm

Posted in Linux

Tagged with ,

2 Responses to 'Configurando um servidor de openvpn parte 2'

Subscribe to comments with RSS or TrackBack to 'Configurando um servidor de openvpn parte 2'.

  1. Boa tarde Claudio!

    Nao se ainda vai responder este post, ja faz tempo eu publicou este tutorial. Mas vale a tentativa. Fiz conforme os seus passos, mas tanto do servidor como da filial nao pinga. Veja o route -n:

    SERVER:
    root@z:/etc/openvpn/filial1# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    200.200.200.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
    200.200.200.0 200.200.200.2 255.255.255.0 UG 0 0 0 tun0
    192.168.1.0 200.200.200.2 255.255.255.0 UG 0 0 0 tun0
    192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth2
    169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth2
    0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth2

    ++++++++++++++++++++++++++++++++++++++++++++++
    FILIAL1
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
    169.254.0.0 0.0.0.0 255.255.0.0 U 0 1000 0 eth0
    0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 0 eth0

    Leandro

    28 Oct 11 at

  2. Olá Leandro,

    Do lado da matriz o que mostra o route -n? você já tentou pingar os ips da tun0?

    Abraços.

    but3k4

    28 Oct 11 at

Leave a Reply