Documente Academic
Documente Profesional
Documente Cultură
Virtual Private Network VPN
Este capítulo estuda as implementações de Redes privadas Virtuais VPN , um dos serviços
fundamentais para garantir segurança entre duas ou mais redes privadas interligada pela Internet.
1. Introdução
VPN – Virtual Private Network A Rede Privada Virtual foi criada para interligar duas redes
privadas através da Internet de forma segura. Sabemos que as máquinas com endereço IP nâo válido
podem acessar a Internet através de um Proxy ou IP masquerade, entretanto existem uma
impossibilidade técnica para que máquina de uma rede privada comuniquem com máquinas de outra
rede privada através da Internet. A VPN permite esta funcionalidade através de um tunel estabelecido
entre duas máquinas destas redes que possuam IP válidos.
Além de estabelecer comunicação entre duas redes privadas, as VPNs garantem autenticidade de
dados, sigilo de informação, controle de acesso através de criptografia do tráfego de informação entre
uma rede e outra. Esta garantia é obtida através de criptografia, ou seja, todo dado que trafegar de uma
rede para outra será criptografado independente de qual aplicação for utilizada. Então podemos
concluir que se uma pessoa executar telnet ou qualquer outra aplicação que não criptografe seu dados
de uma rede para outra estarão seguros na Internet.
2. Prérequisitos para implementação
Para implementação da VPN é necessário que as duas pontas da rede tenham IP válido, ou seja, para
interligar duas redes será necessário dois endereços válidos, para interligar três redes será necessário
três IP válidos e assim por diante.
3. Ferramentas disponíves para implementação
Existem várias ferramentas diponíveis para Linux atualmente, entre elas temos o freeswan e o
openvpn. Estas serão as ferramentas usadas neste material.
Openvpn É um serviço que roda sobre a camada de aplicação, podendo ser utilizados em
plataformas: Linux, FreeBSD, OpenBSD, NetBSD, Windows 2000/XP, Solaris e Mac OS X.
Um outro protocolo bastante utilizado em ambiente Windows é o PPTP – Point to Point Tunneling
Protocol .
4. Arquitetura de VPNs
As VPNs podem ser estruturadas de três formas :
1. Host>Host; O objetivo desta arquitetura é estabelecer apenas um canal seguro entre as duas
máquinas, pois as mesmas já devem se comunicarem.
Fig1. Diagrama de exemplo de arquitetura VPN utilizando a configuração Host>Host.
2. Host>Network; O objetivo deste é permitir um host externo comunicar com a rede privada. Está
estrutura geralmente é utilizada quando desejase de sua casa comunicar com sua empresa.
Fig2. Diagrama de exemplo de arquitetura VPN utilizando a configuração Host>Network
3. Network>Network; Esta arquitetura permite que duas redes se comuniquem. Exemplo: você tem
uma matriz em GoiâniaGO e uma filial em BrasiliaDF e quer comuicar as duas redes privadas por
meio da VPN.
Fig3. Diagrama de exemplo de arquitetura VPN utilizando a configuração Network>Network
5. Segurança e VPN
É importante saber a partir de que ponto em cada arquitetura os dados realmente estão seguros.
Sabemos que para cada arquitetura de VPN estão envolvidas duas máquinas onde é estabelecido o
canal seguro. Todos os dados que saem desta máquina é vai até a outra ponta desta máquina é
criptografado. Vamos agora analizar a terceira arquitetura de VPN – Network>Network: Observe que
há três estágio no tráfego da informação:
1. Primeiro os dados saem de um cliente na rede privada 1 e vai até o roteador Primeira ponta da
VPN.
2. Os dados são criptografados e roteados no roteador VPN e caminham até a outra ponta da VPN
3. Na segunda ponta da VPN, os dados são decriptografados e reencaminhados para o cliente de
destino na rede privada 2.
Vejamos como isto acontece:
Fig4. Ilustração do processo de envio de informação através de uma VPN
Podemos observar que a informaçao somente é seguraça entre os dois pontos da VPN. Assim se uma
intruso dentro da rede rodar um sniffer irá conseguir obter os dados em texto limpo – cleartext caso
a aplicação usada não seja segura.
Portanto, VPN garante a segurança da informação entre as duas pontas, ou seja, garante que toda
infomação quando trafegar na Internet e tiver destino a outra rede privada seja criptografado. Também
devese ressaltar que toda informação que passe pelo roteador VPN e não tenha destino à outra rede
privada não será criptografada, o tratamento do pacote será normal.
6. Implementação OpenVPN
O OpenVPN – é um serviço que trabalha na camada de aplicação por meio de uma porta.
6.1 Características do OpenVPN
O OpenVPN também permite interligar os três tipos de arquitetura, utilizando para isto uma interface
serial virtual, denominada tun0 primeira interface, tun1 segunda interface.As conexões VPN são
estabelecidas pontoaponto de forma que seja necessário um sistema de rota para que as duas redes
possam comunicar.
Todos os dados trafegados são criptografados utilizando o algoritmo Blowfish.
6.2 Instalando o OpenVPN
O software do openVPN pode ser obtido em: http://www.openvpn.net O código fonte pode ser
baixado no diretório /usr/local/src, onde deve ser descompactado conforme o comando
abaixo:
#tar xvfz openvpn2.0.9.tar.gz C /usr/local/src/
#cd /usr/local/src/openvpn2.0.9
#./configure disablelzo
#make
#make install
Caracterização das máquinas:
Máquina torre:
Endereço IP:
eth0: 200.1.2.3 máscara : 255.255.255.0
eth1: 10.1.0.1 máscara: 255.255.0.0
tun0: 192.168.0.1 máscara: 255.255.255.255
Máquina dama:
Endereço IP:
eth0: 200.163.1.79 máscara : 255.255.255.0
eth1: 10.2.0.1 máscara: 255.255.0.0
tun0: 192.168.0.2 máscara: 255.255.255.255
6.3 Configurando o OpenVPN
6.3.1 Configuração do servidor OpenVPN
Máquina torre
A configuracão do servidor OpenVPN dever ser feita da seguinte forma:
Criar diretório de trabalho:
#mkdir /etc/openvpn
Após a criação do diretório /etc/openvpn devemos copiar os arquivos de configuração que estão na
pasta de instalação.
#cp sampleconfigfiles/staticoffice.conf /etc/openvpn/torredama.conf
#cp sampleconfigfiles/office.up /etc/openvpn/torre.up
A seguir edite o arquivo /etc/openvpn/torredama.conf e altere as seguintes opções:
ifconfig 192.168.0.1 192.168.0.2
cd /etc/openvpn
up ./torredama.up
secret static.key
port 5000
proto tcpserver
ifconfig 192.168.0.1 192.168.0.2
Esta opção determina qual o endereço IP utilizado no servidor 192.168.0.1 e no cliente
192.168.0.2 para a interface tun0.
cd /etc/openvpn
Esta opção determina em qual diretório estará contido os arquivos de configuração e as chaves
utilizadas para a conexão VPN.
up ./torredama.up
Está opção determina qual o arquivo será executado quando o daemon do openvpn for ativo. Neste
arquivo devese conter as rotas utilizadas para conexão entre redes.
secret static.key
Esta opção determina qual o nome do arquivo chave utilizado para realizar a checagem dos hosts que
iram estabelecer o túnel VPN.
port 5000
Esta opção determina qual a porta utilizada para estabelecer a conexão VPN. Para cada novo cliente
que for realizar a conexão com este servidor devermos adicionar uma nova porta, afim de evitar
conflitos.
proto tcpserver
Está opção determina a característica clienteservidor deste computador, quando utilizado o parâmetro
server, está máquina deverá ser obrigatoriamente o servidor VPN, enquanto o outro ponto VPN
deverá ser cliente, ou seja utilizar o paramêtro proto tcpclient.
Após a edição do arquivo de configuração, devemos editar o arquivo de rotas, afim de definir e
carregar as rotas ao iniciar o daemon do openvpn.
#vi /etc/openvpn/torredama.up
#!/bin/sh
route add net 10.2.0.0/16 gw 192.168.0.2
6.3.2 Geração de chaves de criptografia no OpenVPN
Para gerar chaves de criptografia utilizase o comando openvpn. O OpenVPN possui dois tipos de
chaves de criptografia que pode ser utilizado para garantir a segurança entre as duas pontas da VPN,
que são chaves estáticas e chaves dinâmicas.
Para os dois tipos de formato de arquivo, a idéia é a seguinte: as chaves são geradas no servidor e deve
ser repassada para o cliente. Novamente, chamamos a atenção do leitor para a forma com que será
feita a transmissão desta chave, pois está chave é a garantia de sua segurança.
Para gerar chaves do tipo estática devemos executar o seguinte comando:
#openvpn genkey secret static.key
O formato da chave gerado pode ser verificado no arquivo gerado.
#cat static.key
BEGIN OpenVPN Static key V1
e5e4d6af39289d53
171ecc237a8f996a
97743d146661405e
c724d5913c550a0c
30a48e52dfbeceb6
e2e7bd4a8357df78
4609fe35bbe99c32
bdf974952ade8fb9
71c204aaf4f256ba
eeda7aed4822ff98
fd66da2efa9bf8c5
e70996353e0f96a9
c94c9f9afb17637b
283da25cc99b37bf
6f7e15b38aedc3e8
e6adb40fca5c5463
END OpenVPN Static key V1
Após a geração da chave devemos mover este arquivo para a pasta /etc/openvpn/ , e em seguida passar
este arquivo para o outro roteador.
#cp static.key /etc/openvpn
6.3.3 Configuração do cliente OpenVPN
Máquina dama
A configuração do cliente OpenVPN é muito similar ao servidor OpenVPN.
Criar diretório de trabalho:
#mkdir /etc/openvpn
Após a criação do diretório /etc/openvpn devemos copiar os arquivos de configuração que estão na
pasta de instalação.
#cp sampleconfigfiles/statichome.conf /etc/openvpn/damatorre.conf
#cp sampleconfigfiles/home.up /etc/openvpn/dama.up
A seguir edite o arquivo /etc/openvpn/damatorre.conf e altere as seguintes opções:
ifconfig 191.168.0.2 192.168.0.1
cd /etc/openvpn
up ./damatorre.up
secret static.key
port 5000
proto tcpclient
Após a edição do arquivo de configuração, devemos editar o arquivo de rotas, afim de definir e
carregar as rotas ao iniciar o daemon do openvpn.
#vi /etc/openvpn/damatorre.up
#!/bin/sh
route add net 10.1.0.0/16 gw 192.168.0.1
Copiando o arquivo static.key do servidor ( torre ) para o nosso cliente ( dama )
#scp 200.1.2.3:/etc/openvpn/static.key /etc/openvpn
6.4 Inicialização do serviço OpenVPN
A inicialização do serviço pode ser feita manualmente ao através de um script de inicialização, para
iniciálo manualmente.
Na máquina TORRE execute:
#openvpn config /etc/openvpn/torredama.conf daemon
Na máquina DAMA execute:
#openvpn config /etc/openvpn/damatorre.conf daemon
Observe que, ao inicializar o serviço, é possível verificar a nova interface serial do OpenVPN através
do comando ifconfig.
#ifconfig tun0
tun0 Encapsulamento do Link: SLIP VJ
inet end.: 192.168.0.1 PaP:192.168.0.2 Masc:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
compactados:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 compactados:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
6.5 Testes pósimplementação
Depois que todos os passos acima foram seguidos, é hora de verificar o funcionamento da VPN, o
primeiro teste é verificar o principal arquivo de log do syslog, o arquivo /var/log/message.
#ping 192.168.0.2
Onde 192.168.0.2 é o IP da interface serial VPN do outro roteador.
Outro teste interessante é executar um sniffer em qualquer dos roteadores VPN, o sniffer apresentará
conexões na porta 5000. Para verificar se realmente os dados estão sendo criptografados execute um
ftp na interface serial do outro roteador e verifique os dados em trânsito. Isto pode ser bem observado
utilizando o sniffit.
Nota:Como este teste está sendo realizado de um roteador para o outro roteador, você deve utilizar,
no ftp ou qualquer outra aplicação, a interface VPN do outro roteador, caso você utilize o IP da
interface ethernet ou qualquer outra interface, os dados não irão fluir via VPN, e consequentemente
não haverá criptografia.
Nota: A configuração das máquina da rede interna é baseada em apenas uma rota padrão para o
roteador VPN.
Links Indicados
http://www.linuxdoc.org – Possue vários HOWTOs e FAQs sobre VPN. Fornece alguns exemplo de
configuração de VPN com firewall.
http://openvpn.net Site oficial do OpenVPN. Possue download, FAQ e documentação incluindo
exemplos sobre o OpenVPN.
Terminologia utilizada
IP masquerade – Tem a função de compartilhar a Internet, disponibilizando recurso da Internet para
rede interna.
Proxy – Traduzido como intermediário ou procurador. Tem a função de compartilhar a Internet assim
como o IP masquerade, entretanto utiliza de conexões TCP para tal objetivo.
IP válido – Endereço IP utilizado na Internet, ou seja, IP que conecta uma máquina diretamente na
Internet sem a necessidade de serviços como IP masquerade ou Proxy. Também é chamado de IP
público
IP não válido – Endereço IP utilizado em redes privadas. Para que esta máquina acesse a Internet, ela
precisa necessariamente de serviços como: IP masquerade ou Proxy.
Túnel – Canal criptografado onde será transmitido os dados de forma segura.
Sniffers – Traduzido como farejaradores. São ferramentas utilizadas para capturar os dados em
trânsito na rede.
Criptografia simétrica – Tipo de criptografia onde a chave para criptografar é a mesma chave para
descriptografar.
Criptografia assimétrica – Tipo de criptografia que utiliza de um par de chave – chave pública e
privada. Neste tipo de criptografia as chaves para criptografar e descriptografar são diferentes.
Pingar – Termo oriundo do comando ping utilizado para testar a comunicação entre computadores.
Left – Roteador VPN definido na diretiva left do arquivo ipsec.conf
Right – Roteador VPN definido na diretiva righ do arquivo ipsec.conf
Daemon – Pode ser entendido como serviço: daemon vpnd é o mesmo que serviço vpnd
Exercícios de Revisão
1. Quais os dois principais objetivos de uma VPN?
2. Quais as principais ferramentas de implementação de VPN? Site quais sistemas operacionais são
suportados por estas ferramentas.
3. Comente sobre os três tipos de arquiteturas de VPN. Quando uma máquina de uma rede interna
comunicar com outra máquina de outra rede interna, em quais etapas desta comunicação em que os
dados não se encontram criptografados pela VPN – Considere a arquitetura Network>Network.
4. O freeswam implementa qual protocolo? Explique como este protocolo funciona dentro da pilha de
protocolo TCP/IP.
5. Explique literalmente o processo de instalação do freeswan a partir de seu código fonte.
6. Quais são os arquivos utilizados na configuração do freeswan? Explique também quais os tipos de
criptografia são suportados pelo freeswan.
7. Qual a diferença entre o Freeswan e o OpenVPN?
8. Descreva literalmente o princípio de configuração do OpenVPN? Apresente as principais opções
que devem ser alteradas no arquivo de configuração do OpenVPN.
9. Crie um exemplo de arquitetura de rede e apresente os comandos de roteamento necessários para
estabelecer conectividade entre as duas redes privadas. Mostre como estas rotas podem ser executadas
automaticamente pelo OpenVPN.