Skip to content

7 Май 2013

218

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

jail-user-shell

Речь пойдет об ограничении доступа пользователю в Ubuntu. Да еще и так, чтобы точно ничего не сломал и даже не видел корневую систему. Вариантов организации довольно много. Можно использовать готовые громоздкие решения, можно chroot, можно обрезать шелл. Если пользователей для ограничения не много, а времени мало — подойдет последний способ. Речь пойдет о пакете lshell (Limited Shell).

:idea:  lshell — замена стандартного шела пользователя. Имеет не плохие возможности по ограничению, но не без минусов.

 

:!: Установка и подготовка:

Страница компонента: http://lshell.ghantoos.org

  1. apt-get install lshell
  2. Создадим пользователя, которого будем ограничивать
    useradd -d/home/human -s/bin/lshell human
  3. Для того чтобы писались логи (/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"

 

Обсуждение закрыто.