SSH & Reverse SSH

1-SSH  ("Client, Serveur, Tunnel SSH")

Secure Shell

  • Définition
Protocole de communication sécurisée entre deux ordinateurs. Le protocole de connexion impose 
-un échange de mots de passe et/ou de clés de chiffrement en début de connexion.
-un accès en  ligne de commande ("Shell") pour dialoguer entre  le client Unix ou Windows et le serveur Unix/Linux

En fait il existe 2 protocoles quasi équivalents:
-SSH est devenu un protocole propriétaire (commercial)
-OpenSSH,  est l'implémentation (libre)  SSH la plus utilisée  avec  GNU/Linux


  • Comprendre
    • Le shell (ou interface système en français)  permet de dialoguer avec une machine ou un serveur via l'exécution de différentes commandes qui retourneront des informations.
C'est un programme qui reçoit des commandes informatiques (ligne de commandes textuelles) données par un utilisateur à partir de son clavier pour les envoyer au système d’exploitation (Linux...) qui se chargera de les exécuter. Les shell peuvent aussi exécuter des commandes situées dans un fichier "script". L'on peut aussi trouver une interface utilisateur graphique (Virtual Network Computing =VNC). Peu utilisé sur les stations Windows, SSH fait surtout référence a un accès distant sur les stations Linux et Unix.

    • Authentification

D'abord, le serveur SSH et le client s’authentifient mutuellement via  un certificat  crypté puis le client s’identifie au serveur en tant qu’utilisateur autorisé via son  mot de passe à  chaque fois qu’il se connecte à  un serveur.
Il existe une autre possibilité d’authentification côté client par "paire de clefs privée et publique". La clé privée est stockée sur l'ordinateur client et le serveur crée une clef publique qu'il envoie au client qu'il  décrypte  avec sa propre clef privée ; il renvoie la solution et informe le serveur qu’il est autorisé à établir une connexion légitime. L'intérêt est  d’entrer, par session, la phrase de chiffrement qu’une seule fois pour vous connecter à un nombre quelconque de serveurs.

ChiffrementAprès une authentification mutuelle, une communication avec une connexion cryptée est établie. 
La clé générée pour la session expire à la fin de la session et n'est plus valable 
Il ne faut pas confondre avec les paires de clefs publiques/privées, qui ne sont utilisées que pour l’échange de clés, les deux parties utilisent certaines informations publiques et secrètes pour créer la clé.

    • Ports SSH
Les ports TCP sont des terminaux qui ouvrent des serveurs et des clients pour permettre la communication. Par défaut, toutes les connexions SSH fonctionnent ainsi sur le port 22.

  • Utilité

SSH permet à deux ordinateurs d’établir une connexion directe et sécurisée (cryptée)  au sein d’un réseau potentiellement non sécurisé, tel qu’Internet pour : 
-Gérer  des serveurs distants (sous Linux)
-Transférer de fichiers sécurisé (protocole SFTP = SSH File Transfer Protocol).
-Créer de sauvegardes sécurisées
-Connecter  deux ordinateurs  en utilisant le chiffrement de bout en bout

Bien évidemment SSH est utilisé par des utilisateurs avertis et qualifiés en réseau, en particulier les administrateurs de serveurs. 
Le simple particulier n'est pas concerné.


  • Vocabulaire lié

-Client SSH 
c'est généralement votre propre ordinateur avec lequel vous voulez établir une connexion au serveur. Pour ce faire, vous pouvez ou devez (selon l'OS) installer un logiciel séparé qui établit une connexion SSH. Ces programmes sont aussi appelés clients SSH (PuTTy est gratuit)

-Serveur SSH
Le serveur SSH est le pendant du client. Le terme est aussi  utilisé pour le logiciel du serveur  qui  lance  SSH  au démarrage du serveur . Il est possible que les utilisateurs installent un serveur SSH sur leur propre ordinateur à la maison pour bénéficier des avantages du transfert de port, par exemple.

