Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > a412ceb851151854794ced2a242192bb > files > 3794

howto-html-fr-20080722-1mdv2010.0.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapitre 7. IPSEC: IP sécurisé à travers Internet</title><link href="style.css" rel="stylesheet" type="text/css" /><meta content="DocBook XSL Stylesheets V1.73.2" name="generator" /><link rel="start" href="index.html" title="HOWTO du routage avancé et du contrôle de trafic sous Linux" /><link rel="up" href="index.html" title="HOWTO du routage avancé et du contrôle de trafic sous Linux" /><link rel="prev" href="ch06.html" title="Chapitre 6. Tunnel IPv6 avec Cisco et/ou une dorsale IPv6 (6bone)" /><link rel="next" href="ch07s02.html" title="Gestion automatique des clés" /></head><body><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">Chapitre 7. IPSEC: IP sécurisé à travers Internet</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch06.html">Précédent</a> </td><th align="center" width="60%"> </th><td align="right" width="20%"> <a accesskey="n" href="ch07s02.html">Suivant</a></td></tr></table><hr /></div><div class="chapter" lang="fr"><div class="titlepage"><div><div><h2 class="title"><a id="lartc.ipsec" />Chapitre 7. IPSEC: IP sécurisé à travers Internet</h2></div></div></div><div class="toc"><p><b>Table des matières</b></p><dl><dt><span class="sect1"><a href="ch07.html#lartc.ipsec.intro">Introduction sur la gestion manuelle des clés</a></span></dt><dt><span class="sect1"><a href="ch07s02.html">Gestion automatique des clés</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch07s02.html#lartc.ipsec.keying.theory">Théorie</a></span></dt><dt><span class="sect2"><a href="ch07s02.html#lartc.ipsec.automatic.keying.example">Exemple</a></span></dt><dt><span class="sect2"><a href="ch07s02.html#lartc.ipsec.x509">Gestion automatique des clés
	en utilisant les certificats X.509</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch07s03.html">tunnels IPSEC</a></span></dt><dt><span class="sect1"><a href="ch07s04.html">Autre logiciel IPSEC</a></span></dt><dt><span class="sect1"><a href="ch07s05.html">Interopérabilité d'IPSEC avec d'autres systèmes</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch07s05.html#lartc.ipsec.interop.win32">Windows</a></span></dt><dt><span class="sect2"><a href="ch07s05.html#lartc.ipsec.interop.checkpoint"> Check Point VPN-1 NG</a></span></dt></dl></dd></dl></div><p>
    A ce jour, deux versions d'IPSEC sont disponibles pour Linux.
    FreeS/WAN, qui fût la première implémentation majeure, existe pour les
    noyaux Linux 2.2 et 2.4. Ce projet a <a class="ulink" href="http://www.freeswan.org/" target="_top">un site officiel</a> et également
    <a class="ulink" href="http://www.freeswan.ca" target="_top">un site non officiel</a>, qui
    est bien maintenu. FreeS/WAN n'a jamais été intégré dans le noyau pour
    un certain nombre de raisons. Celle qui est la plus souvent mentionnée
    concerne un problème "politique" avec les américains travaillant sur la
    cryptographie qui freinent son exportabilité. De plus, la mise en place
    de FreeS/WAN dans le noyau Linux est délicate, ce qui n'en fait pas un
    bon candidat pour une réelle intégration.
    </p><p>
      De plus, <a class="ulink" href="http://www.edlug.ed.ac.uk/archive/Sep2002/msg00244.html" target="_top">des</a>
      personnes <a class="ulink" href="http://lists.freeswan.org/pipermail/design/2002-November/003901.html" target="_top">se
      sont inquiétées</a> de la qualité du code. Pour configurer FreeS/WAN,
      de nombreuses <a class="ulink" href="http://www.freeswan.ca/code/old/freeswan-Snapshot/doc/index.html" target="_top">documentations</a>
      sont <a class="ulink" href="http://www.freeswan.org/doc.html" target="_top">disponibles</a>.
    </p><p>
      Une implémentation native d'IPSEC est présente dans le noyau à partir de la
      version Linux 2.5.47. Elle a été écrite par Alexey Kuznetsov et Dave
      Miller, qui se sont inspirés des travaux du groupe USAGI IPv6. Avec
      cette fusion, les CryptoAPI de James Morris deviennent également une
      partie du noyau, qui fait ainsi vraiment du cryptage.
    </p><p>
      Ce HOWTO ne documente que la version 2.5 d'IPSEC. FreeS/WAN est
      recommandé pour l'instant pour les utilisateurs de Linux 2.4. Faîtes
      cependant attention, dans la mesure où sa configuration est
      différente de l'IPSEC natif. Il y a maintenant une <a class="ulink" href="http://gondor.apana.org.au/~herbert/freeswan/" target="_top">mise à jour</a> 
      qui permet au code FreeS/WAN de l'espace utilisateur de fonctionner
      avec l'IPSEC natif de Linux.
    </p><p>
      A partir du noyau 2.5.49, IPSEC fonctionne sans l'ajout de mises à
      jour supplémentaires. 
	</p><p>
      <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Note]" src="images/note.png" /></td><th align="left">Note</th></tr><tr><td valign="top" align="left"><p>
	Les outils de l'espace utilisateur sont disponibles <a class="ulink" href="http://sourceforge.net/projects/ipsec-tools" target="_top">ici</a>. Il y
	a plusieurs programmes disponibles ; celui qui est proposé 
	dans le lien est basé sur Racoon.
	</p><p>
	Lors de la compilation du noyau, soyez sûr d'activer 'PF_KEY', 'AH' et
	tous les éléments de CryptoAPI ! 
	</p></td></tr></table></div>
      <div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Avertissement]" src="images/warning.png" /></td><th align="left">Avertissement</th></tr><tr><td valign="top" align="left"><p>
	L'auteur de ce chapitre est un complet nigaud en ce qui concerne
	IPSEC ! Si vous trouvez les inévitables erreurs, envoyez un
	courrier électronique à Bert Hubert <code class="email">&lt;<a class="email" href="mailto:ahu@ds9a.nl">ahu@ds9a.nl</a>&gt;</code>.
	</p></td></tr></table></div>
    </p><p>
    Tout d'abord, nous montrerons comment configurer manuellement une
    communication sécurisée entre deux hôtes. Une grande partie de ce
    processus peut être automatisée, mais nous le ferons ici à la main afin
    de comprendre ce qui se passe "sous le capot".
    </p><p>
    Passez à la section suivante si la seule gestion automatique des clés vous
    intéresse. Soyez cependant conscient que la compréhension de la gestion
    manuelle des clés est utile.
    </p><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title"><a id="lartc.ipsec.intro" />Introduction sur la gestion manuelle des clés</h2></div></div></div><p>
      IPSEC est un sujet compliqué. De nombreuses informations sont
      disponibles en ligne. Ce HOWTO se concentrera sur la mise en place et à
      l'explication des principes de base. Tous les exemples sont basés sur
      Racoon dont le lien est donné au-dessus.
      </p><p>
	<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Note]" src="images/note.png" /></td><th align="left">Note</th></tr><tr><td valign="top" align="left"><p>
	 Certaines configurations iptables rejettent les paquets
	 IPSEC ! Pour transmettre IPSEC, utilisez :
	 <span class="command"><strong>iptables -A xxx -p 50 -j ACCEPT</strong></span> et
	 <span class="command"><strong>'iptables -A xxx -p 51 -j ACCEPT</strong></span>.
	  </p></td></tr></table></div>
      </p><p>
      IPSEC offre une version sécurisée de la couche IP (Internet Protocol).
      La sécurité dans ce contexte prend deux formes : l'encryptage et
      l'authentification. Une vision naïve de la sécurité ne propose que le
      cryptage. On peut cependant montrer facilement que c'est
      insuffisant : il se peut que vous ayez une communication
      cryptée, mais vous n'avez aucune garantie que l'hôte distant est
      bien celui auquel vous pensez.
      </p><p>
      IPSEC supporte 'Encapsulated Security Payload' (Encapsulation
      Sécurisée de la Charge utile) (ESP) pour le cryptage et
      'Authentication Header' (Entête d'Authentification) (AH) pour
      authentifier le partenaire distant. Vous pouvez configurer les deux,
      ou décider de ne faire que l'un des deux.
      </p><p>
      ESP et AH s'appuient tous les deux sur des Associations de Sécurité
      (Security Associations (SA)). Une Association de Sécurité (SA)
      consiste en une source, une destination et une instruction.
      Un exemple simple d'Association de Sécurité (SA) pour l'authentification 
      peut ressembler à ceci :

<pre class="screen">add 10.0.0.11 10.0.0.216 ah 15700 -A hmac-md5 "1234567890123456";
</pre>
	Ceci indique que le trafic allant de <code class="literal">10.0.0.11</code> vers
	<code class="literal">10.0.0.216</code> a besoin d'un En-tête d'Authentification
	(AH) qui peut être signé en utilisant HMAC-MD et le secret
	<code class="literal">1234567890123456</code>. Cette instruction est repérée par
	l'identificateur SPI (<em class="wordasword">Security Parameter Index</em>)
	<code class="literal">15700</code>, dont nous parlerons plus par la suite.  Le
	point intéressant à propos des Associations de Sécurité (SA) est
	qu'elles sont symétriques. Les deux cotés de la conversation partagent
	exactement la même Association de Sécurité (SA), qui n'est pas recopiée
	sur l'hôte distant. Notez cependant qu'il n'y a pas de règles
	"d'inversion automatique". Cette Association de Sécurité (SA) décrit
	une authentification possible de <code class="literal">10.0.0.11</code> vers
	<code class="literal">10.0.0.216</code>.  Pour un trafic bidirectionnel, deux
	Associations de Sécurité (SA) sont nécessaires.
      </p><p>
	Un exemple d'Association de Sécurité (SA) pour le cryptage ESP :

<pre class="screen">add 10.0.0.11 10.0.0.216 esp 15701 -E 3des-cbc "123456789012123456789012";
</pre>

	Ceci signifie que le trafic allant de <code class="literal">10.0.0.11</code> vers
	<code class="literal">10.0.0.216</code> est chiffré en utilisant 3des-cbc avec la
	clé <code class="literal">123456789012123456789012</code>.  L'identificateur SPI
	est <code class="literal">15701</code>.
      </p><p>
      Jusqu'ici, nous avons vu que les Associations de Sécurité (SA) décrivent
      les instructions possibles, mais pas la politique qui indique quand ces
      SA doivent être utilisées. En fait, il pourrait y avoir un nombre
      arbitraire de SA presques identiques ne se différenciant que par les
      identificateurs SPI.  Entre parenthèses, SPI signifie
      <em class="wordasword">Security Parameter Index</em>, ou Index du Paramètre
      de Sécurité en français. Pour faire vraiment du cryptage, nous devons
      décrire une politique. Cette politique peut inclure des choses comme
      "utiliser ipsec s'il est disponible" ou "rejeter le trafic à moins que
      vous ayez ipsec".
      </p><p>
      Une "Politique de Sécurité" (Security Policy (SP)) typique ressemble
      à ceci :
<pre class="screen">spdadd 10.0.0.216 10.0.0.11 any -P out ipsec
 esp/transport//require
 ah/transport//require;
</pre>
	Si cette configuration est appliquée sur l'hôte
	<code class="literal">10.0.0.216</code>, cela signifie que tout le trafic allant
	vers <code class="literal">10.0.0.11</code> doit être encrypté et encapsulé dans
	un en-tête d'authentification AH. Notez que ceci ne décrit pas quelle
	SA sera utilisée. Cette détermination est un exercice laissé à la
	charge du noyau.
      </p><p>
	En d'autres termes, une Politique de Sécurité spécifie CE QUE nous
	voulons ; une Association de Sécurité décrit COMMENT nous le
	voulons.
	</p><p>
      Les paquets sortants sont étiquetés avec le SPI SA ('le comment') que
      le noyau utilise pour l'encryptage et l'authentification et l'hôte
      distant peut consulter les instructions de vérification et de
      décryptage correspondantes.
      </p><p>
      Ce qui suit est une configuration très simple permettant le dialogue de
      l'hôte <code class="literal">10.0.0.216</code> vers l'hôte
      <code class="literal">10.0.0.11</code> en utilisant l'encryptage et
      l'authentification. Notez que le trafic de retour de cette première
      version est en clair et que cette configuration ne doit pas être
      déployée.
      </p><p>
	Sur l'hôte <code class="literal">10.0.0.216</code> :
<pre class="screen">#!/sbin/setkey -f
add 10.0.0.216 10.0.0.11 ah 24500 -A hmac-md5 "1234567890123456";          
add 10.0.0.216 10.0.0.11 esp 24501 -E 3des-cbc "123456789012123456789012";

spdadd 10.0.0.216 10.0.0.11 any -P out ipsec
   esp/transport//require
   ah/transport//require;
</pre>
      </p><p>
	Sur l'hôte 10.0.0.11, nous donnons les mêmes Associations de
	Sécurité (SA). Nous ne donnons pas de Politique de Sécurité :
<pre class="screen">#!/sbin/setkey -f
add 10.0.0.216 10.0.0.11 ah 24500 -A hmac-md5 "1234567890123456";
add 10.0.0.216 10.0.0.11 esp 24501 -E 3des-cbc "123456789012123456789012";
</pre>
      </p><p>
      Avec la mise en place de la configuration ci-dessus (ces fichiers
      peuvent être exécutés si 'setkey' est installé dans /sbin), la
      commande <span class="command"><strong>ping 10.0.0.11</strong></span> exécutée sur 10.0.0.216 va
      donner la sortie suivante avec tcpdump :
<pre class="screen">22:37:52 10.0.0.216 &gt; 10.0.0.11: AH(spi=0x00005fb4,seq=0xa): ESP(spi=0x00005fb5,seq=0xa) (DF)
22:37:52 10.0.0.11 &gt; 10.0.0.216: icmp: echo reply
</pre>
	Notez que le paquet de retour provenant de 10.0.0.11 est en effet
	complètement visible. Le paquet ping émis par 10.0.0.216 ne peut
	évidemment pas être lu par tcpdump, mais celui-ci montre l'Index
	du Paramètre de Sécurité (SPI) de l'AH, ainsi que l'ESP, qui
	indique à 10.0.0.11 comment vérifier l'authenticité de notre paquet
	et comment le décrypter.
      </p><p>
      Quelques éléments doivent être mentionnés. La configuration
      ci-dessus est proposée dans de nombreux exemples d'IPSEC,
      mais elle est très dangereuse. Le problème est qu'elle contient la
      politique indiquant à 10.0.0.216 comment traiter les paquets allant
      vers 10.0.0.11 et comment 10.0.0.11 doit traiter ces paquets, mais
      ceci n'INDIQUE pas à 10.0.0.11 de rejeter le trafic non authentifié
      et non encrypté !
      </p><p>
      N'importe qui peut maintenant insérer des données "spoofées" (NdT :
      usurpées) et entièrement non cryptées que 10.0.0.1 acceptera. Pour
      remédier à ceci, nous devons avoir sur 10.0.0.11 une Politique de
      Sécurité pour le trafic entrant :
