VPN - VirtualPrivate 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.
4.
VPN - VirtualPrivate 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).
5.
VPN - VirtualPrivate 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.
6.
VPN - VirtualPrivate 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.
7.
Tunelamento
VPN sebaseia 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.
8.
Tunelamento
Um quadroEthernet, 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.
9.
VPN - VirtualPrivate 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]
10.
VPN - VirtualPrivate 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 - VirtualPrivate 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.
13.
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 viaInternet
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).
16.
Acesso remoto viaInternet
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 LANsvia 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 Computadoresnuma 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.
21.
Conexão de Computadoresnuma 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.
22.
Conexão de Computadoresnuma 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.
23.
Conexão de Computadoresnuma 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.
24.
Conexão de Computadoresnuma 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.
25.
Requisitos básicos
Autenticaçãode usuários.
Gerenciamento de endereço.
Criptografia de dados.
Gerenciamento de chaves.
Suporte a múltiplos protocolos.
26.
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.
27.
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.
28.
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.
29.
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.
30.
Suporte a MúltiplosProtocolos
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 em Nível2 –
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).
33.
Como exemplos podemoscitar:
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.
34.
Como exemplos podemoscitar:
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.
35.
Tunelamento em Nível3 - 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.
36.
Tunelamento em Nível3 - 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.
37.
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
38.
Túnel Voluntário
Ocomputador 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.
Túnel Compulsório
Ocomputador 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
Ocomputador 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.
43.
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.
44.
Tunelamento compulsório
Nocaso da Internet, o cliente remoto faz
uma conexão discada para um túnel
habilitado pelo servidor de acesso no
provedor (ISP).
45.
Tunelamento compulsório
Porexemplo, uma companhia pode ter um
contrato com uma ou mais provedores para
disponibilizar um conjunto de FEPs em
âmbito nacional.
46.
Tunelamento compulsório
EstasFEPs 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.
47.
Tunelamento compulsório
Estaconfiguraçã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.
48.
Tunelamento compulsório
Notunelamento 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.
49.
Tunelamento compulsório
Diferentedos 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.
50.
Tunelamento compulsório
Quandoum 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.
51.
Tunelamento compulsório
Notunelamento compulsório com múltiplos
clientes, o túnel só é finalizado no momento
em que o último usuário do túnel se
desconecta.
52.
IPSEC – InternetProtocol 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.
53.
IPSEC – InternetProtocol 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.
54.
IPSEC – InternetProtocol Security
As funções de gerenciamento de chaves
também fazem parte das funções do IPSec.
55.
IPSEC – InternetProtocol 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 – InternetProtocol 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.
58.
IPSec em servidoresLinux
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.
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.
64.
OpenVPN
OpenVPN suportamétodos de autenticação
para o cliente baseados sobre:
certificados digitais,
smart cards,
username/password credentials.
65.
OpenVPN
Permite acessopara um usuário ou permite
uma política de controle de acesso específica
de grupo, usando regras de firewall aplicadas
à interface virtual VPN.
66.
OenVPN 2.0
OpenVPN2.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.
67.
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).
68.
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.
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.
71.
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.
72.
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:
73.
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
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.
76.
Instalando OpenVPN
Antesde 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:
77.
[*] Network devicesupport
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 --->
78.
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.
79.
Pacote lzo-1.08
Baixeos 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
80.
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.
81.
Configurando a VPNna 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.
82.
Configurando a VPNna Matriz:
1 - Execute os seguintes comandos:
# mkdir /etc/openvpn
Criamos o diretório onde estarão todos os
arquivos de configuração.
83.
Configurando a VPNna 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:
84.
Configurando a VPNna 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
85.
Configurando a VPNna 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
86.
Configurando a VPNna Matriz:
Arquivo criado ...
# Usuário que rodará o daemon do
OpenVPN
user nobody
# Grupo que rodará o daemon do OpenVPN
group nobody
87.
Configurando a VPNna 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
88.
Configurando a VPNna 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.
89.
Configurando a VPNna Filial:
# mkdir /etc/openvpn
Execute os seguintes comandos. Criaremos
o mesmo diretório de configuração na filial:
# mkdir /etc/openvpn
90.
Copie achave 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
91.
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
92.
# Indica ondeestá 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
93.
# Indica queesse 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
94.
# Usuário querodará 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
95.
# Envia umping 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
96.
Inicie a conexãona filial com o seguinte
comando:
# openvpn --config /etc/openvpn/filial.conf -
daemon
# ifconfig tun0
97.
tun0 Link encap:Point-to-PointProtocol
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.
98.
Teste pingando deuma 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.
99.
Adicionando rotas
Antesde 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
100.
Para adicionara 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
101.
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.
Notas do Editor
#69 É simplesmente uma conexão segura em uma rede pública (Schneier2001).
VPN é um túnel de comunicação privado e seguro entre dois ou mais dispositivos através de uma rede pública (por exemplo: Internet)
VPN é a implementação de uma rede de computadores utilizando a infra-estrutura existente na Internet para interconexão dos diversos computadores.
Para: acesso remoto, conexão de lans, conexão de computadores numa intranet (rnp)