Você está na página 1de 7

Criando VPNs entre servidores Linux sem mistérios (parte I) [Artigo] 10/14/09 9:38 PM

Criando VPNs entre servidores Linux sem mistérios (parte I)


Autor: MARCOLINO Alexandre de Jesus <marcolino at webviva.com.br>
Data: 16/08/2003

Introdução

Muitos quando procuram soluções corporativas de conectividade buscam custo benefício. Isto todo
mundo já sabe. Muitos que adotam o Linux como solução de firewall e conectividade encontram isto,
mas quando o assunto é VPN, a maioria dos administradores de Linux optam por soluções compradas
pois entre outras coisas, apesar da grande quantidade de soluções em Linux existentes, elas estão
extremamente mal documentadas e algumas vagam pelo limbo dos Geeks.

Pois bem, este artigo é justamente um documento que visa ajudar os administradores Linux a escolher e
aplicar soluções VPNs em seu dia a dia. Todas as opções eu já usei ou uso no meu dia a dia e garanto,
há mais no universo Open Source do que uma vida inteira à frente do computador possa testar.

Abordo aqui então as quatro soluções que mais me agradaram:

o Projeto PopTop (www.poptop.org), uma solução que usa o protocolo PPTP da Microsoft para
VPNs, ideal quando se tem muitos computadores Windows remotos que necessitam entrar em sua
rede;
o projeto VPNd (sunsite.dk/vpnd), que cria túneis de VPN sem a necessidade de recompilação do
kernel;
o eterno e amado Free Swan, o mais difícil de todos de ser aplicado mas também o mais
performático;
e por último os túneis sobre SSH.

Estarei colocando no ar os artigos em 6 partes:

1. Instalando e configurando o PPTPd, servidor de VPN´s a la Microsoft.


2. Configurando os clientes Windows/Linux para entrar no servidor Linux PPTP
3. VPND - Vpnd rápida, fácil e livre
4. Free Swan - Introdução e preparando o kernel
5. Free Swan - Fechando Túnel com outro Linux
6. Túneis sobre SSH.

Contato
Para conseguir contato comigo, basta enviar um email para marcolino@facil.com.

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=337 Page 1 of 7
Criando VPNs entre servidores Linux sem mistérios (parte I) [Artigo] 10/14/09 9:38 PM

PPTPd - Um servidor de VPNs a la Microsoft

O PPTPd é um projeto de VPNs baseado no protocolo GRE e na tecnologia PPTP. Seu funcionamento é
semelhante ao de uma conexão dial-up, ou seja ele "disca" para um host conhecido, troca chaves através
do protocolo GRE e conecta uma interface virtual (ppp) por onde a comunicação dentro do túnel ocorre.
Para estabelecer a conexão é necessária a autenticação de um usuário. Este tipo de VPN é conseguido
em um servidor Windows usando o RRAS (Route and Remote Access Server) que pelo que eu sei,
surgiu no Windows NT 4. A criptografia pode ser de 40 bits à 128 bits dentro do túnel, conforme a
capacidade do servidor e do cliente. Uma coisa que deveria funcionar, mas não vi vantagem aparente até
hoje, é a compressão dos pacotes TCP antes de serem transferidos dentro do túnel, o que garantiria uma
performance muito maior. Nada pode ser perfeito.

Configurando um servidor PPTP, tanto Windows como Linux, você pode ter clientes conectados à ele
das plataformas Win9x, NT, 2000 e XP, Linux 2.2.x e 2.4.x.

O problema de ter um servidor Windows de VPN é a sua exposição direta na Internet. Um servidor
Windows direto na Internet nunca é uma boa idéia.

O protocolo PPTP possui uma série de falhas exploradas por hackers que possibilitam a invasão ou a
indisponibilidade de servidores Windows. O Projeto POPTOP, que faz o trabalho de servidor Linux de
PPTP, não é vulnerável à ataques de exploits para Windows, apesar do protocolo ainda ser vulnerável a
indisponibilidade, mas para prover a usuários remotos acesso a rede interna, com segurança, este
protocolo ainda é a melhor solução pois, principalmente no Brasil, a quantidade de pessoas que ainda
usam Windows 98 e ME é muito grande.

