В защищённой операционной системе Astra могут одновременно выполняться программы с разными метками конфиденциальности. Привычный для пользователя рабочего стола обмен данными через буфер обмена между такими программами по умолчанию невозможен из-за принятых мер МРД. В частности, при необходимости работать с меткой конфиденциальности, отличающейся от метки текущей сессии, надо открывать отдельную сессию с отдельным Х сервером.
Так же можно разрешить использовать специальный механизм (sumac), позволяющий запустить графическую программу с более высокой меткой конфиденциальности из текущей сессии, но при этом программа будет работать со своим отдельным вложенным Х сервером Xephyr.
Команда sumac используется для запуска процесса с заданными мандатными уровнем и категорией в отдельной графической сессии с использованием виртуального графического сервера Xephyr.
Буфер обмена - промежуточное хранилище данных, предоставляемое программным обеспечением и предназначенное для переноса или копирования информации между приложениями или частями одного приложения через операции вырезать, копировать, вставить.
КСЗ обеспечивает реализацию следующих функций ОС по защите информации от НСД:
идентификацию и аутентификацию;
дискреционное управление доступом;
мандатное управление доступом;
регистрацию событий безопасности;
ограничение программной среды;
изоляцию процессов;
защиту памяти;
контроль целостности;
обеспечение надежного функционирования;
фильтрацию сетевого потока;
маркировку документов;
защиту среды виртуализации;
контроль подключения съемных машинных носителей информации.
Для организации контроля буфера обмена между сессиями используются 2 механизма:
xfixes расширение X сервера для асинхронного мониторинга буфера обмена сессии;
inotify механизм ядра для асинхронного мониторинга файловой системы.
Каждый менеджер окон (он же менеджер буферов обмена) в каждой сессии подписывается на получение уведомлений об изменении буфера обмена своей графической сессии. Затем, по мере изменений в буфере обмена, он получает уведомления и сохраняет содержимое буфера обмена в файле $HOME/.fly/clipboard. Таким образом, изменения буфера обмена постоянно отображаются в файле $HOME/.fly/clipboard.
Данные механизм позволяет без проблем копировать и вставлять текстовую информацию, такую как, например, текст или URL файлов и каталогов. Так, находясь в сессии с нулевым уровнем конфиденциальности, пользователь может скопировать информацию привычным образом: ctrl+c или ctrl+insert или через контекстное меню с пунктом «Копировать». Затем, переключившись в сессию с более высоким уровнем конфиденциальности (Мандатный контекст), сразу же вставить эту информацию: сtrl+v или shift+insert, а также через контекстное меню с пунктом «Вставить».
Мандатный контекст – это разграничение доступа субъектов к объектам, основанное на назначении метки конфиденциальности для информации, содержащейся в объектах, и выдаче официальных разрешений субъектам на обращение к информации такого уровня конфиденциальности.
Мандатный контекст включает в себя:
классификационной метки, которая определяется:
Субъекты или сущности, которым явно не присвоен никакой мандатный контекст, считаются имеющими минимальный (нулевой) мандатный контекст, то есть мандатный контекст, в котором все мандатные атрибуты имеют минимальные допустимые значения.
иерархическим уровнем конфиденциальности;
неиерархической категорией конфиденциальности;
Дискреционное управление доступом
Эта модель в том или ином виде реализована почти во всех современных *nix-системах. В англоязычных ресурсах можно встретить название DAC (Discretionary Access Control). Суть ее заключается в управлении доступом субъектов к объектам на основе списков управления доступом. Дискреционное управление доступом в ОС проекта GNU/Linux основано на понятии владения (использовании права доступа владения) файлом, процессом, каталогом (сущностями и субъект-сессиями). Так, с каждым файлом или каталогом связана учётная запись пользователя — их владельца (owner). Процесс, который функционирует от имени такой учётной записи-владельца сущности, имеет право изменять дискреционные права доступа к ней, например назначать их учётным записям других пользователей ОС на основе стандарта POSIX ACL. Однако зачастую настраивать права доступа для каждой учетной записи бывает затруднительно и поэтому пользователей объединяют в группы, которым тоже можно назначить права доступа.
Существует 2 вида атрибутов minimal POSIX ACL и Extended POSIX ACL.
В метаданных каждого объекта (в inode файла/директории) содержится список разрешений на доступ к нему для разных категорий субъектов.
Атрибуты Minimal ACL поддерживают три базовых класса субъектов доступа к файлу (класс All объединяет все три класса):
1.User access (u) – доступ для владельца файла;
2.Group access (g) – доступ для группы, владеющей файлом;
3.Other access (o) – доступ для остальных пользователей (кроме пользователя root).
4.All access (a) – доступ для всех субъектов доступа (u, g, o).
Для каждого из этих классов определены три типа разрешений:
На чтение содержимого файла (read) – символ «r».
На запись внутри файла или изменения его содержимого (write) – символ «w».
На исполнение файла (если это бинарный исполняемый файл или файл сценария интерпретатора (execute)) – символ «x».
Список разрешений Minimal ACL представлен в inode файла (директории) девятью байтами (символами). Каждый байт определяет одно из разрешений (символы r, w, x) или их отсутствие (символ «-»). Байты разрешений сгруппированы в следующие классы:
Теперь рассмотрим способы смены прав доступа на практике:
Для того, чтобы посмотреть атрибуты отдельного файла или директории в символьном виде можно воспользоваться командой:
ls –l <имя_файла>
Пример вывода команды:
Таким образом мы понимаем, что это файл обычного типа (–). Для владельца разрешены чтение, запись и исполнение (rwx), для владеющей группы – чтение и запись (rw-), для остальных пользователей – только чтение (r--).
Для директорий трактовка типов разрешений иная:
r – разрешение на «открытие» директории, то есть на чтение списка файлов, которые содержит эта директория.
w – разрешение на модификацию этого списка файлов (создание/удаление/переименование/перемещение) файлов этой директории.
x – разрешение на «исполнение» директории, то есть на возможность перейти в нее.
Чтобы изменить расширения для определенного файла используется команда chmod с соответствующими аргументами:
Система полномочий в Linux имеет очень важное значение, поскольку благодаря ей можно разделять привилегии между пользователями, ограничить доступ к нежелательным файлам или возможностям, контролировать доступные действия для сервисов и многое другое.
Эта команда имеет типичный для команд linux синтаксис, сначала команда, затем опции, а в конце файл или папка, к которой ее нужно применить:
$ chmod опции права /путь/к/файлу
Сначала рассмотрим какими бывают права доступа linux и как они устанавливаются. Пред этим рекомендую прочитать статью про права, ссылка на которую есть выше. Есть три основных вида прав:
r - чтение;
w - запись;
x - выполнение;
s - выполнение от имени суперпользователя (дополнительный);
Также есть три категории пользователей, для которых вы можете установить эти права на файл linux:
u - владелец файла;
g - группа файла;
o - все остальные пользователи;
Синтаксис настройки прав такой:
группа_пользователей/действие/вид_прав
В качестве действий могут использоваться знаки "+" - включить или "-" - отключить. Рассмотрим несколько примеров:
u+x - разрешить выполнение для владельца;
ugo+x - разрешить выполнение для всех;
ug+w - разрешить запись для владельца и группы;
o-x - запретить выполнение для остальных пользователей;
ugo+rwx - разрешить все для всех;
Но права можно записывать не только таким способом. Есть еще восьмеричный формат записи, он более сложен для понимания, но пишется короче и проще. Я не буду рассказывать как считать эти цифры, просто запомните какая цифра за что отвечает, так проще:
0 - никаких прав;
1 - только выполнение;
2 - только запись;
3 - выполнение и запись;
4 - только чтение;
5 - чтение и выполнение;
6 - чтение и запись;
7 - чтение запись и выполнение.
Права на папку linux такие же, как и для файла. Во время установки прав сначала укажите цифру прав для владельца, затем для группы, а потом для остальных.
Например:
744 - разрешить все для владельца, а остальным только чтение;
755 - все для владельца, остальным только чтение и выполнение;
764 - все для владельца, чтение и запись для группы, и только чтение для остальных;
777 - всем разрешено все.
Каждая из цифр не зависит от предыдущих, вы вбираете именно то, что вам нужно. Теперь давайте рассмотрим несколько опций команды, которые нам понадобятся во время работы:
-c - выводить информацию обо всех изменениях;
-f - не выводить сообщения об ошибках;
-v - выводить максимум информации;
--preserve-root - не выполнять рекурсивные операции для корня "/";
--reference - взять маску прав из указанного файла;
-R - включить поддержку рекурсии;
--version - вывести версию утилиты;
Теперь, когда вы знаете опции и как настраиваются права доступа chmod, давайте рассмотрим несколько примеров как работает команда chmod linux.
Например:
chmod o=r test.file – установка разрешения «чтение» для остальных пользователей (не владельцев объекта), вне зависимости какие разрешения были установлены ранее
chmod g+rw test.file – добавление разрешений «чтение» и «запись» для группы, владеющей файлом
Также Minimal ACL имеют числовое представление (Numeric Notation) в виде трех восьмеричных чисел. Эти числа определяют разрешение на доступ к файлу или директории трех субъектов доступа (u,g,o). Каждое из них формируется путем суммирования восьмеричных значений необходимых разрешений:
чтение = 4;
запись = 2;
выполнение =1.
Например, полный доступ (rwx) – это: 4+2+1=7
Таким образом, можно задать разрешения для файла следующим образом:
chmod 0740 test.file, что будет соответствовать атрибутам -rwxr-----
В ряде случаев в ходе пользовательского сеанса возникает необходимость смены разрешений при доступе файлам и директориям
Например для файла /etc/shadow любой пользователь может записать в него хеш своего пароля
Такая смена разрешений называется изменение режима доступа.
Она реализуется установкой специальных флагов в зарезервированном десятом байте списка Minimal POSIX ACL или заменой ими байтов разрешений
Флаг -t (sticky bit). Устанавливается в разрешениях директорий и разрешает манипулирование файлами внутри этих директорий только их владельцам.
Флаг -s (флаг режимов SUID и SGID). Устанавливается вместо разрешения «x» у владельца (режим SUID) и/или владеющей группы (режим SGID) и разрешает исполнение этого файла с разрешениями его владельца и/или владеющей группы, а не с разрешениями пользователя, запустившего файл.
Вполне естественно, что такая простая схема, как в Minimal POSIX ACL имеет ряд недостатков. Самый явный из них, это отсутствие гибкости при совместном доступе субъектов к объектам. К тому же, списки доступа Extended POSIX ACL создаются и хранятся в системных таблицах ядра ОС.
Основой Extended POSIX ACL является понятие «именованный пользователь (группа)» (named user (group), что позволяет нам выдавать отдельный набор разрешений для конкретных пользователей или групп.
Для работы с Extended POSIX ACL используются следующие команды:
Просмотр: системный вызов getfacl <имя файла>
Вывод:
Установка: системный вызов setfacl
Вывод:
Пример:
Для выделения секретного документа из общего информационного списка а так же на носителях информации ограниченного доступа необходимы грифы конфиденциальности использования которого необходимо для выполнения данных операций. Были рассмотрены 2 типа разграничения доступа, которые охватывают контекст безопасности.
http://rus-linux.net/MyLDP/BOOKS/Linux_Foundations/32/ch32.html
https://wiki.astralinux.ru/pages/viewpage.action?pageId=48763550