Tags

Boa noite pessoal,

Precisei configurar diversos servidores OpenVPN em clientes distintos, porém muitas vezes não sou eu que faço, portanto precisei criar um KB interno na empresa (somente em inglês), no entanto sei que há milhares e milhares de tutoriais e artigos, Maaaasss vou compartilhar mesmo assim pra dar um fôlego para terminar os artigos de LAMP em inglês e traduzir para vocês, assim como os de Nagios que estou preparando pois há falta de documentação no que estou fazendo atualmente.

Para começar, independente da sua distribuição Linux faça a instalação do OpenVPN utilizando seu gerenciador de pacotes:

Debian-Like
 # apt-get install openvpn 

RedHat-Like
# yum install openvpn

Caso esteja utilizando RedHat/CentOS e não possui repositório para a instalação do OpenVPN, siga as instruções no artigo abaixo:

Novo repositorio – CentOS/RedHat

Após a instalação, verifique se o binário openvpn existe:

# which openvpn
/usr/sbin/openvpn

De início, precisamos criar as chaves de criptografia, portanto faremos utilizando os scripts do próprio OpenVPN:

RedHat Like
# cd /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0/

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

Crie o diretório chamado “keys”, adicione a permissão de execução aos scripts e então carregue as variáveis que utilizaremos posteriormente:

# mkdir keys && chmod +x *
# source
vars

Execute o script “clean-all” para remover (caso haja) chaves anteriores e criar 2 arquivos novos no diretório keys:

# ./clean-all

Confirme a existência dos 2 arquivos citados anteriormente:

# ls keys/
index.txt  serial

Já estamos prontos para criar a autoridade certificadora (CA) para emitir os certificados necessários, faremos utilizando o script “build-ca”:

# ./build-ca

Several questions will be asked so you can answer follow this example:

Country Name (2 letter code) [US]:IE
State or Province Name (full name) [CA]:Dublin
Locality Name (eg, city) [SanFrancisco]:Dublin
Organization Name (eg, company) [Fort-Funston]:Any
Organizational Unit Name (eg, section) []:Any
Common Name (eg, your name or your server’s hostname) [Fort-Funston CA]:Any

Name []:

Email Address [me@myhost.mydomain]:any@company.com

Confirme novamente no diretório keys a criação da CA:

# ls keys/
ca.crt  ca.key index.txt serial

Primeiramente criaremos nossa chave privada e depois as chaves de clientes (client_01):

# ./build-key-server server
# ls keys/
server.key
ca.crt ca.key index.txt serial

# ./build-key client_01
# ls keys/
server.key ca.crt ca.key index.txt serial client_01.crt client_01.key

Diferentemente da criação das chaves do servidor, será pedido uma senha, no mais todo o processo é o mesmo.

Para finalizar a primeira parte, precisamos criar a ferramenta de encryption/decipher:

# ./build-dh
# ls keys/
dh1024.pem

Finalizada a primeira etapa, precisamos copiar as chaves e configurar o servidor, portanto crie o diretório keys dentro de /etc/openvpn e copie o conteúdo:

# mkdir -p /etc/openvpn/keys && cp keys/* /etc/openvpn/keys/

Crie o arquivo server.conf dentro de /etc/openvpn com o seguinte conteúdo:

port 1194
proto udp
dev tun0

ca /etc/openvpn/keys/ca.crt 
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key 
dh /etc/openvpn/keys/dh1024.pem

server 192.168.200.0 255.255.255.0

push “route 192.168.200.0 255.255.255.0”

keepalive 10 120

comp-lzo
max-clients 30
user nobody # Verifique se o usuario e grupo definidos aqui existem
group nobody
persist-key
persist-tun

status /var/log/openvpn/status.log 
log-append /var/log/openvpn/openvpn.log # Daemon Log
verb 3

daemon openvpnserver
ping-timer-rem
mode server
tls-server


Antes de iniciarmos o serviço, precisamos criar o diretório onde será criado o log do servidor:

# mkdir -p /var/log/openvpn

Feito! Para iniciar o serviço, simplesmente utilize o script dentro de init.d e depois adicione o serviço para a inicialização:

# /etc/init.d/openvpn start
Starting openvpn:                                          [  OK  ]

# chkconfig –levels 2345 openvpn on <- RedHat like
update-rc.d openvpn defaults <- Debian Like

Para os clientes, somente copie o arquivo ca.crt, client_01.crt e client_01.key e crie o arquivo de configuração connection.ovpn (Windows clients):

client
tls-client
dev tun
proto udp

remote seu.servidor.com # server IP
remote-random
resolv-retry infinite
nobind
persist-key
persist-tun

# SSL
ca ca.crt
cert client_01.crt
key client_01.key

comp-lzo
verb 5

pull
tun-mtu 1500

Instalação/Configuração do cliente em Linux/Windows não fazem parte do escopo deste artigo, mas já fica todo o arquivo .conf.

Há diversas outras maneiras de se configurar, porém esta é simples e bem funcional e rápida de se configurar, portanto, caso precise acesse o site OpenVPN.