Sie sind auf Seite 1von 101

Contruindo VPNs

Virtual Private Networks


Introdução à VPN

Conceituação
VPN - Virtual Private Network

 O conceito de VPN surgiu a partir da necessidade


de se utilizar redes de comunicação não confiáveis
(por exemplo, a Internet) para trafegar informações
de forma segura.
VPN - Virtual Private Network

 Uma VPN proporciona conexões, nas quais o


acesso e a troca de informações, somente
são permitidas a usuários, que estão em
redes distintas que façam parte de uma
mesma comunidade de interesse (uma
empresa).
VPN - Virtual Private Network

 Uma VPN pode interligar duas ou mais redes


via Internet ou através de um link privado, o
que possibilita estabelecer um túnel que
passa através dessa VPN.
VPN - Virtual Private Network

 Uma rede VPN utiliza um padrão de


criptografia mundial, criado pelo IETF
(Internet Engineering Task Force), o que
torna todo o tráfego de informação nesse
túnel, seguro.
Tunelamento

 VPN se baseia na tecnologia de tunelamento.

 Consiste em encapsular um protocolo dentro de


outro.

 O protocolo de tunelamento encapsula o protocolo


que será transportado, e o cabeçalho do protocolo
que encapsulou vai fornecer o destino do pacote do
protocolo transportado.
Tunelamento

 Um quadro Ethernet, contendo um IP na sua carga


útil, saído de um host 1 na rede Ethernet é recebido
por um roteador multiprotocolo, extremidade numa
rede WAN.
 O roteador remove esse pacote IP, encapsula
dentro de um pacote camada de rede da WAN,
enviando-o até o roteador multiprotocolo na outra
extremidade da rede WAN.
 O roteador remove o pacote IP recebido e envia a
um host 2 na rede Ethernet remota.
VPN - Virtual Private Network

 No caso de VPN, é acrescentado a criptografia,


antes do tunelamento.

 Tunelamento VPN =
[ pacote xxx ]
+ [ Criptografia do pacote xxx]
+ [ Encapsulamento do pacote
criptografado sobre IP]
VPN - Virtual Private Network

 Exemplo:
Se uma empresa usa redes Novell com
o protocolo IPX, e quer que as outras
filiais utilizem o mesmo servidor Novell,
os pacotes IPX devem ser
criptografados e encapsulados dentro
do protocolo IP.
VPN - Virtual Private Network

 Rede Novell

 Tunelamento VPN =
[ pacote IPX ]
+ [ Criptografia ]
+ [ Encapsulamento sobre IP]
VPN - Virtual Private Network

 Túnel é a denominação do caminho lógico


percorrido pelos pacotes encapsulados.

 A rede VPN poder ser construída sobre uma


rede pública (Internet) ou privada.
Aplicações para VPN

 Três aplicações ditas mais importantes para


as VPNs:

 Acesso remoto via Internet.

 Conexão de LANs via Internet.

 Conexão de computadores numa Intranet.


Acesso remoto via Internet
Fonte: RNP
Acesso remoto via Internet

 O acesso remoto a redes corporativas


através da Internet pode ser viabilizado com
a VPN através da ligação local a algum
provedor de acesso (Internet Service
Provider - ISP).
Acesso remoto via Internet

 A estação remota disca para o provedor de


acesso, conectando-se à Internet e o
software de VPN cria uma rede virtual
privada entre o usuário remoto e o servidor
de VPN corporativo através da Internet.
Conexão de LANs via Internet
Fonte: RNP
Conexão de LANs via Internet
Fonte: RNP

 Uma solução que substitui as conexões entre


LANs através de circuitos dedicados de
longa distância é a utilização de circuitos
dedicados locais interligando-as à Internet.

 O software de VPN assegura esta


interconexão formando a WAN corporativa.
Conexão de Computadores numa Intranet
Fonte: RNP
Conexão de Computadores numa Intranet

 Em algumas organizações, existem dados


confidenciais cujo acesso é restrito a um
pequeno grupo de usuários.

 Nestas situações, redes locais


departamentais são implementadas
fisicamente separadas da LAN corporativa.
Conexão de Computadores numa Intranet

 Esta solução, apesar de garantir a


