Назад | Перейти на главную страницу

ограничить root-доступ для определенных файлов или файловых систем

Я хочу хранить файлы для своих пользователей в зашифрованных файловых системах. У каждого пользователя будет своя файловая система со своим ключом. Пользователь может войти в систему и смонтировать свою файловую систему. Когда они смонтированы, даже корень не может получить к ним доступ.

Настройка такова:

Однако я хочу, чтобы root не имел доступа ни к одной из файловых систем, смонтированных моими пользователями. Сначала я подумал о написании модуля ядра VFS (скомпилированном с ядром) и перехвате команд, специфичных для filesystm, если корень хочет получить доступ к файлу другого пользователя. Проблема в том, что рут может делать что-то вроде:

# su -secureuser

и вуаля прочтите смонтированную файловую систему.

Мне сказали выглядеть гордо Возможности файла posix , PAM , SELinux , но я этого не знаю, и уверен, выполнить мою просьбу совсем не удобно даже с этими вещами.

Вот еще несколько, но они собираются ограничить полный root-доступ: http://www.centos.org/docs/4/4.5/Security_Guide/s2-wstation-privileges-noroot.html

У тебя есть идеи? Спасибо за ответы! :)

Вы можете сделать это, используя Политика SELinux MLS (многоуровневая безопасность) в качестве основы и адаптируя ее к вашим потребностям. Это не простая задача, и если вы еще не знаете SELinux, вам придется выучить его или найти того, кто знает.

Это также не политика для операции одного человека, поскольку она разделяет роли безопасности, обычно передаваемые root, на три (или более) стороны, и поэтому в идеале у вас должно быть три (или более) человека, которые будут администрировать различные аспекты системы.

Сначала вы должны понять, что даже если вы ограничите учетную запись root, администраторы могут иметь доступ к физическому серверу и изменять конфигурацию сервера с Live CD. Итак, вы должны начать с доверия своим администраторам.

Я вижу несколько решений. Нет ничего простого, но они выполнимы. Они здесь:

  • использовать разные пространства имен привязки. Используйте PAM для их настройки. Возможно, вам потребуется разработать модуль PAM.
  • SELinux (как упомянул Майкл Хэмптон), AppArmor или какой-либо другой «брандмауэр приложений» в пространстве ядра.
  • Контейнеры Linux, по одному для каждого пользователя. Думаю, это самое простое решение.
  • Виртуальные машины (XEN, KVM), по одной для каждого пользователя.
  • библиотека LD_PRELOAD, которая будет проверять доступ для операций FS (open, getdent).
  • разработать модуль ядра, который будет выполнять фильтрацию (аналогично SELinux ...)

Обратите внимание, что вам придется ограничивать root-доступ отдельно, в зависимости от выбранного решения. Вам также необходимо ограничить доступ к необработанному устройству.

В Unix / Linux нет способа ограничить root доступ к файлу, смонтированному пользователем. Это просто не работает.