Forráskód Böngészése

Merge branch 'master' of u20-24teslin/up into master

ypv 2 éve
szülő
commit
83f7f1c879

+ 287 - 0
ЭАСвЗИ/Лекции/2.5.1400_Управление_грифами_конфиденциальности/TESLINM.md

@@ -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) или их отсутствие (символ «-»). Байты разрешений сгруппированы в следующие классы:
+
+![](YGCC11.jpg)
+
+Теперь рассмотрим способы смены прав доступа на практике:
+
+Для того, чтобы посмотреть атрибуты отдельного файла или директории в символьном виде можно воспользоваться командой:
+
+**ls –l <имя_файла>**
+
+Пример вывода команды:
+
+![](YGCC12.jpg)
+
+Таким образом мы понимаем, что это файл обычного типа (–). Для владельца разрешены чтение, запись и исполнение (rwx), для владеющей группы – чтение и запись (rw-), для остальных пользователей – только чтение (r--).
+
+Для директорий трактовка типов разрешений иная:
+
+**r** – разрешение на «**открытие**» директории, то есть на **чтение списка файлов**, которые содержит эта директория.
+
+**w** – разрешение **на модификацию этого списка файлов** (создание/удаление/переименование/перемещение) файлов этой директории.
+
+**x** – разрешение на «**исполнение**» директории, то есть на возможность **перейти в нее**.
+
+Чтобы изменить расширения для определенного файла используется команда **chmod** с соответствующими аргументами:
+
+![](YGCC13.jpg)
+
+Система полномочий в 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 любой пользователь может записать в него хеш своего пароля
+
+![](YGCC14.jpg)
+
+Такая смена разрешений называется изменение режима доступа.
+
+Она реализуется установкой специальных флагов в зарезервированном десятом байте списка 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), что позволяет нам выдавать отдельный набор разрешений для конкретных пользователей или групп.
+
+![](YGCC15.jpg)
+
+Для работы с Extended POSIX ACL используются следующие команды:
+
+Просмотр: системный вызов **getfacl <имя файла>**
+
+Вывод:
+
+![](YGCC16.jpg)
+
+Установка: системный вызов setfacl
+
+Вывод:
+
+![](YGCC17.jpg)
+
+Пример:
+
+![](YGCC18.jpg)
+
+### Вывод
+
+Для выделения секретного документа из общего информационного списка а так же на носителях информации ограниченного доступа необходимы грифы конфиденциальности использования которого необходимо для выполнения данных операций. Были рассмотрены 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/

BIN
ЭАСвЗИ/Лекции/2.5.1400_Управление_грифами_конфиденциальности/YGCC11.jpg


BIN
ЭАСвЗИ/Лекции/2.5.1400_Управление_грифами_конфиденциальности/YGCC12.jpg


BIN
ЭАСвЗИ/Лекции/2.5.1400_Управление_грифами_конфиденциальности/YGCC13.jpg


BIN
ЭАСвЗИ/Лекции/2.5.1400_Управление_грифами_конфиденциальности/YGCC14.jpg


BIN
ЭАСвЗИ/Лекции/2.5.1400_Управление_грифами_конфиденциальности/YGCC15.jpg


BIN
ЭАСвЗИ/Лекции/2.5.1400_Управление_грифами_конфиденциальности/YGCC16.jpg


BIN
ЭАСвЗИ/Лекции/2.5.1400_Управление_грифами_конфиденциальности/YGCC17.jpg


BIN
ЭАСвЗИ/Лекции/2.5.1400_Управление_грифами_конфиденциальности/YGCC18.jpg