CentOS7 SELinux, похоже, не придерживается категорий MCS

CentOS7 SELinux, похоже, не придерживается категорий MCS

Проблема

Файл, назначенный определенной категории SELinux MCS (Multi Category Security), может быть прочитан пользователем, не назначенным в эту категорию, что указывает на то, что MCS каким-то образом не работает в моей системе (работающей под управлением CentOS7 с минимальной установкой, SELinux принудительно включен вцелевыеполитика ).

Фон

Недавно я приобрел себе небольшой vServer, что побудило меня впервые погрузиться в настройку безопасной системы и работу с SELinux. Я намерен разделить приложения, которые буду запускать на сервере, запустив их в контейнерах Docker (при этом сам хост будет работать на CentOS7). Я был рад узнать, что каждому контейнеру Docker (по умолчанию) назначаются случайные категории SELinux MCS при запуске, чтобы обеспечить дополнительный уровень безопасности для разделения. Чтобы ознакомиться с тем, как работает SELinux в целом и MCS в частности, я настроил виртуальную машину на одной из своих домашних машин и немного поигрался. Сделав это, я заметил, что MCS работает не так, как я ожидал, так что либо я упускаю что-то важное, либо где-то есть проблема с конфигурацией.

Что я сделал

Для проверки MCS я следовал инструкциям в [0] и [1]. Во-первых, я убедился, что SELinux действительно запущен вобеспечение соблюдениярежим и сцелевыеполитики с использованием sestatus. Придерживаясь [0], я создалmcsuser_uПользователи SELinux и CentOSДжон,Джейн,джонджейн, который я затем сопоставил сmcsuser_uиспользуя semanage login. Я также назначил категории пользователям, как указано в [0], и в итоге получил:

Login Name | SELinux User | MLS/MCS Range

john | mcsuser_u | s0-s0:c122
jane | mcsuser_u | s0-s0:c123
johnjane | mcsuser_u | s0-s0:c122,123

от semanage login -lи

mcsuser_u | MLS/MCS Level: s0 | MLS/MCS Range: s0-s0:c0.c1023 | SELinux Roles: user_r

от semanage user -l.

Я создал домашний каталог пользователяДжондоступен для чтения всем ( chmod 707), вошел какДжони создал текстовый файлджонтекст. Затем я присвоил категориюс122к этому файлу (все еще вошел в систему какДжон). Я также смог назначить категориюс120в файл, хотяДжонне классифицируется какс120сам, что не должно быть возможным согласно [0] (впоследствии я удалилс120снова). ls -lZ johntextпоказывает вывод

-rw-rw-r-- john john mcsuser_u:object_r:user_home_t:s0:c122 johntext

Следуя вышеизложенному, я вошел в систему как пользовательДжейн, и попытался прочитать файлджонтекстиспользуя catкоманду, что мне удалось сделать.

Для меня это явно указывает на то, что MCS работает не так, как я ожидал (предоставляя доступ к объектам определенной категории только в том случае, если пользователь, запрашивающий доступ, имеет ту же категорию).

Решения?

Я теперь немного запутался и не знаю, где ошибка, поэтому я обращаюсь к вам за советом. Возможно, это просто ошибочное предположение или недопонимание с моей стороны, но я не могу понять это прямо сейчас, и это не имеет для меня смысла.На мой взгляд, есть следующие возможности:

1. Мне нужно вручную активировать проверки MCS или использовать другую политику

Я не нашел никакой информации о том, нужно ли мне вручную активировать поддержку MCS, и поэтому предполагаю, что она работает, если я просто назначаю метки (на основе [1]). Другие источники [2] предполагают, что MCS включена вцелевыеполитика (по крайней мере) для Fedora и RHEL, откуда я ожидаю, что она не будет отличаться и для CentOS.

2. На моей стороне неправильная конфигурация.

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

3. Он просто сломан.

.. что было бы плохо

Ссылки по ссылкам

0:https://selinux-mac.blogspot.de/2009/06/multi-category-security.html

1:https://www.centos.org/docs/5/html/Deployment_Guide-en-US/sec-mcs-getstarted.html

2:http://selinuxsymposium.org/2006/slides/08-mcs.pdf

Полный sestatusвыход

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

[РЕДАКТИРОВАТЬ]:

Я только что протестировал те же шаги на виртуальной машине под управлением CentOS 6.9, где все ведет себя так, как и ожидалось. Прямо сейчас я бы предположил, что есть либо какая-то ошибка, касающаяся MCS в SELinux на CentOS, либо какие-то недокументированные изменения в политике/конфигурации, которые нужно будет подправить. Я все еще сомневаюсь, какие разумные следующие шаги будут для того, чтобы все заработало так, как ожидалось.

решение1

Видимо, произошло изменение в политиках SELinux с CentOS6 на CentOS7, так что ограничения MCS больше не применяются ко всем типам. Чтобы заданный тип соответствовал MCS, атрибут mcs_constrained_typeдолжен быть добавлен к этому типу через пользовательскую политику. Более подробную информацию о том, как это сделать (и какие типы ограничены MCS по умолчанию (и почему)) можно найти взапись в блоге Дэна Уолша.

Связанный контент