<pre class="screen">#!/sbin/setkey -f 
spdadd 10.0.0.216 10.0.0.11 any -P IN ipsec
   esp/transport//require
   ah/transport//require;
</pre>
	Ceci indique à 10.0.0.11 que tout le trafic venant de 10.0.0.216
	nécessite d'avoir un ESP et AH valide.
      </p><p>
      Maintenant, pour compléter cette configuration, nous devons également renvoyer
      un trafic encrypté et authentifié. La configuration complète sur
      10.0.0.216 est la suivante :</p><pre class="screen">#!/sbin/setkey -f
flush;
spdflush;

# AH
add 10.0.0.11 10.0.0.216 ah 15700 -A hmac-md5 "1234567890123456";
add 10.0.0.216 10.0.0.11 ah 24500 -A hmac-md5 "1234567890123456";

# ESP
add 10.0.0.11 10.0.0.216 esp 15701 -E 3des-cbc "123456789012123456789012";
add 10.0.0.216 10.0.0.11 esp 24501 -E 3des-cbc "123456789012123456789012";

spdadd 10.0.0.216 10.0.0.11 any -P out ipsec
           esp/transport//require
           ah/transport//require;

spdadd 10.0.0.11 10.0.0.216 any -P in ipsec
           esp/transport//require
           ah/transport//require;
