SSH s'exécute par défaut sur le port 22. Ce n'est pas un hasard. Voici comment il a obtenu ce port.
Lorsque j'ai (
Tatu Ilonen ) publié cette histoire pour la première fois en avril 2017, elle est devenue virale: elle a été lue par environ 120 000 lecteurs en trois jours.
Historique de la réception du port 22 pour SSH
J'ai écrit la première version de SSH (Secure Shell) au printemps 1995.
Telnet et
FTP étaient largement utilisés à cette époque.
Mais j'ai quand même développé SSH pour remplacer à la fois
telnet
(port 23) et
ftp
(port 21). Le port 22 était libre et idéalement situé entre les ports pour telnet et ftp. Je pensais qu'un tel numéro de port pourrait être l'un de ces petits détails qui donneront une aura de confiance SSH. Mais comment l'obtenir? Je n'ai jamais alloué de ports, mais je connaissais ceux qui le font.
L'attribution des ports était assez simple à l'époque. Internet était plus petit et nous étions aux tout premiers stades du boom Internet. Les numéros de port ont été attribués par l'IANA (Internet Assigned Numbers Authority). À cette époque, cela signifiait les pionniers respectés d'Internet
John Postel et
Joyce C. Reynolds . Entre autres choses, John était l'éditeur de protocoles mineurs tels que IP (RFC 791), ICMP (RFC 792) et TCP (RFC 793). Certains d'entre vous en ont peut-être entendu parler.
J'ai été franchement effrayé par John en tant qu'auteur de tous les principaux RFC pour Internet!
D'une manière ou d'une autre, mais avant l'annonce de
ssh-1.0
en juillet 1995, j'ai envoyé l'e-mail suivant à l'IANA:
De ylo lun juil.10 11:45:48 +0300 1995
De: Tatu Ylonen <ylo@cs.hut.fi>
À: Internet Assigned Numbers Authority <iana@isi.edu>
Objet: demande de numéro de port
Organisation: Université de technologie d'Helsinki, Finlande
Cher Monsieur,
J'ai écrit un programme pour se connecter en toute sécurité d'une machine à une autre sur un réseau non sécurisé. Il s'agit d'une amélioration significative de la sécurité par rapport aux protocoles telnet et rlogin existants et à leurs implémentations. En particulier, il empêche l'usurpation d'adresse IP, DNS et de routage. Mon plan est de distribuer librement le programme sur Internet et d'assurer sa plus large utilisation possible.
Je souhaite obtenir un numéro de port privilégié enregistré pour le programme. Il est souhaitable dans la plage de 1 à 255 pour pouvoir être utilisé dans le champ WKS sur les serveurs de noms.
Ci-dessous, j'applique le projet RFC pour le protocole. Le logiciel est utilisé localement depuis plusieurs mois et est prêt à être publié, à l'exception du numéro de port. Si vous pouvez rapidement attribuer un numéro de port, je voudrais présenter le programme cette semaine. J'utilise actuellement le port 22 dans les tests bêta. Ce serait formidable d'utiliser ce numéro (actuellement répertorié comme «non attribué» dans les listes).
Le nom du service pour le logiciel est "ssh" (Secure Shell).
Cordialement
Tatu Ilonen <ylo@cs.hut.fi>
... puis la spécification du protocole ssh-1.0 suit
Le lendemain, une lettre de Joyce était dans la boîte de réception:
Date: lun.10 juil.1995 15:35:33 -0700
De: jkrey@ISI.EDU
À: ylo@cs.hut.fi
Objet: Re: demande de numéro de port
Cc: iana@ISI.EDU
Tatouage
Nous avons attribué le port 22 pour SSH, en vous spécifiant comme personne de contact.
Joyce
Nous l'avons fait! Maintenant, SSH a le port 22 !!!
Le 12 juillet 1995 à 2 h 32, j'ai annoncé la version bêta finale de mes bêta-testeurs à l'Université d'Helsinki. À 17h23, il a envoyé des packages ssh-1.0.0 aux testeurs et à 17h51, il a envoyé une annonce concernant SSH (Secure Shell) à la
cypherpunks@toad.com
diffusion
cypherpunks@toad.com
. J'ai également dupliqué l'annonce dans plusieurs groupes de discussion, listes de diffusion et directement aux personnes qui ont discuté de sujets connexes sur Internet.
Changer le port SSH sur le serveur
Par défaut, le serveur SSH fonctionne toujours sur le port 22. Cependant, cela se produit différemment. L'une des raisons est le test. Une autre consiste à exécuter plusieurs configurations sur le même hôte. Il est rare qu'un serveur s'exécute sans privilèges root, auquel cas il doit être situé sur un port non privilégié (c'est-à-dire avec un nombre de 1024 ou plus).
Le numéro de port peut être configuré en modifiant la directive
Port 22
dans
/ etc / ssh / sshd_config . Il est également spécifié par le paramètre
-p <port>
dans
sshd . Le client SSH et les programmes
sftp prennent également en charge le paramètre
-p <port>
.
Spécification d'un port SSH sur la ligne de commande
Le paramètre
-p <port>
peut être utilisé pour spécifier le numéro de port lors de la connexion à l'aide de la commande
ssh
sous Linux.
SFTP et
scp
utilisent le paramètre
-P <port>
(note: P majuscule). Une instruction de la ligne de commande remplace toute valeur dans les fichiers de configuration.
Configuration de l'accès SSH via des pare-feu
SSH est l'un des rares protocoles qui sont souvent autorisés à fonctionner via des pare-feu pour l'accès sortant, en particulier dans les petites entreprises et les entreprises techniques. SSH entrant est généralement autorisé sur un ou plusieurs serveurs.
Ssh sortant
La configuration de ssh sortant dans un pare-feu est très simple. S'il existe des restrictions sur le trafic sortant en général, créez simplement une règle qui autorise les connexions sortantes sur le port TCP 22. C'est tout. Si vous souhaitez limiter les adresses de destination, vous pouvez créer une règle appropriée en autorisant uniquement l'accès aux serveurs de votre organisation dans le cloud ou à un
serveur de connexion qui protège l'accès au cloud.
Le tunneling inverse est un risque
Cependant, un SSH sortant illimité peut être risqué. Le protocole SSH prend en charge la
tunnellisation . L'idée principale est que le serveur SSH sur le serveur externe écoute les connexions de partout, les transmet à l'organisation et établit une connexion avec une sorte de serveur interne.
Dans certains cas, cela est pratique. Les développeurs et les administrateurs système utilisent souvent la tunnellisation pour accéder à distance depuis leur domicile ou depuis un ordinateur portable lors de leurs déplacements.
Mais le tunneling viole généralement la politique de sécurité et prend le contrôle des administrateurs de pare-feu et de l'équipe SI. Par exemple, il peut enfreindre
les règles
PCI ,
HIPAA ou
NIST SP 800-53 . Il peut être utilisé par des pirates et des services spéciaux pour laisser des portes dérobées sur le réseau local.
Le programme
CryptoAuditor contrôle le tunneling dans le pare-feu ou au point d'entrée vers un groupe de serveurs cloud. Il fonctionne conjointement avec
Universal SSH Key Manager pour accéder aux
clés d'hôte , en les utilisant pour déchiffrer les sessions SSH dans le pare-feu et bloquer le transfert non autorisé.
SSH entrant
Pour l'accès entrant, il existe plusieurs options:
- Configurez un pare-feu pour transmettre toutes les connexions au port 22 à une adresse IP spécifique sur le réseau interne ou DMZ . Exécutez un CryptoAuditor ou un serveur de saut à cette adresse IP pour contrôler et vérifier un accès ultérieur à l'organisation.
- Utilisez différents ports sur le pare-feu pour accéder à différents serveurs.
- Autorisez l'accès SSH uniquement après vous être connecté à l'aide d'un VPN, généralement via IPsec .
Activer SSH via iptables
Iptables est un pare-feu hôte intégré au noyau Linux. Il est généralement configuré pour protéger le serveur en empêchant l'accès à tous les ports qui n'étaient pas explicitement ouverts.
Si iptables est activé sur le serveur, les commandes suivantes peuvent autoriser l'accès SSH entrant. Ils doivent être exécutés sous la racine.
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Si vous souhaitez conserver les règles pour toujours, dans certains systèmes, cela peut être fait avec la commande:
service iptables save
