VPN, Freeswan

Posté par  . Modéré par Fabien Penso.
Étiquettes :
0
27
nov.
2001
Doc
Dans le cadre de mon boulot, je me suis penché sur le VPN. Ce système permet de relier 2 réseaux via internet et assure un transfert des données de l'un à l'autre sécurisé par des algorithmes de cryptographie.

J'ai mis en pièce jointe un fichier txt expliquant comme je m'y suis pris (je débute plus ou moins et ça ce voit :) et les résultats obtenus.

Note du modérateur: VPN = Virtual Private Network = réseau privé virtuel Comment on a installe un VPN entre ma boite et chez moi avec Freeswan.

Les objectifs :
* Installer un vpn entre un reseau d'entreprise relié directement au net par une LS et un reseau privé relié au net par une connexion ADSL
* Ne pas gener le role principal de la gw cote reseau privé (partage de connexion internet)

Les solutions :
* Freeswan 1.92 avec cle partagée
* glouglou.yi.org ca permet d'avgoir un FQDN bien qu'on soit en ip dynamique

Les conventions :
gw = gateway (passerelle)
fw = firewall
a.b.c.d = ip de la gw du bureau
e.f.g.h = ip du firewall du bureau

Pour commencer, voici le détail de la configuration réseau

Mon reseau
192.168.1.0/24
|
|
Ma gateway (slack 8 / K 2.4.5)
192.168.1.100
glouglou.yi.org (80.13.12.xx)
|
|
GW wanadoo
80.13.12.1
|
|
Internet
|
|
GW bureau
a.b.c.d
|
|
FW (RH6.2 / K 2.2.16)
192.168.100.254
e.f.g.h (ip externe)
|
|
le reseau interne
192.168.0.0/16

Pour commencer, il faut installer Freeswan. La doc du produit étant suffisamment bien faite sur ce sujet, pas la peine de revenir dessus.
Attention la compilation sur des machines peu puissante peut prendre du temps surtout lors de la generation des cles (une 20aine de minutes sur mon cyrix 166+/32Mo)

Important : le réseau du boulot ne doit pas contenir d'ip en 192.168.1.x

La configuration de Ipsec tient en 2 fichiers :

1) IPSEC.CONF

** Le mien sur ma machine : **



# /etc/ipsec.conf - FreeS/WAN IPsec configuration file
# basic configuration
config setup
# THIS SETTING MUST BE CORRECT or almost nothing will work;
# %defaultroute is okay for most simple cases.
#interfaces=%defaultroute
#moi, je suis en ADSL avec wanadoo/netissimo1
interfaces="ipsec0=eth1 ipsec1=ppp0"
# 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

# sample VPN connection
conn oburo-chezmoi
left=e.f.g.h
leftsubnet=192.168.0.0/16
leftnexthop= a.b.c.d
right=glouglou.yi.org
rightsubnet=192.168.1.0/24
rightnexthop=80.13.12.1
auto=start



** Celui sur le FW : **



config setup
interfaces=%defaultroute
klipsdebug=none
plutodebug=none
plutoload=%search
plutostart=%search

conn oburo-chezmoi
left=e.f.g.h
leftsubnet=192.168.0.0/16
leftnexthop=%defaultroute
right=glouglou.yi.org
rightsubnet=192.168.1.0/24
auto=start



On notera que tout est pareil sauf :
- Interfaces. En effet, pas de connexion ppp au bureau.
- Leftnexthop. J'aurai pu laisser %defaultroute de mon cote ça aurait sûrement marché

1) IPSEC.SECRETS



e.f.g.h glouglou.yi.org "la.faut.mettre.une.super.key.de.killer."



Le fichier ipsec.secrets est identique des 2 cotés.

Une fois ça configuré, il suffit de lancer freeswan : ipsec setup start
Des deux cotés.

Attention, on ne peut pas pinger a partir des gateway
Avec la commande Ipsec look, vous pourrez voir si tout est bien monté.
Si ipsec look ne vous renvoit que les routes, c'est pas bon
Pour moi, ca donne :



