Ограничиваем права пользователя в оболочке c помощью Limited Shell (lshell) в Debian Lenny
Limited Shell помогает в тех ситуациях, когда по каким-либо причинам chroot не подходит, а защитить систему нужно … хоть символически. Принцип действия прост – 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 можем заходить во все директории, ну и т.п.
Распечатать
Другие записи:
- Запрещаем выполнять команды по ssh, но разрешаем scp, sftp, cvs, rdist или rsync в Debian Lenny
- Сборка Google Chrome OS (Chromium OS) в Ubuntu 8.04
- Сборка Openmoko на Ubuntu 8.10
- Поднимаем ClamAV и ClamFS на Ubuntu Server
- Linux: Удаляем дублирующиеся строки с помощью uniq
- Установка ModSecurity 2 в Debian Lenny
- Рекурсивная смена прав доступа к файлам
- Укрепляем Apache и PHP
- Изменение загрузочной заставки Ubuntu
- Запуск Java и Apache Felix в chroot jail окружении в Debian Lenny
