SSH-туннель для ограниченного пользователя с PuTTY и без оболочки

SSH-туннель для ограниченного пользователя с PuTTY и без оболочки

поэтому я уже некоторое время использую SSH-туннели для ограничения доступа к внутренним сайтам или частям публичных сайтов, и поскольку доступ по SSH был только у администраторов, я использую стандартные учетные записи пользователей без прав root/sudo. Ну, теперь, когда я расширяюсь и пытаюсь привлечь студентов в моих местных университетах для расширения своих проектов, им нужно будет начать получать доступ к некоторым из этих внутренних страниц.

Прокси-сервер — это CentOS 6.4 box с включенным SELinux, и не будет запускать никаких других служб, кроме прокси. Я собираюсь в конечном итоге настроить полный VPN, но в этом случае это просто разрешение доступа к определенным машинам с белым списком IP, а не полный доступ к внутренней сети.

Я рассмотрел все методы настройки SOCKS-прокси с учетными записями пользователей, имеющими такие вещи, как /bin/false и т. д., но либо

A) они предполагают, что перенаправляется только один порт или хост (тогда как в этом случае у меня есть набор экземпляров VPS, которые будут меняться по требованию в сетевых конфигурациях), или

B) используется обычный SSH-клиент, а не что-то вроде PuTTY (как бы мне ни хотелось заставить всех студентов использовать виртуальную машину или установить Linux напрямую, это не совсем вариант, поскольку школа использует PuTTY на своем инженерном оборудовании для использования студентами).

Вот что я пока обнаружил: если используется обычный ssh-клиент, я могу установить оболочку пользователя на /bin/false, и пользователь может указать команду -N при настройке прокси-сервера SOCKS, но, к сожалению, для пользователей PuTTY это, похоже, не работает (по крайней мере, мне не удалось заставить это работать).

Когда PuTTY открывает туннель через параметры туннелирования по умолчанию, он должен открыть оболочку, которая немедленно отключается при входе в систему, поскольку у пользователя есть оболочка /bin/false. Если я указываю аргумент "no shell or command" в настройках SSH, параметры прокси, похоже, не настраиваются. Если я пытаюсь настроить прокси в параметрах SSH для удаленных команд, он все равно не запускается, пока я не разрешу оболочку или другие команды в параметрах.

Похожие вопросы, которые я нашел, но они не совсем подходят:

Создание туннелей SOCKS с помощью PuTTY и nologin (технически это сработает, но оболочка — это просто команда сна, которая выполняется очень долго, и я беспокоюсь, что ее можно будет экранировать. Я бы предпочел настоящую noshell, чем оболочку, которая просто зависает из соображений безопасности)

https://askubuntu.com/questions/48129/how-to-create-a-restricted-ssh-user-forwarding-port (Это не сработает, поскольку для этого пользователю потребуется использовать настоящую установку ssh, а такие программы, как PuTTY, не будут работать.) Мне также нужно, чтобы они могли получать доступ к веб-страницам, хотя я предполагаю, что я мог бы просто указать PermitTunnel для учетной записи, а не только разрешить определенный порт.

"noshell" для пользователей ssh-прокси (Это не работает для PuTTY по причинам, которые я указал выше, касательно необходимости включения команд PuTTY для настройки прокси-сервера SOCKS)

Есть предложения? Я вполне мог что-то упустить, но я не уверен.

-Джим

решение1

Я нашел решение (в посте здесь, где не используются теги вроде nologin или noshell, а есть довольно простой трюк для пользователей Windows, но я заставил его работать без оболочки).

Я создал пакетный скрипт, используя ответ из этого поста, который может запустить установку PuTTY по умолчанию и настроить туннель без выполнения команд, которые могут привести к отключению оболочки:

Очень простой SSH-туннель для моих пользователей Windows

"C:\Program Files (x86)\PuTTY\plink.exe" -v -N -D localhost:8080 proxy@remote_host

Поскольку теперь пользователи Windows с PuTTY смогут получить доступ к туннелю, я могу продолжать использовать оболочку учетной записи как /bin/false

Опубликовано здесь для тех, кто может оказаться в похожей ситуации, и для разрешения темы. Если есть другие решения, я бы с удовольствием их услышал!

Теперь мне осталось только попытаться заставить это работать с моей двухфакторной системой аутентификации на основе SSH-push, которую я внедряю на всех своих системах, но над этим нужно работать, когда все остальное заработает.

-Джим

решение2

Только что увидел, что в PuTTY есть следующая опция, и, возможно, это то, что вы ищете: Подключение->SSH->Не запускать оболочку или команду

Если включено, соединение устанавливается, на консоли больше ничего не отображается, но оно остается активным и туннель работает нормально. Надеюсь, это поможет.

Связанный контент