<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>wired</title>
	<atom:link href="http://www.morveus.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.morveus.com</link>
	<description>things&#38;stuff</description>
	<lastBuildDate>Sun, 18 Oct 2009 17:23:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Introduction aux tunnels SSH</title>
		<link>http://www.morveus.com/archives/les-tunnels-ssh-intro/</link>
		<comments>http://www.morveus.com/archives/les-tunnels-ssh-intro/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 18:50:36 +0000</pubDate>
		<dc:creator>Morveus</dc:creator>
				<category><![CDATA[Tunnels]]></category>
		<category><![CDATA[chiffré]]></category>
		<category><![CDATA[chiffrement]]></category>
		<category><![CDATA[cryptage]]></category>
		<category><![CDATA[crypté]]></category>
		<category><![CDATA[proxifier]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[socksifier]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tunnel]]></category>

		<guid isPermaLink="false">http://www.morveus.com/wordpress/?p=180</guid>
		<description><![CDATA[Ceci est le premier article d'une petite série au sujet des tunnels SSH (mais aussi premier article de ce blog ;)). Il s'adresse aux débutants et traite de l'installation d'OpenSSH sous Linux (Debian pour être précis), et de l'ouverture d'un tunnel sécurisé sous Linux, Windows et Mac OS X.]]></description>
			<content:encoded><![CDATA[<p><em>Ceci est le premier article d'une petite série au sujet des tunnels SSH (mais aussi premier article de ce blog <img src='http://www.morveus.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). Il s'adresse aux débutants et traite de l'installation d'OpenSSH sous Linux (Debian pour être précis), et de l'ouverture d'un tunnel sécurisé sous Linux, Windows et Mac OS X.<br />
</em></p>
<p>J'ai découvert la magie du tunnel SSH il y a quelques temps déjà, et depuis je n'ai cessé d'en apprendre sur cette petite merveille.</p>
<p>Tout d'abord une rapide présentation : le SSH est un protocole qui permet l'accès distant et sécurisé au shell (ici l'interpréteur de lignes de commandes) d'une machine, bien souvent Linux/Unix. Il opère sur le port 22 par défaut, et offre divers degrés de sécurité. Selon les paramètres du serveur, on peut se connecter sans mot de passe, avec mot de passe, avec une paire de clés et une phrase de passe ou sans phrase de passe, ... Voilà pour ceux qui ne connaissaient pas du tout.</p>
<h3><span style="color: #333333;">Alors qu'est-ce que c'est ?</span></h3>
<p>SSH permet, en plus d'administrer une machine à distance, d'ouvrir ce qu'on appelle un "tunnel". Concrètement il s'agit de créer un serveur proxy (SOCKS) en local qui écoutera sur un port donné, et au travers duquel vous allez pouvoir faire communiquer vos applications vers l'extérieur. Tout ce qui transitera au travers de ce tunnel le sera de manière chiffrée ("cryptée"), et l'ordinateur servant de point d'accès (celui auquel vous vous connectez) se chargera de déchiffrer puis de transmettre les données.</p>
<p>En somme :</p>
<ul>
<li>Chiffre vos transmissions entre votre ordinateur et votre point d'accès (le serveur SSH). Toute personne se trouvant entre les deux ne verra qu'un message chiffré sans avoir la moindre idée de ce qui se dit...</li>
<li>Permet de faire passer certaines applis bloquées par le pare-feu / le proxy (reconnues par leur numéro de port) dans le tunnel et donc ainsi les exploiter quand même (sites Web bloqués, applications de communication... jeux <img src='http://www.morveus.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</li>
<li>Offre une solution minimale de compression : utile si vous souhaitez surfer en EDGE / 3G mais que le débit n'est pas au top (dans un train en mouvement par exemple). La compression apporte un léger confort à ce niveau là (c'est une option à activer lors de l'ouverture d'un tunnel).</li>
</ul>
<p>Petit schéma :</p>
<p><img class="aligncenter size-full wp-image-206" title="Schéma simplifié d'une requête via un tunnel SSH" src="http://www.morveus.com/wordpress/wp-content/uploads/2009/10/Schema-simple.png" alt="Schéma simplifié d'une requête via un tunnel SSH" width="551" height="259" />L'ordinateur client (à gauche) utilise son navigateur pour appeler "<em>www.google.fr</em>". S'il décide d'utiliser son tunnel SSH (nous verrons comment plus bas), la requête ne quitte pas la machine avant d'avoir été encapsulée dans un paquet transmis sur le canal SS (flèches <strong><span style="color: #339966;">vert foncé</span></strong>).</p>
<p>Elle traverse les différents routeurs séparant le client et le serveur de façon chiffrée, un observateur se trouvant entre le client à gauche et le serveur à droite ne verra qu'une suite de caractères inintelligibles.</p>
<p>Une fois les paquets reçus par le serveur, il les décapsule et fait son boulot : il envoie une requête à Google (flèches <strong><span style="color: #800000;">rouge foncé</span></strong>). Ici, tout se fait en clair, mais en général on s'arrange pour avoir un serveur difficile à écouter (situé dans un datacenter sécurisé par exemple ; un serveur dédié low-cost fait généralement l'affaire pour des transmissions "perso").</p>
<p>Google répond toujours en clair (flèches <strong><span style="color: #ff0000;">rouges</span></strong>) au serveur. Ce dernier encapsule les paquets puis les renvoie à notre client à travers le canal sécurisé (en <strong><span style="color: #00ff00;">vert clair</span></strong>). L'observateur éventuel ne voit donc ni la requête, ni la réponse.</p>
<h3><span style="color: #333333;">Installation</span></h3>
<p>S'il n'est pas installé sur votre machine Linux (mais il l'est bien souvent avec les distribs populaires), vous pouvez l'installer avec votre gestionnaire de packets, c'est rapide et indolore. Un exemple sous Debian :</p>
<pre class="brush: bash">

sudo apt-get update
sudo apt-get install openssh-server
</pre>
<p>A vous d'adapter en fonction de votre packet manager.<br />
Vous pouvez aussi ajouter le client :</p>
<pre class="brush: bash">

sudo apt-get install openssh-client
</pre>
<p>Vous voilà avec votre serveur OpenSSH et éventuellement un client.</p>
<p>La config contient alors les valeurs par défaut, et vous pouvez démarrer le serveur (au cas où il ne se soit pas lancé après l'installation) de cette manière :</p>
<pre class="brush: bash">

sudo /etc/init.d/ssh start
</pre>
<p>Après une modification de la configuration (<em>située dans </em><strong>/etc/ssh/sshd_config</strong>), vous pouvez appliquer la nouvelle config simplement en tapant :</p>
<pre class="brush: bash">

sudo /etc/init.d/ssh restart
</pre>
<p>Fait intéressant, cela ne ferme pas les sessions actuellement ouvertes et vous pouvez donc bidouiller votre fichier de config depuis une session SSH distante sans risquer de vous faire déconnecter. Par contre, une erreur de config suivie d'une déconnexion (volontaire ou perte de connexion, coupure de courant) risque de vous empêcher de vous reconnecter. Prudence <img src='http://www.morveus.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3><span style="color: #333333;">Votre premier tunnel</span></h3>
<p><span style="color: #333333;">Nous allons ouvrir un tunnel de manière simple, sans clé privée, sans utiliser un port alternatif, ...<br />
</span></p>
<h4><span style="color: #888888;"><strong>Depuis une machine Linux</strong></span></h4>
<p>Cette procédure nécessite d'avoir installé le packet "openssh-client". Ouvrez donc une fenêtre de terminal, puis saisissez :</p>
<pre class="brush: bash">

# Ouverture du tunnel
# On spécifie l&#039;hôte, le numéro du port
# sur lequel on écoute, et le nom d&#039;utilisateur
ssh nom_ou_ip_de_lamachine -D 1080 -l nom_utilisateur
# Exemple concret :
ssh morveus.com -D 1080 -l administrateur
</pre>
<p>Lors de votre première connexion s'affichera un message vous proposant d'accepter ou non une empreinte de clé RSA. Acceptez avec un "<strong>yes</strong>".</p>
<p>Après avoir saisi votre mot de passe, vous pourrez constater que l'invite du shell aura changé de nom (par exemple "administrateur@votremachinedistante". Cela signifie que vous aurez ouvert une session SSH. Mais ce n'est pas tout : l'emploi de l'argument "<strong>-D</strong>" suivi d'un numéro de port (ici <strong>1080</strong>) indique au client SSH d'ouvrir le port 1080 en écoute.</p>
<p>La suite : après la partie "Windows" <img src='http://www.morveus.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h4><span style="color: #888888;">Depuis une machine Windows</span></h4>
<p>Sous Windows, téléchargez et installez / ouvrez Putty.<br />
<img class="aligncenter size-full wp-image-200" title="Page de session sous Putty" src="http://www.morveus.com/wordpress/wp-content/uploads/2009/10/putty_1.png" alt="Page de session sous Putty" width="466" height="448" /></p>
<p style="text-align: center;"><em>Accueil de Putty sous Windows</em></p>
<p style="text-align: left;">Saisissez le nom d'hôte ou l'adresse IP du serveur auquel vous comptez vous connecter dans "<strong>Host Name (or IP address)</strong>".<br />
C'est tout ce que vous aurez à faire sur cette page.</p>
<p style="text-align: left;">Rendez-vous ensuite dans "<strong>Connection </strong>&gt; <strong>SSH </strong>&gt; Tunnels" (dans "<strong>Category</strong>", menu de gauche) :</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-210" title="Ajout d'une redirection de port sous Putty" src="http://www.morveus.com/wordpress/wp-content/uploads/2009/10/putty_2.png" alt="Ajout d'une redirection de port sous Putty" width="466" height="448" /></p>
<p style="text-align: left;">Là, cochez "<strong>Dynamic</strong>" le bas de page, et choisissez un numéro de port dans "<strong>Source Port</strong>". 1080  est le numéro du port utilisé par SOCKS5, tel que spécifié dans la <a title="RFC 1928" href="http://tools.ietf.org/html/rfc1928">RFC 1928</a>. Cliquez sur "<strong>Add</strong>" pour ajouter cette redirection. Vous devriez obtenir ceci :</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-211" title="Redirection de port appliquée" src="http://www.morveus.com/wordpress/wp-content/uploads/2009/10/putty_3.png" alt="Redirection de port appliquée" width="466" height="448" /></p>
<p style="text-align: left;">Lorsque vous êtes prêt, cliquez sur "Open". Vous avez aussi la possibilité de sauvegarder ce profil en retournant à l'écran d'accueil de Putty, dans "<strong>Saved Sessions</strong>". Tapez un nom et faites "<strong>Save</strong>". Cela vous permettra de la réutiliser la prochaine fois, sans avoir à repasser par ces étapes.</p>
<p style="text-align: left;">Note : cochez "<strong>Local ports accept connections from other hosts</strong>" si vous souhaitez que d'autres machines du même réseau local puisse se connecter au travers de ce tunnel.</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-212" title="Session SSH ouverte" src="http://www.morveus.com/wordpress/wp-content/uploads/2009/10/putty_4.png" alt="Session SSH ouverte" width="771" height="424" /></p>
<p style="text-align: left;">Nous voici connectés. Il est évidemment possible d'utiliser le terminal SSH pour travailler normalement sur la machine. La différence est que maintenant, Putty écoute sur le port 1080, attendant que vos applis s'y connectent.</p>
<h4><span style="color: #888888;">Depuis une machine sous Mac OS<br />
</span></h4>
<p>Ouvrez une fenêtre de terminal, et tapez :</p>
<pre class="brush: bash">

# Ouverture du tunnel
# Les commandes sont les mêmes que sous Linux
ssh nom_ou_ip_de_lamachine -D 1080 -l nom_utilisateur
# Exemple concret :
ssh morveus.com -D 1080 -l administrateur
</pre>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-220" title="Session SSH ouverte sous Mac OS" src="http://www.morveus.com/wordpress/wp-content/uploads/2009/10/mac_ssh.png" alt="Session SSH ouverte sous Mac OS" width="505" height="142" /><em>La commande tapée sous le terminal de Mac OS X. Tapez simplement "yes" pour continuer.<br />
</em></p>
<p>Vous pouvez aussi utiliser Putty, qui existe sous quasiment toutes les plate-formes (Windows, Linux, Mac OS, Symbian, Windows Mobile, iPhone, J2ME, ...). La méthode sera alors la même que ci-dessus pour Windows.</p>
<h3><span style="color: #333333;">"Tunneller" un logiciel<br />
</span></h3>
<p>Toute application vous permettant de changer ses paramètres de connexion proxy peut passer par le tunnel. Voici un exemple avec Firefox sous Windows (fonctionne de la même manière sous <strong>Mac OS </strong>et sous <strong>Linux</strong>) :</p>
<p><img class="aligncenter size-full wp-image-213" title="Configuration du réseau sous Firefox" src="http://www.morveus.com/wordpress/wp-content/uploads/2009/10/Réseau.png" alt="Configuration du réseau sous Firefox" width="546" height="460" /></p>
<p>Rendez-vous donc dans le menu "<strong>Outils </strong>&gt; <strong>Options</strong>". Cliquez sur l'icône "<strong>Avancé</strong>", l'onglet "<strong>Réseau</strong>". Cliquez sur "<strong>Paramètres</strong>". Une nouvelle fenêtre s'ouvre alors :</p>
<p><img class="aligncenter size-full wp-image-215" title="Page de configuration du proxy" src="http://www.morveus.com/wordpress/wp-content/uploads/2009/10/Proxy.png" alt="Page de configuration du proxy" width="513" height="449" /></p>
<p>Cochez "<strong>Configuration manuelle du proxy</strong>", puis dans la case "<strong>Hôte SOCKS</strong>", entrez l'adresse IP du loopback (<strong>127.0.0.1</strong>) de votre machine. Si vous avez ouvert le tunnel depuis une autre machine sur votre réseau local, entrez son adresse IP (<strong>192.168.x.x</strong>, <strong>10.0.0.x</strong>, ...)</p>
<p>Saisissez "<strong>1080</strong>" dans la case "<strong>Port</strong>" (ou une autre valeur, selon celle que vous avez indiquée à Putty).</p>
<p>Validez par <strong>OK</strong>, puis encore <strong>OK </strong>pour fermer la fenêtre des options... Et voilà !<br />
Lorsque Firefox ouvrira une page Web, tout sera chiffré par Putty et transmis de manière sécurisée à votre serveur distant. Votre boss, votre voisin, votre femme, ... ne sauront rien !</p>
<p>Notez aussi que bien entendu, les sites Web auxquels vous accéderez verront l'adresse IP de votre serveur et non votre adresse IP personnelle. Cela apporte un petit plus.</p>
<p style="text-align: center;"><img class="size-full wp-image-216 alignnone" title="Adresse IP avant connexion au tunnel" src="http://www.morveus.com/wordpress/wp-content/uploads/2009/10/ip1.png" alt="Adresse IP avant connexion au tunnel" width="261" height="79" /> <img class="size-full wp-image-217 alignnone" title="Adresse IP après connexion au tunnel" src="http://www.morveus.com/wordpress/wp-content/uploads/2009/10/ip2.png" alt="Adresse IP après connexion au tunnel" width="261" height="79" /></p>
<p style="text-align: center;"><em>Mon adresse IP en connexion directe (voir <a title="Connaître votre adresse IP ;)" href="http://www.alaide.com/outils_monip.php">alaide.com</a>)  à gauche, et l'IP que voient les hôtes distants lorsque je suis connecté au travers d'un tunnel.</em></p>
<h3><span style="color: #333333;">"Socksification" d'un logiciel</span></h3>
<p>C'est bien beau tout ça, mais comment faire quand votre logiciel ne vous permet pas de choisir (ou alors pas facilement) un proxy à utiliser pour la connexion ? Certaines applications (ou jeux ^^) n'offrent pas cette possibilité, mais vous souhaitez quand même les faire passer au travers de votre tunnel...</p>
<p>C'est là qu'interviennent les programmes dits "<em>socksifiers</em>". Ils interceptent les paquets sortant de vos applications et les envoient vers un proxy (ici, on les renverra à l'adresse de notre client SSH, sur le port choisi -1080 par défaut-)</p>
<p>Le plus simple d'utilisation que je connaisse est <strong><a title="Site de Proxifier" href="http://www.proxifier.com">Proxifier</a></strong>. Il est disponible en version d'essai et coûte environ 25€ actuellement (40$).</p>
<p>Une fois installé / ouvert, il suffit d'aller dans "<strong>Options </strong>&gt; <strong>Proxy Settings</strong>", de faire "<strong>Add</strong>" et de saisir ceci :</p>
<p><img class="aligncenter size-full wp-image-218" title="Ajouter un proxy sous Proxifier" src="http://www.morveus.com/wordpress/wp-content/uploads/2009/10/proxifier.png" alt="Ajouter un proxy sous Proxifier" width="376" height="391" /></p>
<p>Saisissez donc votre adresse IP (ou celle du client qui a ouvert le tunnel) ainsi que le numéro du port à utiliser (<strong>1080 </strong>par convention). Cochez "<strong>SOCKS Version 5</strong>", puis cliquez sur OK.</p>
<p>Vos applications seront automatiquement "tunnellées" : bureautique, jeux vidéos, multimédia... Il existe très peu d'exceptions !</p>
<p>Il est possible d'exclure des adresses IP (ou des plages), même chose pour les ports, et des applications. Rendez-vous dans "Options &gt; Proxification rules", puis cliquez sur "Add". Vous pourrez ainsi choisir quels IP / ports / applications exclure de la socksification/proxification (hurray for the barbarsims !)</p>
<h3><span style="color: #333333;">We're done !<br />
</span></h3>
<p>Ceci conclut ce petit article très basique sur le tunnelling. J'espère qu'il vous apparaît facile à reproduire, si vous êtes perdus je suis ouvert à toute question.</p>
<p>Par la suite, je publierai une série d'articles un peu plus spécifiques, m'étant longuement pris la tête sur divers problèmes liés à cette technique. J'espère arriver à restituer ce que j'ai appris en lisant pas mal sur le Net, mais que j'ai toujours trouvé par bribes d'informations. Ces articles traiteront donc des sujets suivants :</p>
<ul>
<li>Comment assurer un minimum la sécurité de son serveur OpenSSH ?<br />
(interdire l'accès root, identification par paires de clés, port alternatif)</li>
<li>Comment traverser un proxy bloquant d'entreprise avec un serveur OpenSSH sous Linux ?</li>
<li>Comment faire si ce proxy détecte les connexions SSH ?</li>
<li>Comment réaliser la même chose, mais avec un serveur sous Windows à la maison (si on ne possède pas de dédié sous Linux) ?</li>
</ul>
<p>Bon tunnelling à tous !</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 3858px; width: 1px; height: 1px;"><img src="file:///C:/Users/ADMINI%7E1/AppData/Local/Temp/moz-screenshot.png" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.morveus.com/archives/les-tunnels-ssh-intro/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	<img style='margin:0;padding:0;border:0;' width='1px' height='1px' src="http://www.morveus.com/wp-content/plugins/mystat/mystat.php?act=time_load&id=11242&rnd=1468535013" /></channel>
</rss>
