Nous avons un serveur public qui accepte les connexions SSH de plusieurs clients derrière les pare-feu.
Chacun de ces clients crée un tunnel SSH inversé en utilisant la ssh -R
commande de leurs serveurs Web sur le port 80 vers notre serveur public.
Le port de destination (côté client) du tunnel SSH inversé est 80 et le port source (côté serveur public) dépend de l'utilisateur. Nous prévoyons de maintenir une carte des adresses de port pour chaque utilisateur.
Par exemple, le client A tunnelerait son serveur Web au port 80 vers notre port 8000; client B de 80 à 8001; client C de 80 à 8002.
Client A: ssh -R 8000:internal.webserver:80 clienta@publicserver
Client B: ssh -R 8001:internal.webserver:80 clientb@publicserver
Client C: ssh -R 8002:internal.webserver:80 clientc@publicserver
Fondamentalement, ce que nous essayons de faire, c'est de lier chaque utilisateur avec un port et de ne pas leur permettre de tunneler vers d'autres ports.
Si nous utilisions la fonction de tunneling direct de SSH avec ssh -L
, nous pourrions autoriser le port à tunneler en utilisant la permitopen=host:port
configuration. Cependant, il n'y a pas d'équivalent pour le tunnel SSH inversé.
Existe-t-il un moyen de restreindre les ports de tunneling inverse par utilisateur?