LINUX.ORG.RU
ФорумAdmin

Аналог reverse proxy для ssh (multi-hop ssh)

 , ,


0

1

Привет.

Есть сервер с несколькими контейнерами (docker). Нужно разграничивать доступ к разным контейнерам.

Для http используется nginx, который перенаправляет разные url в разные контейнеры. Есть ли аналог такого прокси для ssh? Например, он мог бы перенаправлять разных пользователей в разные контейнеры.

Нужно, чтобы прокси был прозрачным, и чтобы пользователь, имеющий ssh-доступ в некоторый контейнер, не имел доступа на хост или другие контейнеры. Вот здесь задавали такой же вопрос, советуют apache, либо vpn, либо открыть кучу портов.

А есть еще варианты?


Разных пользователей чего?

goingUp ★★★★★
()

На ум приходит только костыльное решение:

1. Создать отдельную виртуалку, на которую завернут порт SSH 2. На этой вирту авалке создавать всех пользователей в .bashrc которых прописать что-то типа 'ssh user_container_name'.

При авторизации по ключам и работающем ssh-agent'е - наверное даже будет довольно прозрачно перекидывать, но не понятно, как быть с выходом пользователей.

WhiteWolf
()
Ответ на: комментарий от WhiteWolf

Чуть додумал:

1. Если в bashrc прописать 'ssh user_container_name;exit' - выход с прокси таки будет происходить при выходе с виртуалки

2. Если сделать доп. пару ключей (для каждого юзера) и приватный ключ без пароля оставить на Прокси-виртуалке - авторизация перекидывание таки будет происходить и при парольной авторизации на proxy. Но минус к безопасности

WhiteWolf
()

А есть еще варианты?

Да, целых 65535. Отдельный порт. DNAT --to-destination через iptables

router ★★★★★
()

можно в качестве пользовательского шелла установить самописный скрипт, который понимает - какой пользователь его вызвал и выполняет chroot в нужный контейнер. с докером конкретно я не работал, но похожие вещи делал.

Komintern ★★★★★
()
Ответ на: комментарий от WhiteWolf

А если они запустят «ssh server command» то никакой bashrc не вызовется

disarmer ★★★
()

Спасибо за ответы.

goingUp

Разных пользователей чего?

«Пользователей» хотелось бы различать по ssh-ключам.

WhiteWolf

в .bashrc которых прописать что-то типа 'ssh user_container_name'

Только тогда надежнее вариант Komintern с заменой шелла.

router

Да, целых 65535. Отдельный порт. DNAT --to-destination через iptables

Т.к. контейнеры крутятся на том же хосте, то даже NAT не нужен, можно просто открыть нужные порты.

Проблема, которую этот вариант не решает: нужно контролировать набор ключей, по которым пользователи ходят в контейнеры и иметь их собранными в одном месте. Чтобы безопасность доступа в контейнер обеспечивалась не в контейнере, а снаружи, и чтобы добавление пользователей было централизованным.

Komintern

можно в качестве пользовательского шелла установить самописный скрипт, который понимает - какой пользователь его вызвал и выполняет chroot в нужный контейнер.

Вот я тоже думаю о таком варианте, но не хочется изобретать велосипед.

gv
() автор топика

задача в чом? содержимое топика — не задача, а попытка кривого решения.

anonymous
()
Ответ на: комментарий от anonymous

задача в чом? содержимое топика — не задача, а попытка кривого решения.

  • Нужно контролировать набор ключей, по которым пользователи ходят в контейнеры.
  • Нужно иметь эти ключи собранными в одном месте.
  • Безопасность доступа в контейнер должна обеспечиваться не в контейнере, а снаружи.
  • Добавление пользователей должно быть централизованным.

Как-то так.

gv
() автор топика
Последнее исправление: gv (всего исправлений: 1)
Ответ на: комментарий от gv

Идея весьма здравая и интересная. Можно даже свой костыль для этого написать.

Но сдается мне, надо смотреть в сторону iptables.

roman77 ★★★★★
()
Последнее исправление: roman77 (всего исправлений: 1)
Ответ на: комментарий от anonymous

free-ipa

Ого, серьезная штука.

По сути, вы предлагаете для каждого контейнера открыть свой ssh-порт и настроить на них всех аутентификацию через общий ldap-сервер?

gv
() автор топика
Ответ на: комментарий от WhiteWolf

Только не в .bashrc а через ForceCommand, man sshd_config в помощь

на .bashrc клиент может болт положить, на ForceCommand - нет

Pinkbyte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.