Promouvoir et défendre le logiciel libre: notre mission depuis 1996.

OpenSSH

[openssh]
    1. Présentation d'OpenSSH
      1. Cryptographie
      2. Versions
      3. Modèle client/serveur
    2. Comparaisons
      1. ssh
      2. telnet
      3. rsh/rlogin
    3. Système requis
    4. Licence
    5. Distribution

OpenSSH est une implémentation libre du protocole SSH permettant une connexion interactive, comme telnet, mais sécurisée. Il peut également servir à mettre en place des "tunnels" sécurisés pour y faire passer des applications (transfert de fichiers, application X-Window...). Il permet ainsi d'éviter de divulguer des mots de passe en clair, comme c'est le cas avec les protocoles ftp ou telnet, évitant du coup les attaques de type man-in-the-middle (un pirate se trouvant entre votre ordinateur et le serveur distant.).

Présentation d'OpenSSH

OpenSSH permet de se connecter en interactif à une machine distante en toute sécurité: avant même l'authentification le protocole met en place une liaison sécurisée. Bien qu'il soit possible d'utiliser OpenSSH avec les mots de passe, il est préférable de supprimer cette possibilité dans le fichier de configuration afin de ne permettre que des accès basés sur les double-clés encryptées; une clé secrète qui reste dans votre ordinateur et une clé publique que vous posez dans les machines sur lesquelles vous voulez pouvoir vous connecter. C'est le même principe que PGP/GPG.

OpenSSH est disponible pour la plupart des Unices (*BSD, Linux, IRIX, AIX, Solaris, etc...) sous forme d'un serveur, d'un client et de divers petits utilitaires.

Afin de contourner les lois américaines sur l'exportation de logiciels de cryptographie, OpenSSH a été développé en Europe et au Canada. En prenant une des dernières versions libres de SSH et en lui retirant les algorithmes protégés par des brevets, ses développeurs ont réunis une base de travail. Ils ont ensuite ajouté des fonctionnalités (Kerberos IV, "One-Time-Password", etc.), corrigé quelques bugs et réalisé quelques tours de passe-passe.

Cryptographie

La cryptographie désigne un moyen de 'cacher' les données. Par exemple, la chaîne de caractère "54MiJhDlwsi0c" est une version chiffrée (cryptée) de la chaîne "ssh", ".eJFct/G.zm3s" de "april". Comme on peut le voir, nous sommes bien loin de 'codes secrets' tel qu'on les imaginait étant enfants. Impossible de revenir en arrière de façon aisée (Essayez donc de savoir quelle chaîne à été cryptée pour donner "kFvZeJP.VCmAA").

La cryptographie sert principalement 3 objectifs:

OpenSSH, et plus généralement le protocole SSH, sert dans les deux premiers cas. Un exemple du troisième cas est la 'signature' MD5 de fichiers à télécharger. Une fois téléchargé, le fichier donne la même signature MD5: vous pouvez partir du principe que vous avez le fichier original, et pas une copie qui aurait été modifiée.

Versions

OpenSSH est compatible avec plusieurs versions du protocole SSH: 1.3, 1.5 et 2.

Les versions 1.x du protocole utilisent l'algorithme RSA pour la négociation de clés, puis 3DES ou blowfish pour le chiffrement des données. Le brevet RSA est tombé dans le domaine public et par conséquent, il est possible de l'inclure dans une application sans licence dans le monde entier. Les prochaines version d'OpenSSH devraient pouvoir incorporer RSA sans restrictions. Pour contourner le brevet, les version datant d'avant septembre 2000 s'appuient sur la bibliothèque OpenSSL pour lui fournir les quelques algorithmes posant problèmes. (Attention: l'utilisation de cette bibliothèque est soumise à conditions dans certains pays, où elle est notamment assimilée à des armes de guerre). Enfin, les versions 1.x utilisent un simple CRC pour vérifier l'intégrité des données, ce qui peut résulter, dans quelques cas bien précis, à un petit trou de sécurité.

La version 2 du protocole, utilisée dans OpenSSH depuis le 4 mai 2000, a été créée pour éviter ces problèmes de brevets. Elle utilise les algorithmes asymétriques DSA et DH pour le chiffrement des données et l'algorithme HMAC pour la vérification des données, supprimant ainsi le problème des CRC.

Comme il est breveté (et pas disponible dans OpenSSL), il faut noter qu'aucune des versions d'OpenSSH ne gère l'algorithme IDEA, utilisé dans les versions commerciales de SSH.

Modèle client/serveur

Comme tout bon protocole qui se respecte, OpenSSH est composé d'un serveur et d'un client :

Comparaisons

OpenSSh est, on l'a dit, une alternative à SSH. Il est également tout indiqué pour remplacer telnet et les outils comme rlogin/rsh. Voici un petit aperçu des différences:

ssh

La principale différence entre OpenSSH et SSH est bien entendu le fait qu'OpenSSH soit libre. Il y a aussi quelques petites différences de configuration, comme le logging du côté serveur. Enfin, l'algorithme IDEA n'est pas disponible: vous devez utiliser 3DES ou blowfish en lieu et place.

telnet

En utilisant telnet, lorsque vous entrez votre mot de passe, celui-ci va voyager en clair sur le réseau. Ça signifie que n'importe qui, se situant entre un client et le serveur, peut intercepter son mot de passe avec un simple outils de surveillance de réseau (tel qu'il y en a dans toutes les distributions GNU/Linux, par exemple). Du coup, la sécurité de votre serveur est réellement en danger!

rsh/rlogin

rsh/rlogin désignent des protocoles de connection à un hôte distant, selon des règles un peu légères. Par exemple, il peut être possible de se connecter sur un serveur depuis une station 'autorisée'. C'est à dire que n'importe qui, sans connaître le moindre mot de passe, peut se connecter à ce serveur dès le moment où il se trouve -physiquement ou non- sur une machine reconnue par le serveur comme autorisée. C'est bien là un moyen peu sûr de se connecter.

Système requis

Licence

La licence d'OpenSSH est la licence BSD (la même que Apache, OpenBSD, etc.). Elle est libre, mais non copyleftée. Il est possible de trouver des infos dans un article du site d'APRIL.

Distribution