LinuxMan
 
Submitted by Eri on Wed, 2005-09-14 22:17.


Configurando uma VPN IPSec FreeSwan

MINI HOW-TO



1.0 VPN

    1.1. Introdução

    1.2. Porque escrevi esse documento

    1.3. Sobre o autor


2.0 Iniciando a configuração

    2.1 A Estrutura da VPN que utilizaremos

    2.2  Recomendações quanto a
distribuições

    2.3 Instalando o freeswan

    2.4 Arquivos de configuração

    2.5 Os malditos detalhes



3.0 Referências



1.0 VPN

   



1.1 Introdução:

-------------------

VPN, no mais fundamental dos conceitos é a ligação
de duas redes privadas passando por uma rede pública (internet),
ou seja, interligar matriz e filial, parceiros de negócios ou
qualquer outra situação que exija uma conexão
segura por meios inseguros.



1.2 Porque escrevi esse documento:

------------------------------------------

Passei alguns apuros para colocar uma VPN no ar, mais por falta de
documentação do que por falta de qualidade dos
softwares.

Não que o freeswan esteja mal documentado, mas é muita
informação e fica difícil achar o
necessário.

Também pedi ajuda na lista LinuxBR (abraço pessoal!) e
até pro Telles (Dicas Linux), mas no ninguém conseguiu
ajudar.

Quando coloquei a primeira parte do projeto no ar e comentei na
LinuxBR, recebi vários e-mails pedindo ajuda, então
achei por bem fazer esse mini how-to.



1.3 Sobre o autor

---------------------

Eri Ramos Bastos trabalha com Linux desde 1998, passando por diversas
distribuições e fases diferentes do pinguim. Atualmente
trabalha como consultor em soluções Linux / Unix e
está  disponível para ajudar a sua empresa a
implantar Linux em todos os setores. erirb@xtms.com.br







2.0 Iniciando a Configuração

   

2.1 A Estrutura da VPN que utilizaremos

------------------------------------------------

É uma VPN realmente simples, interligando matriz e filial (por
exemplo). O tipo de autorização que utilizei foi a chave
RSA. Caso prefira usar um segredo, favor recorrer a
documentação oficial.





Subnet 1
<------>Linux1<--ROTEADOR1======ROTEADOR2-->Linux2<------>Subnet2



Subnet1: 192.168.4.0/24

Linux1: 200.xxx.xxx.57 (192.168.4.1)

ROTEADOR1: 200.xxx.xxx.1

ROTEADOR2:200.xxx.xxx.1

Linux2: 200.xxx.xxx.56 (192.168.3.1)

Subnet2: 192.168.3.0/24







2.2 Recomendação quanto a distribuições

-------------------------------------------------

Eu fiz os testes em 2 distribuições: Conectiva 8.0 e
SuSE 8.0. No conectiva não funcionou, não sei se por
incompetência ou por erro da distribuição.
Quando tento ativar o módulo do kernel para o IPSec recebo a
seguinte mensagem:



Note: /etc/modules.conf is more recent than
/lib/modules/2.4.18-2cl/modules.dep

Warning: loading /lib/modules/2.4.18-2cl/kernel/net/ipsec/ipsec.o will
taint the kernel: no license



E quanto ativo o ipsec recebo a mensagem:



# /etc/init.d/ipsec start

ipsec_setup: Starting FreeS/WAN IPsec 1.95...

ipsec_setup: Warning: loading
/lib/modules/2.4.18-2cl/kernel/net/ipsec/ipsec.o will taint the
kernel: no license

ipsec_setup: WARNING: ipsec0 has route filtering turned on, KLIPS may
not work

ipsec_setup:  (/proc/sys/net/ipv4/conf/ipsec0/rp_filter = `1',
should be 0)

ipsec_setup: WARNING: eth0 has route filtering turned on, KLIPS may
not work

ipsec_setup:  (/proc/sys/net/ipv4/conf/eth0/rp_filter = `1',
should be 0)



Mesmo mudando os bits 1 para 0, não funciona. Vale ressaltar
que é a instalação padrão do Conectiva,
ou seja, eu não alterei o kernel nem nada do tipo. Atualizei o
sistema, mas não adiantou.

Alguns sites também não recomendavam o RedHat 7.3, por
problemas parecidos com os mencionados no Conectiva.



* Recebi de Fernando Gozetto em 31/07/2002 um href="http://en.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap25sec206.html">link

que parece resolver o problema do Conectiva e também do RedHat.
Obrigado pela contribuição!





O SuSE, em compensação, funcionou como um
relógio. Altamente recomendado.





2.3 Instalando o FreeSwan

-------------------------------



Não vou entrar em detalhes de como compilar o freeswan ou
inseri-lo no kernel, já que o objetivo é uma coisa mais
simples.

