{"id":560,"date":"2011-06-21T11:35:55","date_gmt":"2011-06-21T09:35:55","guid":{"rendered":"http:\/\/stephane.weblog.starend.org\/?p=560"},"modified":"2011-06-21T11:35:55","modified_gmt":"2011-06-21T09:35:55","slug":"securisation-du-surf-internet-depuis-un-reseau-non-sur","status":"publish","type":"post","link":"http:\/\/stephane.weblog.starend.org\/?p=560","title":{"rendered":"S\u00e9curisation du surf Internet depuis un r\u00e9seau non s\u00fcr"},"content":{"rendered":"<p>Petit hack entre amis :-)<\/p>\n<h2>Introduction<\/h2>\n<p>Le probl\u00e8me est assez simple \u00e0 la base, me permettre de surfer sur le net de fa\u00e7on s\u00e9curis\u00e9e sur un r\u00e9seau inconnu (par d\u00e9faut non s\u00fcr).<br \/>\nUn des int\u00e9r\u00eats est aussi de pouvoir me connecter \u00e0 ma banque en pr\u00e9sentant mon adresse IP Fran\u00e7aise alors que je suis reli\u00e9 au net depuis l&rsquo;\u00e9tranger (Colombie Pologne etc&#8230;). Autre cas qui facilite la vie en conservant mon adresse IP, la connexion \u00e0 Facebook. Dans le cas contraire, on se retrouve dans un processus de v\u00e9rification d&rsquo;identit\u00e9 fastidieuse et al\u00e9atoire&#8230;<!--more--><\/p>\n<h2>Tunnel SSH<\/h2>\n<p>J&rsquo;aurais pu utiliser IPSEC&#8230; mais je n&rsquo;ai pas encore install\u00e9 IPSEC chez moi. Ce sera pour une prochaine fois.<\/p>\n<p>J&rsquo;utilise un tunnel SSH vers une machine disposant d&rsquo;un proxy (Squid dans mon cas).<\/p>\n<p>Dans ce sch\u00e9ma, la machine <em>Relai <\/em>n&rsquo;est pas utilis\u00e9e&#8230; pour l&rsquo;instant. Le <em>serveur \u00e0 la maison<\/em> est d\u00e9crit dans le deuxi\u00e8me sch\u00e9ma.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/stephane.weblog.starend.org\/wp-uploads\/stephane\/2011\/06\/relai_ssh.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-561\" title=\"relai_ssh\" src=\"http:\/\/stephane.weblog.starend.org\/wp-uploads\/stephane\/2011\/06\/relai_ssh.png\" alt=\"\" width=\"425\" height=\"408\" \/><\/a><\/p>\n<p>Explications du sch\u00e9ma.<br \/>\n1) Je ne veux pas aller me connecter directement sur les services web depuis un r\u00e9seau inconnu, en clair le plus souvent.<br \/>\n2) Depuis mon portable, j&rsquo;ouvre un tunnel vers chez moi sur le port tcp\/27022. L&rsquo;autre bout du tunnel, c&rsquo;est le relai web Squid qui \u00e9coute sur le port tcp\/8080. Mes connexions vers le web passent par le tunnel vers le relai web.<br \/>\n3) le relai web relaye mes connexions vers Internet, comme si j&rsquo;\u00e9tais chez moi.<\/p>\n<p>Pour l&rsquo;exercice de style le v\u00e9ritable port tcp a \u00e9t\u00e9 remplac\u00e9 par le port tcp\/27022. Les connaisseurs reconna\u00eetrons quelque chose qui s&rsquo;approche des ports utilis\u00e9s \u00e0 l&rsquo;\u00e9poque du HL <a title=\"http:\/\/fr.wikipedia.org\/wiki\/Counter-Strike\" href=\"http:\/\/fr.wikipedia.org\/wiki\/Counter-Strike\" target=\"_blank\">Counter Strike<\/a> premier du nom ;-)<\/p>\n<p>Mon port tcp\/22 \u00e9tant d\u00e9j\u00e0 occup\u00e9 (mapp\u00e9), je d\u00e9cide de faire entrer le tunnel SSH par le port tcp\/27022. En fait parce que la machine derri\u00e8re qui va recevoir le relai Squid n&rsquo;est pas la m\u00eame que celle qui re\u00e7oit d\u00e9j\u00e0 le port tcp\/22 SSH habituel.<\/p>\n<p>Le serveur relai Squid re\u00e7oit bien une connexion tcp\/22, il y a translation de l&rsquo;adresse destination publique (82.226.39.232 -&gt; ip interne) et du port (27022 -&gt; 22) par le pare-feu. Le serveur relai Squid lui peut ressortir vers Internet comme toute machine interne au r\u00e9seau, elle est donc dans un r\u00e9seau <em>client<\/em> et non <em>serveur<\/em> (beaucoup plus limit\u00e9 par nature).<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/stephane.weblog.starend.org\/wp-uploads\/stephane\/2011\/06\/relai_ssh_proxy.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-562\" title=\"relai_ssh_proxy\" src=\"http:\/\/stephane.weblog.starend.org\/wp-uploads\/stephane\/2011\/06\/relai_ssh_proxy.png\" alt=\"\" width=\"453\" height=\"229\" \/><\/a><\/p>\n<p style=\"text-align: left;\">Explications de sch\u00e9ma.<br \/>\n<strong>tcp\/22<\/strong> : Toute connexion SSH vers chez moi sur le port tcp\/22 est redirig\u00e9e vers le <em>serveur SSH autre<\/em>, serveur qui n&rsquo;est pas le relai web que je souhaite utiliser.<br \/>\n<strong>tcp\/27022<\/strong> : Toute connexion SSH vers chez moi sur le port tcp\/27022 est redirig\u00e9e vers le <em>serveur relai Squid<\/em>, (sur le port tcp\/22) celui qui va relayer mes connexions au web.<br \/>\n<strong>Sortie <\/strong>: Le <em>serveur relai Squid <\/em>\u00e0 la possibilit\u00e9 de sortir sur le web directement, il relayera mes connexions vers le web (tcp\/80 et tcp\/443).<\/p>\n<h2>Relai Squid<\/h2>\n<p>Le <em>serveur relai Squid<\/em> qui va relayer les requ\u00eates de pages web vers Internet est une machine Linux classique physique ou virtuelle, avec ou sans interface graphique. Dans mon cas une machine virtuelle proposant d\u00e9j\u00e0 d&rsquo;autres services sur le r\u00e9seau (oui je sais c&rsquo;est pas bien).<\/p>\n<p>Il suffit d&rsquo;installer un logiciel proxy web tel que Squid et de le faire \u00e9couter sur l&rsquo;interface de loopback (uniquement) sur le port 8080.<\/p>\n<h2>Connexion depuis le portable<\/h2>\n<p>Depuis le portable, il faut initialiser pr\u00e9alablement le tunnel. Cela se fait avec cette commande (\u00e0 mettre dans un script) :<\/p>\n<pre>ssh -p 27022 -f -L 8080:localhost:8080 root@82.226.39.232 \/root\/wait.sh<\/pre>\n<p>Oui, je sais c&rsquo;est pas bien d&rsquo;utiliser <em>root<\/em> comme compte distant pour ouvrir le tunnel. Cr\u00e9er un autre utilisateur d\u00e9di\u00e9 et lui permettre de cr\u00e9er des tunnels&#8230;<\/p>\n<p>Le script <em>\/root\/wait.sh<\/em> est \u00e0 cr\u00e9er sur le <em>serveur relai Squid<\/em>. Il ne contient que :<\/p>\n<pre>while true ; do sleep 1 ; done<\/pre>\n<p>Une fois lanc\u00e9, <em>netstat<\/em> remonte cette connexion :<\/p>\n<pre>tcp   0   0 x.x.x.x:yyyyy   82.226.39.232:27022   ESTABLISHED<\/pre>\n<p>Localement sur le portable, un port en \u00e9coute appara\u00eet, le port tcp\/8080. C&rsquo;est le d\u00e9but du tunnel. L&rsquo;autre bout du tunnel est sur le <em>serveur relai Squid<\/em>, port tcp\/8080 aussi, le port sur lequel \u00e9coute Squid justement&#8230;<\/p>\n<p>Ne reste plus qu&rsquo;\u00e0 configurer le navigateur pour qu&rsquo;il utilise un proxy en localhost port 8080 :-)<\/p>\n<h2>En Colombie<\/h2>\n<p>En Colombie, cela \u00e0 parfaitement march\u00e9. C&rsquo;\u00e9tait un peu plus lent que en directe mais il ne faut pas n\u00e9gliger deux choses :<br \/>\n&#8211; on traverse une fois dans un sens le monde pour ensuite peut-\u00eatre repartir en sens inverse.<br \/>\n&#8211; on passe par le flux <em>upload <\/em>de chez moi, plus restreint que le flux <em>download<\/em>, le fameux A de ADSL&#8230;<\/p>\n<p>Bref, rien \u00e0 redire :-)<\/p>\n<h2>Et en Pologne ?<\/h2>\n<p>Le cas de la Pologne est un peu plus trouble :-\/<\/p>\n<p>Arriv\u00e9 \u00e0 l&rsquo;h\u00f4tel, je r\u00e9cup\u00e8re un identifiant de connexion et tente de me connecter de la m\u00eame fa\u00e7on.<\/p>\n<p>Mis \u00e0 part quelques probl\u00e8mes techniques et choix douteux dans la m\u00e9thode de connexion pour les utilisateurs, propre \u00e0 cet h\u00f4tel, tout se passe bien&#8230; pendant 2 heures.<\/p>\n<p>En effet, apr\u00e8s 2 heures environ, je pers la connexion avec la maison. Plus trouble encore, impossible d&rsquo;avoir acc\u00e8s \u00e0 mon adresse sur quelque port que ce soit. Plus de web, plus de messagerie, plus de jabber, plus de ssh :-(<\/p>\n<p>Mon serveur \u00e0 la maison est en panne?<br \/>\nNon, apr\u00e8s v\u00e9rification il marche tr\u00e8s bien et est accessible depuis Internet. Ca marche par exemple en passant par un relai web ouvert type <a title=\"http:\/\/proxy.org\/\" href=\"http:\/\/proxy.org\/\" target=\"_blank\">http:\/\/proxy.org\/<\/a> .<br \/>\nNon, on dirait que mon adresse IP de chez moi \u00e0 moi que j&rsquo;ai est filtr\u00e9e par l&rsquo;h\u00f4tel !!!<\/p>\n<p>Test au restaurant de l&rsquo;h\u00f4tel, curieusement ce n&rsquo;est pas le m\u00eame r\u00e9seau. Pareil au bout de 2h.<\/p>\n<p>Pourquoi diable filtre-t-on mon adresse IP?<br \/>\nSeule r\u00e9ponse possible, c&rsquo;est parce que j&rsquo;utilise un port un peu \u00ab\u00a0bizarre\u00a0\u00bb. Le tcp\/27022 ne correspond \u00e0 rien de connu.<\/p>\n<p>Pour contourner le probl\u00e8me, je vais passer par une autre machine relai.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/stephane.weblog.starend.org\/wp-uploads\/stephane\/2011\/06\/relai_ssh_relai2.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-563\" title=\"relai_ssh_relai2\" src=\"http:\/\/stephane.weblog.starend.org\/wp-uploads\/stephane\/2011\/06\/relai_ssh_relai2.png\" alt=\"\" width=\"424\" height=\"402\" \/><\/a><\/p>\n<p>Explications du sch\u00e9ma.<br \/>\n1) Je ne veux pas aller me connecter directement sur les services web depuis un r\u00e9seau inconnu, en clair le plus souvent.<br \/>\n2) Depuis mon portable, j&rsquo;ouvre un tunnel vers la nouvelle machine relai sur le port  tcp\/443.<br \/>\n3) La machine relai se contente de renvoyer les connexions tcp\/443 vers chez moi sur tcp\/27022.<br \/>\n4) le relai web relaye mes connexions vers Internet, comme si j&rsquo;\u00e9tais chez moi.<\/p>\n<p>Je demande \u00e0 un ami sur le net de me pr\u00eater une petite machine virtuelle Linux et de me translater dessus les connexions du net sur les ports tcp\/22 et tcp\/443 :<br \/>\n&#8211; Le port tcp\/22, c&rsquo;est pour que je puisse l&rsquo;administrer depuis la Pologne.<br \/>\n&#8211; Le port tcp\/443, c&rsquo;est pour faire <em>comme si<\/em> j&rsquo;utilisais un flux SSL vers chez lui.<br \/>\n\u00c9videmment il n&rsquo;utilise pas d\u00e9j\u00e0 ces ports en entr\u00e9 depuis Internet.<\/p>\n<p>Vers ce port tcp\/443, je me connecte en SSH (et non SSL) en remplacement de la connexion au port tcp\/27022 de chez moi. SSH n&rsquo;est pas SSL&#8230; mais quel importance si en face le serveur qui re\u00e7oit la connexion tcp\/443 est un serveur SSH ;-) Et surtout, ce port tcp\/443 est reconnu comme faisant transiter des connexions web s\u00e9curis\u00e9es, donc connues et potentiellement non filtr\u00e9es.<\/p>\n<p>Cette machine ne va pas recevoir un deuxi\u00e8me proxy web, j&rsquo;en ai un \u00e7a suffit. Elle va juste translater les connexions sur le port tcp\/443 vers chez moi sur le port tcp\/27022 !<\/p>\n<p>Victoire, je contourne le filtrage :-D<br \/>\nPar contre \u00e7a rame grave, mon ami a une <em>upload<\/em> de m___e :'(<br \/>\nMerci \u00e0 lui quand m\u00eame pour m&rsquo;avoir d\u00e9pann\u00e9 sur ce coup :-)<\/p>\n<p>Apr\u00e8s plusieurs jours en Pologne (que je recommande vivement pour du tourisme, notamment Krakow), j&rsquo;ai constat\u00e9 plusieurs choses :<br \/>\n&#8211; Le filtrage sur mon adresse IP tombait par d\u00e9faut au bout de 1 \u00e0 3 jours, naturellement.<br \/>\n&#8211; le probl\u00e8me de filtrage s&rsquo;est fait sentir aussi \u00e0 un Starbuck, donc ils ont le m\u00eame prestataire qu&rsquo;\u00e0 l&rsquo;h\u00f4tel.<br \/>\n&#8211; en fait, si on utilise un deuxi\u00e8me navigateur sans passer par le proxy web, et que l&rsquo;on t\u00e9l\u00e9charge <em>suffisamment<\/em>, le probl\u00e8me de filtrage n&rsquo;appara\u00eet pas. Peut-\u00eatre que dans ce cas mon port inconnu passe inaper\u00e7u dans le flot des connexions&#8230;<br \/>\nDu coup j&rsquo;ai t\u00e9l\u00e9charg\u00e9 quelques podcast de <a title=\"http:\/\/www.rsr.ch\/#\/couleur3\/\" href=\"http:\/\/www.rsr.ch\/#\/couleur3\/\" target=\"_blank\">Couleur3<\/a> pour camoufler ma connexion et \u00e9viter autant que possible l&rsquo;utilisation de la machine relai :-)<\/p>\n<h2>A corriger la prochaine fois<\/h2>\n<p>Plusieurs choses sont \u00e0 corriger.<\/p>\n<p>Peut-\u00eatre d\u00e9j\u00e0 utiliser par d\u00e9faut IPSEC et non un relai juste pour le web du navigateur.<\/p>\n<p>Un autre probl\u00e8me est que la machine, en dehors du navigateur, n&rsquo;utilise pas le relai et donc le tunnel s\u00e9curis\u00e9. Sont concern\u00e9s NTP (la mise \u00e0 l&rsquo;heure) et les mises \u00e0 jours (sign\u00e9es par d\u00e9faut). IPSEC serait une solution pour les inclure par d\u00e9faut.<\/p>\n<p>Ne pas utiliser <em>root<\/em> pour le bout du tunnel.<\/p>\n<p>Ne pas avoir besoin de passer par un relai web Squid. Vive IPSEC.<\/p>\n<p>Faire rentrer SSH via le port tcp\/443 d\u00e9j\u00e0 occup\u00e9 par SSL. Mettre en place le programme <a title=\"http:\/\/freshmeat.net\/projects\/sslh\" href=\"http:\/\/freshmeat.net\/projects\/sslh\" target=\"_blank\">sslh<\/a>.<\/p>\n<p>Et utiliser une machine juste pour cette t\u00e2che ingrate!<\/p>\n<h2>Fin<\/h2>\n<p>C&rsquo;est tout pour aujourd&rsquo;hui :-)<\/p>\n<p>Arr\u00eate de glander sur Internet et retourne bosser feignasse !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Petit hack entre amis :-) Introduction Le probl\u00e8me est assez simple \u00e0 la base, me permettre de surfer sur le net de fa\u00e7on s\u00e9curis\u00e9e sur un r\u00e9seau inconnu (par d\u00e9faut non s\u00fcr). Un des int\u00e9r\u00eats est aussi de pouvoir me connecter \u00e0 ma banque en pr\u00e9sentant mon adresse IP Fran\u00e7aise alors que je suis reli\u00e9 &hellip; <a href=\"http:\/\/stephane.weblog.starend.org\/?p=560\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">S\u00e9curisation du surf Internet depuis un r\u00e9seau non s\u00fcr<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[43,48,10,11,26,27],"tags":[360,362,394],"_links":{"self":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/posts\/560"}],"collection":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=560"}],"version-history":[{"count":0,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/posts\/560\/revisions"}],"wp:attachment":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=560"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=560"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}