SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
Linux Network Servers

      OpenVPN


       www.4linux.com.br   2 / 34
CONCEITO DE
   VPN




  www.4linux.com.br   3 / 34
CONCEITO

➔ O que é VPN?

O surgimento da VPN se deve a necessidade de se utilizar
redes de comunicação não confiáveis, como a Internet para
trafegar informações de forma segura. A Virtual Private
Network no passado já esteve associada a serviços remotos
de conectividade, como a rede de telefonia pública
comutada (RTPC) ou os PVCs (Permanent Virtual
Circuits/Channel) do Frame Relay.

A VPN utiliza protocolos de tunelamento e procedimentos
de encriptação, garantindo a integridade e autenticidade
dos dados. Com a VPN é possível interligar duas ou mais
redes, em diferente tipos de sistemas operacionais.

                      www.4linux.com.br            4 / 34
CONFIGURANDO
 OPENVPN COM
CHAVE ESTÁTICA



   www.4linux.com.br   5 / 34
CONFIGURANDO O SERVIDOR

Nesta configuração, vamos usar chaves estáticas, que é
a forma mais simples de configurar a VPN.

Vamos gerar uma chave que será usada tanto pelo
servidor quanto pelo cliente.

# aptitude install openvpn

# openvpn --genkey --secret /etc/openvpn/chave




                     www.4linux.com.br          6 / 34
CONFIGURANDO O SERVIDOR

# vim /etc/openvpn/server.conf

dev tun
ifconfig 10.0.0.1 10.0.0.2
secret /etc/openvpn/chave
port 5000
comp-lzo
verb 4
keepalive 10 120
persist-key
persist-tun
float




                       www.4linux.com.br   7 / 34
CONFIGURANDO O SERVIDOR

dev tun → Habilita suporte ao drive TUN/TAP;
ifconfig → Cria o IP do servidor (10.0.0.1) com suporte ao IP
do cliente (10.0.0.2);
secret → Comando para chamar nossa chave criptografada e
o local dela;
port → Define a porta que a OpenVPN vai rodar;
comp-lzo → Ativa suporte a compressão;
verb → Nível para depuração de erros;
keepalive → Envia um ping a cada 10 segundos sem
atividade e a VPN é reiniciada depois de 120 segundos sem
respostas.
                         www.4linux.com.br             8 / 34
CONFIGURANDO O SERVIDOR

persist-key → Assegura que o daemon mantenha as chaves
carregadas, quando a VPN é restabelecida depois de uma
queda de conexão;


persist-tun   →   Assegura   que    o      daemon   mantenha      a
interface tun aberta, quando a VPN é restabelecida depois
de uma queda de conexão;


float → Permite que o túnel continue aberto mesmo que o
endereço IP da outra máquina mude.

                       www.4linux.com.br                 9 / 34
CONFIGURANDO O CLIENTE

# aptitude install openvpn
# vim /etc/openvpn/client.conf
dev tun
ifconfig 10.0.0.2 10.0.0.1
remote 192.168.200.1
secret /etc/openvpn/chave
port 5000
comp-lzo
verb 4
keepalive 10 120
persist-key
persist-tun
float
                  www.4linux.com.br   10 / 34
INICIANDO O SERVIÇO

Copie o arquivo chave que está em /etc/openvpn/ do
Servidor para o /etc/openvpn do cliente.

No servidor:
# /etc/init.d/openvpn start

No cliente:
# /etc/init.d/openvpn start




                   www.4linux.com.br        11 / 34
INICIANDO O SERVIÇO

No servidor:
# ifconfig
tun0    Link encap:Não Especificado Endereço de HW 00-
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
       inet end.: 10.0.0.1 P-a-P:10.0.0.2
No cliente:
# ifconfig
tun0    Link encap:Não Especificado Endereço de HW 00-
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
       inet end.: 10.0.0.2 P-a-P:10.0.0.1

                      www.4linux.com.br         12 / 34
CONFIGURANDO
 OPENVPN COM
 CERTIFICADOS



   www.4linux.com.br   13 / 34
MELHORANDO A SEGURANÇA

A   OpenVPN    oferece       vários        mecanismos     para
adicionar camadas adicionais de segurança, como
por exemplo rodar em chroot, uso de conexões
TLSs, certificados, uso de chaves com maiores bits.
Todas essas camadas previnem ataques como “Man
in the Middle”, “DoS”, “Flooding”, “Port scanning”
e “Buffer overflow”.



                       www.4linux.com.br                14 / 34
OPENVPN SEM PRIVILÉGIO DE
ROOT
Adicione a configuração no servidor e cliente:, as opções
“user” e “group” para que o OpenVPN seja executado
como usuário nobody e grupo nogroup.

# vim /etc/openvpn/server.conf
# vim /etc/openvpn/client.conf

No final do arquivo coloque:
user nobody
group nogroup




                       www.4linux.com.br          15 / 34
