Что такое ограниченная оболочка?
Во-первых, позвольте мне уточнить, что такое Restricted Shell.
Это не отдельная оболочка, такая как Bash, Korn Shell и т. д.
Если вы запустите любую существующую оболочку, используя опции «rbash», «–restricted», «-r», она станет оболочкой с ограничениями.
Например, оболочку Bourne можно запустить как ограниченную оболочку с помощью команды bsh -r, а оболочку Korn – с помощью команды ksh -r.
Ограниченная оболочка ограничит пользователей от выполнения большинства команд и от изменения текущего рабочего каталога.
Ограниченная оболочка налагает следующие ограничения на пользователей:
- Она не позволит вам выполнить команду CD. Так что ты никуда не попадешь. Вы можете просто остаться в текущем рабочем каталоге.
- Она не позволит вам изменять значения переменных среды $PATH, $SHELL, $BASH_ENV или $ENV.
- Она не позволит вам выполнить программу, которая содержит символ / (косая черта). Например, вы не можете запустить команду /usr bin /uname или ./uname. Однако вы можете выполнить команду uname. Другими словами, вы можете запускать команды только в текущем пути.
- Вы не можете перенаправить вывод при помощи операторов перенаправления ‘>’, ‘> |’, ‘<>’, ‘> &’, ‘&>’ и ‘>>’.
- Она не позволит вам выйти из режима ограниченной оболочки в скриптах.
- Она не позволит вам отключить режим ограниченной оболочки с помощью «set + r» или ‘set +o restricted’.
Как урезать доступ пользователя к системе Linux с помощью ограниченной оболочки
Сначала создайте символическую ссылку с именем rbash из Bash, как показано ниже.
Следующие команды должны быть запущены от имени пользователя root.
# ln -s /bin/bash /bin/rbash
# useradd itsecforu -s /bin/rbash
Установите пароль для нового пользователя.
# passwd itsecforu
Создайте каталог bin внутри домашней папки нового пользователя.
# mkdir /home/itsecforu/bin
Теперь нам нужно указать, какие команды может выполнять пользователь.
В нашем стендовом примере я собираюсь позволить пользователю запускать только команды «ls», «mkdir» и «ping».
Вы можете назначить любые команды на ваш выбор.
Для этого выполните следующие команды:
# ln -s /bin/ls /home/itsecforu/bin/ls
# ln -s /bin/mkdir /home/itsecforu/bin/mkdir
# ln -s /bin/ping /home/itsecforu/bin/ping
Теперь вы понимаете, почему мы создали каталог «bin» на предыдущем шаге.
Пользователи не могут запускать какие-либо команды, кроме указанных выше трех команд.
Далее, запретите пользователю изменять .bash_profile.
# chown root. /home/itsecforu/.bash_profile
# chmod 755 /home/itsecforu/.bash_profile
# vi /home/itsecforu/.bash_profile
[...] PATH=$HOME/bin [...]
Нажмите клавишу ESC и введите: wq, чтобы сохранить и закрыть файл.
Теперь, когда пользователь войдет в систему, оболочка с ограничениями (rbash) будет работать как оболочка по умолчанию и читать файл .bash_profile, который установит для PATH значение $HOME/bin, чтобы пользователь мог запускать только команды ls, mkdir и команду ping.
Оболочка с ограничениями не позволит пользователю изменять PATH, а разрешения для .bash_profile не позволят пользователю изменять среду, чтобы обойти ограничения во время следующего сеанса входа.
Проверка Rbash
Теперь выйдите из системы от имени пользователя root и войдите в систему с вновь созданным пользователем, в нашем случае itsecforu.
Затем выполните несколько команд, чтобы проверить, работает ли все это или нет.
Например, я хочу очистить терминал.
$ clear
Пример вывода:
-rbash: clear: command not found
Вы не можете использовать команду cd, чтобы перейти в другой каталог.
$ cd /root
Пример вывода:
-rbash: cd: restricted
$ cat > file.txt
Пример вывода:
-rbash: file.txt: restricted: cannot redirect output
$ ls
$ mkdir itsecforu.ru
$ ping -c 3 itsecforu.ru
Кроме этих трех команд, пользователь не может ничего выполнять.
Он полностью под вашим контролем.
Это неправда.
Можно запускать команды traceroute/vim/cat и тд