Рейтинг:1

Как ограничить пользователя rbash при входе через SSH

флаг us

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

Хотя я могу найти множество веб-сайтов, рассказывающих о rbash, у меня возникают проблемы с поиском какой-либо информации о том, как правильно его использовать. Наиболее распространенный подход, который я смог найти, заключался в создании символической ссылки из /бин/рбаш к /бин/баш, установите оболочку входа ограниченных пользователей в /бин/рбаш а затем установить пользовательский ДОРОЖКА в ~/.bash_profile в домашнем каталоге пользователя.

Однако я был весьма потрясен, узнав, что с этой настройкой пользователи по-прежнему могут копировать файлы на сервер, используя SCP и они могут даже открыть неограниченную оболочку, используя ssh пользователь@хост -t bash! Похоже, что происходит то, что сервер SSH передает команду в оболочку входа на сервер, используя , так ssh пользователь@хост -t bash заставляет сервер работать /bin/rbash -c баш, который работает, потому что .bash_profile еще не выполняется, чтобы ограничить путь. SCP аналогично заставляет сервер работать /bin/rbash -c scp.

Теперь я столкнулся с ForceCommand директива sshd. Эта директива в основном всегда приводит к тому, что сконфигурированная команда передается как в оболочку входа, игнорируя любую команду, указанную клиентом. Так что если ForceCommand установлен на рбаш, который всегда будет выполнять команду /bin/rbash -c rbash на сервере, независимо от того, был ли клиент вызван с -т баш или как SCP или что-то еще. К сожалению, /bin/rbash -c rbash вызывает .bash_profile не выполняться, поэтому мы получаем ограниченную оболочку, но нормальную ДОРОЖКА, так что мы можем просто позвонить бить там, чтобы избежать этого.

Чего я хотел бы достичь:

  • Не должно быть никакого способа избежать ограниченной оболочки для пользователей, подключающихся через SSH.
  • В идеале по-прежнему можно было бы выполнять команды, разрешенные в ограниченной оболочке, с помощью ssh user@server разрешенная_команда
  • Конфигурация не должна быть только SSH, поэтому пользователи, входящие в систему, например, через TTY, также должны быть ограничены.
Рейтинг:0
флаг us

Поэкспериментировав с этим некоторое время, мне кажется, что корень проблемы в том, что безопасность рбаш зависит от ДОРОЖКА устанавливается, но в большинстве установок ДОРОЖКА установлен после SSH указывает свои пользовательские команды, тогда как его нужно указывать перед.

В качестве решения, а не указания /бин/рбаш (симлинк на /бин/баш в качестве оболочки входа), я создал сценарий оболочки /usr/местные/бен/rbash и вместо этого использовал это как оболочку входа в систему. Сценарий оболочки имеет следующее содержание:

#!/bin/bash -l
экспорт PATH=/usr/local/rbin
exec /bin/bash -r "$@"

Я также экспериментировал с SetEnv директиву sshd и попытался установить ДОРОЖКА там. Однако я нашел это решение менее практичным, потому что оно устанавливает конфигурацию только для SSH, а также вызывает много ошибок при запуске. /etc/профиль, так как используемые там команды найти не удалось. Кроме того, существует риск того, что некоторые другие директивы sshd позволят клиенту снова переопределить определенные переменные среды.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.