Qu’est-ce que la redirection de Port SSH, alias SSH Tunneling?
la redirection de port SSH est un mécanisme dans SSH pour tunneler les ports d’application de la machine cliente vers la machine serveur, ou vice versa. Il peut être utilisé pour ajouter du cryptage aux applications héritées, passer par des pare-feu, et certains administrateurs système et professionnels de l’informatique l’utilisent pour ouvrir des portes dérobées dans le réseau interne à partir de leurs machines domestiques. Il peut également être abusé par les pirates et les logiciels malveillants pour ouvrir l’accès à partir d’Internet au réseau interne., Voir la page SSH tunneling pour un aperçu plus large.
transfert Local
le transfert Local est utilisé pour transférer un port de la machine cliente vers la machine serveur. Fondamentalement, le client SSH écoute les connexions sur un port configuré, et quand il reçoit une connexion, il tunnel la connexion à un serveur SSH. Le serveur se connecte à un port de destination configuré, éventuellement sur une machine différente du serveur SSH.,
Les utilisations typiques de la redirection de port local incluent:
-
Les sessions de Tunneling et les transferts de fichiers via des serveurs jump
-
la connexion à un service sur un réseau interne depuis l’extérieur
-
la connexion à un partage de fichiers distant sur Internet
un certain nombre d’organisations pour Le serveur peut être une boîte Linux/Unix standard, généralement avec un durcissement supplémentaire, une détection d’intrusion et/ou une journalisation, ou il peut s’agir d’une solution de serveur Jump commerciale.,
de nombreux serveurs jump autorisent la redirection de port entrant, une fois la connexion authentifiée. Une telle redirection de port est pratique, car elle permet aux utilisateurs technophiles d’utiliser les ressources internes de manière assez transparente. Par exemple, ils peuvent transférer un port de leur machine locale vers le serveur web intranet de l’entreprise, vers le port IMAP D’un serveur de messagerie interne, vers les ports 445 et 139 d’un serveur de fichiers local, vers une imprimante, vers un référentiel de contrôle de version ou vers presque tout autre système du réseau interne. Fréquemment, le port est tunnelisé vers un port SSH sur une machine interne.,
dans OpenSSH, la redirection de port local est configurée à l’aide de l’option -L
:
ssh -L 80:intra.example.com:80 gw.example.com
Cet exemple ouvre une connexion au serveur de saut gw.example.com
et transfère toute connexion au port 80 de la machine locale au= »759d89bc30″>.
par défaut, n’importe qui (même sur des machines différentes) peut se connecter au port spécifié sur la machine cliente SSH., Cependant, cela peut être limité aux programmes sur le même hôte en fournissant une adresse de liaison:
ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com
l’optionLocalForward
dans le fichier de configuration du client OpenSSH peut être utilisée pour configurer le transfert sans avoir à le spécifier en ligne de commande.
Remote Forwarding
dans OpenSSH, les transferts de ports SSH distants sont spécifiés à l’aide de l’option-R
. Par exemple:
ssh -R 8080:localhost:80 public.example.com
cela permet à toute personne sur le serveur distant de se connecter au port TCP 8080 sur le serveur distant., La connexion sera ensuite redirigée vers l’hôte client, puis le client établit une connexion TCP au port 80 sur localhost
. Tout autre nom d’hôte ou adresse IP peut être utilisé à la place de localhost
pour spécifier l’hôte auquel se connecter.
Cet exemple particulier serait utile pour donner à quelqu’un de l’extérieur l’accès à un serveur Web interne. Ou exposer une application Web interne à l’Internet public. Cela pourrait être fait par un employé travaillant à domicile, ou par un attaquant.,
par défaut, OpenSSH permet uniquement la connexion aux ports transférés distants à partir de l’hôte du serveur. Cependant, l’optionGatewayPorts
dans le fichier de configuration du serveur sshd_config peut être utilisée pour contrôler cela. Les alternatives suivantes sont possibles:
GatewayPorts no
cela empêche la connexion aux ports transférés depuis l’extérieur de l’ordinateur serveur.
GatewayPorts yes
ceci permet à n’importe qui de se connecter aux ports transférés. Si le serveur est sur Internet public, toute personne sur Internet peut se connecter au port.,
GatewayPorts clientspecified
cela signifie que le client peut spécifier une adresse IP à partir de laquelle les connexions au port sont autorisées. La syntaxe pour ceci est:
ssh -R 52.194.1.73:8080:localhost:80 host147.aws.example.com
dans cet exemple, seules les connexions de l’adresse IP 52.194.1.73
au port 8080 sont autorisées.
OpenSSH permet également au port distant transféré d’être spécifié comme 0. Dans ce cas, le serveur allouera dynamiquement un port et le signalera au client. Lorsqu’il est utilisé avec l’option-O forward
, le client imprimera le numéro de port alloué sur la sortie standard.,
ouverture de portes dérobées dans L’entreprise
La Redirection de port SSH à distance est couramment utilisée par les employés pour ouvrir des portes dérobées dans l’entreprise. Par exemple, l’employé peut définir get a free-tier server d’Amazon AWS et se connecter du Bureau à ce serveur, en spécifiant le transfert à distance d’un port sur le serveur vers un serveur ou une application sur le réseau interne de l’entreprise. Plusieurs transferts distants peuvent être spécifiés pour ouvrir l’accès à plus d’une application.,
l’employé définirait également GatewayPorts yes
sur le serveur (la plupart des employés n’ont pas d’adresses IP fixes à la maison, ils ne peuvent donc pas restreindre l’adresse IP).
par exemple, la commande suivante ouvre l’accès à une base de données Postgres interne au port 5432 et à un port SSH interne au port 2222.
ssh -R 2222:d76767.nyc.example.com:22 -R 5432:postgres3.nyc.example.com:5432 aws4.mydomain.net
configuration Côté Serveur
l’optionAllowTcpForwarding
dans le fichier de configuration du serveur OpenSSH doit être activée sur le serveur pour autoriser la redirection de port. Par défaut, le transfert est autorisé., Les valeurs possibles pour cette option sont: yes
ou all
pour permettre à tous TCP forwarding, no
pour éviter tous TCP forwarding, local
d’autoriser les redirections, et remote
pour autoriser les redirections.
Une autre option intéressante estAllowStreamLocalForwarding
, qui peut être utilisé pour transférer des sockets de domaine Unix. Il permet les mêmes valeurs que AllowTcpForwarding
. La valeur par défaut est yes
.,
Par exemple:
AllowTcpForwarding remote AllowStreamLocalForwarding no
l’option de configurationGatewayPorts
comme décrit ci-dessus affecte également les transferts de ports distants. Les valeurs possibles étaient no
(seules les connexions locales à partir de l’hôte du serveur sont autorisées; par défaut), yes
(toute personne sur Internet peut se connecter à des ports transférés distants) et clientspecified
(le client peut spécifier une adresse IP,
comment empêcher la redirection de Port SSH de contourner les pare-feu
Nous recommandons que la redirection de port soit expressément désactivée lorsqu’elle n’est pas nécessaire. Laisser la redirection de port activée peut exposer l’organisation à des risques de sécurité et à des portes dérobées. Par exemple, si un serveur destiné à fournir uniquement des transferts de fichiers SFTP autorise les transferts de ports, ces transferts peuvent être utilisés pour obtenir un accès involontaire au réseau interne à partir de l’Intranet.
le problème est que la redirection de port ne peut en pratique être empêchée que par un serveur ou un pare-feu., Une entreprise ne peut pas contrôler tous les serveurs sur Internet. Le contrôle basé sur un pare-feu peut également être délicat, car la plupart des organisations ont des serveurs dans Amazon AWS et d’autres services cloud, et ces serveurs sont généralement accessibles via SSH.