|
@@ -0,0 +1,287 @@
|
|
|
+# Управление грифами конфиденциальности. (*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 типа разграничения доступа, которые охватывают контекст безопасности.
|
|
|
+
|
|
|
+#### <h1 align="center">Список литературы</h1>
|
|
|
+
|
|
|
+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/
|