Tls-auth HMAC
Você pode adicionar uma assinatura que será verificada
antes do processamento de todos os pacotes UDP Em nossa
                                              .
configuração do servidor vamos habilitar as seguintes
opções:

tls-auth → Habilita o controle de conexões tls;
tls-server → Ajuda a bloquear ataques DoS e flooding na
porta do OpenVPN;
ca → Certificado de autoridade (CA) que usa as bibliotecas
do OpenSSL;
cert → Certificado do servidor;
key → Chave RSA de 2048 do servidor;
dh → Parâmetros Diffie-Hellman utilizado para a troca das
chaves criptografadas durante a execução;
cipher → Define um tipo de criptografia maior.
                      www.4linux.com.br            16 / 34
Tls-auth HMAC
Para gerar os certificados e chaves o OpenVPN traz junto a
sua instalação, uma série de scripts chamados “easy-rsa”.

Eles podem ser encontrados em
/usr/share/doc/openvpn/examples/easy-rsa/2.0/

# ls /usr/share/doc/openvpn/examples/easy-rsa/2.0/




                       www.4linux.com.br            17 / 34
Tls-auth HMAC
Veja que na lista de scripts cada um, tem uma função
especifica para criação de certificados e chaves. Vamos
copiar o diretório com os scripts para nossa instalação do
OpenVPN

# cp -a /usr/share/doc/openvpn/examples/easy-rsa/2.0
/etc/openvpn/

Acesse o diretório com os scripts copiados:
# cd /etc/openvpn/2.0




                       www.4linux.com.br           18 / 34
Tls-auth HMAC

Crie o subdiretório onde serão armazenadas as
chaves e certificado:

# mkdir keys

Gerando certificado CA e chave RSA

Utilizando os scripts vamos gerar os certificados e
chaves, que serão utilizados em nossa configuração
do OpenVPN.



                   www.4linux.com.br         19 / 34
GERANDO CERTIFICADO

Instale o pacote openssl:
# aptitude install openssl

# vim vars

export   KEY_SIZE=2048
export   KEY_COUNTRY="BR"
export   KEY_PROVINCE="SP"
export   KEY_CITY="SaoPaulo"
export   KEY_ORG="DEXTER"
export   KEY_EMAIL="root@dexter.com.br"


                  www.4linux.com.br       20 / 34
GERANDO CERTIFICADO
Use a sequência de comandos abaixo para gerar o
certificado de autoridade:
# source vars
# ./clean-all
# ./build-ca

