Supposons que j'ai créé un compte dont le shell de connexion est en réalité un script qui n'autorise pas une connexion interactive et ne permet qu'un ensemble de commandes très limité et spécifique à exécuter à distance.
Néanmoins, ssh
permet à l'utilisateur de ce compte de transférer des ports, ce qui est un trou.
Le problème, c’est que je souhaite réellement que ce compte configure une configuration de transfert de port spécifique lorsque la ssh
session est établie. Mais il doit être impossible de configurer le transfert de port arbitraire.
(Il s'agit d'une solution acceptable si la configuration de redirection de port autorisée est établie de manière inconditionnelle dans le cadre de chaque session.)
Réponses:
En fait, OpenSSH a une fonctionnalité pour cela, pour limiter le
-L
style ouvert du côté serveur. La fonctionnalité est disponible de deux manières.Le fichier de configuration du serveur contient une
PermitOpen
option. Cette option peut être utilisée pour spécifier des hôtes et des ports pour lesquels des transferts peuvent être établis. Cette option peut être utilisée à l'intérieur d'unMatch
bloc. Elle peut donc être restreinte par utilisateur, groupe, nom d'hôte ou modèle d'adresse IP.Dans un
authorized_keys
fichier, des options peuvent être associées à une clé particulière. Il existe unepermitopen
option qui fonctionne de manière similaire à celle de server-config.Notes / Limitations:
L'option
AllowTcpForwarding
désactive tous les transferts dans les deux sens, empêchant ainsi les ports d'écoute d'être configurés sur le serveur, ainsi que les transferts actifs.Il n'y a pas de
PermitOpen
contrôle d'accès pour les-R
connexions de style. C'est probablement d'accord. Cela signifie que les utilisateurs peuvent utiliserssh
pour ouvrir divers ports non privilégiés pour l'écoute sur le serveur. Le problème du client est l'endroit où ils se connectent de l'autre côté de la connexion SSH. Si nous limitons le transfert dans la-L
direction, l'utilisateur n'a aucun moyen d'utiliser ces-R
ports (du moins pas viassh
, s'il ne peut pas créer une session interactive arbitraire).Il ne semble pas y avoir de moyen de créer une liste vide d’ouvertures autorisées pour empêcher les utilisateurs d’établir des
-L
connexions de styles. Toutefois, une solution de contournement consiste à utiliser un nom d'hôte inoffensif, inexistant ou impossible, tel que la chaîne vide. Concrètement,permitopen=":1234"
fait le tour.la source
-R
, cela fonctionne pour moi.Un argument de «tout» peut être utilisé pour supprimer toutes les restrictions et permettre toute demande de transfert. Un argument de «aucun» peut être utilisé pour interdire toutes les demandes de transfert. Par défaut, toutes les demandes de transfert de port sont autorisées.
la source