-Tunnel SSH
Il permet à deux ordinateurs d'être connectés de manière sécurisée.
L'exemple le plus parlant serait celui d'un administrateur, qui depuis son poste d'administration, se connecte à distance sur un de ses serveurs pour diverses interventions. Il accède depuis un shell (terminal) sur son poste d'administration à un serveur distant de manière sécurisée. La communication ne peut se faire que d'une machine à une autre.

  • Différence entre Proxy / /Firewall /VPN  / SSH  ?
    Tous concernent  votre sécurité mais à des niveaux différents
    • Un Proxy est un serveur intermédiaire entre  une machine et un serveur web (ou FTP) qui contrôle et sécurise le surf sur le net  (via l'url et/ou le contenu des pages web). Utile pour contrôler les pages web et anonymiser sa connexion car s'affiche l'IP du proxy
    • Le Firewall (Pare Feu) est un logiciel (ou un un équipement matériel) qui filtre les connexions au niveau des ports de l'ordinateur (autorisés/interdits) et des adresses IP. Il faut donc le régler pour lui indiquer  autorisations ou blocages  à faire.
    • Un VPN est un réseau virtuel privé qui  permet d'encrypter les données entre  2 réseaux, quel que soit le trafic. Depuis son domicile ou son hôtel, l'utilisateur peut accéder au réseau de son entreprise (messagerie, dossiers partagés sites web internes...) comme si il était au bureau. 
    • Le SSH est un protocole qui permet de se connecter à une seule machine distante en encryptant les données. Deux ordinateurs /serveurs sont connectés de manière sécurisée. Ainsi un administrateur réseau,  depuis son poste d'administration, se connecte à distance sur un de ses serveurs distants. 



    • Sources et compléments

    -https://reseauxmobiles.info/article13/le-tunnel-ssh-la-solution-pour-acceder-a-vos-equipements-derriere-une-connexion-mobile
    -https://fr.wikipedia.org/wiki/Secure_Shell
    -https://www.ionos.fr/digitalguide/serveur/outils/protocole-ssh/
    -https://www.hostinger.fr/tutoriels/ssh-linux/
    -https://www.it-connect.fr/chapitres/tunneling-ssh/
    -https://murviel-info-beziers.com/creer-cle-securisee-ssh/



    2-REVERSE SSH

    • Définition
    Un "reverse SSH" ou "tunnel inverse" est nécessaire lorsque vous essayez de vous connecter à un ordinateur client à partir d'une connexion extérieure, ce qui arrive lorsque que l'appareil auquel vous devez accéder se trouve derrière un pare-feu ou un proxy ou un Nat.

    • Un exemple concret 
     Vous souhaitez accéder à distance à votre routeur 4G (en France) pour accéder à son interface de configuration, ou accéder à votre cam IP, NAS... Vous ne pouvez pas le faire car un routeur 4G n' a pas d'adresse publique mais une adresse privée.

    Voici le schéma de fonctionnement après avoir établi un "reverse SSh"

    =>Nécessite
    1- un serveur  externe "ami" avec un nom de domaine pour accéder  + des ports ouverts + accès SSH (donc un abonnement payant)
    2-une machine interne de son Lan avec un client  SSH (ex ici un  Raspberry Pi)
    3-Un serveur ou cam IP  du Lan  auquel on veut accéder
    =>Fonctionnement du reverse SSH
    1- Le Raspberry  crée un tunnel chiffré vers le serveur externe ami
    2-L'appareil du cliente externe se connecte au serveur externe  qui lui même le redirige via un tunnel sécurisé  vers le Rasperry puis vers la machine du Lan



    Compléments st source  : Accéder à son LAN derrière un routeur 4G, depuis l'extérieur, avec SSH   parfaitement explicité avec 4 schémas clairs et pertinents même si la réalisation demeure complexe et nécessite de solides connaissance et compétences.