Я могу отключить интерактивный доступ оболочки при туннелировании веб-трафика через SSH?

У меня нет достаточной репутации для добавления комментария.

@o_O Tync: Вы используете эту структуру для основанных на Django веб-сайтов? вопрос chernevik характерен для того, как много различных веб-сайтов должны сосуществовать на одном сервере, и должны ли они совместно использовать библиотеки Django или использование отдельно установленные версии. Плюс Django имеет определенные места, где это ожидает, что типы файла будут жить (некоторые из них могут быть изменены, если Вы знаете то, что Вы делаете). Я предполагаю, что Вашей установкой не является Django, конкретный, поскольку Вы не указали, где Вы сохраняете свои медиа-файлы, администраторские медиа-файлы, шаблоны, где приложения живут и где site.urls?

Я прокомментировал бы расположение chernevik, если бы у меня было больше идеи о нескольких сайтах на одном сервере, но я не делаю.

9
задан 2 March 2011 в 21:53
5 ответов

После четырех лет этот ответ заслужил обновления. В то время как первоначально я использовал authorized_keys самостоятельно и вероятно использовал бы его все еще в некоторых избранных случаях, можно также использовать центральное sshd_config конфигурационный файл сервера.

sshd_config

Можно назначить (для конкретного варианта использования) группу, такой как proxy-only или Match отдельные пользователи. В sshd_config. Это сделано после глобальных настроек и отменяет, повторяет или совершенствовало некоторые настройки, данные в глобальных настройках.

Примечание: часть синтаксиса/директив, используемого в sshd_config(5) документируются в man страница для ssh_config(5). В особенности удостоверьтесь, что считали раздел PATTERNS ssh_config(5).

Для группы это означает Ваш Match блок начался бы как это:

Match group proxy-only

Вы можете Match следующие критерии: User, Group, Host, LocalAddress, LocalPort и Address. Соответствовать нескольким критериям, просто отдельным от запятой пары шаблона критериев (group proxy-only выше).

В таком блоке, который традиционно располагается с отступом соответственно для краткости (но не должен к), можно затем объявить настройки, Вы хотите запросить группу пользователей, не имея необходимость редактировать каждый authorized_keys файл для членов той группы.

no-pty сходя authorized_keys был бы зеркально отражен a PermitTTY no установка и command="/sbin/nologin" стал бы ForceCommand /sbin/nologin.

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

Match group proxy-only
    # AllowTcpForwarding no
    ChrootDirectory %h
    ForceCommand /sbin/nologin
    # GatewayPorts yes
    # KbdInteractiveAuthentication no
    # PasswordAuthentication no
    # PubkeyAuthentication yes
    # PermitRootLogin no
    PermitTTY no

(проверьтесь, нуждаетесь ли Вы или хотите закомментированные строки и не комментируете по мере необходимости),

%h маркер, которым заменяет каталог мотыги пользователя (%u привел бы к имени пользователя и %% знак процента). Я нашел ChrootDirectory особенно полезный для ограничения моего sftp-only пользователи:

Match group sftp-only
    X11Forwarding no
    AllowTcpForwarding no
    ChrootDirectory %h
    ForceCommand internal-sftp
    PasswordAuthentication no

Возражайте против этого, только определенные директивы могут использоваться в a Match блок. Консультируйтесь man страница sshd_config(5) для деталей (ищут Match).

authorized_keys

NB: часть ниже этого комментария был моим исходным ответом. Между тем - но это также зависит от функций Вашего точного sshd версия - я пошел бы для метода, описанного выше в большинстве случаев.

Да Вы можете, столь мелкомодульный, как можно присвоить открытые ключи. В дополнение к nologin, как рекомендуется ajdecon, я предложил бы установить следующее перед ключевой записью в authorized_keys:

no-pty ssh-rsa ...

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

Можно также вызвать выполнение чего-то как nologin для конкретного ключа путем предварительного ожидания этого:

command="/sbin/nologin",no-pty ssh-rsa ...
13
ответ дан 2 December 2019 в 22:27

Для любого пользователя только для туннелирования измените их оболочку входа в систему на/sbin/nologin. Тем путем Ваш пользователь будет не мочь получить доступ к оболочке на сервере, но все еще сможет увеличить набор ssh туннели от их клиента.

3
ответ дан 2 December 2019 в 22:27

Я знаю, что это не может быть ответом, который Вы ищете, но Вы рассмотрели использование OpenVPN как альтернативы?

0
ответ дан 2 December 2019 в 22:27

Я рекомендую пробовать Tunnelier. Чертовски много легче настраивать/управлять.

-1
ответ дан 2 December 2019 в 22:27

На случай, если вы готовы отказаться от пользователя / пароля аутентификации и использования ключей для входа в систему, вы можете указать параметр s для каждого открытого ключа.

Примечательные параметры:

command = "command"

Указывает, что команда выполняется всякий раз, когда это ключ используется для аутентификации. Команда, предоставленная пользователем (если таковая имеется), игнорируется.

и

restrict

Включить все ограничения, то есть отключить перенаправление порта, агента и X11, а также отключить выделение PTY и выполнение ~ / .ssh /rc.[12136 visible и, наконец,

перенаправление портов Включить переадресацию портов, ранее отключенную параметром restrict.

С их помощью вы можете в значительной степени ограничить пользователя этой конкретной пары ключей, что (я) он может делать с сеансом SSH.

Это будет выглядеть так:

restrict,port-forwarding,command="/sbin/nologin" ssh-rsa <base64-encoded key>
]
0
ответ дан 2 December 2019 в 22:27

Теги

Похожие вопросы