192.168.1.0/24 -> 192.168.0.0/16 => tun0x1002@e.f.g.h esp0x9211cb81@e.f.g.h (1613)
ipsec0->eth1 mtu=16260(1500)->1500
ipsec1->ppp0 mtu=16260(1435)->1492
esp0x9211cb81@e.f.g.h ESP_3DES_HMAC_MD5: dir=out src=80.13.12.xx iv_bits=64bits iv=0x0cf5460938bd9069 ooowin=64 seq=1613 alen=128 aklen=128 eklen=192 life(c,s,h)=alloc(1,0,0)bytes(222064,0,0)add(980,0,0)use(976,0,0)packets(1613,0,0) idle=24
esp0xbcea5e24@80.13.12.xx ESP_3DES_HMAC_MD5: dir=in src=e.f.g.h iv_bits=64bits iv=0xfea25273140562a2 ooowin=64 seq=2216 bit=0xfffffffffc7fffff max_seq_diff=7 alen=128 aklen=128 eklen=192 life(c,s,h)=alloc(1,0,0)bytes(2245354,0,0)add(980,0,0)use(976,0,0)packets(2141,0,0) idle=24
tun0x1001@80.13.12.xx IPIP: dir=in src=e.f.g.h life(c,s,h)=alloc(1,0,0)bytes(2245354,0,0)add(980,0,0)use(976,0,0)packets(2141,0,0) idle=24
tun0x1002@e.f.g.h IPIP: dir=out src=80.13.12.xx life(c,s,h)=alloc(1,0,0)bytes(166068,0,0)add(980,0,0)use(976,0,0)packets(1613,0,0) idle=24
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 80.13.12.1 0.0.0.0 UG 40 0 0 ppp0
192.168.0.0 80.13.12.1 255.255.0.0 UG 40 0 0 ipsec1
192.168.1.0 0.0.0.0 255.255.255.0 U 40 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 40 0 0 ipsec0
80.13.12.1 0.0.0.0 255.255.255.255 UH 40 0 0 ipsec1
80.13.12.1 0.0.0.0 255.255.255.255 UH 40 0 0 ppp0



La chose a ne pas oublier :

* Ma gw linux me servant de partage de connexion internet, j'ai du changer le masquerading :

J'ai remplace
/usr/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE

par
/usr/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d ! 192.168.0.0/16 -j MASQUERADE

afin de ne pas masquerader ce qui a pour destination le réseau 192.168.0.0/16

* Egalement, j'ai un snmpd qui tourne sur ma gw. ce snmpd est monitoré par un mrtg (normal quoi :)
l'installation d'Ipsec rajoute des interfaces. Ainsi, eth0 est passe de l'interface 3 a l'interface 7. Il faudra bien penser a modifier cela dans votre fichier de conf MRTG

Y a surement qq incoherences mais en tout cas, ca marche :)

