Изменение контекста файлов SELinux через NFS

Вопрос или проблема

Я хотел бы изменить метки SELinux на общей директории с монтированием NFS.

Вот моя настройка (с использованием виртуальных машин):

У меня есть две машины, работающие на CentOS 7. Одна из них (сервер) экспортирует дерево каталогов по NFS, используя следующий файл exports:

/top/fs/fs  *(rw,sync,no_root_squash)

Я монтирую эту директорию на клиенте с использованием следующей команды (под root):

mount <server-ip>:/top/fs/fs /mnt/fs

До этого момента все работает хорошо: у меня есть права чтения и записи на клиенте.

Теперь проблема с метками SELinux:

На сервере я могу создать файл file1 внутри NFS-шары, и он имеет следующую метку:

# touch file1
# ls -lZ file1
-rw-r--r--. root root system_u:object_r:unlabeled_t:s0 file1

На клиенте он просто показывает ‘?’:

# ls -lZ file1
-rw-r--r-- root root ?                                file1

Когда я пытаюсь изменить контекст SELinux файла внутри NFS-шары на клиенте,
я получаю следующее сообщение:

# chcon -t admin_home_t file1
chcon: failed to get security context of ‘file1’: Operation not supported

Изменение меток SELinux на клиенте вне NFS-шары работает отлично, однако.

Как настроить NFS и SELinux так, чтобы я мог изменять метки SELinux на клиенте?

Спасибо!

Вы не можете. Это не поддерживается NFS на CentOS 7. Вы можете установить контекст SELinux только в качестве опции монтирования, который будет применяться ко всем обращениям к файлам с клиентом. Это никак не влияет на любые контексты SELinux, которые могут существовать на сервере, и действительно, их может совсем не быть.

Вы можете использовать механизм Labeled NFS, который доступен в NFSv4.2, для достижения этой цели.

Предполагая, что ваш NFS-сервер ≥v4.2, следующая команда смонтирует шару с поддержкой меток контекста SELinux:

# mount -o v4.2 myserver:/path/to/mount/point /path/to/local/mount/point

Для получения более подробной информации (включая настройку сервера NFSv4.2), вы можете обратиться к документации RHEL7.

.

Ответ или решение

Для решения задачи, связанной с изменением контекстов SELinux на NFS-смонтированной директории, важно понимать ограничения и возможности современной реализации NFS и SELinux в CentOS 7. Данная проблема встает перед системными администраторами и специалистами, которые стремятся обеспечить безопасность и правильное функционирование систем в условиях использования сетевых файловых систем.

Теория

NFS (Network File System) предоставляет возможность прямого доступа к файловым системам на удаленных серверах, что значительно упрощает хранение и обмен данных. Однако, SELinux (Security-Enhanced Linux) добавляет уровень безопасности для файловых систем, контролируя доступ на основе политик безопасности. В системе, где используется SELinux, все файлы и директории имеют метки (labels), которые определяют их контексты безопасности.

На уровне CentOS 7, NFSv3 является широко используемым протоколом, но он не поддерживает полностью метки SELinux "из коробки". Это означает, что при монтировании NFS-директории на клиенте контексты не передаются. Такие ограничения заставляют искать альтернативные решения.

Пример

В вашем случае серверная система экспортирует директорию через NFS с параметрами, которые допускают чтение и запись без ограничения привилегий рутера (no_root_squash). Клиентская система монтирует эту директорию успешно, но при попытке изменения контекста SELinux на клиенте возникает ошибка "Operation not supported". Это происходит потому, что текущая реализация NFS, используемая вами, не поддерживает изменение контекста SELinux по сети.

Вы видите, что созданный на сервере файл file1 имеет стандартный контекст unlabeled_t, и при просмотре контекста файла на клиентской машине выводится символ ‘?’, что указывает на отсутствие информации о контексте безопасности.

Применение

Чтобы обойти ограничение в CentOS 7, вы можете использовать механизм "Labeled NFS", поддерживаемый в NFSv4.2 и выше. Для его функционирования необходимо соблюсти несколько требований:

  1. Соответствующая версия сервера: Обе стороны соединения (сервер и клиент) должны поддерживать NFSv4.2.

  2. Настройка SELinux на сервере: Убедитесь, что на сервере все файлы и каталоги в экспортируемой директории правильно помечены SELinux метками.

  3. Настройка клиента: Смонтируйте NFS-директорию с версией 4.2 и включенной поддержкой меток SELinux с помощью команды:

    # mount -o v4.2 <имя_сервера>:/путь/к_серверной/директории /путь/к_клиентской/директории
  4. Конфигурация и проверка: Проконсультируйтесь с документацией Red Hat для детальной конфигурации Labeled NFS, чтобы убедиться, что все компоненты системы настроены корректно.

  5. Обновление системы: Возможно, потребуется обновление компонентов NFS и SELinux до последних исправленных версий.

Следуя этим шагам, вы сможете реализовать передачу и изменение меток SELinux по сети через NFS. Это повысит безопасность вашей системы, обеспечив соответствие политик безопасности на клиентской стороне с политиками на сервере. Важно помнить, что описанные изменения могут повлиять на работу системы, поэтому любую модификацию конфигурации следует тщательно тестировать в контролируемой среде перед развертыванием на производственных серверах.

Оцените материал
Добавить комментарий

Капча загружается...