Sophie

Sophie

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

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

<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>4.&nbsp;La solution s&eacute;curis&eacute;e&nbsp;: percer en utilisant ssh</title><link href="style.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.70.1" name="generator"><link rel="start" href="index.html" title="Petit guide du per&ccedil;age de pare-feux"><link rel="up" href="index.html" title="Petit guide du per&ccedil;age de pare-feux"><link rel="prev" href="ar01s03.html" title="3.&nbsp;Compr&eacute;hension du probl&egrave;me"><link rel="next" href="ar01s05.html" title="5.&nbsp;La solution non s&eacute;curis&eacute;e&nbsp;: percer en utilisant telnet"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">4.&nbsp;La solution s&eacute;curis&eacute;e&nbsp;: percer en utilisant ssh</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s03.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ar01s05.html">Suivant</a></td></tr></table><hr></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N10231"></a>4.&nbsp;La solution s&eacute;curis&eacute;e&nbsp;: percer en utilisant ssh</h2></div></div></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N10234"></a>4.1.&nbsp;Principe</h3></div></div></div><p>
Consid&eacute;rons que votre administrateur de pare-feu autorise les connexions TCP transparentes vers un port quelconque sur un serveur de l&rsquo;autre c&ocirc;t&eacute; du pare-feu (que ce soit le port du ssh normal, le 22, un autre port de destination, tel que le port http, le 80, ou autre), ou que vous vous d&eacute;brouillez d&rsquo;une fa&ccedil;on ou d&rsquo;une autre pour qu&rsquo;un port quelconque d&rsquo;un c&ocirc;t&eacute; du pare-feu soit redirig&eacute; vers un port de l&rsquo;autre c&ocirc;t&eacute; (en utilisant
<span><strong class="command">httptunnel</strong></span>, <span><strong class="command">mailtunnel</strong></span>, un tunnel sur le <span><strong class="command">telnet</strong></span>, ou autre).
</p><p>
Vous pouvez alors lancer un <span><strong class="command">sshd</strong></span> sur le port c&ocirc;t&eacute; serveur, et vous y connecter avec un <span><strong class="command">ssh</strong></span> sur le port c&ocirc;t&eacute; client. Des deux c&ocirc;t&eacute;s de la connexion <span><strong class="command">ssh</strong></span> vous lancez des &eacute;mulateurs d&rsquo;IP ( <span><strong class="command">pppd</strong></span>), et l&agrave; vous avez votre VPN, r&eacute;seau priv&eacute; virtuel, qui &eacute;vite les restrictions stupides du pare-feu, avec un bonus en plus&nbsp;: la confidentialit&eacute; gr&acirc;ce au cryptage (faites attention, l&rsquo;administrateur du pare-feu conna&icirc;t tout de m&ecirc;me l&rsquo;autre bout du tunnel, et toute information d&rsquo;authentification quelle qu&rsquo;elle soit que vous pouvez avoir envoy&eacute;e avant de lancer le <span><strong class="command">ssh</strong></span>).
</p><p>
Exactement la m&ecirc;me technologie peut &ecirc;tre utilis&eacute;e pour construire un VPN, r&eacute;seau priv&eacute; virtuel, qui permet de regrouper de fa&ccedil;on s&eacute;curis&eacute;e des sites physiques en un seul r&eacute;seau logique sans sacrifier la s&eacute;curit&eacute; au niveau du r&eacute;seau de transport entre les sites.
</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N1025D"></a>4.2.&nbsp;Exemple de session</h3></div></div></div><p>
Ci-dessous se trouve un exemple de script que vous pouvez adapter &agrave; vos besoins. Il utilise le syst&egrave;me de rang&eacute;e de <span><strong class="command">zsh</strong></span>, mais vous pouvez l&rsquo;adapter facilement &agrave; votre shell favori. Utilisez l&rsquo;option
 <span><strong class="command">-p</strong></span> pour que <span><strong class="command">ssh</strong></span> essaie un autre port que le port 22 (mais &agrave; ce moment-l&agrave;, veillez &agrave; bien lancer <span><strong class="command">sshd</strong></span> sur le m&ecirc;me port).
