Ubuntu: Jail user shell / Ограничение SSH доступа

Речь пойдет об ограничении доступа пользователю в Ubuntu. Да еще и так, чтобы точно ничего не сломал и даже не видел корневую систему. Вариантов организации довольно много. Можно использовать готовые громоздкие решения, можно chroot, можно обрезать шелл. Если пользователей для ограничения не много, а времени мало — подойдет последний способ. Речь пойдет о пакете lshell (Limited Shell).
lshell — замена стандартного шела пользователя. Имеет не плохие возможности по ограничению, но не без минусов.
Установка и подготовка:
Страница компонента: http://lshell.ghantoos.org
- apt-get install lshell
- Создадим пользователя, которого будем ограничивать
useradd -d/home/human -s/bin/lshell human - Для того чтобы писались логи (/var/log/lshell/human.log)
usermod -aG lshell human
Настройка:
Все настройки находятся тут: /etc/lshell.conf.
Конфиг содержит подробные комментарии по каждому параметру. Раскрою все подводные камни основных параметров.
- env_path : лучше всего писать настоящий env_path, какой у вас на обычном аккаунте, чтобы ограниченный пользователь потенциально получил доступ ко всем командам. Узнать env_path на обычном аккаунте можно так: echo $PATH
- path : перечисление каталогов, в которые будет доступ при использовании команды cd! Только cd! Если вы дадите пользователю доступ к чему-то, что умеет ходить по папкам — то этот параметр теряет смысл. То есть нельзя давать пользователю доступ к шелам. Забудьте про mc и bash.
- allowed : перечисление всех строк, которые может вводить пользователь. Список тут конечно может быть большой. Интересно то, что пользователь не сможет писать и запускать скрипты. Если нужно пользователю дать возможность запустить скрипт — нужно прописывать тут название скрипта. Будьте очень внимательны при разрешении запуска скриптов на bash. Если у пользователя будут права на редактирование скрипта — то он получит 100% доступ ко всей системе через этот скрипт. Содержимое скрипта будет выполнятся уже в bash и lshell не будет проверять ничего что там выполняется. В скрипте можно будет выполнить все что угодно.
И самое главное, не забывайте про стандартный chmod в системе. Обязательно ограничьте права пользователя, особенно к запускающимся скриптам.
Если необходимо выдать права на серьезные команды, которым требуется рут — подключите возможности sudo и настройте соответственно доступ именно для этого пользователя.
Шаблон моих настроек:
[human] strict : 0 warning_counter : -1 sftp : 0 scp : 0 allowed : ['ls','echo','cd','ll','mcedit','mcview','cp','mv','rm','rmdir','wget','vi','vim','grep','find','top','free','cmake','mkdir','git','tar','mysqldump','mysql','make','screen','./start.sh','./stop.sh'] path : ['/opt'] env_path : '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' forbidden : -['&','|',';','>','<'] intro : "== HELLO ==\nType '?' or 'help' to get the list of allowed commands"
Обсуждение закрыто.