</pre><p>Et sur 10.0.0.11 :</p><pre class="screen">#!/sbin/setkey -f
flush;
spdflush;

# AH
add 10.0.0.11 10.0.0.216 ah 15700 -A hmac-md5 "1234567890123456";
add 10.0.0.216 10.0.0.11 ah 24500 -A hmac-md5 "1234567890123456";

# ESP
add 10.0.0.11 10.0.0.216 esp 15701 -E 3des-cbc "123456789012123456789012";
add 10.0.0.216 10.0.0.11 esp 24501 -E 3des-cbc "123456789012123456789012";


spdadd 10.0.0.11 10.0.0.216 any -P out ipsec
           esp/transport//require
           ah/transport//require;

spdadd 10.0.0.216 10.0.0.11 any -P in ipsec
           esp/transport//require
           ah/transport//require;
</pre><p>
      Notez que, dans cet exemple, nous avons utilisé des clés identiques
      pour les deux directions du trafic. Ceci n'est cependant en aucun cas
      exigé.
      </p><p>
      Pour examiner la configuration que nous venons de créer, exécuter
      <span class="command"><strong>setkey -D</strong></span>, qui montre les SA ou <span class="command"><strong>setkey
      -DP</strong></span> qui montre les politiques configurées.
      </p></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch06.html">Précédent</a> </td><td align="center" width="20%"> </td><td align="right" width="40%"> <a accesskey="n" href="ch07s02.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">Chapitre 6. Tunnel IPv6 avec Cisco et/ou une dorsale IPv6 (6bone) </td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%"> Gestion automatique des clés</td></tr></table></div></body></html>