"confidencialidade" das informações, cria
dificuldades de acesso a dados da rede
corporativa por parte dos departamentos
isolados.
Conexão de Computadores numa Intranet

 As VPNs possibilitam a conexão física entre redes


locais, restringindo acessos indesejados através da
inserção de um servidor VPN entre elas.

 Observe que o servidor VPN não irá atuar como um


roteador entre a rede departamental e o resto da
rede corporativa uma vez que o roteador
possibilitaria a conexão entre as duas redes
permitindo o acesso de qualquer usuário à rede
departamental sensitiva.
Conexão de Computadores numa Intranet

 Com o uso da VPN o administrador da rede


pode definir quais usuários estarão
credenciados a atravessar o servidor VPN e
acessar os recursos da rede departamental
restrita.
Conexão de Computadores numa Intranet

 Adicionalmente, toda comunicação ao longo


da VPN pode ser criptografada assegurando
a "confidencialidade" das informações.

 Os demais usuários não credenciados


sequer enxergarão a rede departamental.
Requisitos básicos

 Autenticação de usuários.

 Gerenciamento de endereço.

 Criptografia de dados.

 Gerenciamento de chaves.

 Suporte a múltiplos protocolos.


Autenticação de Usuários

 Verificação da identidade do usuário,


restringindo o acesso às pessoas
autorizadas. Deve dispor de mecanismos de
auditoria, provendo informações referentes
aos acessos efetuados - quem acessou, o
quê e quando foi acessado.
Gerenciamento de Endereço

 O endereço do cliente na sua rede privada


não deve ser divulgado, devendo-se adotar
endereços fictícios para o tráfego externo.
Criptografia de Dados

 Os dados devem trafegar na rede pública ou


privada num formato cifrado e, caso sejam
interceptados por usuários não autorizados,
não deverão ser decodificados, garantindo a
privacidade da informação.

 O reconhecimento do conteúdo das


mensagens deve ser exclusivo dos usuários
autorizados.
Gerenciamento de Chaves

 O uso de chaves que garantem a segurança


das mensagens criptografadas deve
funcionar como um segredo compartilhado
exclusivamente entre as partes envolvidas.

 O gerenciamento de chaves deve garantir a


troca periódica das mesmas, visando manter
a comunicação de forma segura.
Suporte a Múltiplos Protocolos

 Com a diversidade de protocolos existentes,


torna-se bastante desejável que uma VPN
suporte protocolos usadas nas redes
públicas, tais como IP (Internet Protocol), IPX
(Internetwork Packet Exchange), .
Tunelamento
Tunelamento em Nível 2 –
Enlace - (PPP sobre IP)

 O objetivo é transportar protocolos de nível 3,


tais como o IP e IPX na Internet.

 Os protocolos utilizam quadros como


unidade de troca, encapsulando os pacotes
da camada 3 (como IP/IPX) em quadros PPP
(Point-to-Point Protocol).
Como exemplos podemos citar:

 PPTP (Point-to-Point Tunneling Protocol)


da Microsoft permite que o tráfego IP, IPX e
NetBEUI sejam criptografados e
encapsulados para serem enviados através
de redes IP privadas ou públicas como a
Internet.
Como exemplos podemos citar:

 L2TP (Layer 2 Tunneling Protocol) da IETF


(Internet Engineering Task Force).

Permite que o tráfego IP, IPX e NetBEUI sejam


criptografados e enviados através de canais de
comunicação de datagrama ponto a ponto tais
como IP, X25, Frame Relay ou ATM.

 L2F (Layer 2 Forwarding) da Cisco é utilizada para


VPNs discadas.
Tunelamento em Nível 3 - Rede - (IP
sobre IP)

 Encapsulam pacotes IP com um cabeçalho


adicional deste mesmo protocolo antes de enviá-
los através da rede.

 O IP Security Tunnel Mode (IPSec) da IETF permite


que pacotes IP sejam criptografados e
encapsulados com cabeçalho adicional deste
mesmo protocolo para serem transportados numa
rede IP pública ou privada.
Tunelamento em Nível 3 - Rede - (IP
sobre IP)

 O IPSec é um protocolo desenvolvido


