Ограничиваем права пользователя в оболочке c помощью Limited Shell (lshell) в Debian Lenny
Limited Shell помогает в тех ситуациях, когда по каким-либо причинам chroot не подходит, а защитить систему нужно… хоть символически.
lshell.ghantoos.org
На сайте представлены несколько скриншотов, которые наглядно показывают принцип работы lshell. Сначала взглянем на них.
Конфигурационный файл:
Открываем запрещенный путь и вылетаем с сервера:
Вылетаем с сервера по таймауту:
Пытаемся запустить другой шелл и тоже вылетаем:
Лог файл:
Для Debian Lenny я скачал архив с исходным кодом. Распаковываем, запускаем:
Все, lshell установлен.
Создаем директорию для log файлов:
Создаем группу lshellg:
Изменяем права на директорию с log файлами:
Изменяем shell пользователя и добавляем его в группу lshellg:
Настройки хранятся в файле /etc/lshell.conf и подробно описаны в README. Мы добавляем следующие строки для пользователя user1 в конец конфигурационного файла:
Суть — данные настройки имеют больший приоритет, чем настройки из секции [default] конфигурационного файла. Разрешены только определенные команды (allowed), помимо домашней, разрешены переходы в несколько директорий (path), в консоли запрещены перенаправления ввода-вывода и прочие вещи (forbidden), разрешено наступать на мины 5 раз, перед тем, как пользователь будет отключен (warning_counter), прописаны алиасы команд.
Это разумеется не панацея. Нужно внимательно следить за тем, какие команды разрешены и какие в них «недокументированные возможности». Например, разрешая mc можем заходить во все директории, ну и т.п. Запуск других консолей lshell отлавливает исправно.
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 отлавливает исправно.
Комментарии (2)
RSS свернуть / развернутьGangsta
yababay
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.