- Ограничения пользователей в Linux с помощью rbash
- Перечень встроенных ограничений rbash
- Установка rbash
- Как использовать ограниченную оболочку, чтобы ограничить возможности пользователя Linux
- Ограниченные оболочки
- Баш с ограниченным доступом
- Ограничение пользователя
- ужесточение ограничений
- Ограничение существующих пользователей
- Ограничение скриптов
- Помните Гудини
- Разграничение прав доступа пользователей
- Права администратора
- Как выставить запрет
- Немного о файле /etc/sudoers
- Alias (псевдонимы)
Ограничения пользователей в Linux с помощью rbash
RBash — это restricted shell bash, командная оболочка операционной системы семейства Unix, которая может ограничивать некоторые действия пользователей. Это может быть полезно, например, когда требуется ограничить доступ по SSH только рамками выполнения определенных задач и не дать пользователю доступ к системным файлам и приложениям.
Перечень встроенных ограничений rbash
Ограниченный командный интерпретатор rbash ведет себя аналогично bash, но следующие действия не разрешены или не выполняются:
- запрещена смена текущего каталога командой cd
- запрещено изменять переменные окружения PATH, SHELL, ENV, BASH_ENV
- запрещен доступ к переменной SHELLOPTS
- запрещено перенаправление вывода
- запрещен вызов утилит, в названии которых присутствует хотя бы один символ «слэш» (/)
- запрещен вызов команды exec для запуска другого процесса
- запрещен ряд других команд, которые могут использовать сценарий для выполнения непредусмотренных действий
- запрещен выход из ограниченного режима
Ограничения начинают действовать сразу после чтения файлов начального запуска. При выполнении команды, которая оказалась сценарием командного интерпретатора, rbash отключает любые ограничения в порожденном командном интерпретаторе для выполнения этого сценария.
Подробнее здесь.
Установка rbash
Rbash — это просто символьный линк, который по умолчанию отсутствует в Red Hat, Fedora, Centos, но пристутствет в Ubuntu.
Чтобы проверить установлен ли rbash или нет можно выполнить команду ниже, которая должна показать путь к rbash. Если в результате пусто, то rbash отсутствует.
Как использовать ограниченную оболочку, чтобы ограничить возможности пользователя Linux
Ограниченная оболочка ограничивает возможности учетной записи пользователя в Linux. Пользователь с ограниченным доступом не может изменить свой каталог, и вы контролируете, к каким командам он имеет доступ. Вот как настроить ограниченную оболочку в Linux.
Ограниченные оболочки
Ограниченная оболочка — это не другая оболочка. Это другой режим стандартной оболочки. Bash, Korn, Fish и другие оболочки можно запускать в ограниченном режиме оболочки. В этой статье мы будем использовать Bash, но те же принципы применимы и к другим оболочкам.
Поскольку ограниченные оболочки — это просто еще один способ использования вашей стандартной оболочки, их легко настроить. Нечего устанавливать, и они доступны везде, где есть Linux.
Ограниченные оболочки также могут применяться к сценариям. Это гарантирует, что любой ущерб, который они могут нанести, если они были написаны неправильно, ограничен пределами их ограниченного мира и что они не имеют доступа ко всему вашему компьютеру.
Имейте в виду, однако, что ограниченные оболочки не являются полностью защищенными от побега. Кто-то с достаточными знаниями может избежать ограниченной оболочки. Они отлично подходят для установления безопасных границ для случайного пользователя, но не полагайтесь на ограниченные оболочки для какой-либо реальной безопасности в производственной системе.
Баш с ограниченным доступом
Когда вы запускаете Bash как ограниченную оболочку, у пользователя удаляются некоторые возможности. В частности, пользователь не может:
- Используйте cd , чтобы изменить рабочий каталог.
- Измените значения переменных окружения PATH , $SHELL , $BASH_ENV или $ENV ( но они могут читать текущие значения).
- Прочитайте или измените параметры окружения оболочки $SHELLOPTS .
- Перенаправить вывод команды.
- Вызывать команды, которым требуется путь для их поиска. То есть вы не можете выполнить команду, содержащую одну или несколько косых черт « / ».
- Вызовите exec , чтобы заменить оболочку другим процессом.
- Использовать в скрипте любые функции с ограниченным доступом.
Вы можете вызвать ограниченную оболочку Bash, используя параметр -r (restricted). Попытка выполнить простую задачу, например изменение рабочего каталога, запрещена. Краткое сообщение сообщает вам, что использование cd ограничено.
Оболочка Bash также может определять, когда она вызывается с использованием «rbash» вместо «bash». Это приводит к тому, что он также запускается как ограниченная оболочка. Это удобный способ установить оболочку по умолчанию для конкретного пользователя, которой мы скоро воспользуемся.
Если мы используем команду whereis в Ubuntu для поиска файлов rbash , мы увидим, что исполняемый файл находится в каталоге «usr/bin». Страница руководства находится в каталоге «/usr/share/man/man1».
Использование команды ls с параметром -l (long) показывает, что rbash на самом деле является символической ссылкой на bash . .
В Manjaro и Fedora необходимо было создать символическую ссылку rbash . Это работает на обоих дистрибутивах:
sudo ln -s /bin/bash /bin/rbash
Во второй раз, когда мы используем команду whereis , она находит rbash в каталоге «/usr/bin».
Ограничение пользователя
Давайте создадим новую учетную запись пользователя с именем Минни. Мы установим их оболочку как оболочку с ограниченным доступом, используя параметр -s (оболочка) команды useradd . Мы также установим пароль аккаунта с помощью команды passwd и создадим для него домашнюю папку.
Флаг -p (parents) в команде mkdir указывает mkdir создать целевой каталог и любые родительские каталоги, которые ему необходимо создать. . Таким образом, создавая каталог «/home/minnie/bin», мы одновременно создаем каталог «/home/minnie».
sudo useradd minnie -s /bin/rbash
sudo mkdir -p /home/minnie/bin
Когда Минни войдет в систему, она будет работать в ограниченной оболочке.
Она не может вызывать команды, которые должны включать косую черту « / »:
Однако она по-прежнему может выполнять команды, найденные в пути.
Это не то поведение, которое вы могли ожидать, и это определенно не то, что нам нужно. Чтобы еще больше ужесточить ограничения, нам нужно изменить путь, который оболочка минни будет использовать для поиска команд.
ужесточение ограничений
Когда мы создали домашний каталог Минни «/home/minnie», мы также создали каталог «/home/minnie/bin». Вот где этот каталог вступает в игру.
Мы собираемся отредактировать файл «.bash_profile» Минни и установить ее путь так, чтобы он указывал только на этот каталог. Мы также ограничим файл «.bash_profile» Минни, чтобы его мог редактировать только root. Это означает, что ни один другой пользователь не может редактировать этот файл и изменять его путь.
sudo gedit /home/minnie/.bash_profile
Либо отредактируйте существующий «PATH=», либо добавьте следующую строку:
Сохраните файл. Мы изменим владельца файла на root с помощью команды chown и изменим права доступа к файлу с помощью команды chmod . Только пользователь root сможет редактировать файл.
sudo chown root:root /home/minnie/.bash_profile
sudo chmod 755 /home/minnie/.bash_profile
ls -l /home/minnie/.bash_profile
В следующий раз, когда пользователь minnie войдет в систему, ее путь будет указывать на одну папку.
Наш ограниченный пользователь minnie может использовать только встроенные команды Bash, такие как echo , alias и logout . Она даже не может использовать ls !
Нам нужно немного ослабить нашу мертвую хватку, если мы хотим, чтобы они вообще могли делать что-то полезное. Мы создадим несколько символических ссылок из каталога «bin» Минни на команды, которые мы хотим, чтобы Минни могла использовать.
sudo ln -s /bin/ls /home/minnie/bin
sudo ln -s /bin/top /home/minnie/bin
sudo ln -s /bin/uptime /home/minnie/bin
sudo ln -s /bin/pinky /home/minnie/bin
Когда Минни в следующий раз войдет в систему, она обнаружит, что может использовать встроенные команды Bash, а также те команды, которые были связаны.
Ограничение существующих пользователей
Мы создали Минни как нового пользователя. Чтобы изменить оболочку существующего пользователя, мы можем использовать параметр -s (оболочка) команды usermod .
sudo usermod -s /bin/rbash mary
Вы можете использовать команду less в файле «/etc/passwd», чтобы быстро узнать, какая оболочка установлена в качестве оболочки пользователя по умолчанию.
Мы видим, что пользователь mary будет использовать ограниченную оболочку при следующем входе в систему.
Не забудьте применить другие изменения, чтобы ограничить их переменную среды PATH и установить команды, которые вы хотите, чтобы пользователь mary мог выполнять.
Ограничение скриптов
Обычный неограниченный пользователь может запускать сценарии, которые выполняются в ограниченной оболочке. Скопируйте следующие строки и вставьте их в редактор. Сохраните файл как «restricted.sh» и закройте редактор.
#!/bin/bash # script starts in normal Bash shell echo "## In UNrestricted mode! ##" echo echo "Current directory: `pwd`" echo "Changing directory" cd /usr/share echo "Now in directory: `pwd`" echo "Changing to home directory" cd ~ echo "Now in directory: `pwd`" # Setting restricted mode set -r echo echo "## In restricted mode! ##" echo echo "Current directory: `pwd`" echo "Changing directory to /home/" cd /home echo "Still in directory: `pwd`" echo echo "Trying to start another shell" /bin/bash echo echo "Trying to redirect command output" ls -l $HOME > my_files.txt cat my_files.txt echo exit 0
Нам нужно использовать команду chmod с флагом +x (выполнить), чтобы сделать скрипт исполняемым.
Первая часть скрипта работает в обычной оболочке.
Вторая часть сценария — бит после строки «set -r» — выполняется в ограниченной оболочке.
Ни одно из предпринятых действий не увенчалось успехом в ограниченной части сценария.
Весь сценарий можно запустить в ограниченной оболочке, добавив -r в первую строку:
Помните Гудини
Ограниченные оболочки полезны, но не полностью безошибочны. Достаточно опытный пользователь может их избежать. Но при разумном использовании они являются полезным способом установить набор ограничений для конкретной учетной записи.
Разграничение прав доступа пользователей
Ограничение прав пользователей в операционной системе – тема сложная, но необходимая. В зависимости от семейства операционной системы существуют разные правила и стандарты. Рассмотрим подробнее, как это происходит в ОС Ubuntu.
Права администратора
Чтобы запускать привилегированные команды, пользователь должен обладать правами, как минимум, администратора системы. По умолчанию операционная система отключает повышенный уровень прав у любого пользователя. Чтобы его повысить, воспользуемся следующей командой.
Теперь пользователь с именем username1 добавлен в группу sudo и является администратором для операционной системы. Ему доступны настройки ОС, а также доступ к каталогу /dev с вложениями. Большинство привилегий администраторов схоже с возможностями суперпользователя, но они неполные.
Как выставить запрет
В корпоративных информационных системах большинство ОС являются многопользовательскими. Соответственно, необходимо для каждого владельца разграничить права доступа. Для этого используется внутренняя команда chmod, например:
Вышеуказанная строка означает, что только root имеет право запускать команду ls. Всем остальным в доступе будет отказано.
Разберем другую ситуацию. Есть пользователь с именем username1. Ему необходимо ограничить доступ к команде ls. Для этого создаем группу пользователей usergroup1, в которую перенесём всех кроме username1.
Вторая строка добавляет в группу usergroup1 пользователей username2, username3 и т. д. Ограничим права на запуск команды ls. Её смогут активировать только участники usergroup1.
Теперь неучастник usergroup1 не сможет активировать ls.
Немного о файле /etc/sudoers
Sudoers содержит информацию о пользователях, которые могут использовать утилиту sudo. Чтобы открыть файл, используем специальную утилиту visudo.
Внутри содержится следующая информация:
Расскажем подробнее о строке:
%sudo означает, что к группе sudo применяется следующее правило. Если устанавливаем правила для конкретного пользователя, то % не нужен.
Первая переменная ALL расшифровывает, как применить правило ко всем IP-адресам. Второй и третий ALL – указанный пользователь или группа имеют право исполнять команды в сессии любого пользователя или группы. Четвертая переменная означает, что данный шаблон применяется ко всем командам.
Например, необходимо установить права на запуск утилиты apt get для группы admin.
Alias (псевдонимы)
Для удобства разграничения прав доступа используются алиасы. Они объединяют один или несколько значений в один параметр. Например, присвоим IP-адресу облачного хранилища более удобное имя.
CLOUD – псевдоним, который указывается в параметрах вместо IP-адреса.
При необходимости алиасы используются для объединения пользователей в одну группу.
, где Name – псевдоним, а user1, user2 – имена пользователей. Также утилита Alias доступна и для команд, т. е. объединяем список инструкций в единую группу.
- name – произвольное наименование для перечня команд;
- cmd1, cmd2 – перечисление команд через запятую.
Например, объединим обновление пакетов в алиас: