Table des matières

SSH Reverse

Ceci peut etre considéré ou non comme une pénétration d'un serveur ! En effet en général on protège les serveurs dans une DMZ avec un acces restrictif par parefeu ou par du NAT. Ce qui veut dire qu'on ne peut pas atteindre (entrer sur) le serveur sur certains ports dont le port 22 du SSH depuis un réseau non autorisé (web). Mais il est parfois (voir souvent) possible que les serveurs aient un acces autorisé en sortie seulement vers ces réseaux non autorisés (web) sur le port 22 du SSH.

La mise en oeuvre du SSH Reverse est en générale pour contourner la sécurité mise en place par le parefeu ou le NAT !!! Ce qui est interdit car on va ainsi entrer sur le serveur depuis l'extérieur (web par exemple) alors que c'est interdit.

Le principe est d'exploiter la possibilité que le serveur peut, lui, sortir sur des réseaux extérieurs. On va donc faire une connexion à partir du serveur vers une machine client et créer ainsi un tunnel. Normalement la connexion est sortant vers le client. Mais l'option “reverse” va permettre au client d'utiliser ce tunnel dans l'autre sens.

Mise en oeuvre

Coté serveur

Le client doit avoir un serveur SSH qui tourne et accepte les connexions. Le serveur va se connecter sur ce client sur le port 22 (en vert sur le schéma) MAIS va aussi connecter son port 22 sur un port quelconque entre 1024 et 65535 du client pour le retour (en orange sur le schéma).

la commande à lancer sur le serveur (ici le port de retours est 22222)

ssh -R 22222 :localhost:22 userssh@client

Cette commande va donc permettre de faire entrer sur le port 22 (du serveur) tout ce qui arrivera du port 22222 du client.

Coté client

Le tunnel a été monté par le serveur. Le serveur écoute sur le port 22 de son coté et le client doit passer sur le port 22222 de son coté pour le joindre. Pour cela le client doit faire une connexion SSH sur lui-même sur le port 22222 !

la commande à lancer sur le client (userServer est un compte local sur le serveur)

ssh -p 22222 usersServer@127.0.0.1

et voilà

Pour aller plus loin

Plusieurs serveurs peuvent se connecter au client MAIS le port de retours devra être différent pour chaque serveur !!! Il faudra donc connaître quel port pour quel serveur. Un port d'écoute = un serveur

Pour que la connexion soit toujours fonctionnel on pourra créer un service sur le serveur: explication