Comment désactiver le renvoi de port local SSH?

J'ai un serveur exécutant Ubuntu et le démon OpenSSH. Appelons S1.

J'utilise ce serveur à partir de machines clientes (appelons l'un d'entre eux C1) pour faire un tunnel inversé SSH en utilisant le renvoi de port distant, par exemple:

ssh -R 1234:localhost:23 login@S1 

Sur S1, j'utilise le fichier par défaut sshd_config. D'après ce que je vois, toute personne possédant les bonnes informations d'identification {login, pwd} sur S1 peut se connecter à S1 et effectuer un renvoi de port distant et un renvoi de port local. Ces informations pourraient être un certificat à l'avenir, de sorte que, selon moi, quelqu'un qui saisit le certificat peut se connecter à S1 de n'importe où (pas nécessairement C1) et, par conséquent, créer des renvois de ports locaux.

Pour moi, permettre le renvoi de port local est trop dangereux, car il permet de créer une sorte de proxy public. Je cherche un moyen de désactiver uniquement les envois -L.

J'ai essayé ce qui suit, mais cela désactive le renvoi local et distant:

 AllowTcpForwarding No 

J'ai également essayé ce qui suit, cela ne permettra que -L à SX: 1. C'est mieux que rien, mais toujours pas ce dont j'ai besoin, ce qui est une option "none".

 PermitOpen SX:1 

Je me demande donc s'il y a un chemin, de sorte que je peux interdire à tous les ports locaux d'écrire quelque chose comme:

 PermitOpen none:none 

Est-ce que la suivante est une bonne idée?

 PermitOpen localhost:1 

Toute personne possédant des informations d'identification peut afficher sa propre instance de sshd, s'exécutant sur un port aléatoire et autorisant tout ce qu'elles veulent, y compris les envois locaux -L:

 % /usr/sbin/sshd -d -f mysshd.config -p 12345 

Si vous ne faites pas confiance aux utilisateurs pour faire quelque chose avec votre machine, vous ne devriez pas les autoriser à vous connecter en premier lieu.

(Btw, le drapeau -D est également un "problème de proxy")

Une autre solution serait d'autoriser uniquement le renvoi de port à spécifier les utilisateurs:

De SSH: le guide définitif

Le renvoi de port peut être globalement activé ou désactivé dans sshd. Cela se fait avec le mot-clé de configuration à l'échelle du serveur AllowTcpForwarding dans / etc / sshd_config. Le mot-clé peut avoir la valeur oui (par défaut, l'activation de l'acheminement) ou non (désactivation du renvoi):

 # SSH1, SSH2, OpenSSH AllowTcpForwarding no 

En outre, SSH2 a les options suivantes:

 # SSH2 only AllowTcpForwardingForUsers AllowTcpForwardingForGroups 

La syntaxe est identique à celle des options AllowUsers et AllowGroups. [Section 5.5.2.1, "Contrôle d'accès au compte"] Ils spécifient une liste d'utilisateurs ou de groupes autorisés à utiliser le renvoi de port; Le serveur refuse d'honorer les demandes de renvoi de port pour quiconque. Notez que ceux-ci se rapportent au compte cible de la session SSH, et non au nom d'utilisateur du client (ce qui n'est souvent pas connu).

Il est important de se rendre compte que les directives de cette section n'empêchent pas le renvoi de port, sauf si vous désactivez également les connexions interactives et restreignez les programmes qui peuvent être exécutés sur le côté distant. Sinon, les utilisateurs compétents peuvent simplement exécuter leur propre application de transfert de port sur la session SSH. Ces paramètres seuls peuvent être une dissuasion suffisante dans une communauté non technique, mais ils n'arrêteront pas quelqu'un qui sait ce qu'elle fait.

Il n'y a aucune option pour autoriser uniquement le renvoi local / distant.

AllowTcpForwarding Spécifie si le transfert TCP est autorisé. Les options disponibles sont "oui" ou "tout" pour autoriser le transfert TCP, "non" pour empêcher tout renvoi TCP, "local" pour autoriser le transfert local (à la perspective de ssh (1)) ou "distant" pour permettre la transmission à distance Envoi uniquement . La valeur par défaut est "oui". Notez que la désactivation de l'acheminement TCP n'améliore pas la sécurité, à moins que les utilisateurs ne se voient attribuer l'accès de la shell, car ils peuvent toujours installer leurs propres redirecteurs.

Donc, comme indiqué précédemment, vous devez également définir la coquille pour nologin.

Ma solution à ce problème était d'ajouter: PermitOpen fo.local: 80 dans la section principale du sshd_config.

Cela renonce simplement à toute requête de transfert local en dehors de fo.local: 80.