Les resultats obtenus :
a partir du reseau privé, je peux acceder a n'importe quelle machine du reseau de l'entreprise. (apres tout, c'est le but du VPN :)

Chag & Gnaume

Aller plus loin

  • # Alternatives... (à éviter)

    Posté par  (site web personnel) . Évalué à 1.

    Précisons que FreeS/WAN existe depuis début 1999 (premières versions), et que cette technologie est très stable et très sécurisée.
    De plus, FreeS/WAN est préférable à d'autres (anciennes) alternatives du type ppp chiffré (par ssh ou autre) à travers une socket qui sert de tunnel, pour cause de ré-encapsulation. En cas d'erreur sur un canal ré-encapsulé, cela crée des rafales de paquets de correction, et ajoutés à des erreurs sur le tunnel, cela aboutit souvent à une qualité de service super dégradée voir à des ruptures de communications. FreeS/WAN ne comporte pas ces défauts car intervient à plus bas niveau (IPSEC).

    Enfin, il existe même des patches pour faire tourner cela avec des machines Windows; les patches servant à contourner les bugs kro$oft... :-)
    • [^] # Re: Alternatives... (à éviter)

      Posté par  (site web personnel) . Évalué à 1.

      Lu

      > Enfin, il existe même des patches pour faire >tourner cela avec des machines Windows; les patches > servant à contourner les bugs kro$oft... :-)

      plus precisement le patch permet a freeswan d'utiliser l'authentification par certificat x509 qui est utliser par l implementation ipsec de windows 2000/XP mais aussi pgpnet, openBSD peut aussi utiliser les certificat x509

      ++
      Banux
    • [^] # Re: Alternatives... (à éviter)

      Posté par  (site web personnel) . Évalué à 1.

      Les problèmes de réencapsulation arrivent surtout avec du TCP dans du TCP. Pour des protocoles IP non connectés, le problème ne se pose pas.
    • [^] # Re: Alternatives... (à éviter)

      Posté par  . Évalué à 1.

      FreeSwan marche très bien, mais ce qui est dommage c'est que la partie IPSEC (cad encapsulation/décapsulation) n'est pas assez modulaire (du moins dans la version que j'avais étudié). Du coup ca rend l'ajout d'un support de crypto externe plus difficile (notament une crypto hw, ce que je devais faire avec un chipset intel 80C550). Néanmoins il y a je crois des patchs pour utiliser une carte a base de chip Hifn.
      Ils sont en train de re-designer KLIPS, mais je ne sais pas pour quand c'est prévu.
  • # Beau lien

    Posté par  . Évalué à 1.

    Le lien sur comment ca marche est pas mal !...
    Si vous ne savez pas comment fonctionne le VPN, c'est très instructif et bien expliqué, à visiter de toute urgence.
    Plus d'infos sur IPSEC : http://www.ietf.org/html.charters/ipsec-charter.html(...)
    • [^] # Re: Beau lien

      Posté par  . Évalué à 1.

      Globalement, je trouve que le site commentcamarche.net est très bien fait; les présentations ne sont pas forcément très précises mais je n'ai jamais vu d'erreur dans les vulgarisations qui y sont proposées.
      • [^] # Re: Beau lien

        Posté par  . Évalué à 1.

        Ces vulgarisations permettent d'avoir une vue d'ensemble sur un sujet, de posseder certaines bases. Elles sont tres bien faites (schemas, tableaux, exemples) et permettent une premiere approche. Il est vrai que si l'on desire en savoir plus, il faudra rechercher d'autres docs beaucoup plus techniques, mais elles ont le merite d'etre claires, comprehensibles par (presque) tous, et d'etre en francais :)
        Beaucoup de sujets sont traites, et je pense que leur but premier n'est pas d'etre tres precises et tres techniques. Elles sont destinees a des personnes qui cherchent a savoir comment ceci ou cela marche (d'ou le nom de domaine) et permettent d'acquerir une base, de comprendre dans l'ensemble. Moi je trouve ca tres bien.
        Et le fait qu'il n'y ait pas d'erreur est important, non ?
    • [^] # Un autre beau lien

      Posté par  . Évalué à 1.

      Pour ceux qui sont intéressés par la mise en place d'un VPN, il existe aussi un VPN howto disponible à http://linuxdoc.org/HOWTO/VPN-HOWTO.html(...) , qui devrait de plus bientôt être disponible en français (il est en cours de relecture).
    • [^] # Re: Beau lien

      Posté par  (site web personnel) . Évalué à 1.

      L'avant-dernier linux mag a un excellent article sur l'IPSec (intro à ipsec) en général, et sur freeswan en particulier.

      En plus ils parlent de l'authentification par clé RSA qui est quand meme moins chiante à gérer que l'auth par clés partagées quand on a plusieurs sites.

      Peut-etre qu'ils pourraient mettre l'article en ligne ??? Hein ??? Comme ça on n'a plus qu'à copier/coller la conf :-)
  • # beh c kewl ...

    Posté par  . Évalué à 1.

    c'est toujours fun de voir les autres proposer les fruits de leur travail ...
    un jour si je travaille proprement je le ferais ptêt ... mais bon c'est pas gagné :))

    zou à la lecture moi !
    • [^] # Re: beh c kewl ...

      Posté par  . Évalué à 1.

      Whouat da foque you mine ?
      • [^] # Re: beh c kewl ...

        Posté par  . Évalué à 1.

        en gros je dis que c kewl les gens qui partagent leurs connaissances ...
        mais c chiant parce que je suis grave con et partager la connerie ne fera certainement pas avancer l'humanité .. :)

        donc me voilà condamné à poster des trucs débiles sur dflp ...

        P.S. U fuck my wife ? U talkin' 2 me ?:p
  • # t'as du bol moi ...

    Posté par  (site web personnel, Mastodon) . Évalué à 1.

    Tiens voilà un message sans réponse que moi j'ai envoyé hier, parce que chez moi zobi ca marche pas.

    Hi,

    I am trying to setup a road warrior configuration, but I have troubles. Here
    are the config for the 2 Linux.

    I run freeswan on the server, then on the laptop which I'm connected to using
    ssh from a workstation I run freeswan too. I got disconnected from the laptop
    (it doesn't respond anymore). I guess it's because I got all the computers on
    the same subnet (I would like to make it work localy before trying from
    home/adsl.

    I then connect to my laptop over console, run 'ipsec look' and my laptop just
    freeze! :( As long as I don't type it, that's fine. 'route -n' shows me
    anything for the subnet goes to ipsec0 instead of eth0, that's all.

    Would anyone has a link/idea/answer, etc ? I use freeswan 1.91 btw.

    ----- Config on Server / Linux 2.4.9 -----
    conn redmond-bigboss
    left=%any
    right=194.98.X.X (ip of server)
    rightsubnet=194.98.X.0/25 (half of C class)
    rightnexthop=194.98.X.X (default server gateway)
    leftid=@redmond
    rightid=@bigboss.domain.com
    leftrsasigkey=0sAQNvIyHOVG...
    rightrsasigkey=0sAQOAvgCjc...
    auto=add
    keyingtries=1

    ----- Config on Laptop / Linux 2.4.14 (I now, it's a buggy kernel) -----
    conn redmond-bigboss
    left=%defaultroute
    right=194.98.X.X
    rightsubnet=194.98.X.0/25
    rightnexthop=194.98.X.X
    auto=start
    leftid=@redmond
    rightid=@bigboss.domain.com
    leftrsasigkey=0sAQNvIyHOVG...
    rightrsasigkey=0sAQOAvgCjc...

  • # Interoperabilité avec autres OS ?

    Posté par  (site web personnel) . Évalué à 1.

    Je profite de cette news pour poser des questions aux personnes qui auraient déjà mis en place un VPN avec FreeSWan.

    Est-ce que cette solution marche correctement avec d'autres OS : Windows 2000, Win XP, *BSD (particulièrement OpenBSD), Solaris ? Car je dispose de plusieurs sous-réseaux héterogènes au niveau OS et ça m'intéresse de mettre en place un VPN entre eux...

    Qu'en est-il des performances de FreeSWan installé sur un FW/GW d'un sous-réseau "naté" ?
  • # Etude tests d'interopérabilité IKE dont FreeS/WAN

    Posté par  . Évalué à 1.

    Le cabinet HSC a mis une étude en ligne, avec notamment FreeS/WAN: http://www.hsc.fr/ressources/ipsec/ipsec2001/(...)
  • # très bien comme sujet

    Posté par  . Évalué à 1.

    Je doit faire une présentation (20min) la semaine prochaine sur les outils de tuneling dans le cadre d'un cour sur l'administration réseau et comme je n'est rien préparé ce document pourrait m'aider pour présenter une solution qui fonctionne. Néanmoin j'ai vu dans un Linux mag récent le projet CIPE qui lui aussi propose ce genre de possibilité (enfin il me semble). Pour me facilité la tâche (j'ai plein de boulo en ce moment) quelqu'un peut me dire en quelque mots quels sont les différences entre les deux méthodes, et lequel me conseiller d'installer pour la démonstration.

    Un grand merci à ceux qui me répondent.
  • # Help Install

    Posté par  . Évalué à 1.

    Bon, en fait, j'ai besoin d'aide pour installer Freeswan parce ke je sais pas komment il faut compiler un noyau et tout ce ke s'en suit.

    Donc si kk'un pouvait me donner un coup de main, je l'en remercierai beaucoup



    voila, merci
  • # Besoin d'indication pour mettre en place freeswan

    Posté par  . Évalué à -1.

    Bon, en fait, j'ai besoin d'aide pour installer Freeswan parce ke je sais pas komment il faut compiler un noyau et tout ce ke s'en suit.

    Donc si kk'un pouvait me donner un coup de main, je l'en remercierai beaucoup



    voila, merci

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.