🐧 Как ограничить доступ пользователя к системе Linux |

🐧 Как ограничить доступ пользователя к системе Linux

Мануал
Представьте себе такой сценарий.
Вы хотите, чтобы пользователь мог выполнять только определенные задачи и соответственно выполнять определенные команды.
Пользователь не должен изменять переменные /пути среды.
Он не может посещать различные каталоги, кроме своего домашнего, и не может переключаться на других пользователей и т. д.
Пользователь может выполнять только несколько команд, назначенных системным администратором.
Это возможно?
Да!
Вот где Restricted Shell (ограниченная оболочка) приходит нам  в помощь.
Используя Restricted Shell, мы можем легко ограничить доступ пользователя к системе Linux.
Как только вы переводите пользователей в режим ограниченной оболочки, им разрешается выполнять только ограниченный набор команд.
В этом кратком руководстве мы поговорим о том, как это сделать в Linux.
Я проверил это руководство на минимальном сервере CentOS 7.
Тем не менее, он будет работать на большинстве Unix-подобных дистрибутивов.

Что такое ограниченная оболочка?

Во-первых, позвольте мне уточнить, что такое 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
Затем создайте пользователя с именем «itsecforu» с 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
Отредактируйте файл /home/itsecforu/.bash_profile:
# vi /home/itsecforu/.bash_profile
Измените переменную PATH, как показано ниже.

[...]
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
Пользователь «itsecforu» может использовать только те команды, которые назначены вами (системным администратором).
В нашем случае пользователь может выполнять команды ls, mkdir и ping.
$ ls
$ mkdir itsecforu.ru
$ ping -c 3 itsecforu.ru

Кроме этих трех команд, пользователь не может ничего выполнять.

Он  полностью под вашим контролем.

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. Sergey

    Это неправда.

    Можно запускать команды traceroute/vim/cat и тд

    Ответить