para IPv6, devendo, no futuro, se constituir
como padrão para todas as formas de VPN
caso o IPv6 venha de fato substituir o IPv4.

 O IPSec sofreu adaptações possibilitando,


também, a sua utilização com o IPv4.
Tipos de túneis

 Os túneis podem ser criados de duas


diferentes formas - voluntárias e
compulsórias:

 Túnel Voluntário

 Túnel Compulsório
Túnel Voluntário

 O computador do usuário funciona como


uma das extremidades do túnel e,
também, como cliente do túnel e emite uma
solicitação VPN para configurar e criar um
túnel voluntário entre duas máquinas, uma
máquina em cada rede privada, e que são
conectadas via Internet.
VPN entre duas máquinas
Túnel Compulsório

 O computador do usuário não funciona como


extremidade do túnel.

 Um servidor de acesso remoto, localizado entre o


computador do usuário e o servidor do túnel,
funciona como uma das extremidades e atua
como o cliente do túnel.

 Um servidor de acesso discado VPN configura e


cria um túnel compulsório.
Tunelamento compulsório
Tunelamento compulsório

 O computador ou dispositivo de rede que


provê o túnel para o computador-cliente é
conhecido de diversas formas:

 FEP (Front End Processor) no PPTP,


 LAC (L2TP Access Concentrator) no L2TP
 IP Security Gateway no caso do IPSec.
Tunelamento compulsório

 Doravante, adotaremos o termo FEP para


denominar esta funcionalidade - ser capaz
de estabelecer o túnel quando o cliente
remoto se conecta.
Tunelamento compulsório

 No caso da Internet, o cliente remoto faz


uma conexão discada para um túnel
habilitado pelo servidor de acesso no
provedor (ISP).
Tunelamento compulsório

 Por exemplo, uma companhia pode ter um


contrato com uma ou mais provedores para
disponibilizar um conjunto de FEPs em
âmbito nacional.
Tunelamento compulsório

 Estas FEPs podem estabelecer túneis


sobre a Internet para um servidor de túnel
conectado à rede corporativa privada,
possibilitando a usuários remotos o acesso à
rede corporativa através de uma simples
ligação local.
Tunelamento compulsório

 Esta configuração é conhecida como


tunelamento compulsório porque o cliente é
compelido a usar um túnel criado pelo
FEP.

 Uma vez que a conexão é estabelecida, todo


o tráfego "de/para" o cliente é
automaticamente enviado através do túnel.
Tunelamento compulsório

 No tunelamento compulsório, o cliente faz


uma conexão PPP.

 Um FEP pode ser configurado para


direcionar todas as conexões discadas para
um mesmo servidor de túnel ou,
alternativamente, fazer o tunelamento
individual baseado na identificação do
usuário ou no destino da conexão.
Tunelamento compulsório

 Diferente dos túneis individualizados criados


no tunelamento voluntário, um túnel entre o
FEP e o servidor de túnel pode ser
compartilhado por múltiplos clientes
discados.
Tunelamento compulsório

 Quando um cliente disca para o servidor de


acesso (FEP) e já existe um túnel para o
destino desejado, não se faz necessária a
criação de um novo túnel redundante.

 O próprio túnel existente pode transportar,


também, os dados deste novo cliente.
Tunelamento compulsório

 No tunelamento compulsório com múltiplos


clientes, o túnel só é finalizado no momento
em que o último usuário do túnel se
desconecta.
IPSEC – Internet Protocol Security

 O IPSec é um protocolo padrão de camada 3


projetado pelo IETF que oferece
transferência segura de informações fim a
fim através de rede IP pública ou privada.
IPSEC – Internet Protocol Security

 Essencialmente, ele pega pacotes IP


privados, realiza funções de segurança de
dados como criptografia, autenticação e
integridade, e então encapsula esses
pacotes protegidos em outros pacotes IP
para serem transmitidos.
IPSEC – Internet Protocol Security

 As funções de gerenciamento de chaves


também fazem parte das funções do IPSec.
IPSEC – Internet Protocol Security

 Tal como os protocolos de nível 2, o IPSec


