Ограничиваем права пользователя в оболочке c помощью Limited Shell (lshell) в Debian Lenny

Limited Shell помогает в тех ситуациях, когда по каким-либо причинам chroot не подходит, а защитить систему нужно… хоть символически.

lshell.ghantoos.org

На сайте представлены несколько скриншотов, которые наглядно показывают принцип работы lshell. Сначала взглянем на них.

Конфигурационный файл:



Открываем запрещенный путь и вылетаем с сервера:



Вылетаем с сервера по таймауту:



Пытаемся запустить другой шелл и тоже вылетаем:



Лог файл:



Для Debian Lenny я скачал архив с исходным кодом. Распаковываем, запускаем:

python setup.py install --no-compile


running install
running build
running build_py
creating build
creating build/lib
copying lshellmodule/lshell.py -> build/lib
running build_scripts
creating build/scripts-2.5
copying and adjusting bin/lshell -> build/scripts-2.5
changing mode of build/scripts-2.5/lshell from 644 to 755
running install_lib
copying build/lib/lshell.py -> /usr/lib/python2.5/site-packages
running install_scripts
copying build/scripts-2.5/lshell -> /usr/bin
changing mode of /usr/bin/lshell to 755
running install_data
copying etc/lshell.conf -> /etc
creating /usr/share/doc/lshell
copying README -> /usr/share/doc/lshell
copying COPYING -> /usr/share/doc/lshell
copying CHANGES -> /usr/share/doc/lshell
copying man/lshell.1 -> /usr/share/man/man1/
running install_egg_info
Writing /usr/lib/python2.5/site-packages/lshell-0.9.8.egg-info


Все, lshell установлен.

Создаем директорию для log файлов:

mkdir /var/log/lshell


Создаем группу lshellg:

groupadd --system lshellg


Изменяем права на директорию с log файлами:

chown :lshellg /var/log/lshell
chmod 770 /var/log/lshell


Изменяем shell пользователя и добавляем его в группу lshellg:

usermod -s /usr/bin/lshell user1
usermod -a -G lshellg user1


Настройки хранятся в файле /etc/lshell.conf и подробно описаны в README. Мы добавляем следующие строки для пользователя user1 в конец конфигурационного файла:

[user1]
allowed         : ['ls','ll','echo','cd','cp','rm','mkdir','rmdir','wget','vi','vim']
path            : ['/var/www/1', '/var/www/2', '/var/www/3']
forbidden       : [';', '&', '|','`','>','<']
warning_counter : 5
aliases         : {'ll':'ls -l', 'vi':'vim'}


Суть — данные настройки имеют больший приоритет, чем настройки из секции [default] конфигурационного файла. Разрешены только определенные команды (allowed), помимо домашней, разрешены переходы в несколько директорий (path), в консоли запрещены перенаправления ввода-вывода и прочие вещи (forbidden), разрешено наступать на мины 5 раз, перед тем, как пользователь будет отключен (warning_counter), прописаны алиасы команд.

Это разумеется не панацея. Нужно внимательно следить за тем, какие команды разрешены и какие в них «недокументированные возможности». Например, разрешая mc можем заходить во все директории, ну и т.п. Запуск других консолей lshell отлавливает исправно.
  • +3
  • 12 декабря 2009, 21:24
  • Sergei_T

Комментарии (2)

RSS свернуть / развернуть
+
0
неплохо — лучше чем ничего в случаях когда chroot не катит никак
avatar

Gangsta

  • 13 декабря 2009, 16:48
+
+1
Полезная вещь!
avatar

yababay

  • 14 декабря 2009, 00:28

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.