<?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>www.pc-kc.fr &#187; pscp</title>
	<atom:link href="http://www.pc-kc.fr/tag/pscp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pc-kc.fr</link>
	<description>Le site pour garder le contact avec votre PC</description>
	<lastBuildDate>Tue, 07 Feb 2012 07:23:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Contourner un proxy (la suite&#8230;) ssh le retour</title>
		<link>http://www.pc-kc.fr/tutos/contourner-un-proxy-la-suite/</link>
		<comments>http://www.pc-kc.fr/tutos/contourner-un-proxy-la-suite/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 12:53:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Tutoriaux]]></category>
		<category><![CDATA[apt-get]]></category>
		<category><![CDATA[chroot]]></category>
		<category><![CDATA[openssh]]></category>
		<category><![CDATA[plink]]></category>
		<category><![CDATA[pscp]]></category>
		<category><![CDATA[psftp]]></category>
		<category><![CDATA[putty]]></category>
		<category><![CDATA[rssh]]></category>
		<category><![CDATA[TightVNC]]></category>
		<category><![CDATA[VNC]]></category>

		<guid isPermaLink="false">http://www.pc-kc.fr/?p=25</guid>
		<description><![CDATA[Suite à quelques problèmes rencontrés récemment, en voyant qu’autour de moi certaines personnes avait des difficultés, qu’elles s’étaient auto bloqués derrière un firewall, ou derrière une livebox&#8230;. De ce fait il devient &#171;&#160;impossible&#160;&#187; pour moi de me connecter chez eux, puisque tout est bloqué. Dans cette hypothèse il devient alors évident qu’il vaut mieux que [...]]]></description>
			<content:encoded><![CDATA[<div class="mgs_intro">Suite à quelques problèmes rencontrés récemment, en voyant qu’autour de moi certaines personnes avait des difficultés, qu’elles s’étaient auto bloqués derrière un firewall, ou derrière une livebox&#8230;.</div>
<div class="mgs_texte">
<p class="spip">De ce fait il devient &laquo;&nbsp;impossible&nbsp;&raquo; pour moi de me connecter chez eux, puisque tout est bloqué.</p>
<p class="spip">Dans cette hypothèse il devient alors évident qu’il vaut mieux que ce soit eux qui établissent la connexion vers ma machine et non l’inverse.</p>
<p class="spip">Il convient donc de faire quelques petits aménagements sur putty et VNC</p>
<p class="spip"><strong class="spip">1. But :</strong></p>
<hr class="spip" />
<p class="spip">Le but est de parvenir à ce Schéma :</p>
<p class="spip">
<div id="attachment_110" class="wp-caption aligncenter" style="width: 721px"><a href="http://www.pc-kc.fr/wp-content/uploads/2009/02/assist_pc.png"><img class="size-full wp-image-110" title="assist_pc" src="http://www.pc-kc.fr/wp-content/uploads/2009/02/assist_pc.png" alt="schéma tunnel inversé" width="711" height="503" /></a><p class="wp-caption-text">schéma tunnel inversé</p></div>
<dl class="spip_document_23 spip_documents spip_documents_center" style="width: 510px;">
<dt> </dt>
</dl>
<p class="spip"><strong class="spip">2. Outils :</strong></p>
<hr class="spip" />
<ul class="spip">
<li class="spip"> Plink, PSFTP, PSCP (les outils de PuTTY en version portable)</li>
<li class="spip"> OpenSSH, (là j’explique pas de nouveau)</li>
<li class="spip"> et si on peut considérer ça comme un outils CHROOT et SCPONLY</li>
</ul>
<p class="spip"><strong class="spip">3. Mise en place de CHROOT :</strong></p>
<hr class="spip" />
<p class="spip">là c’est simple (au début) il suffit de créer un environnement <a class="spip_out" href="http://fr.wikipedia.org/wiki/Chroot">CHROOTé</a>. En fait nous allons créer 2 utilisateurs :</p>
<ul class="spip">
<li class="spip"> le premier Remote qui n’aura le droit de faire que du SCP ou ou du SFTP, voir les 2 (là c’est vous qui déçidez&#8230;)</li>
<li class="spip"> le deuxième Assistance qui ne pourra rien faire si ce n’est d’ouvrir une session et et un port sur votre machine.</li>
</ul>
<blockquote><p><code class="spip_code" dir="ltr">#adduser remote</code></p></blockquote>
<p class="spip">Le répertoire de <strong class="spip">remote</strong> devra ressembler au final à ça :</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code><br />
/home/remote<br />
|-- etc<br />
|   |-- group<br />
|   `-- passwd<br />
|-- lib<br />
|   |-- ld-linux.so.2<br />
|   `-- tls<br />
|       |-- libc.so.6<br />
|       |-- libcrypt.so.1<br />
|       |-- libdl.so.2<br />
|       |-- libnsl.so.1<br />
|       |-- libresolv.so.2<br />
|       `-- libutil.so.1<br />
|-- remote.txt<br />
`-- usr<br />
|-- bin<br />
|   |-- rssh<br />
|   |-- scp<br />
|   `-- sftp<br />
`-- lib<br />
|-- i686<br />
|   |-- cmov<br />
|   `-- libcrypto.so.0.9.7<br />
|-- libz.so.1<br />
|-- rssh<br />
|   `-- rssh_chroot_helper<br />
`-- sftp-server</code>9 directories, 17 files</div>
</blockquote>
<p class="spip">Pour arriver au résultat ci dessus, il faut commencer par créer les répertoires :</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code><br />
<em>#mkdir /home/assistance/etc</em><br />
</code></div>
</blockquote>
<p class="spip">Il faut répeter l’opération autant de fois qu’il y a de répertoires :’( ,  pour les fichiers la méthode à employer est la suivante :</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code><em># ldd /usr/bin/scp<br />
libresolv.so.2 =&gt; /lib/tls/libresolv.so.2 (0x40027000)<br />
libcrypto.so.0.9.7 =&gt; /usr/lib/i686/cmov/libcrypto.so.0.9.7 (0x40039000)        libutil.so.1 =&gt; /lib/tls/libutil.so.1 (0x40139000)<br />
libz.so.1 =&gt; /usr/lib/libz.so.1 (0x4013c000)<br />
libnsl.so.1 =&gt; /lib/tls/libnsl.so.1 (0x4014e000)<br />
libcrypt.so.1 =&gt; /lib/tls/libcrypt.so.1 (0x40162000)<br />
libc.so.6 =&gt; /lib/tls/libc.so.6 (0x4018f000)<br />
libdl.so.2 =&gt; /lib/tls/libdl.so.2 (0x402c4000)<br />
/lib/ld-linux.so.2 =&gt; /lib/ld-linux.so.2 (0x40000000)</em><br />
</code></div>
</blockquote>
<p class="spip">dans ce cas il faut copier les fichiers renvoyés par la commande ldd vers le bon répertoire de l’utilisateur <strong class="spip">remote</strong>.</p>
<blockquote>
<p class="spip"><em><code class="spip_code" dir="ltr">#cp /lib/tls/libresolv.so.2 /home/assistance/lib/tls</code></em></p>
</blockquote>
<p class="spip">Il y a aussi d’autres méthodes « automatiques » que vous pourrez trouver su <a class="spip_out" href="http://lea-linux.org/cached/index/Trucs:Chrooter_un_utilisateur_%28ssh,_terminal,_console,_etc...%29.html">léa-linux là</a>. ce tuto m’a d’ailleurs bien aidé pour faire cette manip, merci à son auteur.</p>
<p class="spip">Il faut aussi installer RSSH qui permet d’installer un shell très limité aux commandes SSH, du type <em class="spip">scp</em> ou <em class="spip">sftp</em>.</p>
<blockquote>
<p class="spip"><em><code class="spip_code" dir="ltr">#apt-get install rssh</code></em></p>
</blockquote>
<p class="spip">Puis il faut configurer rssh, il faut donc éditer le fichier suivant : <strong class="spip">/etc/rssh.conf</strong> et vérifier qu’il ne contient bien que ces lignes à l’intérieur.</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code><em><br />
</em> logfacility = LOG_USER<br />
allowscp # pour autoriser la commande SCP<br />
allowsftp # pour autoriser la commande SFTP<br />
umask = 022<br />
chrootpath="/home/remote"<br />
</code></div>
</blockquote>
<p class="spip">Ensuite il faut affecter le bon shell à l’utilisateur.</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code>vim /etc/passwd<br />
remote:x:1003:1003:remote,,,:/home/remote:/usr/bin/rssh<br />
</code></div>
</blockquote>
<p class="spip">maintenant vous pouvez tester la connexion avec l’utilisateur remote.</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code>$ sftp remote@localhost<br />
Connecting to localhost...<br />
Password:<br />
sftp&gt; ls<br />
.            ..           etc          lib          remote.txt   usr<br />
sftp&gt;</code></div>
</blockquote>
<ul class="spip">
<li class="spip"><strong class="spip">Info :</strong> si vous faites le même test avec scp il se peut que vous ayez cette erreur : <strong class="spip">unknown user 1003</strong> où 1003 est l’ID de votre utilisateur, je n’ai pas trouver comment résoudre cette erreur sachant que ça fonctionne depuis pscp sous windows.</li>
</ul>
<blockquote>
<p class="spip"><code class="spip_code" dir="ltr">#adduser assistance</code></p>
</blockquote>
<p class="spip">Quant à <strong class="spip">assistance</strong> c’est encore plus simple dailleurs un simple copier coller des 2 répertoires suffit, toutefois il ne faut oublier de supprimer les choses en trop <img src='http://www.pc-kc.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code><br />
<em>/home/assistance<br />
|-- .ssh<br />
|   |-- authorized_keys<br />
|   `-- remote.pub<br />
|-- bin<br />
|   `-- bash<br />
`-- lib<br />
|-- ld-linux.so.2<br />
|-- libc.so.6<br />
|-- libdl.so.2<br />
`-- libncurses.so.5</em></code></div>
<p class="spip">
</blockquote>
<p class="spip">Toutefois il y a quand même quelques manipulations a effectuer, car dans l’état actuel, c’est plutôt bof <img src='http://www.pc-kc.fr/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> .</p>
<p class="spip">Donc, il faut créer un &laquo;&nbsp;faux&nbsp;&raquo; shell</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code><br />
<em>#vim /bin/chrootassistance<br />
#!/bin/bash<br />
exec -c /usr/sbin/chrootassistance_suid /home/$USER /bin/bash</em></code></div>
</blockquote>
<p class="spip">Puis il faut changer les droits de l’utilisateur et copier le fichier chroot.</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code><em># chmod 755 /bin/chrootassistance<br />
cp /usr/sbin/chroot /usr/sbin/chrootassistance_suid<br />
chmod 4755 /usr/sbin/chrootassistance_suid</em><br />
</code></div>
</blockquote>
<p class="spip">Enfin il ne faut pas oublier le contenu du fichier <strong class="spip">/etc/passwd</strong></p>
<blockquote>
<p class="spip"><em><code class="spip_code" dir="ltr">assistance:x:1004:1004:,,,:/home/assistance:/bin/chrootassistance</code></em></p>
</blockquote>
<p class="spip">Ensuite tester la connexion :</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code> <em>su assistance<br />
Password:<br />
bash-2.05b$</em><br />
</code></div>
</blockquote>
<p class="spip">Vous pouvez tenter de faire un ls, un cp, ou ce que vous voulez ce ne sera pas possible.</p>
<p class="spip"><strong class="spip">4. Créer les éléments de connexion :</strong></p>
<hr class="spip" />
<p class="spip">Pour &laquo;&nbsp;sécuriser&nbsp;&raquo; un minimum la connexion il va falloir autoriser l’utilisateur externe à se connecter dans des conditions sécurisées.</p>
<p class="spip">il faut tout d’abord générer une paire de clef ssh</p>
<blockquote>
<p class="spip"><em><code class="spip_code" dir="ltr">#ssh-keygen -b 2048 -t dsa -f Nom-Clef -N PassPhrase</code></em></p>
</blockquote>
<p class="spip">ensuite pour que cette clef soit comprise par PuTTY il faut la convertir</p>
<blockquote>
<p class="spip"><em><code class="spip_code" dir="ltr">$puttygen Nom-Clef -o remote.txt</code></em></p>
</blockquote>
<p class="spip">le fichier <strong class="spip">remote.txt</strong> sera stocké à la racine de <em class="spip">/home/remote</em> attention c’est une clef privée, il faut donc la changer régulièrement et ne pas donner la passphrase à n’importe qui <img src='http://www.pc-kc.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p class="spip">puis vous copiez la clef Nom-Clef.pub dans /home/assistance/.ssh puis vous changez les droits sur cette clef</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code># chmod 64 /home/assistance/.ssh/Nom-Clef.pub<br />
# cat Nom-Clef.pub &gt; authorized_keys<br />
# chmod 64 /home/assistance/.ssh/authorized_keys<br />
</code></div>
</blockquote>
<ul class="spip">
<li class="spip"><strong class="spip">Résumons :</strong>
<ul>
<li> Nous avons créer les 2 environnements CHROOTé</li>
<li> Nous sommes capables de nous connecter sur les 2 environnements</li>
<li> un utilisateur (remote) peut récupérer et copier des fichiers</li>
<li> un utilisateur (assistance) peut uniquement se connecter.</li>
</ul>
</li>
</ul>
<p class="spip"><strong class="spip">5. Changeons d’environnement :</strong></p>
<hr class="spip" />
<p class="spip">Sous windows il suffit ensuite de récupérer la clef du premier environnement Chrooté pour cela 2 utilitaires sont disponibles avec putty, et tout dépend de ce que vous avez autorisez dans le fichier <em class="spip">/etc/rssh.conf</em>.</p>
<p class="spip">Au choix :</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code><br />
pscp -P 80 -pw MotDePasseUtilisateurChrooté UtilisateurChrooté@AdresseIP:/remote.txt remote.txt<br />
</code></div>
<div class="spip_code" style="text-align: left;" dir="ltr"><code><br />
psftp -P 80 UtilisateurChrooté@AdresseIP -pw MotDePasseUtilisateurChrooté -b script.scr<br />
</code></div>
</blockquote>
<p class="spip"><em>UtilisateurChrooté</em> = remote (dans notre cas)<br />
<em>script.scr</em> est un fichier texte qui contient les commandes a exécuter</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code>get remote.txt remote.txt<br />
bye<br />
</code></div>
</blockquote>
<p class="spip">Ensuite grâce à l’utilitaire plink il suffit d’étblir la connection :</p>
<blockquote>
<div class="spip_code" style="text-align: left;" dir="ltr"><code><br />
plink -P 80 -l Assistance -R AdresseIP:59000:localhost:5900 -i remote.ppk AdresseIP<br />
</code></div>
</blockquote>
<p class="spip"><em>AdresseIP</em> : est l’adresse de votre PC (dépanneur)</p>
<p class="spip">Cette ligne a pour incidence d’ouvrir un port le 59000 sur le pc du dépanneur en sortant par le port 80 et en utilisant l’utilisateur Assistance et la clef remote.ppk</p>
<p class="spip">Par la suite il faut modifier les paramètres de VNC comme dans les écrans ci dessous afin d’autoriser le loopback et uniquement le loopback ce qui empêchera toute connexion à VNC autrement qu’en local sur le port 5900 :</p>
<blockquote>
<p class="spip">
<p class="spip"><span class="spip_document_19 spip_documents spip_documents_center"> </span></p>
<p class="spip"><span class="spip_document_20 spip_documents spip_documents_center"> </span></p>
</blockquote>
<dt class="wp-caption-dt"><a href="http://www.pc-kc.fr/wp-content/uploads/2009/02/vnc_advanced.jpg"><img class="size-full wp-image-113" title="vnc_advanced" src="http://www.pc-kc.fr/wp-content/uploads/2009/02/vnc_advanced.jpg" alt="Propriétés avancées pour le loopback" width="470" height="334" /></a></dt>
<dd class="wp-caption-dd">Propriétés avancées pour le loopback</dd>
<p class="spip">Avec cette méthode tout est &laquo;&nbsp;sécurisé&nbsp;&raquo; la seule faille étant dans la première récupération de clef, mais il suffit de ne pas communiquer les mots de passe ainsi que la passe phrase autrement que par téléphone ou mail.</p>
<p class="spip">Certes la procédure peu paraître compliquée surtout pour le dépanné qui est supposé être novice en informatique, mais si on extrapole un peu il devient possible de créer un petit bout de soft avec NSIS, InnoSetup ou du Script, afin de simplifier la tâche de ce pauvre utilisateur, et automatiser tout ça <img src='http://www.pc-kc.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>3 directories, 7 files</p>
<dt class="wp-caption-dt"><a href="http://www.pc-kc.fr/wp-content/uploads/2009/02/vnc_properties.jpg"><img class="size-full wp-image-111" title="vnc_properties" src="http://www.pc-kc.fr/wp-content/uploads/2009/02/vnc_properties.jpg" alt="Propriétés de VNC pour le loopback" width="570" height="351" /></a></dt>
<dd class="wp-caption-dd">Propriétés de VNC pour le loopback</dd>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.pc-kc.fr/tutos/contourner-un-proxy-la-suite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