Vamos então AO TRABALHO!

Ambientes em que testei.

Todos os procedimentos de instalação que descrevo aqui foram aplicados em um ambiente real de
produção com as seguintes características:

Servidor 1
Duron 1GHz, 256MB RAM, HD 20 GB
RedHat 7.3, Kernel 2.4.18

Servidor 2 e 5
Celeron 1.1GHz, 256MB RAM, HD 20 GB
Slackware 9, Kernel 2.4.21

Servidor 3
Pentium 166MMX, 64MB RAM, HD 6GB
RedHat 6.2, Kernel 2.2.16

Servidor 4
Pentium 4, 2.6GHz, 1 GB RAM, HD 40 GB
Slackware 8.1, Kernel 2.4.20

Apesar da quantidade de ambientes, para sermos mais objetivos estarei explicando a instalação a partir

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=337 Page 2 of 7
Criando VPNs entre servidores Linux sem mistérios (parte I) [Artigo] 10/14/09 9:38 PM

do kernel 2.4.21 em uma distribuição Slackware 9. A distribuição foi instalada FULL.

Downloads necessários

É necessário ter os fontes do kernel instalados onde se pretende colocar o PPTPd em produção. Caso seu
kernel não tenha o módulo gre.o compilado, você precisará disto. Explico mais a frente como fazer isso.
Os fontes do kernel sempre podem ser conseguidos em www.kernel.org.

É necessária a recompilação do aplicativo ppp que cuida das conexões dial-up.

http://www.advancevpn.com/public/ppp-2.4.1.tar.gz

O PPTPd, quando escrevia este artigo, já estava na versão 1.1.3, mas utilizamos a versão anterior a 1.1.2.
Nada contra a 1.1.3, pena que ela não funcionou com o kernel 2.2.x de uma das minhas máquinas. Fica
por sua conta escolher, eu continuo explicando como usar a 1.1.2 .

http://www.advancevpn.com/public/pptpd-1.1.2.tar.gz

O Kernel-MPPE patch é imprescindível para prover a criptografia para as plataformas Microsoft. Este
módulo é o coração da coisa. Abaixo o link aponta para um patch para o kernel 2.4.16

http://www.advancevpn.com/public/pptpd-1.1.2.tar.gz

O ppp-MPPE patch faz a conexão entre o kernel e o ppp para estabelecer a criptografia.

http://www.advancevpn.com/public/ppp-2.4.1-openssl-0.9.6-mppe-patch.gz

Como vocês notaram, o site www.advancevpn.com está gentilmente hospedando os fontes num lugar
centralizado para downloads. Palmas para eles!

Faça os downloads tomando um delicioso Ovomaltine... isto tornará a experiência muito mais agradável.

Compilando a parafernália

O Kernel.

Costumo seguir padrões. Coloco sempre meus fontes do kernel em /usr/src/linux.

# cd /usr/src
# tar xyfv /root/downloads/linux-2.4.21.tar.bz2
# ln -sf linux.2.4.21 linux

Aplique o patch do MPPE no kernel do linux.

# cd /usr/src/linux
# zcat /root/downloads/linux-2.4.4-openssl-0.9.6-mppe.patch.gz | patch -p1

Configure seu kernel usando o make menuconfig. Imagino que você saiba do que estou falando, então

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=337 Page 3 of 7
Criando VPNs entre servidores Linux sem mistérios (parte I) [Artigo] 10/14/09 9:38 PM

vou te dar o caminho para garantir o necessário para funcionar o pptpd.

Em Networking Options marque como módulos [M] o suporte a:

IP: tunneling
IP: GRE tunnels over IP

Marque também como compilar dentro do kernel (*)


IP: broadcast GRE over IP

Volte para o menu principal e entre na opção Network Device support. Marque como módulos [M]:

PPP (point to point protocol) support


PPP support for async serial ports
PPP support for sync tty ports
PPP Deflate compression
PPP BSD-Compress compression
PPP over Ethernet (EXPERIMENTAL)

Marque também para compilação dentro do kernel (*) :

PPP multilink support (EXPERIMENTAL)


PPP filtering

