Comment contourner la censure sur Internet ?


précédentsommairesuivant

31. Tunnels SSH

Le SSH, le Secure Shell, est un protocole standard qui chiffre les communications entre votre ordinateur et un serveur. Ce chiffrement permet d'empêcher que ces communications soient inspectées ou modifiées par les opérateurs réseau. SSH est utilisé en général pour sécuriser un grand nombre de types de communications, la connexion à un serveur ou les transferts de fichiers (scp ou SFTP).

SSH est particulièrement pratique pour contourner la censure, car il fournit des tunnels chiffrés et fonctionne comme un client proxy classique. Les censeurs peuvent ne pas avoir envie de bloquer SSH complètement, car il a de nombreuses utilisations que le contournement de la censure. Il est, par exemple, utilisé par les administrateurs système pour administrer leurs serveurs sur Internet.

Utiliser SSH nécessite un compte sur un serveur, généralement un serveur Unix ou Linux. Pour contourner la censure, ce serveur doit avoir un accès non restreint à Internet, et, si possible, être géré par un tiers de confiance. Certaines compagnies vendent également des comptes sur leurs serveurs, et beaucoup de formules d'hébergement web proposent un accès SSH. Une liste de comptes shell est disponible sur cette page :

On y trouve des comptes shell pour environ 2-10 dollars US par mois.

Un client SSH appelé OpenSSH est déjà installé sur la plupart des ordinateurs Unix, Linux, et Mac OS comme un programme en ligne de commande appelé par « ssh » dans un terminal. Pour Windows, vous pouvez également obtenir une implémentation libre de SSH appelée PuTTY.

Toute version récente de SSH supporte la création d'un proxy SOCKS qui permet à un navigateur et un large panel de logiciels d'utiliser la connexion SSH pour communiquer avec un Internet non filtré. Dans cet exemple, nous allons décrire uniquement cet usage de SSH. Les étapes ci-dessous mettent en place un proxy SOCKS sur le port 1080 de votre ordinateur.

31-1. Ligne de commande pour Linux/Unix et MacOs (avec OpenSSH)

OpenSSH est disponible sur http://www.openssh.com mais est généralement préinstallé sur les ordinateurs Linux/Unix et MacOS.

La commande ssh que vous allez lancer contient un numéro de port local (typiquement, 1080), un nom de serveur, et un nom d'utilisateur. Elle ressemble à ça :

ssh -D numerodeportlocal nomdutilisateur@nomduserveur

Exemple :

Image non disponible

On va vous demander votre mot de passe, puis vous serez connecté au serveur. En utilisant l'option -D, un proxy SOCKS local sera créé et existera tant que vous serez connecté. Important : vous devriez maintenant vérifier la clef de l'hôte et configurer vos applications, sinon vous n'utiliserez pas le tunnel que vous avez créé !

31-2. Interface graphique sous Windows (avec PuTTY)

PuTTY est disponible sur : http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Vous pouvez sauvegarder le programme putty.exe sur votre disque dur pour une utilisation postérieure, ou le lancer directement depuis le site web, ce qui est souvent possible sur un ordinateur en accès libre, comme dans une bibliothèque ou un cybercafé.

Quand vous lancez PuTTY, un dialogue de configuration de la session apparaît. Commencez par entrer le nom de l'hôte (l'adresse) du serveur SSH auquel vous allez vous connecter (ici, example.com). Si vous connaissez uniquement l'adresse IP ou si un blocage DNS vous empêche d'utiliser le nom de l'hôte, vous pouvez utiliser l'adresse IP à la place. Si vous allez souvent utiliser cette configuration, vous pouvez créer un profil PuTTY qui sauvegardera ces options tout comme les options décrites ci-dessous afin qu'elles soient utilisées à chaque fois.

Image non disponible

Dans la liste des catégories, choisissez « Connexion > SSH > Tunnels ».

Entrez 1080 comme port source, et cochez les cases Dynamique et IPv4.

Image non disponible

Cliquez maintenant sur « Ajouter », puis sur « Ouvrir ». Une connexion s'établit avec le serveur, et une nouvelle fenêtre apparait, vous demandant votre nom d'utilisateur et mot de passe.

Entrez ces informations et vous serez connecté sur le serveur, et recevrez une ligne de commande. Le proxy SOCKS est alors établi. Important : vérifiez la clé de l'hôte et configurer vos applications, sinon vous n'utiliserez pas le tunnel que vous avez créé !

Image non disponible

31-3. Vérification de la clé de l'hôte

La première fois que vous vous connectez à un serveur, on devrait vous demander de confirmer l'empreinte de la clef pour ce serveur. L'empreinte de la clef est une longue séquence de lettres et de chiffres (de l'hexadécimal) comme 57:ff:c9:60:10:17:67:bc:5c:00:85:37:20:95:36:dd qui identifie de manière sécurisée un serveur particulier. La vérification de cette empreinte est une mesure de sécurité qui permet de confirmer que vous communiquez bien avec le serveur avec lequel vous penser communiquer, et que la connexion chiffrée ne peut pas être interceptée.

SSH ne fournit pas de moyen de vérifier ça de manière automatique. Pour obtenir les bénéfices de ce mécanisme de sécurité, vérifiez la valeur de l'empreinte de la clef avec l'administrateur du serveur que vous utilisez, ou demandez à un tiers de confiance de tenter de se connecter au même serveur pour voir s'il obtient la même empreinte.

La vérification des empreintes de clés est importante, car elle permet de s'assurer que SSH protège le secret de vos conversations contre l'observation, mais elle n'est pas nécessaire si vous voulez uniquement contourner la censure et n'êtes pas concerné par le fait que les opérateurs réseau puissent voir le contenu de vos communications.

31-4. Configurer les applications pour qu'elles utilisent le proxy

Le proxy créé dans les étapes ci-dessus devrait fonctionner jusqu'à ce que vous fermiez le logiciel SSH. Si la connexion avec le serveur est interrompue, vous devrez répéter ces étapes pour réactiver le proxy.

Une fois que le proxy fonctionne, vous devez configurer vos logiciels pour l'utiliser. En suivant les étapes ci-dessus, le proxy sera un proxy SOCKS situé sur localhost, port 1080 (aussi appelé 127.0.0.1, port 1080). Vous devriez vous assurer que vos applications sont configurées pour éviter les fuites DNS, ce qui rendrait SSH moins efficace pour protéger vos données et contourner la censure.

31-5. Plus d'options

Jusqu'ici, toutes ces commandes affichent une ligne de commande sur la machine distante depuis laquelle vous pouvez exécuter n'importe laquelle des commandes disponibles sur cette machine. Exécuter une seule commande sur la machine distante, puis retourner à la ligne de commande de votre machine locale est possible : placez la commande à faire exécuter par la machine distante entre simples quotes.

 
Sélectionnez
$ ssh utilisateurdistant@autremachine.domaine.org 'mkdir /home/utilisateurdistant/newdir'

Parfois vous aurez besoin d'exécuter des commandes qui prennent du temps sur la machine distante, mais vous n'êtes pas sûr d'avoir assez de temps pendant votre session actuelle. Si vous fermez la connexion distante avant la fin de l'exécution d'une commande, cette dernière sera abandonnée. Pour éviter de perdre votre travail, lancez via ssh une session screen distante, puis détachez-la et reconnectez-la quand vous voudrez. Pour détacher une session screen, fermez simplement la connexion distante : une session screen détachée continuera à s'exécuter sur la machine distante.

SSH fournit beaucoup d'autres options. Vous pouvez également configurer votre système favori pour vous permettre de vous connecter ou lancer des commandes sans préciser de mot de passe à chaque fois. L'installation est compliquée mais vous pouvez gagner beaucoup de temps de frappe. Essayez de faire quelques recherches sur "ssh-keygen", "ssh-add", et "authorized_keys".

31-6. SCP : copie de fichiers

Le protocole SSH va bien au-delà de la commande ssh basique. Une commande particulièrement pratique basée sur le protocole SSH est scp, la copie de fichier sécurisée (secure copy command). L'exemple suivant copie un fichier depuis le dossier courant de votre machine locale vers le dossier /home/me/stuff sur une machine distante.

 
Sélectionnez
$ scp myprog.py me@autremachine.domaine.org:/home/me/stuff

Soyez prévenus que cette commande écrasera tout fichier déjà présent avec le nom /home/me/stuff/myprog.py. (Ou bien vous aurez un message d'erreur s'il y a déjà un fichier de ce nom et que vous n'avez pas les droits pour l'écraser.) Si /home/me est votre dossier personnel, le dossier cible peut être abrégé.

 
Sélectionnez
$ scp myprog.py me@autremachine.domaine.org:stuff

Vous pouvez aussi facilement copier dans l'autre direction : depuis la machine distante vers votre machine locale.

 
Sélectionnez
$ scp me@autremachine.domaine.org:docs/interview.txt yesterday-interview.txt

Le fichier sur la machine distante est interview.txt dans le sous-dossier docs de votre dossier personnel. Le fichier sera copié vers yesterday-interview.txt dans le dossier personnel de votre système local.

scp peut être utilisé pour copier un fichier d'une machine distante à une autre.

 
Sélectionnez
$ scp utilisateur1@hote1:file1 utilisateur2@hote2:otherdir

Pour copier récursivement tous les fichiers et sous-dossiers d'un dossier, utilisez l'option -r.

 
Sélectionnez
$ scp -r utilisateur1@hote1:file1 utilisateur2@hote2:otherdir

Lisez la page de manuel de scp pour plus d'options.

31-7. RSYNC : transferts et sauvegardes en masse automatisées

Rsync est une commande très pratique qui conserve un dossier distant synchronisé avec un dossier local. Elle est mentionnée ici, car c'est une commande pratique pour faire du réseau, comme ssh, et parce que le protocole SSH est recommandé comme couche de transmission pour Rsync.

L'exemple ci-dessous est simple et pratique. Il copie les fichiers depuis votre dossier /home/myname/docs vers un dossier appelé backup/ dans votre dossier utilisateur sur le serveur quantum.example.edu. Rsync minimise les copies nécessaires à travers diverses vérifications compliquées.

 
Sélectionnez
$ rsync -e ssh -a /home/myname/docs me@quantum.example.edu:backup/

L'option -e de ssh utilise le protocole SSH pour la transmission, comme ce qui est recommandé. L'option -a (pour « archive ») copie tout ce qui est dans le dossier spécifié. Si vous voulez supprimer les fichiers du système local pendant qu'ils sont copiés, ajoutez l'option --delete.

31-7-1. Se simplifier la vie quand on utilise SSH souvent

Si vous utilisez SSH pour vous connecter à beaucoup de serveurs différents, vous allez souvent faire des erreurs en tapant de travers des noms d'utilisateurs ou même des noms de domaines (imaginez-vous en train de retenir 20 combinaisons différentes utilisateur/domaine). Heureusement, SSH permet de gérer facilement les sessions dans un fichier de configuration.

Le fichier de configuration est caché dans votre dossier personnel sous le dossier .ssh (le chemin complet est quelque chose comme /home/jsmith/.ssh/config - si le fichier n'existe pas vous pouvez le créer). Utilisez votre éditeur préféré pour ouvrir ce fichier et préciser les serveurs comme ceci  :

 
Sélectionnez
Host dev
HostName example.com
User fc

Vous pouvez configurer ainsi plusieurs serveurs dans votre fichier de configuration, et après l'avoir sauvegardé, vous connecter au serveur appelé « dev » via la commande suivante :

 
Sélectionnez
$ ssh dev

Souvenez-vous, plus vous utilisez ces commandes, plus vous gagnez du temps.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Licence Creative Commons
Le contenu de cet article est rédigé par Auteurs multiples et est mis à disposition selon les termes de la Licence Creative Commons Attribution 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2013 Developpez.com.