trabalha como uma solução para interligação
de redes e conexões via linha discada.

 Ele foi projetado para suportar múltiplos


protocolos de criptografia possibilitando que
cada usuário escolha o nível de segurança
desejado.
IPSEC – Internet Protocol Security

 Requisitos de segurança

 Autenticidade

 Integridade

 Confidencialidade
IPSEC – Internet Protocol Security

 Para implementar estas características, o


IPSec é composto de 3 mecanismos
adicionais:

 AH - Autentication Header.
 ESP - Encapsulation Security Payload.
 ISAKMP - Internet Security Association and
Key Management Protocol.
IPSec em servidores Linux

 O Ipsec segue normas em projetos de VPN e


é muito ultizado para vc fazer VPN entre
servidores Linux e roteadores que prove
serviços de VPN.
Protocolos de Segurança para VPN

 IPSec (IP Security)

 SSL (Secure Sockets Layer)

 TLS (Transport Layer Secure)


Segurança de Rede na camada de
transporte com SSL/TLS

FTP
SMTP HTTP NNTP, ...

SSL / TLS

TCP / UDP

IP
Segurança de Rede na camada de rede
com IPSec

FTP
SMTP HTTP NNTP, ...

TCP / UDP

IP / IPSec
Construindo VPN com
OpenVPN
OpenVPN

 OpenVPN é uma ferramenta que implementa


uma rede VPN segura, usando a camada de
enlace ou a camada de rede, usando o
padrão da indústria SSL/TLS.
OpenVPN

 OpenVPN suporta métodos de autenticação


para o cliente baseados sobre:

 certificados digitais,

 smart cards,

 username/password credentials.
OpenVPN

 Permite acesso para um usuário ou permite


uma política de controle de acesso específica
de grupo, usando regras de firewall aplicadas
à interface virtual VPN.
OenVPN 2.0

 OpenVPN 2.0 expande as capacidades de


OpenVPN 1.x.

 Oferecendo um modo cliente/servidor


escalável, permitindo múltiplos clientes para
conectar a um único servidor OpenVPN
sobre uma única porta TCP ou UDP.
Pode-se construir ...

 Uma simples VPN como um gateway que


pode manipular um único cliente.

 Estabelecer um gateway cliente/servidor


VPN, escalável, usando uma X509 PKI
(infra-estrutura de chaves públicas usando
certificados e chaves privadas).
Produtos SSL/IPSec

 SSL é o protocolo mais amplamente distribuído


quando se trata de comércio eletrônico.

 Netscape e Internet Explorer suportam SSL.

 Windows 2000 / XP usam IPSec para contruir VPN.

 RSA : BSAFE Cripto-C/J (IPSec) e SSL-C/J

 Distribuições Linux :
SSL para HTTP, FTP, SMTP, NNTP.
Virtual Private Network em ADSL
Objetivo

 O objetivo é mostrar de forma rápida e simples a


configuração de uma VPN baseada em Linux
utilizando o OpenVPN como ferramenta.

 Sendo que este é um software estável, simples de


configurar, além de ser um projeto que está sempre
em desenvolvimento.
Exemplo de VPN

 Vamos considerar o caso de interligar as


redes internas de uma empresa (matriz e
filial), sendo que ambas se localizam em
lugares diferentes e bem distantes.
Exemplo de VPN

 Que cada empresa possui uma conexão


ADSL rodando Linux como servidor e suas
respectivas redes internas conforme o
exemplo hipotético abaixo:
Redes na empresa

 Matriz
ADSL com IP 200.217.222.222
LAN com a classe 192.168.1.0/24

 Filial
ADSL com ip 200.141.64.33
LAN com a classe 192.168.2.0/24
Matriz e Filial
Objetivo

 Nesta VPN, teremos como principal objetivo


fazer com que qualquer máquina da rede
interna da Matriz se conecte diretamente
com qualquer máquina da rede interna da
Filial (ou vice versa), deixando a impressão
de que ambas as redes estão no mesmo
meio físico.
Instalando OpenVPN

 Antes de começar, devemos checar


primeiramente se o driver TUN/TAP se
encontra no kernel.

 Caso o mesmo não se encontre,


