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
SMTP
HTTP
SSL / TLS
TCP / UDP
IP
FTP
NNTP, ...
Segurança de Rede na camada de rede
com IPSec
SMTP
HTTP
TCP / UDP
IP / IPSec
FTP
NNTP, ...
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.
Download

Construindo VPN