Tudo marcadinho, saia do menuconfig, compile o kernel, instale e boas. Não vou aqui ensinar fazer isso,
se tiver dúvidas de como proceder consulte o Kernel HOWTO.

O PPP
Gosto de padronizar a localização dos meus fontes quando preparo alguma coisa.

# cd /usr/local/src
# mkdir poptop-proj
# cd poptop-proj

Ou seja, criei em /usr/local/src um diretório para colocar todos os fontes de que vou precisar para
instalar o PopTop. Fica mais fácil de achar assim.

# cd /usr/local/src/poptop-proj
# tar xzfv /root/downloads/ppp-2.4.1.tar.gz
# cd ppp-2.4.21

Vamos aplicar o patch para funcionar o MPPE:

# zcat /root/downloads/ppp-2.4.1-openssl-0.9.6-mppe.patch.gz | patch -p1

Agora, depois de ler o README, vamos passar a configuração e compilação:

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=337 Page 4 of 7
Criando VPNs entre servidores Linux sem mistérios (parte I) [Artigo] 10/14/09 9:38 PM

# ./configure
# make
# make install

Pronto! Tudo instalado.

O PPTPd
Se você chegou até aqui, sua caneca com Ovomaltine já deve ter esvaziado faz algum tempo. Que tal
encher novamente?

Descompactando, compilando e instalando o pacote:

# cd /usr/local/src/poptop-proj
# tar xzfv /root/downloads/pptpd-1.1.2.tar.gz
# cd pptpd-1.1.2
# ./configure
# make
# make install

Hora do show - Criando os diversos arquivos de configuração

1 - /etc/modules.conf
Acrescente as linhas:

alias char-major-108 ppp_generic


alias tty-ldisc-3 ppp_async
alias tty-ldisc-14 ppp_synctty
alias ppp-compress-18 ppp_mppe
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate

Rode o comando:

# depmod -a

Pronto.

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=337 Page 5 of 7
Criando VPNs entre servidores Linux sem mistérios (parte I) [Artigo] 10/14/09 9:38 PM

2 - /etc/ppp/options.pptpd

lock
mtu 1490
mru 1490
proxyarp
noauth
+chap
+chapms
+chapms-v2
ipcp-accept-local
ipcp-accept-remote
lcp-echo-failure 10
lcp-echo-interval 10
mppe-40
mppe-128
mppe-stateless
require-chap
debug
name *

3 - /etc/ppp/chap-secrets
Este arquivo contém os usuários e senhas de conexão. Aqui acho que está a maior falha deste
sistema,pois as senhas estão em texto claro. Realmente lamentável.

# Secrets for authentication using CHAP


# client server secret IP addresses
marcolino * suasenha *

Então temos 4 colunas:

client - nome do usuário


server - nome do servidor, colocar asterisco significa que o nome e asterisco. No arquivo
options.pptpd se você reparar tem uma cláusula name que está validada com um asterisco (*). Eu
tenho servidores onde troquei o asterisco por uma palavra, rodou legal.
secret
IP addresses - coloque asterisco SEMPRE! Assim o pptpd alocará os ips corretamente.

Aqui é o fim do artigo. Digo isso porque meu Ovomaltine acabou e tenho que ir trabalhar para ganhar
grana e comprar mais! Espero que o artigo tenha sido de grande valia para todos.

Iniciando e parando o serviço

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=337 Page 6 of 7
Criando VPNs entre servidores Linux sem mistérios (parte I) [Artigo] 10/14/09 9:38 PM

Simples como tudo nesta vida, como root:

# pptpd -d

Para tirar do ar:

# killall -9 pptpd

Todos os logs serão registrados em /var/log/messages.

Outros artigos sobre o assunto

Setting up PPTPD on Linux Kernel 2.4 HOWTO


VPN no Conectiva 8 com o PPTPD

Agradecimentos

A Deus pela grata chance de VIVER!

A Jefferson Ricci, que me apresentou o projeto POPTOP. Valeu!

A comunidade Open Source! Sem palavras.

VIVA O LINUX!

http://www.vivaolinux.com.br/artigo/Criando-VPNs-entre-servidores-Linux-sem-misterios-(parte-I)

Voltar para o site

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=337 Page 7 of 7

Você também pode gostar