Загрузка...
Поддержи Openmeetings

среда, 5 августа 2015 г.

Политика MAC модуля обеспечения защиты Linux SELinux

Совместно с мандатным контролем доступа, реализованным с SELinux LSM, SELinux LSM MAC представляет собой политику безопасности системы, которая отличается от политики владельца в DAC, определяющей, кому к какой информации должен быть предоставлен доступ.
Политика MAC, предоставленная SELinux, опирается на два вида политики:
  • Принудительное присвоение типов (Type Enforcement, TE), которое используется, чтобы реализовать ролевую модель управления доступом
  • Многоуровневая система обеспечения безопасности (Multi-Level Security, MLS) с реализацией иерархической политики маркировки Bell-LaPadula.
Субъекты и объекты в Linux – это обычные процессы и потоки ядра. Они оба представляются структурой task_struct. Потоки ядра исполняются только в привилегированном режиме и не ограничиваются политикой MAC. Все именованные объекты, такие как обычные файлы, текстовые и блочные файлы, каталоги, сокеты и объекты IPC находятся под контролем политики MAC. Политика MAC может управлять не только именованными объектами, но также доступом к определенным структурам данных ядра, таким как дескрипторы файла, сообщения IPC и файловые системы, чтобы позволить определять политику безопасности системы на более детальном уровне.
Атрибуты безопасности субъекта и объекта, также называемые контекстом безопасности SELinux, имеют тот же самый формат. Во внешнем формате, удобном для восприятия пользователем, контекст безопасности - последовательность символов ASCII. Из соображений производительности, ядро преобразовывает эту последовательность в 32-битное целое число на этапе исполнения; однако, при описании механизма осуществления и политики безопасности контекст безопасности представлен в формате ASCII. Контекст безопасности состоит из четырех разделенных двоеточиями компонентов. Они соответствуют пользователю, роли, типу и диапазону MLS субъекта или объекта/


  • Пользователь: компонент пользователя – имя пользователя SELinux.
  • Роль: компонент роли – роль SELinux, соответствующая субъекту или объекту. Для субъектов роль используется, чтобы осуществить ролевую модель управления доступом, позволяя роли управлять доступом к доменам. Для объектов ролевой компонент не используется и является всем object_r.
  • Тип: поле типа представляет тип объекта или домен субъекта. Домены и типы - эквивалентные классы для процессов и ресурсов, соответственно. Предоставление доступа в ядре осуществляется на основании на типа объекта и домена субъекта.
  • Диапазон маркеров MLS: диапазон маркеров MLS содержит два полных маркера MLS. Они размещены так, что нижний маркер располагается слева, а верхний маркер, который является преобладающим над нижним маркером, – справа. Два маркера разделены длинным тире и формируют диапазон маркеров. Для субъектов нижний маркер диапазона соответствует действующему маркеру MLS субъекта, в то время как верхний маркер соответствует разрешениям на доступ для субъекта. Уровень доступа субъекта соответствует полномочиям пользователя, от имени которого действует субъект.
Для таких объектов, как обычные файлы, политика безопасности диктует, что нижний маркер и верхний маркер равны; таким образом объект имеет, фактически, единственный уровень. У других объектов, таких как каталоги, устройства и сокеты, может быть верхний маркер, который не равен нижнему маркеру. Эти объекты многоуровневые, и их диапазон маркеров MLS требует, чтобы уровень безопасности любой информации, которая передается через них, определял значение нижнего маркера и в то же время определялся верхним маркером.
Каждый маркер MLS состоит из двух компонентов: это иерархический уровень классификации (или уровень безопасности), и неиерархический набор категорий.
Между любыми двумя маркерами MLS могут существовать четыре возможных отношения, определяемые следующим образом (в следующем листинге L1 – нижний маркер субъекта, выполняющего запрос доступа, и L2 – нижний маркер запрашиваемого доступа к объекту):
  • L1 равен L2 (уровни равны, наборы категорий совпадают),
  • L1 переопределяет L2 (уровень L1 >= уровню L2, набор категорий L2 совпадает или является подмножеством набора категорий L1),
  • L1 переопределяется L2 (уровень L2 >= уровню L1, набор категорий L1 совпадает или является подмножеством набора категории L2),
  • L1 несравним с L2 (L1 и L2 не равны, и ни один из них не переопределяет другой).
Хранение атрибутов Атрибуты SELinux хранятся:
  • в структуре процесса task_struct для субъектов;
  • в структуре данных, размещенной на диске и в ядре, для объектов файловой системы;
  • в структуре данных kern_ipc_perm для объектов IPC системы System V;
  • в структуре данных sock для сокетов;
  • в структуре xfrm_state для сокетов netlink;
  • в структуре данных key для ключей.
SELinux приводит недействительные или неправильные контексты к контексту system_u:object_r:unlabeled_t:s0.
Правила контроля доступа Реализация управления доступом MAC основана на принудительном присвоении типов (Type Enforcement, TE). TE обеспечивает определяемое на более детальном уровне управление доступом к субъектам и объектам.
TE и правила политики MLS определяются с политикой SELinux. Правила TE определяются как проверки управления доступом, тогда как политика MLS определяется как ограничение, накладываемое поверх TE. Поэтому полная проверка управления доступом выполняется за три логических шага, следующим образом:
  1. Первой выполняется проверка DAC, использующая атрибуты DAC, за которой следует
  2. проверка TE, использующая домены и типы контекста безопасности SELinux, за которой следует
  3. проверка политики MLS Bell-LaPadula, использующая диапазон маркеров MLS контекста безопасности SELinux.
Каждая из выполняемых проверок неавторитетная. Таким образом, права доступа только сильнее ограничиваются на каждой следующей стадии; отказ в праве доступа, установленный политикой DAC, не может быть переопределен TE, а отказ в праве доступа, установленный TE, не может быть переопределен MLS.
Привилегии, связанные с программным обеспечением для политики MAC реализуются с использованием домена защиты процесса и правил политики безопасности, связанных с этим доменом. Например, процессам, исполняющимся в домене init_t, предоставлен доступ на чтение к объектам, маркер контекста безопасности которых преобладает над маркером контекста безопасности процесса. Это переопределение определяется атрибутами домена. Правило политики устанавливает доступ домена к типу с переопределением, привязанным к атрибуту домена. Например, следующее правило политики может использоваться, чтобы разрешить процессу переопределять ограничение Bell-LaPadula, запрещающее доступ на чтение, когда этот процесс выполняет попытку прочитать обычный файл:

Листинг 3.1: ограничение политики MLS SELinux
mlsconstrain { file } { read } (( l1 dom l2) or (t1 == mlsfileread ))
Приведенный выше оператор устанавливает политику безопасности, при которой маркер l1 (принадлежащий субъекту), должен преобладать над над маркером l2 (принадлежащим объекту) для операции чтения данных, чтобы разрешить доступ на чтение, если у домена процесса нет атрибута mlsfileread.
Политика безопасности системы для различных типов субъектов и объектов приводится в функциональных описаниях данных субъектов и объектов.
В дополнение к атрибутам процесса, которые могут переопределять права доступа, ядро Linux обладает следующей возможностью: CAP_MAC_OVERRIDE. Если процесс обладает этой возможностью, он может обойти принудительное выполнение всех политик SELinux.



Комментариев нет :

Отправить комментарий