O Freeswan já vem compilado e instalado na maioria das
distribuções, cheque a sua. :)



2.4 Arquivos de configuração

----------------------------------

Vamos utilizar dois arquivos de configuração: ipsec.conf
e ipsec.secrets. Por padrão eles estão em /etc.

Vou comentar somente o que dá problema.



ipsec.conf:

Nesse arquivo estarão as configurações gerais do
ipsec e também as configurações das VPNs.



Primeira parte:



config setup

        # THIS SETTING MUST BE
CORRECT or almost nothing will work;

        # %defaultroute is okay for
most simple cases.

        interfaces=%defaultroute

        # Debug-logging
controls:  "none" for (almost) none, "all" for lots.

        klipsdebug=none

        plutodebug=none

        # Use auto= parameters in
conn descriptions to control startup actions.

        plutoload=%search

        plutostart=%search

        # Close down old connection
when new one using same ID shows up.

        uniqueids=yes







interfaces=%defaultroute



Se a sua rota padrão (seu gateway) vai ser o caminho até
a outra ponta da VPN, ótimo, deixe assim.

Caso você vá conversar com a outra ponta, digamos, pela
eth1, você deverá colocar: interfaces="ipsec0=eth1"

o resto pode deixar padrão mesmo.





Segunda parte:



conn %default

        keyingtries=0

        disablearrivalcheck=no

        authby=rsasig

        leftrsasigkey=%dns

        rightrsasigkey=%dns



Deixe isso assim mesmo. Não faz diferença se for uma
estrutura simples como a que nós estamos montando.



Terceira parte:




conn sample

        type=tunnel

        left=200.xxx.xxx.57

        leftsubnet=192.168.4.0/24

       
leftrsasigkey=0sAQOXm+T0m+5J1ohjiNN4frB0AIzkzo1NIsY0cS2DXrvISjCZp5DrFe78FIFbJbmAX0mYt6D+

h/I4QNdnlvLKztOyAmLkfPiMBbjBiPAjQ95PBVrMUmHdEIDnTt8lIhgKlF3lqiGpVRqOUrm5P9h+c3a+8n42Vq2BBODLxH/X

6sIWllLhSqE7cYmEspBRdLUyl3ZjngDZ5Zt0wt9iOOeL6pPDYJEbXZ6Th5feFOtt02pme0ZTFV4LehoN4WOIv7N/CaUBMW70

gwq6R8Q7AX9KVnRahcDir6BC1fcLFCmG7zJy0tUlnXcCDRfrbiilxDcjZlMeZgKzJxHUD2n1GtzUFnYJ

        leftnexthop=200.xxx.xxx.1

        right=200.xxx.xxx.56

        rightsubnet=192.168.3.0/24

        rightnexthop=200.xxx.xxx.1

       
rightrsasigkey=0sAQO2rKc7W7vCQWnl3eFo0aKq+7F+vyDFRnZuVvDawhaZGW/HPVo366QialwEVEvl/Rm699V

PBlQqB/+OouQIKwTsBO6or+h3UZFIVCjxl2xeemahkkuf7dvzRfv3xRPAv6Oz0aPOFa8uietJvjojgxIBlEiD81Gr0fe3dNG

Vxl3EeZdLsUBYi5zzFl0uQ8Bf5y87MEuSK7S8Tn5+3SJg31/ESteaVNUymLujMlpqtqqNX8CU1qFuLO0yDgLBELhQOc6BuKk

67t5NwgA0elVV5BPNzZVTw0VVA4Kdd4ac3vRQbuTy0x68B6cFwKD1fsxdXN6MG0V6oMyRPnJSr3Y7wxet

        auto=start





conn sample

Nome da conexão. Poderia ser, ao invés de sample,
matriz-filial



type=tunnel

Isso indica o tipo de VPN.



left=200.xxx.xxx.57

leftsubnet=192.168.4.0/24

leftnexthop=200.xxx.xxx.1



Indica a máquina Linux1, bem como sua rede interna e o gateway
(roteador). Você deve escolher qual máquina/rede vai ser
a left e qual vai ser a right. Tanto faz...



right=200.xxx.xxx.56

rightsubnet=192.168.3.0/24

rightnexthop=200.xxx.xxx.1



Mesmo caso acima. Indica a parte do Linux2



leftrsasigkey=0sAQOXm+T....

rightrsasigkey=0sAQO....




São as chaves públicas dos servidores. Mais tarde eu
explico no ipsec.secrets



auto=start

Faz com que a conexão inicie junto com o serviço. Outra
forma poderia ser: auto=add, exigindo que a conexão fosse feita
manualmente (ipsec auto --up NOME)





ipsec.secrets





# RSA 1024 bits   teste.domain.com.br   Tue Jul 30
13:52:26 2002

        # for signatures only,