precisaremos ativar esse driver dentro da
opção "Network Device Support", conforme
exemplo que segue:
[*] Network device support
ARCnet devices --->
< > Dummy net driver support
< > Bonding driver support
< > EQL (serial line load balancing) support
<*> Universal TUN/TAP device driver support
< > Ethertap network tap (OBSOLETE)
< > General Instruments Surfboard 1000
Ethernet (10 or 100Mbit) --->
Ethernet (1000 Mbit) --->
[ ] FDDI driver support
[ ] HIPPI driver support (EXPERIMENTAL)
<*> PPP (point-to-point protocol) support
< > SLIP (serial line) support
Wireless LAN (non-hamradio) --->
Token Ring devices --->
[ ] Fibre Channel driver support
< > Red Creek Hardware VPN (EXPERIMENTAL)
< > Traffic Shaper (EXPERIMENTAL)
Wan interfaces --->
Notas

 Não é abordado aqui, exemplos de


compilação de kernel, bem como a
configuração de conexão ADSL no Linux.

 Nas distros RedHat 9.0, Slackware 9.1, 10.0


e 10.1 não foi preciso mexer no kernel.

 Já na Slackware 9.0 tem-se que recompilar o


kernel com suporte ao driver TUN/TAP.
Pacote lzo-1.08
 Baixe os pacotes lzo-1.08.tar.gz (biblioteca de compressão de
dados) e o pacote openvpn-1.5.0.tar.gz.

 1º Passo

$ tar -xzvf lzo-1.08.tar.gz


$ cd lzo-1.08
$ ./configure
$ make
$ su
# make install
Instalando OpenVPN 1.5.0
 2º Passo

$ tar -xzvf openvpn-1.5.0.tar.gz


$ cd openvpn-1.5.0
$ ./configure
$ make
$ su
# make install

 Pronto. O OpenVPN já está instalado em nosso sistema com


suporte à biblioteca de compressão de dados.

 Agora só resta a configuração.


Configurando a VPN na Matriz:

 O OpenVPN pode operar com 3 tipos de


criptografia:

 Nenhuma criptografia (apenas o túnel),

 Criptografia com chaves estáticas (este caso).

 No modo TLS, em que as chaves são trocadas


periodicamente.
Configurando a VPN na Matriz:

 1 - Execute os seguintes comandos:

# mkdir /etc/openvpn

Criamos o diretório onde estarão todos os


arquivos de configuração.
Configurando a VPN na Matriz:
 # openvpn --genkey -secret /etc/openvpn/chave

Foi gerada uma chave de criptografia com o nome de chave


(pode ser qualquer nome de arquivo) dentro do diretório
/etc/openvpn.

# cat /etc/openvpn/chave

Só para visualizarmos o conteúdo da chave que geramos.

# touch /etc/openvpn/matriz.conf

Crie esse arquivo com o seguinte conteúdo:


Configurando a VPN na Matriz:
Arquivo criado ...
 # Usar como interface o driver TUN
dev tun
# 10.0.0.1 ip que será assumido na matriz
# 10.0.0.2 ip remoto, ou seja, esse será o ip da filial
ifconfig 10.0.0.1 10.0.0.2
# Entra no diretório onde se encontram os arquivos
de configuração
cd /etc/openvpn
# Indica que esse túnel possui uma chave de
criptografia
secret chave
Configurando a VPN na Matriz:
Arquivo criado ...

 # OpenVPN usa a porta 5000/UDP por


padrão.
# Cada túnel do OpenVPN deve usar
# uma porta diferente.
# O padrão é a porta 5000
port 5000
Configurando a VPN na Matriz:
Arquivo criado ...

# Usuário que rodará o daemon do


OpenVPN
user nobody
# Grupo que rodará o daemon do OpenVPN
group nobody
Configurando a VPN na Matriz:
Arquivo criado ...
 #Usa a biblioteca lzo
comp-lzo
# Envia um ping via UDP para a parte
# remota a cada 15 segundos para manter
# a conexão de pé em firewall statefull
# Muito recomendado, mesmo se você não usa
# um firewall baseado em statefull.
ping 15
# Nível de log
verb 3
Configurando a VPN na Filial:

 A parte da instalação na filial é exatamente


