TESLINM.md 22 KB

Управление грифами конфиденциальности. (*nix)

В защищённой операционной системе 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.

Minimal POSIX ACL. Список контроля на уровне inode файла

В метаданных каждого объекта (в 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) и разрешает исполнение этого файла с разрешениями его владельца и/или владеющей группы, а не с разрешениями пользователя, запустившего файл.

Extended POSIX ACL (EA). Расширенные списки контроля доступа

Вполне естественно, что такая простая схема, как в 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://codeby.school/blog/informacionnaya-bezopasnost/razgranichenie-dostupa-v-linux-znakomstvo-s-astra-linux

https://tebestudent.ru/polezno-znat/kursovye-raboty/vyvod-v-kursovoy-rabote/#kak_pisat_vyvod_v_kursovoy_rabote

https://wiki.astralinux.ru/pages/viewpage.action?pageId=48763550

https://habr.com/ru/company/astralinux/blog/701596/