Estou de volta! Este é o primeiro de 6 artigos que vou postar falando sobre o maravilhoso mundo da VPN! Esta primeira parte trata do projeto PoPToP (www.poptop.org), uma implementação livre do protocolo de VPNs da Microsoft, o pptp. Ensinarei a fazer um servidor deste para receber conexões de Win9x, 2000 e XP.
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:
Apesar da quantidade de ambientes, para sermos mais objetivos estarei
explicando a instalação a partir do kernel 2.4.21 em uma distribuição
Slackware 9. A distribuição foi instalada FULL.
[3] Comentário enviado por tucs em 16/08/2003 - 16:47h
Marcão
Obrigado pelo referencia ao meu artigo sobre o mesmo ... e parabens pelo seu .... e como o Fabio falo ... Já estou ansioso pelos próximos da série.
[4] Comentário enviado por MRovari em 18/08/2003 - 15:27h
Marcolino,
Aqui quem fala é o Marco Rovari (ex.C&M). Parabéns pelo artigo, está muito bom mesmo. Há umas semanas atrás eu dei uma sofrida com o PopTop e sei bem a importância de você ter escrito este artigo. Com certeza vai ajudar muito o pessoal que está precisando fechar VPN ou conexões remotas PPTP/CHAv2/128crypto. No momento estou trabalhando na implementação de RADIUS falando com IAS/M$, para autenticar os usuários remotos que entram via PopTop. Assim que eu obtiver êxito irei escrever um artigo para contribuir com a comunidade.
[6] Comentário enviado por romualdo em 09/09/2003 - 19:59h
Excelente contribuição, parabéns. Em relação ao arquivo /etc/ppp/chap-secrets sempre utilizo as senhas do samba onde pelo menos evita a vizualição das mesmas no arquivo e gera uma certa doze de criptografia dificultando assim a captura da mesma.
Ex.:
# Secrets for authentication using CHAP
# client server secret IP addresses
* * &/etc/samba/smbpasswd *
Desta forma ele utilizará as senhas do arquivo /etc/samba/smbpasswd lógico que vc deve informa o cominho do seu arquivo.
[7] Comentário enviado por Estival em 13/02/2004 - 17:45h
Marcolino, Já tenho um Servidor PPTP com o POPTOP funcionando com Clientes Windows 98/2000/XP, estou tentando fazer uma conexão pptp de um cliente linux, não estou conseguindo fazer esta conexão, voce já fez isso funcionar ou seja um mesmo servidor Linux PPTP aceitar conexões de clientes Windows e Linux ? se puder me dar um help, agradeço.
[11] Comentário enviado por nsjr em 10/04/2004 - 20:00h
Amigos,
Eu instalei o pacote e fiz todas as configurações conforme indicado no artigo mas, não funcionou comigo!
De um lado eu tenho um Cl7 devidamente configurado com o pptpd, do outro lado eu tenho o W2k configurado para discar para o número do micro com o CL7. Eu não sei se esse recurso se aplica à conexão dialup eu já configurei uma VPN com W2k e Win98 e funcionou perfeitamente ligando os dois micros em dois ramais de telefone onde trabalho. A conexao ficou na faixa dos 33K, sei que nao é muito mas, para o que quero fazer serve! Se puderem me dar alguma ajuda agradeceria muitíssimo!!!
[12] Comentário enviado por darwinduck em 11/04/2004 - 01:52h
Opa, muito bom esse artigo... Era isso que estava precisando... Logo estarei implementando aki no meu laboratorio particular rs... Parabens Marcolino!!!
[13] Comentário enviado por GLOWBAT em 15/04/2004 - 10:17h
por favor voce pode me informar qual seria o metodo mais seguro confiavel e viavel no caso de uma vpn entre estados de redes que precisão de sugarança maxima? e qual o metodo melhor deles dos listados por voce
[14] Comentário enviado por rgb0 em 19/04/2004 - 12:27h
Olá, sou usuário Linux Red Hat mas não sei como fazer para conectar dois micros de rede diferente usando velox pois como os ips são inválidos dos dois lados como fazer para um micro achar a rota do outro na net e identificar o enderećo ip e fechar a conexćão? Por favor voces podem me ajudar? meu e -mail é rgb0@ig.com.br
[15] Comentário enviado por bayub em 11/06/2004 - 15:22h
Parabéns pelo artigo. Tive problemas em configurar clientes atrás de firewalls que acessam o mesmo servidor remoto. Vi na FAQ do site que trata-se de um problema do protocolo GRE. Você teve esse tipo de problema na sua implementacão? Ou não usou essa topologia? Tem alguma dica de corrigir esse problema sem a interver no firewall? Obrigado.
[17] Comentário enviado por zerobala em 24/06/2004 - 13:26h
Só uma pergunta básica: é possível que um HOST com win98 se conecte diretamente ao freeswan sem intermédio de um gateway Linux, ou só mesmo utilizando o pptpd?
[20] Comentário enviado por raptor_mogi em 23/08/2004 - 13:14h
Eu implementei a vpn seguindo esse passo a passo. Detalhe que me aconteceu foi o seguinte, se eu conecto usando uma linha discada com o provedor tipo IG, fica lento pra burro mas conecta belezinha e consigo acessar as informações da empresa. Se eu conectou de uma outra rede utilizando speed a máquina local onde estou fazendo a conexão perde o acesso a internet, e a máquina não consegue acessar os meu servidores, mas fica registrado no linux que está conectado, e quando dou um IPCONFIG na máquina windows que está fazendo a conexão, o endereço de ip do acesso vpn fica igual ao gateway. O que pode estar acontecendo ?
[23] Comentário enviado por ezdn em 18/09/2004 - 22:47h
este teu script é simplesmente show Marcolino
valeu velhinho. Mas eu ainda defendo o ponto de vista do ctrlc
estou esperando pelo resto dos teus scripts
e tenho certeza que serão todos como este.
até mais velhino.
[24] Comentário enviado por ralmeida em 08/11/2004 - 05:41h
Ola,
Alguem sabe como fazer para que o servidor pptp envie rotas para o cliente.
E que quando eu conecto no meu servidor, o cliente simplesmente envia tudo pelo tunel VPN !!! Pois ele cria uma rota 0.0.0.0 -> Tunel
Eu queria enviar rotas mais especificas ...
[25] Comentário enviado por fmatoss em 26/01/2005 - 12:07h
Olá Marco,
Primeiramente quero deixar meus parabéns pelo artigo. Muito bom.
Tenho um cenário igual ao que você postou no site sobre instalacao de vpn, porém estou tendo um problema com os clients WinXP. Por exemplo, nao consigo listar conteudo de diretorios usando telnet e ftp, tb nao consigo fazer a transferencia dos arquivos... tem idéia do que pode ser ? Tenho Client's Win2000 e Win98 e funcionam perfeitamente, porém no WinXP deixa a desejar ... E agora ?
Bom... um abração cara,
se puder me ajudar estarei grato.
[26] Comentário enviado por georgedearaujo em 19/02/2005 - 11:20h
Cara quanto mais eu uso e leio sobre o linux mais eu fico maravilhado. Esse seu artigo é dez, tenho algumas dúvidas sobre VPN e vou entrar em contato com seu e-mail para saber mais.
Um grande abraço.
[27] Comentário enviado por mmoscz em 25/02/2005 - 11:23h
Para o problema do raptor_mogi, na hora q for criar a conexao no windows XP na opção de TCP IP, usa o botão avançado, para desligar a opção de Utilizar como "gateway padrão".
Para quem não consegue executar dir em diretórios de máquinas da rede, tem q ser configurado um servidor wins, na rede, ou definir o nome da maquina q vc quer usar no lmhost no windows cliente.
[28] Comentário enviado por crayon em 01/03/2005 - 13:40h
Gostaria de parabenizar pelo Artigo! Fiz uma implementação parecida a um tempo com FreeS/Wan e foi uma raleira!
Com toda essa divulgação de "mirabolancias" que podem ser feitas com o Linux, vamos continuar crescendo e conquistando mais adeptos.
[29] Comentário enviado por chronos em 16/04/2005 - 12:31h
Marcolino, talvez você possa me ajudar :).
Eu uso um cliente Nortel VPN para conectar a um cliente, é uma empresa grande. Porém esse cliente só funciona em Windows, no Linux também existe um cliente Nortel VPN mas este não é gratuito.
Gostaria de saber se você conhece algum cliente Linux gratuito para a VPN da Nortel?
[31] Comentário enviado por rjsalomao em 02/06/2005 - 08:15h
Olha só possoal eu consigo me autenticar no linux 9.0 com o meu xp pela adsl beleza mas não consigo ver o disco compartilhado no linux pelo samba .... ja abri todas as portas nos modens e no firewall ta tudo aberto
[32] Comentário enviado por gambit_sor em 14/10/2005 - 15:33h
Meu ambiente é o seguinte, tenho um server com W2k que é o meu PDC e tem apenas 1 placa de rede que é para a rede interna (192.168.0.1) e tenho um server de Internet com o Conectiva 10 e o firewall IPTABLES, o server de Internet tem 2 placas de rede (interna e pública com ip válido).
Gostaria de configurar uma VPN, no Windows configurei o RRAS que usa o protocolo PPTP e internamente eu conecto na "VPN", quais as regras que tenho que fazer no IPTABLES para redirecionar o protocolo PPTP para o meu server W2k, pois quando tento conectar de fora não consigo.
[40] Comentário enviado por tuxlinuxbr2 em 27/03/2006 - 08:22h
nao tá funcionando autenticacao no fedora core 3, tem algum detalhe especial? pois se colocar noauth ele funciona tranquilo, ja revi todos os arquivos de configuracoes, (options.pptpd, chap-secrets e pap-secrets) e nao tem nada errado, favor alguem ajude!!
[45] Comentário enviado por smurakami em 19/09/2006 - 16:03h
Boa tarde,
Meu ambiente é o seguinte, tenho um server com Win 2003 que é o meu PDC e tem apenas 1 placa de rede que é para a rede interna (192.168.0.x) e tenho um server de Internet e o firewall IPTABLES com o Conectiva 8, o server de Internet tem 2 placas de rede (interna e pública com ip válido).
Configurei uma VPN, no Windows com o RRAS que usa o protocolo PPTP e internamente eu conecto na "VPN", quais as regras que tenho que fazer no IPTABLES para redirecionar o protocolo PPTP para o meu server Win 2003, pois quando tento conectar de fora não consigo. Aparece a mensagem de erro 721 de um local com Win XP no Speedy Home e erro 806 em outro com Win 2003 com Speedy Home. Neste segundo falar sobre o protocolo GRE.
Abaixo as linhas que coloquei no meu firewall:
[46] Comentário enviado por dsimoneli em 13/11/2006 - 12:32h
ola estou uma uma dificuldae aqui tenho debian instalado na minha maquina com 2 palcas de rede a eth0 conecta a modem speed stream sendo q nesse modem eu rotei e coloquei um ip 192.168.0.1 na maquina debian eth0 o ip e 192.168.0.2/24 agora tenho a eth1 uma outra plca de rede no debian q jogo pra um roteador wireless para conectar meu leptop o ip da eth1 e 192.168.1.1 mais nao consigo conectar a internet no leptop como faço o q preciso
[50] Comentário enviado por jonaslink2003 em 18/05/2007 - 13:31h
Esqueci de adicionar o erro
Pessoal estou com esse erro quando tento entrar por fora da minha rede, alguem saber pq?
A connection between your computer and the VPN server has been established, but the VPN connection cannot be completed. The most common cause for this is that at least one Internet device (for example, a firewall or a router) between your computer and the VPN server is not configured to allow Generic Routing Encapsulation (GRE) protocol packets. Verify that protocol 47 (GRE) is allowed on all personal firewall devices or routers. If the problem persists, contact your network administrator or Internet service provider (ISP) to determine which devices might be blocking these packets.
(Error 806) For customized troubleshooting information for this connection, click Help.
[51] Comentário enviado por brotheroliva em 31/05/2007 - 09:22h
Preciso de ajuda, não consigo me cadastrar no forum do ubuntu aparece uma mensagem para colocar a chave secreta mas não mostra a imagem da mesma.
Site: http://ubuntuforum-br.org/
Por favor me ajuda!!!!! estou perdido nesse linux....
[53] Comentário enviado por fabianoheringer em 11/10/2007 - 11:50h
oi, funcionou legal aqui, mas toda vez q conecto recebo este erro
Oct 11 11:42:27 gateway ppp[70995]: Warning: Local: bind: Address already in use
Oct 11 11:42:27 gateway ppp[70995]: Warning: set server: Failed 2
Oct 11 11:42:32 gateway pptpd[70994]: CTRL: Ignored a SET LINK INFO packet with real ACCMs!
creio que algum endereco em uso, mas qual? a conexao ta funcionando legal! obrigado
[56] Comentário enviado por srf em 17/12/2007 - 09:14h
Olá...
Gostaria de tirar uma dúvida com vc... estou conectando na VPN com Meu note WinXP eu consigo chegar no IP do Servidor da VPN, mas não consigo chegar na rede interna, por ex. o Servidor é IP 10.1.1.254 e eu não consigo chegar no Ip 10.1.1.200... O que pode ser?
Também esta aparecendo essas menssagem no log:
Dec 17 07:12:12 linux pppd[31263]: not replacing existing default route to eth1 [189.42.39.12]
Dec 17 07:12:12 linux pppd[31263]: Cannot determine ethernet address for proxy ARP
[59] Comentário enviado por iagoaugusto em 27/08/2008 - 11:36h
Excelente contribuição, parabéns. Em relação ao arquivo /etc/ppp/chap-secrets sempre utilizo as senhas do samba onde pelo menos evita a vizualição das mesmas no arquivo e gera uma certa doze de criptografia dificultando assim a captura da mesma.
Ex.:
# Secrets for authentication using CHAP
# client server secret IP addresses
* * &/etc/samba/smbpasswd *
Desta forma ele utilizará as senhas do arquivo /etc/samba/smbpasswd lógico que vc deve informa o cominho do seu arquivo.
[60] Comentário enviado por wdg em 24/09/2008 - 10:09h
Muito bom seu artigo, coincide com o que já uso na empresa que trabalho.
Mas tem um detalhe, comigo está acontecendo de encontrar pais de um encapsulamento para o mesmo endereço: