Auteur :
• 2 mars 2009
closeCet article a été publié il y a 7 ans 9 mois 9 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

3333643Pour faire suite à ce billet (et à la discussion qui a suivi), à propos de l’utilisation du SSH comme serveur SOCKS4, afin de naviguer un peu plus sécuritairement, voici quelques astuces supplémentaires quant à son utilisation.

Tout d’abord, le port d’écoute par défaut d’un serveur ssh est le port 22. Mais ce n’est pas un absolu. On peut indiquer à notre serveur, d’écouter sur un autre port, ou bien sur plusieurs ports à la fois. Un port intéressant à choisir est le 443.

Pourquoi ce port? Tout simplement parce que c’est le port par défaut du web sécurisé (HTTP interroge sur le port 80 et HTTPS sur le port 443).  Donc si le café bloque tous les ports à l’exception de ceux destinés au web (80 et 443), personne ne sera étonné d’avoir un flux crypté (notre connexion ssh) sur le port 443.

Alors, comment faire? Tout d’abord, on présume qu’un serveur ssh est déjà installé dans votre ordinateur à la maison, si ce n’est déjà fait, voici la commande à écrire dans un terminal:

sudo apt-get install openssh-server

Ensuite on doit indiquer à notre serveur ssh d’écouter sur un autre port. Dans un terminal:

sudo gedit /etc/ssh/sshd_config

On recherche

# What ports, IPs and protocols we listen for
Port 22

Et on écrit sous Port 22, Port 443. Ce qui donne:

# What ports, IPs and protocols we listen for
Port 22
Port 443

On enregistre et on redémarre le serveur ssh

sudo /etc/init.d/ssh restart

On peut donc maintenant refaire l’astuce avec la commande:

ssh -D1111 -p443 username@hostname

Avec un serveur mandataire.

Que faire maintenant si tout le trafique internet est filtré par un serveur mandataire (proxy)? Disons que l’on veuille accéder à notre compte bancaire et tout le trafic est filtré par un ordinateur que nous ne contrôlons pas.

Prenons le cas d’un serveur mandataire fonctionnant sous squid. Par défaut l’adresse d’écoute de serveur est le 3128 et le nom du mandataire est proxy.local.

Il faut maintenant installer une application qui nous permettra de passer notre connexion ssh à travers le serveur mandataire. On installe corksrew

sudo apt-get install corkscrew

On peut donc maintenant refaire l’astuce avec la commande dans un terminal:

ssh -D1111 -p443 username@hostname -o"ProxyCommand corkscrew proxy.local 3128 %h %p"

Et si le mandataire nécessite un login et un mot de passe:

ssh -D1111 -p443 username@hostname -o"ProxyCommand corkscrew proxy.local 3128 %h %p login motdepasse"

Ne pas oublier de laisser la fenêtre ouverte et de renseigner Firefox (Édition -> Préférences -> Avancé -> Réseau -> Paramètres) afin qu’il utilise un proxy de type SOCKS ayant comme nom d’hôte localhost sur le port 1111.

Cette astuce permettrait même de naviguer dans des sites interdits par le serveur mandataire, il ne pourrait pas filtrer votre trafic, puisqu’il serait crypté et sur le port 443, ce qui serait normal pour lui après tout!

Be Sociable, Share!
Vous pouvez suivre toutes les réponses à à ce billet via le flux RSS 2.0. Les commentaires et la notification par ping sont désactivés.

14 réponses

  1. 1
    playest 

    Tu dis que ssh créé un serveur socks4, est-il possible de faire un serveur socks5 avec ?

  2. 2
    BIBI 

    AHHHHHHHHH
    Génial, c’est ce qui me manquait le corkscrew pour faire en ligne de commande ce que je faisais avec Putty
    Merci

  3. 3
    Éric Noël 

    Du manuel ssh

    -D port
    Spécifie un transfert « dynamique » des ports au niveau applicatif. Ceci fonctionne grâce à l’allocation d’une socket qui écoute sur le port port de la machine locale, et qui, dès qu’une connexion est établie sur ce port, la transfère à travers le canal sécurisé. Le protocole applicatif est alors utilisé pour déterminer vers où se connecter à partir de la machine distante. À l’heure actuelle, les protocoles SOCKS4 et SOCKS5 sont supportés, et ssh se comporte alors comme un serveur SOCKS. Seul root peut transférer des ports privilégiés. On peut aussi spécifier un transfert de port dynamique dans le fichier de configuration.

  4. 4
    Pascal Tremblay 

    Salut Éric.

    Essaye PuTTY et donne moi tes impressions la-dessus.

  5. 5
    Pascal Tremblay 

    Pour t’aider.

    http://ubuntuswitch.blogspot.com/2008/12/protect-yourself-with-putty-socks-proxy.html

  6. 6
    Éric Noël 

    @Pascal He ben, je viens de trouver putty dans les dépots. J’utilisais putty dans ma vie windozienne. J’ai lu la doc que tu proposes: « Power tips
    – OpenSSH is both a server and a client so you can exclude putty and just create connection like this : ssh -D 1080 user@example.com »

    Donc pratique si le poste-client n’est pas Linux.

  7. 7
    Pascal Tremblay 

    Je voulais mettre l’emphase sur la simplicité du produits pour les utilisateurs qui n’aime pas trop « bidouillé » avec les OS. C’est difficile de vendre les vertus de linux aux utilisateurs des divers millésime de windows.

  8. 8
    Di@bl@l 

    Bonjour,

    excusez moi mais pourquoi pour la connexion Stocks il faut le port 1111 et pour la connexion en local il faut le 3128 en dynamique ?

    Si j’ai bien compris sur putty (client windows) cela donne une connexion : hostname:443 avec une option dans connection>SSH> tunnel ou je crée hostname:3128 en dynamique ?

    Merci d’avance.

  9. 9
    Chao 

    Très interressant, savez-vous pourquoi après mis en oeuvre de votre technique mes pages web sont « blanches » (pas chargées) pour le port 80 est libéré dans ufw ?!

  10. 10
    Éric Noël 

    @Pascal J’ai tendance à l’oublier.

    @Di@bl@l je ne connais pas très bien puTTy. Parcontre le lien de Pascal semble très bien.

    @Chao Tu parles de la technique avec corkscrew ou sans ?

  11. 11
    Chao 

    Désolé pour le manque de précision, mon problème vient de la technique toute simple du premier billet. J’ai un serveur ubuntu server edition 8.10 et quand je fait ce que vous dites dans le premier billet, et que je paramètre firefox proxy port 1111, la navigation est impossible j’ai des pages blanches, comme des pages atteintes mais dont le contenu n’est pas chargé…Je ne sais pas d’ou cela vient ; j’ai libéré le port 80 de mon serveur.

  12. 12
    Éric Noël 

    @Chao Je viens de faire un edit au billet http://blog.profnoel.com/index.php/creuser-un-tunnel-crypte-avec-son-serveur-a-la-maison

    J’y ai ajouté une image de ma configuration de Firefox. En espérant que cela puisse t’aider.

  13. 13
    Chao 

    Merci tout marche maintenant….je m’en doutais que c’était une erreur toute bete…
    MErrrrrrrrrrrci

  14. 14
    Oliver 

    rès interressant, savez-vous pourquoi après mis en oeuvre de votre technique mes pages web sont « blanches »