J'ai besoin de limiter les ports qui peuvent être distants ' ssh -R
' transmis par un utilisateur.
Je connais l' permitopen
option sur authorized_keys, mais comme il est dit sur la page de manuel, cela ne limite que ssh -L
la redirection de port locale ' '
Comme discuté ici, un utilisateur obtiendrait la même chose avec netcat
ou similaire, mais dans ce cas, l'utilisateur n'a pas accès au shell
J'ai également trouvé ce fil qui parle de l'utilisation de selinux ou LD_PRELOAD
, mais je n'ai jamais configuré selinux auparavant et je ne trouve pas d'informations sur la façon de le faire LD_PRELOAD
.
peut-être que quelqu'un a fait un patch pour openssh pour l'implémenter?
EDIT: J'ai trouvé ce rapport de bug, donc je suppose qu'il n'est pas encore implémenté
la source
Réponses:
Cela a été implémenté dans OpenSSH 7.8p1, qui a été publié le 2018-08-24. Citation des notes de version:
la source
Il existe une option
no-port-forwarding
que vous pouvez utiliser, qui empêche toute redirection de port. Présent au moins à partir d'OpenSSH 4.3p2 (CentOS 5.3 - la plus ancienne machine à laquelle j'ai accès). Mettez-le au même endroit que vous auriez mispermitopen
.la source
Il n'est pas possible de limiter cela en utilisant ssh. Peut-être que selinux ou iptables pourraient être utilisés à cette fin. Cependant, il existe une stratégie alternative qui peut ou non convenir à vos besoins. Utilisez la liaison aux sockets UNIX. Cela devrait être disponible à partir de la version 6.8 de openssh.
Lorsque vous utilisez des sockets, vous avez à votre disposition l'ACL du système de fichiers (bien que les sockets respectent ce qui peut dépendre de * nix) et vous pouvez l'utiliser pour empêcher un utilisateur de se lier à d'autres sockets. Cependant, cela n'empêche en aucune façon la liaison aux ports, donc selon votre cas d'utilisation, cela peut ne pas aider, mais peut-être que les ports n'ont pas d'importance si vous ne pouvez utiliser que des sockets de manière cohérente.
Avec les sockets UNIX, la gestion des fichiers de socket pendantes peut être problématique lorsque les éditeurs inversés tentent de se reconnecter. J'ai une autre question (et réponse) à ce problème. En bref, vous souhaitez probablement également utiliser
StreamLocalBindUnlink yes
:Comment nettoyer le socket du tunnel inverse SSH après la connexion fermée?
la source
Dupliquer: /superuser/516417/how-to-restrict-ssh-port-forwarding-without-denying-it
On dirait que vous pouvez utiliser ce qui suit?
Edit: Donc, dans la configuration du serveur, ajoutez ce qui suit
la source