====== 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. {{ :systeme:sshreverse.png?direct&400 }} ===== 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: [[https://wiki.kogite.fr/index.php/Reverse_ssh_:_Accéder_à_un_serveur_derrière_un_NAT_-_Firewall#Lancement_automatique_sur_le_serveur_A_avec_autossh|explication]]