Tuxicoman : Aide à une noob par reverse SSH
jeudi 19 mars 2015 à 11:26Imaginons que Alice veuille se faire dépanner par Bob.
Problème, Bob ne peut pas se connecter directement à l’ordinateur d’Alice à cause d’un routeur NAT (une box ADSL, un réseau d’entreprise, un réseau wifi public, etc…).
Il existe un moyen assez simple pour Alice de se faire dépanner grâce à SSH.
Bob a un peu de travail avant
Bob va créer sur sa machine un utilisateur aux droits très restreints. Alice va utiliser celui-ci pour faire un tunnel inversé. On commence par la création du nouvel utilisateur dénommé « help » :
# adduser help
Donnez un mot de passe qui pourra être communiqué à Alice.
Dans /etc/ssh/sshd_config faites un règle spéciale pour cet utilisateur :
Match User help #AllowTcpForwarding yes X11Forwarding no PermitTunnel no GatewayPorts no AllowAgentForwarding no PermitOpen localhost:60000 ForceCommand echo 'Only reverse port forwarding allowed'
En gros, l’utilisateur ne peut qu’écouter sur le port 60000 local.
Pour Alice, c’est simple, une ligne suffit
Alice doit ouvrir le terminal et copier-coller ceci en remplacant l’IP de Bob:
$ ssh -R 60000:localhost:22 help@ip_de_bob
L’empreinte de la clé publique de la machine de Bob sera présentée. Tapez « yes ».
Le mot de passe à entrer est donné par Bob, c’est celui de l’utilisateur « help » que Bob a créé chez lui. Note pour Alice : le mot de passe ne s’affiche pas quand on le tape, c’est normal :)
Voila. c’est fini pour Alice. Simple !
Prise de contrôle
Bob peut ensuite se connecter à l’ordinateur d’Alice, sous le compte d’Alice avec le mot de passe d’Alice :
$ ssh -p 60000 alice@localhost
Critique
Cette technique est une alternative à Teamviewer pour Linux et Mac. Elle permet notamment d’avoir un accès confortable au terminal à distance et aux possibilités évoluées de SSH par la suite (partage de fichier par SFTP, redirection de port, proxy SOCKS pour naviguer sur le réseau local, VNC sécurisé, etc…).
Au début, je me suis dit que j’allais enfin tordre le cou au « man in the middle » de Teamviewer. Mais en réalité, il y a pas mal de failles de sécurité dans la mise en place de ce processus tant qu’on veut le garder simple pour Alice.
Premièrement, Alice doit donner son mot de passe de session à Bob ainsi qu’un accès complet à ses fichiers pour se faire aider… De plus, elle n’aura aucun contrôle sur ce que fera Bob avec cet accès. Donc il faut une grande confiance dans Bob.
Ensuite, par quel canal est transmis la commande à taper? le mot de passe d’Alice? Comment est vérifiée l’authentification de la machine de Bob par Alice?
Il y a peut être moyen de wrapper tout ça dans un utilitaire avec une double authentification et une interface graphique qui affiche sur l’écran d’Alice un suivi en temps réel des commandes effectuées par Bob, des fichiers transférés… le tout sans nécessiter le mot de passe de session d’Alice. Mais ce sera peut être moins flexible pour Bob… (auto-complétion, sshfs, etc..)
Related Posts:
Original post of Tuxicoman.Votez pour ce billet sur Planet Libre.
Articles similaires
- Tuxicoman : Dossier partagé entre utilisateurs sous Linux (12/03/2014)
- Tuxicoman : Lister les connexions entrantes de votre ordinateur (18/04/2014)
- Tuxicoman : Fail2ban pour votre installation WordPress (03/04/2013)
- Tuxicoman : Etat des lieux de la messagerie chiffrée (09/02/2014)
- Tuxicoman : Lister et tuer les processus en cours sous Linux (20/04/2014)