</p><p>
Notez que le script suppose que <span><strong class="command">ssh</strong></span> peut s&rsquo;ouvrir sans que vous ayez &agrave; taper interactivement votre mot de passe (en effet, son tty de contr&ocirc;le sera connect&eacute; &agrave; <span><strong class="command">pppd</strong></span>, alors s'il vous demande un mot de passe, c&rsquo;est rat&eacute;). Ceci peut se faire soit avec les clefs ssh dans votre
<code class="filename">&#732;/.ssh/authorized_keys</code>
pour lesquelles un mot de passe n'est pas n&eacute;cessaire, ou que l'on peut d&eacute;bloquer en utilisant
 <span><strong class="command">ssh-agent</strong></span> ou <span><strong class="command">ssh-askpass</strong></span>. Regardez votre documentation sur ssh. En fait vous pourriez aussi utiliser un script de chat pour entrer votre mot de passe, mais ce n&rsquo;est assur&eacute;ment <span class="emphasis"><em>pas</em></span> la chose &agrave; faire.
</p><p>
Si vous n&rsquo;&ecirc;tes pas <span><strong class="command">root</strong></span> ou simplement si vous voulez prot&eacute;ger le r&eacute;seau de votre client des connexions sortantes, vous pouvez utiliser <span><strong class="command">slirp</strong></span> au lieu de <span><strong class="command">pppd</strong></span>
comme &eacute;mulateur PPP du serveur. Il n&rsquo;y a qu&rsquo;&agrave; d&eacute;commenter la ligne appropri&eacute;e.
</p><p>
<pre class="programlisting">

#!/bin/zsh -f
SERVER_ACCOUNT=root@server.fqdn.tld
SERVER_PPPD="pppd ipcp-accept-local ipcp-accept-remote"
#SERVER_PPPD="pppd" ### Ceci suffit normalement si c&rsquo;est dans /usr/sbin/
#SERVER_PPPD="/home/joekluser/bin/slirp ppp"
CLIENT_PPPD=( pppd
	silent
	10.0.2.15:10.0.2.2
	### Si vous voulez tester d&eacute;commentez les lignes suivantes:
	# updetach debug
	### Une autre option potentiellement utile (allez voir la section sur le routage)&amp;nbsp;:
	# defaultroute
)
$CLIENT_PPPD pty "ssh -t $SERVER_ACCOUNT $SERVER_PPPD"

</pre>
</p><p>
Notez que les options par d&eacute;faut de votre <code class="filename">/etc/ppp/options</code>
ou <code class="filename">&#732;/.slirprc</code>
peuvent casser ce script, enlevez donc toute option non d&eacute;sir&eacute;e.
</p><p>
Notez &eacute;galement que <code class="literal">10.0.2.2</code> est le param&eacute;trage par d&eacute;faut pour <span><strong class="command">slirp</strong></span>, ce qui peut ne pas fonctionner avec votre installation particuli&egrave;re. En tout cas, vous devriez de pr&eacute;f&eacute;rence utiliser une adresse dans l&rsquo;une des cat&eacute;gories r&eacute;serv&eacute;es par la RFC-1918 pour les r&eacute;seaux priv&eacute;s&nbsp;:
<code class="literal">10.0.0.0/8</code>,
<code class="literal">172.16.0.0/12</code> ou <code class="literal">192.168.0.0/16</code>.
Il se pourrait que le r&eacute;seau local prot&eacute;g&eacute; par pare-feu utilise certaines d&rsquo;entre elles et il est de votre responsabilit&eacute; d&rsquo;&eacute;viter les conflits. Pour une plus grande personnalisation, lisez la documentation appropri&eacute;e.
</p><p>
Si le <span><strong class="command">pppd</strong></span> de votre client est vieux ou non-linux (par exemple BSD) et n&rsquo;a pas d&rsquo;option <span><strong class="command">pty</strong></span>, utilisez&nbsp;:
<pre class="programlisting">
cotty -d -- $CLIENT_PPPD -- ssh -t $SERVER_ACCOUNT $SERVER_PPPD
</pre>
Pi&egrave;ges : ne mettez pas les commandes donn&eacute;es &agrave; cotty entre guillemets, car elles s&rsquo;ex&eacute;cutent <span><strong class="command">exec()</strong></span>telles quel, et n&rsquo;oubliez pas de sp&eacute;cifier le chemin complet pour le <span><strong class="command">pppd</strong></span>
du serveur s&rsquo;il n&rsquo;est pas dans le chemin standard install&eacute; par <span><strong class="command">ssh</strong></span>.
</p><p>
On laisse au lecteur la reconnexion automatique (conseil&nbsp;: l&rsquo;option
<span><strong class="command">nodetach</strong></span> de <span><strong class="command">pppd</strong></span>
pourrait &ecirc;tre utile pour &ccedil;a).
</p></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ar01s03.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ar01s05.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">3.&nbsp;Compr&eacute;hension du probl&egrave;me&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%">&nbsp;5.&nbsp;La solution non s&eacute;curis&eacute;e&nbsp;: percer en utilisant telnet</td></tr></table></div></body></html>