Preencha as informações do certificado:
Country Name (2 letter code) [BR]:BR
State or Province Name (full name) [SP]:SP
Locality Name (eg, city) [SaoPaulo]:SaoPaulo
Organization Name (eg, company) [DEXTER]:DEXTER
Organizational Unit Name (eg, section) []:DEXTER
Common Name (eg, your name or your server's hostname)
[DEXTER CA]:
Name []:
Email Address [root@dexter.com.br]:root@dexter.com.br
                     www.4linux.com.br          21 / 34
GERANDO CERTIFICADO

./build-key-server server
Generating a 2048 bit RSA private key
..............................................................................+++
..........+++
writing new private key to 'server.key'

Country Name (2 letter code) [BR]:BR
State or Province Name (full name) [SP]:SP
Locality Name (eg, city) [SaoPaulo]:SaoPaulo
Organization Name (eg, company) [DEXTER]:DEXTER
Organizational Unit Name (eg, section) []:DEXTER
Common Name (eg, your name or your server's hostname)
[server]:
Name []:
Email Address [root@dexter.com.br]:root@dexter.com.br
                                   www.4linux.com.br                                22 / 34
GERANDO CERTIFICADO

Using configuration from /etc/openvpn/2.0/openssl.cnf
The Subject's Distinguished Name is as follows
countryName            :PRINTABLE:'BR'
stateOrProvinceName :PRINTABLE:'SP'
localityName         :PRINTABLE:'SaoPaulo'
organizationName         :PRINTABLE:'DEXTER'
organizationalUnitName:PRINTABLE:'DEXTER'
commonName               :PRINTABLE:'server'
emailAddress          :IA5STRING:'root@dexter.com.br'
Certificate is to be certified until Jun 25 01:31:25 2021 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
                        www.4linux.com.br             23 / 34
GERANDO CERTIFICADO

Liste o conteúdo do subdiretório keys e verifique o arquivo
de certificado do servidor (server.csr), o arquivo da chave
do servidor (server.key) e o certificado auto assinado
(server.crt).

Gerando parâmetros Diffie-Hellman

Os parâmetros Diffie-Hellman são utilizados para a troca
das chaves criptografadas durante a execução do OpenVPN.
Use o script abaixo para gerar os parâmetros:
# ./build-dh




                       www.4linux.com.br            24 / 34
CONFIGURANDO O SERVIDOR

Liste o conteúdo do subdiretório keys e verifique o arquivo
com os parâmetros Diffie-Hellman (dh2048.pem).

Configurando o servidor OpenVPN

Com os certificados e chaves gerados, abra o arquivo do
servidor e adicione as opções abaixo:

# vim /etc/openvpn/server.conf




                       www.4linux.com.br            25 / 34
CONFIGURANDO O SERVIDOR

# vim /etc/openvpn/server.conf
dev tun
ifconfig 10.0.0.1 10.0.0.2
port 5000
comp-lzo
verb 4
keepalive 10 120
persist-key
persist-tun
float
user nobody
group nogroup
tls-server
tls-auth chave 0

                     www.4linux.com.br   26 / 34
CONFIGURANDO O SERVIDOR

Continuação:

# vim /etc/openvpn/server.conf

ca 2.0/keys/ca.crt
cert 2.0/keys/server.crt
key 2.0/keys/server.key
dh 2.0/keys/dh2048.pem
cipher DES-EDE3-CBC




                       www.4linux.com.br   27 / 34
CONFIGURANDO O CLIENTE

Ainda na máquina servidor crie a chave e o certificado para
a máquina cliente, com o hostname da maquina cliente.

# cd /etc/openvpn/2.0
# ./build-key client

Country Name (2 letter code) [BR]:BR
State or Province Name (full name) [SP]:SP
Locality Name (eg, city) [SaoPaulo]:SaoPaulo
Organization Name (eg, company) [DEXTER]:DEXTER
Organizational Unit Name (eg, section) []:DEXTER
Common Name (eg, your name or your server's hostname)
[client]:
Name []:
Email Address [root@dexter.com.br]:root@dexter.com.br
                       www.4linux.com.br            28 / 34
CONFIGURANDO O CLIENTE

The Subject's Distinguished Name is as follows
countryName            :PRINTABLE:'BR'
stateOrProvinceName :PRINTABLE:'SP'
localityName         :PRINTABLE:'SaoPaulo'
organizationName         :PRINTABLE:'DEXTER'
organizationalUnitName:PRINTABLE:'DEXTER'
commonName               :PRINTABLE:'client'
emailAddress          :IA5STRING:'root@dexter.com.br'
Certificate is to be certified until Jun 25 01:51:26 2021 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
                        www.4linux.com.br               29 / 34
CONFIGURANDO O CLIENTE

Faça a copia dos arquivos abaixo via ssh para a máquina
cliente.

# cd /etc/openvpn/2.0/keys
# scp client.key client.crt ca.crt
root@IP_DO_CLIENTE:/etc/openvpn




                       www.4linux.com.br            30 / 34
CONFIGURANDO O CLIENTE

# vim /etc/openvpn/client.conf
dev tun
ifconfig 10.0.0.2 10.0.0.1
remote 192.168.200.1
port 5000
comp-lzo
verb 4
keepalive 10 120
persist-key
persist-tun
float
user nobody
group nogroup
ns-cert-type server

                     www.4linux.com.br   31 / 34
CONFIGURANDO O CLIENTE

Continuação:

# vim /etc/openvpn/client.conf

tls-client
tls-auth chave 1
ca ca.crt
cert client.crt
key client.key
cipher DES-EDE3-CBC




                      www.4linux.com.br   32 / 34
CONFIGURANDO O CLIENTE

Descrição das novas opções utilizadas:

ns-cert-type → Indica que certificado foi assinado pelo
servidor;

tls-client → Habilita conexão TLS, ajudando a bloquear
ataques DoS e flooding na porta do OpenVPN.

No servidor:
# /etc/init.d/openvpn start

Depos no cliente:
# /etc/init.d/openvpn start



                       www.4linux.com.br             33 / 34
CHECANDO CONEXÃO

No servidor:
# ifconfig

tun0    Link encap:Não Especificado Endereço de HW 00-
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
      inet end.: 10.0.0.1 P-a-P:10.0.0.2
Masc:255.255.255.255

No cliente:
# ifconfig

tun0    Link encap:Não Especificado Endereço de HW 00-
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
      inet end.: 10.0.0.2 P-a-P:10.0.0.1
Masc:255.255.255.255
                     www.4linux.com.br          34 / 34

Mais conteúdo relacionado

Mais procurados

Certificação LPI sem mistérios
Certificação LPI sem mistériosCertificação LPI sem mistérios
Certificação LPI sem mistériosBruna Griebeler
 
Modelo slide senai tcc 2008 final
Modelo slide senai tcc 2008   finalModelo slide senai tcc 2008   final
Modelo slide senai tcc 2008 finalPablo Gadotti
 
Configurando ambiente ltsp_4.2_com_mt1000_lx_ta2000lx
Configurando ambiente ltsp_4.2_com_mt1000_lx_ta2000lxConfigurando ambiente ltsp_4.2_com_mt1000_lx_ta2000lx
Configurando ambiente ltsp_4.2_com_mt1000_lx_ta2000lxjrrsouzaj
 
Certificação lpi 1 101 - 102 v2 (Linux Professional Institute)
Certificação lpi 1 101 - 102 v2 (Linux Professional Institute)Certificação lpi 1 101 - 102 v2 (Linux Professional Institute)
Certificação lpi 1 101 - 102 v2 (Linux Professional Institute)Denis Katko
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosEduardo Legatti
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores LinuxSoftD Abreu
 
Monitoramento de Redes com Nagios
Monitoramento de Redes com NagiosMonitoramento de Redes com Nagios
Monitoramento de Redes com NagiosDaniel Lara
 
Aula14 vsftp de-introopenldap
Aula14 vsftp de-introopenldapAula14 vsftp de-introopenldap
Aula14 vsftp de-introopenldapRoberto Castro
 
Seguranca em Servidores Linux
Seguranca em Servidores LinuxSeguranca em Servidores Linux
Seguranca em Servidores LinuxAlessandro Silva
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory gigadrop
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebIsrael Messias
 
Workshop Slackware 12.1 - Tiago Biazus
Workshop Slackware 12.1 - Tiago BiazusWorkshop Slackware 12.1 - Tiago Biazus
Workshop Slackware 12.1 - Tiago BiazusTchelinux
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneosFernando Ike
 
Ferramentas GPL para a segurança de Redes de Computadores - Vanderlei Pollon
Ferramentas GPL para a segurança de Redes de Computadores - Vanderlei PollonFerramentas GPL para a segurança de Redes de Computadores - Vanderlei Pollon
Ferramentas GPL para a segurança de Redes de Computadores - Vanderlei PollonTchelinux
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1Leo Amorim
 

Mais procurados (19)

Certificação LPI sem mistérios
Certificação LPI sem mistériosCertificação LPI sem mistérios
Certificação LPI sem mistérios
 
Monitoração com Nagios
Monitoração com NagiosMonitoração com Nagios
Monitoração com Nagios
 
Modelo slide senai tcc 2008 final
Modelo slide senai tcc 2008   finalModelo slide senai tcc 2008   final
Modelo slide senai tcc 2008 final
 
Configurando ambiente ltsp_4.2_com_mt1000_lx_ta2000lx
Configurando ambiente ltsp_4.2_com_mt1000_lx_ta2000lxConfigurando ambiente ltsp_4.2_com_mt1000_lx_ta2000lx
Configurando ambiente ltsp_4.2_com_mt1000_lx_ta2000lx
 
Certificação lpi 1 101 - 102 v2 (Linux Professional Institute)
Certificação lpi 1 101 - 102 v2 (Linux Professional Institute)Certificação lpi 1 101 - 102 v2 (Linux Professional Institute)
Certificação lpi 1 101 - 102 v2 (Linux Professional Institute)
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - Nagios
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores Linux
 
Monitoramento de Redes com Nagios
Monitoramento de Redes com NagiosMonitoramento de Redes com Nagios
Monitoramento de Redes com Nagios
 
Comandos linux
Comandos linux Comandos linux
Comandos linux
 
Aula14 vsftp de-introopenldap
Aula14 vsftp de-introopenldapAula14 vsftp de-introopenldap
Aula14 vsftp de-introopenldap
 
Seguranca em Servidores Linux
Seguranca em Servidores LinuxSeguranca em Servidores Linux
Seguranca em Servidores Linux
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente Web
 
Workshop Slackware 12.1 - Tiago Biazus
Workshop Slackware 12.1 - Tiago BiazusWorkshop Slackware 12.1 - Tiago Biazus
Workshop Slackware 12.1 - Tiago Biazus
 
Dhcp com controle_ip_compartilhamento
Dhcp com controle_ip_compartilhamentoDhcp com controle_ip_compartilhamento
Dhcp com controle_ip_compartilhamento
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneos
 
Apache
ApacheApache
Apache
 
Ferramentas GPL para a segurança de Redes de Computadores - Vanderlei Pollon
Ferramentas GPL para a segurança de Redes de Computadores - Vanderlei PollonFerramentas GPL para a segurança de Redes de Computadores - Vanderlei Pollon
Ferramentas GPL para a segurança de Redes de Computadores - Vanderlei Pollon
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 

Destaque

Tutorial de instalacao_do_zabbix_2.0.0
Tutorial de instalacao_do_zabbix_2.0.0Tutorial de instalacao_do_zabbix_2.0.0
Tutorial de instalacao_do_zabbix_2.0.0Roberto Castro
 
Livropfsense2 0ptbr-120227112435-phpapp02
Livropfsense2 0ptbr-120227112435-phpapp02Livropfsense2 0ptbr-120227112435-phpapp02
Livropfsense2 0ptbr-120227112435-phpapp02Roberto Castro
 
Curso hacking com BT5
Curso hacking com BT5Curso hacking com BT5
Curso hacking com BT5Cassio Ramos
 
O feng office open source
O feng office open sourceO feng office open source
O feng office open sourceRoberto Castro
 
Nfs protocol sequence_diagram
Nfs protocol sequence_diagramNfs protocol sequence_diagram
Nfs protocol sequence_diagramRoberto Castro
 
Servidor de Autenticação Centralizada com OpenLDAP - Thiago Finardi
Servidor de Autenticação Centralizada com OpenLDAP - Thiago FinardiServidor de Autenticação Centralizada com OpenLDAP - Thiago Finardi
Servidor de Autenticação Centralizada com OpenLDAP - Thiago FinardiTchelinux
 

Destaque (8)

Pentest conisli07
Pentest conisli07Pentest conisli07
Pentest conisli07
 
Tutorial de instalacao_do_zabbix_2.0.0
Tutorial de instalacao_do_zabbix_2.0.0Tutorial de instalacao_do_zabbix_2.0.0
Tutorial de instalacao_do_zabbix_2.0.0
 
Livropfsense2 0ptbr-120227112435-phpapp02
Livropfsense2 0ptbr-120227112435-phpapp02Livropfsense2 0ptbr-120227112435-phpapp02
Livropfsense2 0ptbr-120227112435-phpapp02
 
Curso hacking com BT5
Curso hacking com BT5Curso hacking com BT5
Curso hacking com BT5
 
O feng office open source
O feng office open sourceO feng office open source
O feng office open source
 
Autenticação Centralizada
Autenticação CentralizadaAutenticação Centralizada
Autenticação Centralizada
 
Nfs protocol sequence_diagram
Nfs protocol sequence_diagramNfs protocol sequence_diagram
Nfs protocol sequence_diagram
 
Servidor de Autenticação Centralizada com OpenLDAP - Thiago Finardi
Servidor de Autenticação Centralizada com OpenLDAP - Thiago FinardiServidor de Autenticação Centralizada com OpenLDAP - Thiago Finardi
Servidor de Autenticação Centralizada com OpenLDAP - Thiago Finardi
 

Semelhante a Configuring OpenVPN with Static Keys

Tutorial open vpn_setup ssh tunel
Tutorial open vpn_setup ssh tunelTutorial open vpn_setup ssh tunel
Tutorial open vpn_setup ssh tunelManim Edições
 
VPN usando OPENVPN - Rafael Padilha da silva(DELETE)
VPN usando OPENVPN - Rafael Padilha da silva(DELETE)VPN usando OPENVPN - Rafael Padilha da silva(DELETE)
VPN usando OPENVPN - Rafael Padilha da silva(DELETE)Tchelinux
 
Datacenter na nuvem
Datacenter na nuvemDatacenter na nuvem
Datacenter na nuvemIgnacio Nin
 
Personalizacao Do Sistema E Servicos
Personalizacao Do Sistema E ServicosPersonalizacao Do Sistema E Servicos
Personalizacao Do Sistema E Servicosarturramisio
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalaçãoLuís Eduardo
 
Livro pfsense 2.0 pt br
Livro pfsense 2.0 pt brLivro pfsense 2.0 pt br
Livro pfsense 2.0 pt brDejean Machado
 
PFSense - Configuração e Instalação PT-BR
PFSense - Configuração e Instalação PT-BRPFSense - Configuração e Instalação PT-BR
PFSense - Configuração e Instalação PT-BRHeber Gutenberg
 
Livro do pfsense 2.0
Livro do pfsense 2.0Livro do pfsense 2.0
Livro do pfsense 2.0SoftD Abreu
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxThiago Paes
 
Segurança da Informação - Firewall OpenBSD PF
Segurança da Informação - Firewall OpenBSD PFSegurança da Informação - Firewall OpenBSD PF
Segurança da Informação - Firewall OpenBSD PFLuiz Arthur
 
Alta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdAlta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdFrederico Madeira
 
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Eliel Simoncelo
 

Semelhante a Configuring OpenVPN with Static Keys (20)

Tutorial open vpn_setup ssh tunel
Tutorial open vpn_setup ssh tunelTutorial open vpn_setup ssh tunel
Tutorial open vpn_setup ssh tunel
 
VPN usando OPENVPN - Rafael Padilha da silva(DELETE)
VPN usando OPENVPN - Rafael Padilha da silva(DELETE)VPN usando OPENVPN - Rafael Padilha da silva(DELETE)
VPN usando OPENVPN - Rafael Padilha da silva(DELETE)
 
Unidade7 roteiro
Unidade7 roteiroUnidade7 roteiro
Unidade7 roteiro
 
Datacenter na nuvem
Datacenter na nuvemDatacenter na nuvem
Datacenter na nuvem
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Personalizacao Do Sistema E Servicos
Personalizacao Do Sistema E ServicosPersonalizacao Do Sistema E Servicos
Personalizacao Do Sistema E Servicos
 
PHP e Redis
PHP e RedisPHP e Redis
PHP e Redis
 
Squid proxy
Squid proxySquid proxy
Squid proxy
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalação
 
Livro pfsense 2.0 pt br
Livro pfsense 2.0 pt brLivro pfsense 2.0 pt br
Livro pfsense 2.0 pt br
 
PFSense - Configuração e Instalação PT-BR
PFSense - Configuração e Instalação PT-BRPFSense - Configuração e Instalação PT-BR
PFSense - Configuração e Instalação PT-BR
 
Livro pfsense 2.0 pt br
Livro pfsense 2.0 pt brLivro pfsense 2.0 pt br
Livro pfsense 2.0 pt br
 
Livro do pfsense 2.0
Livro do pfsense 2.0Livro do pfsense 2.0
Livro do pfsense 2.0
 
Protocólo FTP
Protocólo FTPProtocólo FTP
Protocólo FTP
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
Segurança da Informação - Firewall OpenBSD PF
Segurança da Informação - Firewall OpenBSD PFSegurança da Informação - Firewall OpenBSD PF
Segurança da Informação - Firewall OpenBSD PF
 
Sos final
Sos finalSos final
Sos final
 
Alta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdAlta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e Drbd
 
SSL no apache
SSL no apacheSSL no apache
SSL no apache
 
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
 

Configuring OpenVPN with Static Keys

  • 1.
  • 2. Linux Network Servers OpenVPN www.4linux.com.br 2 / 34
  • 3. CONCEITO DE VPN www.4linux.com.br 3 / 34
  • 4. CONCEITO ➔ O que é VPN? O surgimento da VPN se deve a necessidade de se utilizar redes de comunicação não confiáveis, como a Internet para trafegar informações de forma segura. A Virtual Private Network no passado já esteve associada a serviços remotos de conectividade, como a rede de telefonia pública comutada (RTPC) ou os PVCs (Permanent Virtual Circuits/Channel) do Frame Relay. A VPN utiliza protocolos de tunelamento e procedimentos de encriptação, garantindo a integridade e autenticidade dos dados. Com a VPN é possível interligar duas ou mais redes, em diferente tipos de sistemas operacionais. www.4linux.com.br 4 / 34
  • 5. CONFIGURANDO OPENVPN COM CHAVE ESTÁTICA www.4linux.com.br 5 / 34
  • 6. CONFIGURANDO O SERVIDOR Nesta configuração, vamos usar chaves estáticas, que é a forma mais simples de configurar a VPN. Vamos gerar uma chave que será usada tanto pelo servidor quanto pelo cliente. # aptitude install openvpn # openvpn --genkey --secret /etc/openvpn/chave www.4linux.com.br 6 / 34
  • 7. CONFIGURANDO O SERVIDOR # vim /etc/openvpn/server.conf dev tun ifconfig 10.0.0.1 10.0.0.2 secret /etc/openvpn/chave port 5000 comp-lzo verb 4 keepalive 10 120 persist-key persist-tun float www.4linux.com.br 7 / 34
  • 8. CONFIGURANDO O SERVIDOR dev tun → Habilita suporte ao drive TUN/TAP; ifconfig → Cria o IP do servidor (10.0.0.1) com suporte ao IP do cliente (10.0.0.2); secret → Comando para chamar nossa chave criptografada e o local dela; port → Define a porta que a OpenVPN vai rodar; comp-lzo → Ativa suporte a compressão; verb → Nível para depuração de erros; keepalive → Envia um ping a cada 10 segundos sem atividade e a VPN é reiniciada depois de 120 segundos sem respostas. www.4linux.com.br 8 / 34
  • 9. CONFIGURANDO O SERVIDOR persist-key → Assegura que o daemon mantenha as chaves carregadas, quando a VPN é restabelecida depois de uma queda de conexão; persist-tun → Assegura que o daemon mantenha a interface tun aberta, quando a VPN é restabelecida depois de uma queda de conexão; float → Permite que o túnel continue aberto mesmo que o endereço IP da outra máquina mude. www.4linux.com.br 9 / 34
  • 10. CONFIGURANDO O CLIENTE # aptitude install openvpn # vim /etc/openvpn/client.conf dev tun ifconfig 10.0.0.2 10.0.0.1 remote 192.168.200.1 secret /etc/openvpn/chave port 5000 comp-lzo verb 4 keepalive 10 120 persist-key persist-tun float www.4linux.com.br 10 / 34
  • 11. INICIANDO O SERVIÇO Copie o arquivo chave que está em /etc/openvpn/ do Servidor para o /etc/openvpn do cliente. No servidor: # /etc/init.d/openvpn start No cliente: # /etc/init.d/openvpn start www.4linux.com.br 11 / 34
  • 12. INICIANDO O SERVIÇO No servidor: # ifconfig tun0 Link encap:Não Especificado Endereço de HW 00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet end.: 10.0.0.1 P-a-P:10.0.0.2 No cliente: # ifconfig tun0 Link encap:Não Especificado Endereço de HW 00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet end.: 10.0.0.2 P-a-P:10.0.0.1 www.4linux.com.br 12 / 34
  • 13. CONFIGURANDO OPENVPN COM CERTIFICADOS www.4linux.com.br 13 / 34
  • 14. MELHORANDO A SEGURANÇA A OpenVPN oferece vários mecanismos para adicionar camadas adicionais de segurança, como por exemplo rodar em chroot, uso de conexões TLSs, certificados, uso de chaves com maiores bits. Todas essas camadas previnem ataques como “Man in the Middle”, “DoS”, “Flooding”, “Port scanning” e “Buffer overflow”. www.4linux.com.br 14 / 34
  • 15. OPENVPN SEM PRIVILÉGIO DE ROOT Adicione a configuração no servidor e cliente:, as opções “user” e “group” para que o OpenVPN seja executado como usuário nobody e grupo nogroup. # vim /etc/openvpn/server.conf # vim /etc/openvpn/client.conf No final do arquivo coloque: user nobody group nogroup www.4linux.com.br 15 / 34
  • 16. Tls-auth HMAC Você pode adicionar uma assinatura que será verificada antes do processamento de todos os pacotes UDP Em nossa . configuração do servidor vamos habilitar as seguintes opções: tls-auth → Habilita o controle de conexões tls; tls-server → Ajuda a bloquear ataques DoS e flooding na porta do OpenVPN; ca → Certificado de autoridade (CA) que usa as bibliotecas do OpenSSL; cert → Certificado do servidor; key → Chave RSA de 2048 do servidor; dh → Parâmetros Diffie-Hellman utilizado para a troca das chaves criptografadas durante a execução; cipher → Define um tipo de criptografia maior. www.4linux.com.br 16 / 34
  • 17. Tls-auth HMAC Para gerar os certificados e chaves o OpenVPN traz junto a sua instalação, uma série de scripts chamados “easy-rsa”. Eles podem ser encontrados em /usr/share/doc/openvpn/examples/easy-rsa/2.0/ # ls /usr/share/doc/openvpn/examples/easy-rsa/2.0/ www.4linux.com.br 17 / 34
  • 18. Tls-auth HMAC Veja que na lista de scripts cada um, tem uma função especifica para criação de certificados e chaves. Vamos copiar o diretório com os scripts para nossa instalação do OpenVPN # cp -a /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/ Acesse o diretório com os scripts copiados: # cd /etc/openvpn/2.0 www.4linux.com.br 18 / 34
  • 19. Tls-auth HMAC Crie o subdiretório onde serão armazenadas as chaves e certificado: # mkdir keys Gerando certificado CA e chave RSA Utilizando os scripts vamos gerar os certificados e chaves, que serão utilizados em nossa configuração do OpenVPN. www.4linux.com.br 19 / 34
  • 20. GERANDO CERTIFICADO Instale o pacote openssl: # aptitude install openssl # vim vars export KEY_SIZE=2048 export KEY_COUNTRY="BR" export KEY_PROVINCE="SP" export KEY_CITY="SaoPaulo" export KEY_ORG="DEXTER" export KEY_EMAIL="root@dexter.com.br" www.4linux.com.br 20 / 34
  • 21. GERANDO CERTIFICADO Use a sequência de comandos abaixo para gerar o certificado de autoridade: # source vars # ./clean-all # ./build-ca Preencha as informações do certificado: Country Name (2 letter code) [BR]:BR State or Province Name (full name) [SP]:SP Locality Name (eg, city) [SaoPaulo]:SaoPaulo Organization Name (eg, company) [DEXTER]:DEXTER Organizational Unit Name (eg, section) []:DEXTER Common Name (eg, your name or your server's hostname) [DEXTER CA]: Name []: Email Address [root@dexter.com.br]:root@dexter.com.br www.4linux.com.br 21 / 34
  • 22. GERANDO CERTIFICADO ./build-key-server server Generating a 2048 bit RSA private key ..............................................................................+++ ..........+++ writing new private key to 'server.key' Country Name (2 letter code) [BR]:BR State or Province Name (full name) [SP]:SP Locality Name (eg, city) [SaoPaulo]:SaoPaulo Organization Name (eg, company) [DEXTER]:DEXTER Organizational Unit Name (eg, section) []:DEXTER Common Name (eg, your name or your server's hostname) [server]: Name []: Email Address [root@dexter.com.br]:root@dexter.com.br www.4linux.com.br 22 / 34
  • 23. GERANDO CERTIFICADO Using configuration from /etc/openvpn/2.0/openssl.cnf The Subject's Distinguished Name is as follows countryName :PRINTABLE:'BR' stateOrProvinceName :PRINTABLE:'SP' localityName :PRINTABLE:'SaoPaulo' organizationName :PRINTABLE:'DEXTER' organizationalUnitName:PRINTABLE:'DEXTER' commonName :PRINTABLE:'server' emailAddress :IA5STRING:'root@dexter.com.br' Certificate is to be certified until Jun 25 01:31:25 2021 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 www.4linux.com.br 23 / 34
  • 24. GERANDO CERTIFICADO Liste o conteúdo do subdiretório keys e verifique o arquivo de certificado do servidor (server.csr), o arquivo da chave do servidor (server.key) e o certificado auto assinado (server.crt). Gerando parâmetros Diffie-Hellman Os parâmetros Diffie-Hellman são utilizados para a troca das chaves criptografadas durante a execução do OpenVPN. Use o script abaixo para gerar os parâmetros: # ./build-dh www.4linux.com.br 24 / 34
  • 25. CONFIGURANDO O SERVIDOR Liste o conteúdo do subdiretório keys e verifique o arquivo com os parâmetros Diffie-Hellman (dh2048.pem). Configurando o servidor OpenVPN Com os certificados e chaves gerados, abra o arquivo do servidor e adicione as opções abaixo: # vim /etc/openvpn/server.conf www.4linux.com.br 25 / 34
  • 26. CONFIGURANDO O SERVIDOR # vim /etc/openvpn/server.conf dev tun ifconfig 10.0.0.1 10.0.0.2 port 5000 comp-lzo verb 4 keepalive 10 120 persist-key persist-tun float user nobody group nogroup tls-server tls-auth chave 0 www.4linux.com.br 26 / 34
  • 27. CONFIGURANDO O SERVIDOR Continuação: # vim /etc/openvpn/server.conf ca 2.0/keys/ca.crt cert 2.0/keys/server.crt key 2.0/keys/server.key dh 2.0/keys/dh2048.pem cipher DES-EDE3-CBC www.4linux.com.br 27 / 34
  • 28. CONFIGURANDO O CLIENTE Ainda na máquina servidor crie a chave e o certificado para a máquina cliente, com o hostname da maquina cliente. # cd /etc/openvpn/2.0 # ./build-key client Country Name (2 letter code) [BR]:BR State or Province Name (full name) [SP]:SP Locality Name (eg, city) [SaoPaulo]:SaoPaulo Organization Name (eg, company) [DEXTER]:DEXTER Organizational Unit Name (eg, section) []:DEXTER Common Name (eg, your name or your server's hostname) [client]: Name []: Email Address [root@dexter.com.br]:root@dexter.com.br www.4linux.com.br 28 / 34
  • 29. CONFIGURANDO O CLIENTE The Subject's Distinguished Name is as follows countryName :PRINTABLE:'BR' stateOrProvinceName :PRINTABLE:'SP' localityName :PRINTABLE:'SaoPaulo' organizationName :PRINTABLE:'DEXTER' organizationalUnitName:PRINTABLE:'DEXTER' commonName :PRINTABLE:'client' emailAddress :IA5STRING:'root@dexter.com.br' Certificate is to be certified until Jun 25 01:51:26 2021 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 www.4linux.com.br 29 / 34
  • 30. CONFIGURANDO O CLIENTE Faça a copia dos arquivos abaixo via ssh para a máquina cliente. # cd /etc/openvpn/2.0/keys # scp client.key client.crt ca.crt root@IP_DO_CLIENTE:/etc/openvpn www.4linux.com.br 30 / 34
  • 31. CONFIGURANDO O CLIENTE # vim /etc/openvpn/client.conf dev tun ifconfig 10.0.0.2 10.0.0.1 remote 192.168.200.1 port 5000 comp-lzo verb 4 keepalive 10 120 persist-key persist-tun float user nobody group nogroup ns-cert-type server www.4linux.com.br 31 / 34
  • 32. CONFIGURANDO O CLIENTE Continuação: # vim /etc/openvpn/client.conf tls-client tls-auth chave 1 ca ca.crt cert client.crt key client.key cipher DES-EDE3-CBC www.4linux.com.br 32 / 34
  • 33. CONFIGURANDO O CLIENTE Descrição das novas opções utilizadas: ns-cert-type → Indica que certificado foi assinado pelo servidor; tls-client → Habilita conexão TLS, ajudando a bloquear ataques DoS e flooding na porta do OpenVPN. No servidor: # /etc/init.d/openvpn start Depos no cliente: # /etc/init.d/openvpn start www.4linux.com.br 33 / 34
  • 34. CHECANDO CONEXÃO No servidor: # ifconfig tun0 Link encap:Não Especificado Endereço de HW 00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet end.: 10.0.0.1 P-a-P:10.0.0.2 Masc:255.255.255.255 No cliente: # ifconfig tun0 Link encap:Não Especificado Endereço de HW 00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet end.: 10.0.0.2 P-a-P:10.0.0.1 Masc:255.255.255.255 www.4linux.com.br 34 / 34