Petite présentation pour commencer: OpenSSH implémente un client et un serveur pour les différentes versions du protocole SSH ainsi que le support pour le SFTP (à ne pas confondre avec le FTPS qui est du FTP dans un tunnel SSL). OpenSSH est distribué sous licence libre BSD et c'est un peu le fer de lance des développeurs d'OpenBSD. Il permet de se connecter à distance sur une machine et intègre un nombre impressionnant d'opérations utiles : shell distant, transfert de fichier, redirection de ports, tunnel... Les changements importants dans la version 5.4 sont listés ci-dessous :
- La version 1 du protocol SSH est maintenant désactivée par défaut. Cela fait 10 ans que ce protocole est obsolète et il faudra désormais explicitement l'activer si l'on souhaite l'utiliser vers les rares machines qui ne peuvent migrer vers une version supérieure.
- Ajout du support pour les tokens PKCS#11 en lieu et place de l'ancien code concernant OpenSC. PKCS#11 a été développé par les laboratoires RSA et définit une interface (API) pour gérer les périphériques cryptographiques.
- Ajout d'un nouveau système d'authentification par certificat en plus du système par clefs. Le format choisi est propre à OpenSSH et n'est pas le X.509 (cela semble au premier abord un peu dommage). Les certificats des machines ou des personnes contiennent un clef publique, l'identité de la personne ou de la machine, une plage de validité temporelle (début et/ou fin) et sont signés par une clef publique SSH standard. Toutes ces opérations se réalisent avec le même programme que pour générer des clef : ssh-keygen.
Les clefs maîtresses (CA keys) faisant autorité doivent être déclarées comme telles, soit dans le fichier authorized_keys ou sshd_config (via la nouvelle directive TrustedUserCAKeys) pour les certificats utilisateurs, soit dans le fichier known_hosts pour l'authentification de machine.
- Complémentaire du point précédent, il est maintenant possible de révoquer des clefs. Le bogue introduit dans OpenSSL par Debian avait montré les limites d'un système sans révocation et sans date limite... À l'époque, les développeurs Debian avaient mis en urgence un système de révocation.
Le système mis en place dans OpenSSH est assez simple, le paramètre de configuration du serveur "RevokedKeys" indique un fichier donnant la liste des clefs interdites : cela peut être indifféremment des clefs serveurs ou utilisateurs.
- Ajout d'un mode "netcat" avec l'option -W (l'option -w est pour les tunnels). La commande ssh -W host:port connecte donc les entrées sorties (stdio) du client vers un unique port sur le serveur.
Il y a aussi quelques améliorations que l'utilisateur verra certainement moins facilement :
- Le multiplexage permettant de mélanger plusieurs sessions ssh dans le même tuyau supporte maintenant les opérations non bloquantes améliorant ainsi la latence. De plus, il est maintenant possible de rajouter des transferts de port (port forwarding) ainsi des transfert d'entrée/sortie (stdio -> netcat) dans le canal multiplexé.
- Amélioration dans le sous-système SFTP du serveur. Il est désormais possible d'avoir un mode en lecture seule. Dans le même esprit, la valeur du masque umask peut être explicitement définie et ne peut alors être surchargée par l'utilisateur (Voir sftp-server). D'un point de vue interface homme-machine, la commande "ls" supporte maintenant l'option "-h" qui affiche les unités sous un format plus facile pour un utilisateur. La ligne de commande supporte maintenant la complétion pour les commandes, les noms des fichiers sur le système local ou sur le système distant. Les commandes "get" et "put" supportent maintenant les transferts récursifs via une option.
- La plupart des options de la ligne de commande de "scp" sont maintenant supportées par "sftp". L'objectif à terme est tout simplement de remplacer "scp" par "sftp". Pour ce faire, et pour homogénéiser les options de ces deux commandes, l'ancienne option peu usitée -P de sftp qui donnait le chemin du serveur sftp devient l'option -D. En effet, cette option -P sert maintenant comme dans scp à fixer le port du serveur.
- Les nouvelles clefs RSA seront maintenant générées avec un exposant fixé à 65537 (RSA_F4 = 2^16+1) en lieu et place de l'ancienne valeur 35.
- Les clefs privées protégées par passphrase sont maintenant chiffrées avec l'algorithme AES-128 à la place du 3DES utilisé jusqu'à présent. En cas de modification de leur passphrase, les anciennes clefs bénéficieront de ce nouveau chiffrement.
Au final, un grand cru on l'espère. Vivement la version 6.4 !
Aller plus loin
- OpenSSH (13 clics)
- OpenSSH release (3 clics)
- Bogue Debian dans OpenSSL (6 clics)
- netcat (2 clics)
# Excellent.
Posté par Sébastien SAUVAGE (site web personnel) . Évalué à 10.
ssh est l'un des plus formidables et utiles outils réseau jamais créés.
Console distante, transfer de fichiers, tunnelling... tout ça sécurisé, ça rend beaucoup de services.
Et je ne parle pas des applications greffées là dessus, comme NX (magnifique).
Il ne manque plus qu'une encapsulation HTTP... je rêve ?
(oui je sais il y a GnuHttpTunnel, OpenVPN...)
[^] # Re: Excellent.
Posté par Grunt . Évalué à 5.
Je crois me souvenir être passé par un proxy HTTP dans Putty, en faisant du SSH, sans configuration particulière du serveur.
THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.
[^] # Re: Excellent.
Posté par Yth (Mastodon) . Évalué à 6.
Par contre il faut un proxy, et utiliser en configuration locale ta propre machine en tant que proxy.
Les requêtes passent donc en local, hop dans le tunnel et ressortent pour se jeter dans le proxy distant, voyagent sur le grand Nain Ternète, et reviennent en se faufilant dans le tunnel, nahaha !
Voilà...
Yth.
[^] # Re: Excellent.
Posté par ondex2 . Évalué à 6.
Et tu configure ton navigateur pour utiliser localhost:8080 en proxy
[^] # Re: Excellent.
Posté par Anonyme . Évalué à 2.
Sinon, j'espère que cette nouvelle version facilite l'utilisation de clé et de certificat, j'ai toujours eu un mal fou à faire fonctionner un accès ssh en utilisant un clé à place du mdp utilisateur.
[^] # Re: Excellent.
Posté par Mithfindel (site web personnel) . Évalué à 2.
C'est vrai que c'est sans doute une fonctionnalité qui aurait sa place dans le cœur d'OpenSSH. Ce qui serait pas mal, ce serait un module Apache HTTPD qui intercepterait les requêtes sur le port 443 et qui saurait "router" vers un OpenSSH (histoire de passer à travers les gentils proxies qui non seulement n'autorisent pas CONNECT, mais en plus n'autorisent SSL que sur le 443).
[^] # Re: Excellent.
Posté par Larry Cow . Évalué à 2.
Ce n'est pas un module Apache, mais ça ressemble à ce que tu cherches, non?
http://search.cpan.org/~book/Net-Proxy-0.08/script/sslh
[^] # Re: Excellent.
Posté par Larry Cow . Évalué à 2.
http://www.rutschle.net/tech/sslh.shtml
[^] # Re: Excellent.
Posté par François B. . Évalué à 2.
[^] # Re: Excellent.
Posté par rictus (site web personnel) . Évalué à 2.
corkscrew is a simple tool to tunnel TCP connections through an HTTP proxy supporting the CONNECT method
Comme dit plus haut, l'utilisation de corkscrew suppose que le proxy accepte un CONNECT. Même si c'est seulement sur le port 443, les proxy qui acceptent celà restent assez friendly. Ce n'est pas le cas de tous les proxies, comme évoqué plus haut. Dans ce cas, corkscrew n'est d'aucune utilité et il faut encapsuler sa connexion dans des requêtes HTTP...
[^] # Re: Excellent.
Posté par François B. . Évalué à 1.
[^] # Re: Excellent.
Posté par Sébastien SAUVAGE (site web personnel) . Évalué à 2.
Je suis dans le cas d'un proxy qui n'accepte pas CONNECT, du coup la quasi-totalité des outils ne fonctionnent pas (corkscrew et autres).
Quelques pistes que je n'ai pas encore eu le temps d'explorer:
http://www.sensepost.com/research/reDuh/
http://en.wikipedia.org/wiki/BOSH
http://sebastien.lebreton.free.fr/bdtunnel/
http://sourceforge.net/projects/webtunnel/
[^] # Re: Excellent.
Posté par Frédéric Perrin (site web personnel) . Évalué à 2.
Comment tu fais pour aller sur des sites en HTTPS (au hasard, moulefr) ?
[^] # Re: Excellent.
Posté par benoar . Évalué à 3.
[^] # Re: Excellent.
Posté par Bernez . Évalué à 1.
Pour arriver à faire ça sans avoir une avalanche d'avertissements (mais quand même au moins un) sur le navigateur il faut utiliser un certificat autosigné et du DNS spoofing pour chaque serveur HTTPS qui doit être visité. À ce prix là autant autoriser le CONNECT à une whitelist contenant ces mêmes sites. Ce sera moins sale et plus simple à mettre en oeuvre.
[^] # Re: Excellent.
Posté par Raphaël SurcouF (site web personnel) . Évalué à 2.
[^] # Re: Excellent.
Posté par zyphos . Évalué à 7.
Qui permet de naviguer, télécharger, ... à travers un serveur SSH.
Sur la machine cliente (qui possède le navigateur internet)
ssh user@remotehost -D8080
8080 = port a configurer dans le navigateur pour la connexion SOCKS. (localhost:8080)
Et voilà, tant que le tunnel SSH reste ouvert vous surfez via la machine distante.
Dans Firefox (linux),
Edition - Préférences - Avancés - Réseau - Connexion - Paramètres - Configuration manuelle du proxy:
Hote SOCKS: localhost
port: 8080
[^] # Re: Excellent.
Posté par Frédéric Perrin (site web personnel) . Évalué à 6.
[^] # Re: Excellent.
Posté par zebra3 . Évalué à 4.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: Excellent.
Posté par M . Évalué à 3.
Et moi qui me faisait chier a installer srelay sur mon serveur et a forwarder les ports par ssh...
Je ne parle pas en école d'inge ou l'on utilisait slirp sur le shell distant ouvert par ssh, pour recupurer en local un lien ppp...
[^] # Re: Excellent.
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3.
[^] # Re: Excellent.
Posté par Anonyme . Évalué à 2.
c'est vraiment etonnant, et trés pratique :)
# Incontournable
Posté par PhE . Évalué à 10.
Pas plus tard que samedi matin, je reçois un appel d'un ami qui n'arrivait pas à faire fonctionner une appli sur son portable.
Il avait une machine virtuel sous Virtual Box OSE qui faisait tourner un serveur de client léger sur le réseau filaire. Le tout fonctionnait (ou plutôt ne fonctionnait pas) sur un portable ayant un accès Internet par le WiFi via un portail captif universitaire.
Voici les étapes du dépannage :
* il a installé OpenSSH server sur son portable
* il s'est connecté sur un serveur publique sur Internet avec tunnel rentrant ;
* je me suis connecté sur le même serveur publique sur Internet avec tunnel sortant ;
* j'ai relié les 2 bouts des tunnels ;
* j'ai pu alors ouvrir de chez moi une connexion SSH directement sur son portable ;
* on a reconfiguré la VM pour disposer d'un connexion réseau privée avec le portable ;
* j'ai alors ouvert une connexion SSH sur la VM ;
* j'ai enfin ouvert une dernière connexion SSH vers le client léger pour diagnostiquer le problème ;
Il faut parfois un peu d'aspirine pour enchainer les tunnels SSH mais c'est vraiment incontournable et terriblement efficace !
[^] # Re: Incontournable
Posté par vincent_k (site web personnel) . Évalué à 2.
Merci encore ;-)
[^] # Re: Incontournable
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 1.
[^] # Re: Incontournable
Posté par benoar . Évalué à 3.
* je me suis connecté sur le même serveur publique sur Internet avec tunnel sortant ;
* j'ai relié les 2 bouts des tunnels ;
Je suppose que c'est à cause du NAT ; moi je dis vivement que l'IPv6 se généralise pour qu'on arrête ce genre de bidouille.
D'ailleurs, s'il avait en plus configuré sa VM dans un subnet sur sa machine, tu aurais juste pu faire un simple ssh directement sur l'adresse de la VM ... !
Les bidouilles c'est bien, mais quand on peut les éviter, c'est mieux...
[^] # Re: Incontournable
Posté par PhE . Évalué à 3.
Pas vraiment à cause du NAT mais plutôt des parre-feu.
Je suppose que même en IPv6 la majorité des "box" et autres passerelles seront configurées pour autoriser les connexions sortantes et bloquer les entrantes.
D'ailleurs, s'il avait en plus configuré sa VM dans un subnet sur sa machine, tu aurais juste pu faire un simple ssh directement sur l'adresse de la VM ... !
Un subnet de quel réseau ?
Si c'est un nouveau réseau, le routage local sur sa machine n'aurait pas suffit. Les passerelles intermédiaires n'auraient pas connaissance de ce subnet. Et la conf d'un subnet et de règles de routage est autrement plus délicate à faire faire à distance à un utilisateur qu'un :
ssh -R1234:localhost:22 toto@monrelais.com
Les bidouilles c'est bien, mais quand on peut les éviter, c'est mieux...
En dépannage, la bidouille c'est souvent ce qui te sauve la vie !
Dans le cas présent, on a pu reconstruire une image de 10 Go à distance et malgré plusieurs coupures WiFi (merci SSH+screen).
[^] # Re: Incontournable
Posté par benoar . Évalué à 3.
Là j'avoue que je ne sais pas trop ce qu'il en sera ... Effectivement, vu la fiabilité des machines sous l'OS de MS quand elles sont directement exposées au net, il est probable que le firewall soit configuré pour tout bloquer par défaut. Mais j'espère qu'on pourra au moins facilement désactiver ce truc (voire sélectivement).
Un subnet de quel réseau ?
Du préfixe qui t'est attribué par ton FAI. En général, tu as un minimum un /56, t'as donc de la place pour créer ce que tu veux ...
Si c'est un nouveau réseau, le routage local sur sa machine n'aurait pas suffit. Les passerelles intermédiaires n'auraient pas connaissance de ce subnet.
Les gens habitués à IPv4 pensent toujours à "sous-réseau privé" : non, là on fera un sous-réseau public, routable.
Et la conf d'un subnet et de règles de routage est autrement plus délicate à faire faire à distance à un utilisateur qu'un :
ssh -R1234:localhost:22 toto@monrelais.com
La conf d'un masquerading est aussi "compliquée" que la conf d'un subnet. Sauf que c'est fait automatiquement par ta box ou le script de montage de ta VM. Et bah là ce sera pareil avec le subnet. C'est juste que maintenant il n'y aura plus de tunnel à faire. Moi, j'en conclue "plus simple".
En dépannage, la bidouille c'est souvent ce qui te sauve la vie !
Oui, effectivement, ce dont je parlais valais plutôt dans un cas "général". Quand tu dois rapidement dépanner quelqu'un, tu fais avec ce que tu as. Forcément, là, tu n'avais pas d'IPv6, mais si c'était plus répandu ...
Dans le cas présent, on a pu reconstruire une image de 10 Go à distance et malgré plusieurs coupures WiFi (merci SSH+screen).
Là je pense que tu peux surtout dire merci à TCP (et screen quand ça coupe vraiment). SSH n'a rien à faire là-dedans, et ça marcherait aussi bien sans tunnel avec IPv6.
[^] # Re: Incontournable
Posté par vincent_k (site web personnel) . Évalué à 1.
Réseaux de l'université, avec un proxy itou :S
[^] # Re: Incontournable
Posté par benoar . Évalué à 2.
Je parlais dans le cas d'IPv6. Je n'ai pas tout à fait compris ta réponse ...
[^] # Re: Incontournable
Posté par reno . Évalué à 1.
Bin, tu peux déjà le faire en IPv4, je ne vois pas pourquoi ils retireraient cette possibilité en IPv6..
[^] # Re: Incontournable
Posté par benoar . Évalué à 4.
Pas exactement. Les box faisant du NAT, forcément les machines qui sont derrière sont comme si elles étaient "firewallées" par défaut. Tu dois explicitement faire du port-forwarding (et savoir quel port sur quelle machine) pour "ouvrir" tes bécanes à l'extérieur. Avec IPv6, t'aurais juste à dire "ouvre moi tout", ou "ouvre moi tout pour cette machine". Ce n'est pas tout à fait pareil.
[^] # Re: Incontournable
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 2.
[^] # Re: Incontournable
Posté par Sytoka Modon (site web personnel) . Évalué à 8.
Le NAT est une vrai daube pour les protocole un peu complexe comme le H323 ou le SIP... Donc pour essayer de faire marcher les bousins, on passe par des serveurs en IP publique et on perds une partie de l'esprit d'internet de faire du point à point mais surtout de faire simple.
Donc, oui le NAT n'apporte aucune sécurité supplémentaire et oui le NAT rend les choses bien plus complexe.
En fait, le NAT est une mauvaise invention qui nous a fait perdre 10 ans et qui aura complexifié inutilement toutes les applications réseaux.
[^] # Re: Incontournable
Posté par benoar . Évalué à 5.
Je pense qu'aucune étude du coût du NAT par rapport à la migration à IPv6 ne sortira jamais, ça ferait trop peur. (mais oui, c'est clair qu'on n'aurait pas avancé "si vite" au début ; par contre, après ...)
[^] # Re: Incontournable
Posté par Volnai . Évalué à 1.
C'est clair, mais il faudrait peut-être aussi s'en prendre à ceux qui ont rédigés ces protocoles qui ne prennent pas en compte les connexions NATés, alors qu'elles sont nombreuses.
A moins qu'ils ne les ait fait ainsi pour permettre aux sociétés de sécurité de vendre de nouveaux produit qui savent remonter au niveau 7 ?
[^] # Re: Incontournable
Posté par benoar . Évalué à 3.
[^] # Re: Incontournable
Posté par Volnai . Évalué à 2.
[^] # Re: Incontournable
Posté par benoar . Évalué à 2.
Plus sérieusement, je pense qu'ils ont étudié les solutions, mais qu'aucune n'était satisfaisante ... On est toujours obligé de passer par un intermédiaire quand ya du NAT. Bon après, ils auraient pu effectivement prévoir un mode "dégradé" où c'est possible.
# Enfin.
Posté par Tonton Benoit . Évalué à 4.
J'ai toujours trouvé sftp -o Port=XXX chiant à taper !
[^] # Re: Enfin.
Posté par foutaises . Évalué à 1.
[^] # Re: Enfin.
Posté par M . Évalué à 2.
[^] # Re: Enfin.
Posté par Sytoka Modon (site web personnel) . Évalué à 3.
Le mieux serait peut être d'avoir dans ssh à la fois -p et -P qui signifieraient la même chose.
# Numéros de version ?
Posté par Romain Be. . Évalué à 3.
Juste par curiosité, y-a-t-il une raison particulière pour que les versions majeurs soient en .4 ?
[^] # Re: Numéros de version ?
Posté par Miod in the middle . Évalué à 1.
[^] # Re: Numéros de version ?
Posté par Florent Zara (site web personnel, Mastodon) . Évalué à 1.
cf. http://en.wikipedia.org/wiki/OpenSSH#History
# scp vs sftp
Posté par M . Évalué à 4.
C'est quoi les avantages de sftp par rapport à scp ?
[^] # Re: scp vs sftp
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 9.
SFTP, c'est un vrai protocole de transfert et de gestion de fichiers qui utilise SSH comme couche de transport. Donc pas besoin de shell, ça peut utliser un sous-système intégré au serveur SSH, et donc ça se chroote facilement.
[^] # Re: scp vs sftp
Posté par Christophe HENRY (site web personnel) . Évalué à 2.
Et c‘est ainsi que quand on sécurise un accès dédié exclusivement à de la copie de fichier on met /dev/null comme interpréteur de commande. Et quand ça ne marche plus et on s‘arrache les cheveux…
[^] # Re: scp vs sftp
Posté par Sytoka Modon (site web personnel) . Évalué à 2.
[^] # Re: scp vs sftp
Posté par Christophe HENRY (site web personnel) . Évalué à 1.
[^] # Re: scp vs sftp
Posté par GnunuX (site web personnel) . Évalué à 2.
nss_override_attribute_value loginShell /bin/false
dans /etc/ldap.conf (ou autre suivant distro).
Pourquoi ?
[^] # Re: scp vs sftp
Posté par Sytoka Modon (site web personnel) . Évalué à 2.
Pourquoi : j'ai par exemple une personne qui veut tcsh comme shell sur sa machine mais je voudrais qu'elle ait bash ailleurs comme tout le monde.
[^] # Re: scp vs sftp
Posté par M . Évalué à 2.
T'es sur que tu confonds pas avec fish [1] ?
scp a l'air d'avoir un serveur [2], mais peut être que celui-ci est lancé depuis le shell ?
[1]
http://en.wikipedia.org/wiki/Files_transferred_over_shell_pr(...)
[2]
http://en.wikipedia.org/wiki/Secure_copy
[^] # Re: scp vs sftp
Posté par Miod in the middle . Évalué à 3.
Plus exactement, SCP est une implémentation du protocole RCP sur une connexion SSH, donc avec le même fonctionnement et les mêmes limitations.
[^] # Re: scp vs sftp
Posté par olosta . Évalué à 1.
[^] # Re: scp vs sftp
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 1.
[^] # Re: scp vs sftp
Posté par olosta . Évalué à 1.
[^] # Re: scp vs sftp
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 2.
[^] # Re: scp vs sftp
Posté par Frédéric Perrin (site web personnel) . Évalué à 0.
[^] # Re: scp vs sftp
Posté par M . Évalué à 4.
Ben ca marche
$cd /tmp
$mkdir 1
$mkdir 2
$touch 1/"pp pp"
$scp -P443 1/pp\ pp localhost:/tmp/2
$ ls -l 2/
23:12 pp pp
# Tout terrain
Posté par ackernul . Évalué à 1.
Existait-il un système similaire avant (libre ou non) ? Ou ssh est-il le premier (le seule ?) système de se genre ?
[^] # Re: Tout terrain
Posté par Sytoka Modon (site web personnel) . Évalué à 2.
[^] # Re: Tout terrain
Posté par patrick_g (site web personnel) . Évalué à 2.
Site : http://www.lysator.liu.se/~nisse/lsh/
Je crois que c'est mort car les archives mails ne vont pas au delà de 2008 : http://lists.lysator.liu.se/pipermail/lsh-bugs/
La dernière version semble être la 2.9 (version expérimentale) sortie en avril 2007.
[^] # Re: Tout terrain
Posté par M . Évalué à 6.
Sur les petits routeurs c'est son petit frère dropbear [1] qui est utilisé
Existait-il un système similaire avant (libre ou non) ? Ou ssh est-il le premier (le seule ?) système de se genre ?
Il y a une version proprio qui a pas mal marché (je me demande si c'est pas les devs de ce soft qui on fait la première version du protocole).
[1]
http://matt.ucc.asn.au/dropbear/dropbear.html
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.