Мне нужно ограничить, какие порты могут быть ssh -R
«перенаправлены» удаленно пользователем.
Я знаю о permitopen
параметре авторизованных ключей, но, как сказано на странице руководства, он ограничивает только локальную ssh -L
переадресацию портов.
Как обсуждалось здесь, пользователь получит то же самое netcat
или похожее, но в этом случае у пользователя нет доступа к оболочке.
Я также нашел эту нить , что говорит об использовании SELinux или LD_PRELOAD
, но я никогда не сконфигурирована SELinux раньше и не могу найти информацию о том , как сделать это с LD_PRELOAD
.
может быть кто-то сделал патч для openssh для реализации этого?
РЕДАКТИРОВАТЬ: я нашел этот отчет об ошибке, так что я думаю, что он еще не реализован
ssh
security
port-forwarding
Lluís
источник
источник
Ответы:
Это было реализовано в OpenSSH 7.8p1, который был выпущен 2018-08-24. Цитата из заметок о выпуске:
источник
Есть опция,
no-port-forwarding
которую вы можете использовать, которая предотвращает переадресацию всех портов. По крайней мере, в OpenSSH 4.3p2 (CentOS 5.3 - самая старая машина, к которой у меня есть доступ). Положите его в то же место, что вы бы положилиpermitopen
.источник
Это невозможно ограничить с помощью ssh. Может быть, selinux или iptables могут быть использованы для этой цели. Тем не менее, существует альтернативная стратегия, которая может или не может удовлетворить ваши потребности. Используйте привязку к сокетам UNIX. Это должно быть доступно начиная с версии 6.8 openssh.
При использовании сокетов в вашем распоряжении есть ACL файловой системы (хотя более влажные сокеты могут зависеть от * nix), и вы можете использовать его для предотвращения привязки одного пользователя к другим сокетам. Однако это никак не препятствует привязке к портам, поэтому в зависимости от вашего случая использования это может не помочь, но, возможно, порты не имеют значения, если вы можете последовательно использовать только сокеты.
С сокетами UNIX обработка висячих файлов сокетов может быть проблематичной, поскольку обратные издатели пытаются восстановить соединение. У меня есть другой вопрос (и ответ) на эту проблему. Короче говоря, вы, вероятно, также хотите использовать
StreamLocalBindUnlink yes
:Как очистить сокет обратного туннеля SSH после закрытия соединения?
источник
Дубликат: /superuser/516417/how-to-restrict-ssh-port-forwarding-without-denying-it
Похоже, вы можете использовать следующее?
Изменить: Таким образом, в конфигурации сервера добавить следующее
источник