igual a da Matriz, é só seguir os passos
descritos no tópico instalação.

Já na parte de configuração, não muda muita


coisa também, pois o maior trabalho é
simplesmente copiar a chave que geramos
na Matriz por um canal seguro até a filial.
Configurando a VPN na Filial:

 # mkdir /etc/openvpn

 Execute os seguintes comandos. Criaremos


o mesmo diretório de configuração na filial:

# mkdir /etc/openvpn
 Copie a chave gerada na matriz para a filial com
seguinte comando:

# scp /etc/openvpn/chave ip_filial:/etc/openvpn

Em seguida crie o arquivo de configuração


chamado filial.conf:

# touch /etc/openvpn/filial.conf
Arquivo de configuração

 Crie esse arquivo com o seguinte conteúdo:

# Usar como interface o driver TUN:


dev tun

# 10.0.0.1 ip que será assumido na matriz


# 10.0.0.2 ip remoto, ou seja, esse será o ip
da filial:
ifconfig 10.0.0.2 10.0.0.1
# Indica onde está o ip da Matriz (essa é a
única linha que acrescentamos
# no arquivo de configuração da filial), o resto
é tudo igual.
remote 200.217.222.222
# Entra no diretório onde se encontram os
arquivos de configuração
cd /etc/openvpn
# Indica que esse túnel possui uma chave de
criptografia:
secret chave

# OpenVPN usa a porta 5000/UDP por padrão.


# Cada túnel do OpenVPN deve usar
# uma porta diferente.
# O padrão é a porta 5000
port 5000
# Usuário que rodará o daemon do OpenVPN
user nobody
# Grupo que rodará o daemon do OpenVPN
group nobody

Usa a biblioteca lzo


comp-lzo
# Nível de log
verb 3
# Envia um ping via UDP para a parte
# remota a cada 15 segundos para manter
# a conexão de pé em firewall statefull
# Muito recomendado, mesmo se você não
usa um firewall baseado em statefull.
ping 15

# Nível de log
verb 3
Inicie a conexão na filial com o seguinte
comando:

# openvpn --config /etc/openvpn/filial.conf -


daemon

# ifconfig tun0
tun0 Link encap:Point-to-Point Protocol
inet addr:10.0.0.2 P-t-P:10.0.0.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST
MTU:1255 Metric:1
RX packets:1383257 errors:0 dropped:0 overruns:0
frame:0
TX packets:1144968 errors:0 dropped:0 overruns:0
carrier:0
collisions:0 txqueuelen:10
RX bytes:82865921 (79.0 Mb) TX bytes:383951667
(366.1 Mb)

Ok! Se aparecer algo assim, sua VPN, está configurada.


Teste pingando de uma ponta a outra:

 # ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=63 time=11.9 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=63 time=6.09 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=63 time=5.93 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=63 time=8.15 ms
64 bytes from 10.0.0.1: icmp_seq=5 ttl=63 time=6.19 ms

 Se aparecer algo assim, sua VPN já esta


funcionando.

 Agora só falta adicionarmos as


rotas para as redes internas se enxergarem.
Adicionando rotas

 Antes de adicionarmos as rotas, é


necessário ativar o roteamento no kernel
em ambas as pontas (Matriz e Filial).

 Execute os seguintes comandos na matriz e


filial:

# echo 1 > /proc/sys/net/ipv4/ip_forward


 Para adicionar a rota com destino a rede da Filial, execute de
dentro do servidor da Matriz o seguinte comando:

# route add -net 192.168.2.0/24 gw 10.0.0.2

 Para adicionar a rota com destino a rede da Matriz, execute de


dentro do servidor da Filial o seguinte comando:

# route add -net 192.168.1.0/24 gw 10.0.0.1


Agora é só testar.

 Tente pingar de dentro de uma máquina da


LAN da Matriz com destino a LAN da Filial.

 Lembrar também que temos que colocar toda


a seqüência de comandos acima no rc.local
de sua distro, para que a mesma carregue as
configurações ao iniciar o sistema
operacional.

Das könnte Ihnen auch gefallen