UNSAFE FOR ENCRYPTION

       
#pubkey=0sAQO4QDaWeWtYK4cFp+l3TbNHlw5r//nRLfiqteDevZloAVNjaYPtsObiX+oov3T2rQ7LGw5y7azcO2sB48xN1YnpUagAnTyn4nNkkTl7LlglFr56ODT5A2u/XNPSbdm1eiGNFw8FWpXmjmI3bpTldEjwe5684oJzbctlHlbdv8w2sQ==

        #IN KEY 0x4200 4 1
AQO4QDaWeWtYK4cFp+l3TbNHlw5r//nRLfiqteDevZloAVNjaYPtsObiX+oov3T2rQ7LGw5y7azcO2sB48xN1YnpUagAnTyn4nNkkTl7LlglFr56ODT5A2u/XNPSbdm1eiGNFw8FWpXmjmI3bpTldEjwe5684oJzbctlHlbdv8w2sQ==

        # (0x4200 = auth-only
host-level, 4 = IPSec, 1 = RSA)

        Modulus:
0xb8403696796b582b8705a7e9774db347970e6bfff9d12df8aab5e0debd99680153636983edb0e6e25fea28bf74f6ad0ecb1b0e72edacdc3b6b01e3cc4dd589e951a8009d3ca7e2736491397b2e582516be7a3834f9036bbf5cd3d26dd9b57a218d170f055a95e68e62376e94e57448f07b9ebce282736dcb651e56ddbfcc36b1

        PublicExponent: 0x03

        # everything after this
point is secret

        PrivateExponent:
0x04630d7d7ccbb2dc77063adae45d4750f14f94db6d912bc2df7e3c3610b46a18699abf76f35fa3f9330baba308e14d43665c12a1366bbc19cbb0ce910e0b2df33a970f175ac0e1e165f1d4af88bd23d4dafb1caeed0836ce3afe2bc086edd7c5de055d69fcdca24ec80836c5c7c6793527c0a2d4767724e5f86f63933d266615

        Prime1:
0xf1cf6631a8d1c983332cc9aadce464039360dabc78c1c910705734245cec66516b19beb0b355b1ff82d8a05e99782a21a9a1d5e522250a30a998ae0972f25eaf

        Prime2:
0xc3102096b03109f577b78b03e26be0273de6a8c59ce8a4d93ec970b359c3ad59b51bfcf12b0d93a20e05d1c3856c3c164c623021f0c255dff93f52ac448d189f

        Exponent1:
0xa134eecbc5e13102221ddbc73ded9802624091d2fb2bdb604ae4cd6d9348443647667f20778e76aa573b159466501c1671168e98c16e06cb1bbb1eb0f74c3f1f

        Exponent2:
0x820ac064757606a3a5250757ec47eac4d3ef1b2e689b1890d4864b223bd7c8e678bd534b72090d16b403e12d039d7d6432ec2016a0818e9550d4e1c82db365bf

        Coefficient:
0x980c10e32ca1f5aa86bce4ee111d83035912a3e42ad050ea1565296150cbdf15e317b2ed6d325ccc757277446e1a321afe228a0570ceffae92f8ac047b1b7fef





De tudo isso, a única parte que vai importar é:

#pubkey=0sAQO4QDa...



Essa parte é a chave pública, que vai ser colocada no
arquivo de configuração ipsec.conf. Note que cada
máquina deverá ter sua própria chave,
consequentemente, seu próprio ipsec.conf



Para gerar o ipsec.secrets:

# ipsec rsasigkey 1024 >> /etc/ipsec.secrets





2.5 Os malditos detalhes:



Na configuração:

- Os arquivos ipsec.conf de ambas as máquinas devem ser iguais,
não devendo ser alterado o parâmetro right e left,
principalmente.

- Os arquivos ipsec.secrets são diferentes, devendo cada um ter
sua própria chave RSA



Nos testes:

- Um gateway não pinga o outro.

- Uma estação não pinga o gateway

- Somente uma estação pinga a outra







3.0 Referências:





Bookmark do meu Netscape que ajudou com minha pesquisa:

Ipsec practical
configurations for Linux Freeswan 1.3.

FreeS/WAN
http://www.linuxlabs.biz/articles/ipsec.htm
Linux
FreeS/WAN VPN
>http://www.tieless.com/ipsec/cisco-freeswan-cisco/ipsec.conf.txt
>Introduction to FreeS/WAN
The
VPN HOWTO

OpenVPN Home Page
SecurityFocus
HOME Infocus: Linux IPsec Gateways Using FreeS/Wan

Administering
Linux IPSec Virtual Private Networks

Introducing
FreeS/WAN and IPsec

Required
Network setup for IPSec




Arquivo de
configuração ipsec.conf (exemplo)




 </fim>



Last Change: 31/07/2002 12:04hrs 



GoogleAds