Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Знакомство с системой контроля доступа RSBAC в ОС Linux




Цель работы:познакомиться с RuleSetBasedAccessControl (RSBAC), системой контроля доступа в ОС Linux.

Теоретическая часть

Файловая система ОС Linux

Понятие файла в ОС Linuxмаксимально унифицировано. Файлами считаются обычные файлы, каталоги, каналы; внешние устройства представляются в виде специальных файлов. Доступ к файлам любого вида однотипен. Таким образом, доступ к внешним устройствам такой же, как к обычным файлам. Такой подход обеспечивает независимость программ пользователей от особенностей ввода-вывода на конкретное внешнее устройство. Это определяет мобильность программ, работающих под управлением ОС Linux.

Файловая система Linux имеет иерархическую древовидную структуру. В корневом каталоге размещаются другие каталоги и файлы. Linux допускает существование нескольких файловых систем, присоединяемых к корневому каталогу (подмонтированных). Как правило, корневой каталог содержит следующие каталоги:

/bin- часто используемые команды;

/sbin- команды, используемые системой и администратором;

/tmp- каталог с временными файлами;

/etc- здесь хранят конфигурационные фалы все системные и обычные программы; /home- каталог пользователей;

/dev- специальные файлы, файлы устройств;

/lib- разделяемые библиотеки.

В обозначении каталога первая черта / свидетельствует о принадлежности к корневому каталогу.

- Домашний каталог (home directory)- это каталог в каталоге home, который администратор назначает пользователю и в который пользователь попадает при входе в систему. Имя домашнего каталога совпадает с идентификатором пользователя.

- Текущий (current) рабочий каталог - это каталог, в котором в данный момент находится пользователь. Обозначение текущего каталога ‘.’ (одна точка).

- Родительский каталог – это каталог, которому принадлежит текущий.

Обозначение родительского каталога ‘..’ (две точки).

Использование консолей

Linux обеспечивает доступ к виртуальным консолям (или VC), которые позволяют войти в систему под несколькими именами в одно время независимо друг от друга.

Linux позволяет работать с шестью VC (tty1, tty2,...tty6). Переключения между VCпроисходит нажатием сочетаний клавиш от Alt+F1 до Alt+F6. В каждой VCнеобходимо войти в систему от имени пользователя. Использование виртуальных консолей даёт представление о многопользовательских возможностях Linuxи ограничено лишь тем, что в каждый момент времени вы можете видеть только одну виртуальную консоль. Пока вы выполняете какой-нибудь длительный автоматизированный процесс в VC#1, вы можете переключиться на любую свободную консоль и начать работу над чем- то другим.

Пользователи, группы и прочие

Пользователи. Каждый файл или каталог имеет владельца (owner). Каждый пользователь имеет в системе так называемый идентификатор пользователя или номер пользователя (UserID, сокращённо UID). Как правило, пользователи опознаются по их именам. Именно такие имена вводятся после приглашения login(при входе в систему). Соответствие между номерами и именами пользователей устанавливается в специальном файле с именем /etc/passwd, открытом только для чтения всем пользователям. Кодированные пароли каждого пользователя, в том числе и root, содержатся в файле /etc/shadow, право на чтение которого имеет только администратор.

Все пользователи равноправны. Но лишь один обладает неограниченными правами доступа – системный администратор, имеющий идентификатор пользователя 0 и имя root.

Владельцы. Каждый файл имеет владельца (owner). Этим владельцем может быть обычный пользователь или системный администратор. По умолчанию владелец обладает всеми правами на файл.

Группы. Помимо отдельных пользователей операционная система Linuxподдерживает группы (groups). Типичный пример группы - несколько пользователей, работающих над одним проектом. Каждый из них должен иметь доступ ко всем файлам данного проекта, а посторонним пользователям такой доступ должен быть запрещён.

Пользователь может быть членом нескольких групп, но файл всегда относится к конкретной группе. Есть так же специальные системные группы. Каждая группа тоже имеет свой внутренний номер, идентификатор группы (groupID, сокращённо GID) и имя.

Соответствие имён и номеров (идентификаторов) групп определяется в специальном файле /etc/group, открытом только для чтения всем пользователям. Владельцем этого файла является root.

Прочие. Все пользователи, не являющиеся владельцами файлов или членами групп, к которым относятся файлы, обозначаются как прочие (others).

Права доступа

Пользователь, который хочет получить доступ к файлу, будет отнесён к одному из трёх классов:

1) наибольшими правами обладает пользователь, являющийся владельцем

файла;

2) следующая ступень - это пользователи, являющиеся членами группы, к которой относится файл;

3) пользователи, относящиеся к классу прочих, имею, как правило, очень ограниченные права или не имеют их вообще.

Для каждого из трёх классов пользователей отдельно определяется, какими правами доступа к указанному файлу они обладают, если вообще обладают.

Права доступа обозначаются буквенными сокращениями:

r- читать;

w- писать;

х - выполнять.

Следовательно, rозначает, что соответствующий файл можно только читать, но в него нельзя вносить изменения и его нельзя запускать. Сокращение rwозначает, что файл, можно читать и редактировать, а rwxразрешает любые операции с файлом.

Всем вышеупомянутым классам пользователей права доступа присваиваются по одному разу. В результате возникают криптограммы типа rw-r--r-- или rwxr-xr-x. Первый вариант - это набор прав для файла, который владелец может читать и редактировать, а группы и прочие только читать. Второй пример соответствует файлу, который все могут читать и запускать как программу, однако только владелец может редактировать этот файл.

Командный интерпретатор (Shell)

Интерпретатор команд обеспечивает интерфейс пользователь-ядро при введении пользователем команд с терминала (в консоли). Также он интерпретирует и исполняет команды, вводимые из командного файла.

Есть много разных интерпретаторов, но самый распространённый из них - bash(Bourneagainshell). От выбранного интерпретатора и от его настроек зависит формат командной строки, различные возможности (например, возможность просмотра истории введённых в командной строке директив последовательно, с помощью клавиш управления Upи Down), набор внутренних команд интерпретатора (которые используются, например, в скриптах) и многое другое.

Когда вы вводите команду, интерпретатор выполняет следующие действия:

- проверяет, является ли команда внутренней для данного интерпретатора;

- если shellнаходит такую программу, он её выполняет, передавая ей аргументы из командной строки.

Программу, вызываемую из командной строки, bashищет в каталогах, определяемых в системной переменной PATH. По умолчанию в этот перечень каталогов не входит текущий каталог из соображений безопасности. Поэтому для запуска программы из текущего каталога надо дать команду ./program(точка обозначает текущий каталог).

Чтобы запустить, скажем, программу attr_set_file_dir, достаточно набрать в командной строке attr_sи нажать Tab. Bash, зная названия доступных команд, сам допишет имя. (Если в системе есть несколько команд, начинающихся с заданного префикса, он выдаст их перечень, а если их более 100, то предварительно уточнит, действительно ли нужен такой огромный список.) Когда название команды введено (и после него поставлен пробел), интерпретатор позволяет тем же способом ввести имя файла в текущем каталоге.

Также вы можете повторять ранее введённые команды, нажимая стрелку вверх и стрелку вниз (Bashведёт лог всех введённых команд).

Ещё одна интересная возможность - прокручивание экрана вверх-вниз с помощью нажатия комбинации клавиш Shift+PageUpили Shift+PageDown.

В одной строке можно ввести несколько команд, разделяя их точкой с запятой. Shellзапускает первую команду, дожидается окончания её выполнения, затем запускает вторую команду и т.д.

Выход из shellосуществляется с помощью команд logout, exitили нажатием Ctrl+D.

Направления ввода и вывода данных

Каждая команда получает в своё распоряжение от shellтри канала:

1) Стандартный ввод (stdin) - по этому каналу вводятся данные в программу;

2) Стандартный вывод (stdout) - по этому каналу выводятся данные;

3) Стандартный вывод ошибок (stderr) - по этому каналу программы выдают

информацию о наличии ошибок.

Обычно все эти каналы связаны с монитором и клавиатурой.

Согласно принципам работы Linux, стандартный ввод можно переназначить. Например: prog < file.

Символ < говорит, что стандартный ввод для программы progпереназначается, и данные будут браться не с клавиатуры терминала, а из файла file.

Переназначение стандартного вывода в режиме замены.:prog>file.

Т.е. выводимые данные перенаправляются в файл file.При этом исходное содержание файла fileзаменяется. Если файла не существует, то он создаётся.

Переназначение стандартного вывода в режиме добавления: prog>>file.

В этом случае, если файл fileсуществует, то данные добавляются в конец файла file.Если файла не существует, то он создаётся.

Конвейеры команд (pipeline)

Стандартный вывод одной команды может быть стандартным вводом следующей команды. Обозначается знаком | (вертикальная черта). Последовательность команд, соединённых таким образом, называется конвейером.

Примеры: ls | more ls -al | more ls | less

catStrahovka | less

who | wc -l - создание списка активных пользователей и подсчёт их числа. ls -lF /etc| lessСистемный журнал

Системный журнал /var/log/messagesимеет право просматривать только root. В нем фиксируется процесс и порядок загрузки системы, ошибки во время её работы. Просмотр этого файла удобнее делать командой cat /var/log/messages| less.

Базовые команды

Команды имеют следующий формат: имя команды {флаги} {параметры}.

Команда cat- многофункциональная команда для создания, просмотра и объединения файлов.

Показать содержание файла: cat{имя файла}.

Показать содержания файлов: cat{имена файлов через пробел}.

Добавить содержание файла1в конец файла2(символ >> ): cat>>{файл2} {файл1}.

Заменить содержимое файла1содержанием файла2(символ >): cat>{файл1} {файл2}.

Создать файл1(при условии, что такого файла не существует, иначе будет осуществлено либо добавление к файлу, либо его перезапись новой информацией): cat>>{файл1} илиcat>{файл1}.

Команда teeв этом режиме работает аналогично: tee>>{файл1} илиtee>{файл1}.

Ввод каждой строки необходимо завершать нажатием клавиши Enter.

Ввод символа конца файла (комбинация клавиш Ctrl+Z) создаёт или вносит изменения в файл.

Команда: less.

Формат: less{имя файла}.

Действие: эта команда позволяет просматривать длинные файлы с прокруткой и поиском.

Пример: ls -IF /bin | less.

Команда: rm (remove - удалить).

Формат: rm {флаги} {имяфайла}.

Действие: эта команда используется для удаления файлов.

Флаги:

-i- запрос на удаление файла;

-г- рекурсивное удаление (т.е. удаление, включая подкаталоги и файлы внутри каталога).

Примечание: восстановить удалённый файл в ОС Linuxневозможно.

Команда: ls(list- список).

Формат: ls{флаги} {имя файла/каталога}.

Действие:

Команда lsпредназначена для печати имён файлов и информации о них. Именами могут быть либо имена каталогов, либо имена файлов. При заданном имени каталога печатается вся запрошенная информация по каждому файлу этого каталога. Если вкоманде имя каталога отсутствует, то распечатывается информация обо всех файлах текущего каталога.

Флаги:

-1 - напечатать листинг длинного формата;

-а - включить в список все файлы;

-v- сортировка по времени последнего доступа к файлу;

-F- добавление к имени каталога символа / и символа * к имени файла, для которого разрешено выполнение.

Команда: cd(changedirectory- изменить каталог).

Формат: cd{dirname}.

Действие: изменение рабочего каталога.

Примеры:

Перейти в каталог bin.

$ cd /usr/bin

Перейти в родительский каталог.

$ cd ..

Перейти в корневой каталог.

$ cd /

Без параметров - возврат к собственному (home)каталогу.

$ cd

Команда: mkdir(makedirectory- создать каталог).

Формат: mkdir{dirnamel, dirname2, ...}.

Действие: создание одного или нескольких новых каталогов с именами dirnamel, dirname2,... Требует наличия у пользователя права на запись в родительский каталог. Команда: pwd(print working directory - печатать рабочий каталог).

Формат: pwd.

Действие: печать полного имени текущего каталога.

Команда: mv(move- перемещать).

Формат: mv{oldname} {newname},

где old name- старое имя файла/каталога; new name- новое имя файла/каталога. Действие: переименование файлов/каталогов.

Команда: cp(copy- копировать).

Формат:

cp{флаги} file1} {file2};

cp{флаги} {file1, file2, ...} {directory};

cp{флаги} [directory!} {directory2}.

Действие: впервомслучаефайлfile!копируетсявфайлfile2, вовторомслучаеdirectory- имякаталога, вкоторыйбудетскопированфайл (файлы), втретьемслучаедиректорияdirectory!копируетсявдиректориюdirectory2.

Флаги:

-г- рекурсивно копирует каталоги.

-р- сохраняет исходные параметры каталогов/подкаталогов/файлов, такие как владелец, группа, права доступа.

Команда: useradd.

Формат: useradd{флаги} [имя пользователя}.

Действие: создание нового пользователя.

Флаги:

-D- вывести значения по умолчанию, которые используются при создании пользователя;

-d- по умолчанию в каталоге /homeсоздаётся каталог с именем создаваемого пользователя, с помощью этого параметра можно присвоить другой домашний каталог;

-n- отменить автоматическое создание группы с именем пользователя;

-u- явно указывается UIDсоздаваемого пользователя;

-е - указывается дата в формате YYYY-MM-DD, после наступления которой пользователь будет заблокирован;

-G- указывается дополнительная группа, которой будет принадлежать пользователь (она должна существовать до этого);

По умолчанию пользователь становится только членом группы с GID100 и именем users.

Пример:

useradd -n -u 1050 -G group-642 petrov-14.

Команда: passwd.

Формат: passwd{флаги} {имя пользователя}.

Действие: устанавливает или изменяет пароль пользователя.

Команда passwdможет использоваться администратором для решения следующих

задач:

- блокировки и разблокировки паролей (-1 и -u);

- установки максимального срока службы пароля в днях (-x);

- установки минимального срока службы пароля в днях (-n);

- установки срока предупреждения о готовящемся прекращении действия пароля в днях (-w);

- установки временного интервала между прекращением срока службы пароля и блокировкой пользовательского счета в днях (-i).

Примеры:

passwdpetrov-14. Выдаст запрос на ввод нового пароля для пользователя petrov-14. passwdpetrov-14 -nl -x2 -wl. Установит выбранные параметры пользователю petrov-14.

Команда: groupadd.

Формат: groupadd{флаги} {имя группы}.

Действие: создание новой группы.

Флаги:

-g- явное указание GIDсоздаваемой группы.

Пример:

groupadd -g1050 group_642

Команда: chgrp(производное от changegroup).

Формат: chgrp{группа} {путь}.

Действие: изменяет группу-владельца каждого заданного файла на группу, которая может быть представлена как именем группы, так и её числовым идентификатором. Команда: chown(производное от change owner).

Формат: chown{владелец} {путь}.

Действие: с помощью данной команды можно изменить владельца файла или каталога.

Право на использование команды chown, как правило, закрепляется за системным администратором.

Изменение прав доступа

Команда: chmod- используется для установки прав доступа.

Формат: chmod{флаги} {путь}.

{путь} - перечень файлов и каталогов.

{ флаги} - установка прав доступа отдельно для пользователя, группы и прочих

(other).

Флаги:

Режимы могут задаваться символьным выражением и восьмеричным числом. Чтобы изменить права доступа к файлу, необходимо являться владельцем файла или системным администратором.

Символьная форма позволяет установить выборочные биты прав доступа и имеет

вид:

[ugoa] [+ - =] [rwxstugo],

где

-u- владелец;

-g- группа;

-o- прочие;

-a- все категории пользователей (по умолчанию);

‘+’ - разрешить доступ;

‘-’ - запретить доступ;

‘=’ - назначить доступ;

-г- чтение;

-w- запись;

-x- выполнение;

-s- смена идентификатора пользователя или группы;

-t- сохранение образа файла в области выгрузки;

-ugo- оставить текущие значения бита доступа.

Примеры:

$ chmod755 filelfile2 file3, где 755 соответствует маске rwxr-xr-x;

$ chmod u=rw file2;

$ chmod o-r file3.

man- это система управления справочной информацией по операционной системе, языкам программирования, прикладным программам, файлам конфигурации и т.д.

Формат: man{название команды}.

Для большей части основных команд имеется русскоязычная документация (например: ls, chmod, chown, mkdir, mv, rm, rmdir, cp).

Rule Set Based Access Control (RSBAC)

RSBAC - гибкая, мощнаяибыстраяOpen Source (распространяемая по лицензииGNU GPL (GNU General Public License – Открытое лицензионное соглашение GNU)) системаконтролядоступавОСLinux.

Всё развитие проекта, независимо от правительств и больших компаний, и исходный код является оригинальной разработкой, выросшей из дипломной работы немецкого студента Амона Отта. Целью этого проекта является создание полностью бесплатной системы контроля доступа с уровнем максимальной защиты класса В1 (по классификации защищённости в «Оранжевой книге»).

ВосновеRSBAC лежитархитектураGFAC (Generalized Framework for Access Control Approach).

Уникальность её состоит в возможности одновременного использовании разных моделей доступа. GFAC предполагаетразделениесистемына 3 крупныхфункциональныхблока: AEF (Access Enforcement Facility), ADF (Access Decision Facility) иACI (Access Control Information). AEFявляется самой главной составляющей и обеспечивает абстрагирование системы контроля доступа от ядра. В современном ядре Linuxочень много системных вызовов (свыше 200). AEFтранслирует их примерно в 30 видов запросов на доступ. Модуль принятия решений ADFпроизводит опрос модулей реализующих свои модели доступа и возвращает ответ в стандартной форме (GRANTED, NOTGRANTED, DONOTCARE) обратно AEF. Последний обеспечивает возврат ответа в формате исходного системного вызова (либо пустой указатель или специальный код ошибки). Все перечисленные компоненты активно используют информацию от ACI- общего хранилища атрибутов объектов и субъектов системы.

База ACIв RSBACхранится между перезагрузками на диске в специальном каталоге, доступ в который имеет исключительно ядро, а в остальное время в оперативной памяти. RSBACпредставлен в виде модулей, каждый из которых реализует свою собственную модель защиты. Одновременное сочетание нескольких политик доступа позволяет добиться потрясающих результатов при минимальных затратах, т.к. каждая модель имеет определённые преимущества (сориентирована на особые задачи).

Все ненужные в данный момент модули могут быть отключены, а при необходимости загружены вновь. Если в поставке не обнаружилось нужной модели безопасности, можно сделать свою без пересборки ядра и перезагрузки системы. Таким образом, RSBACимеет отличную масштабируемость.

Все вносимые изменения «схватываются на лету», что позволяет производить локальные изменения политики безопасности без прерывания работы критичных приложений.

Протоколирование находится на самом высоком уровне - возможна «тонкая» настройка с точностью до пользователя, программы, системного вызова.

Любая система безопасности вносит ограничения в нашу деятельность, а серьёзная система вносит очень серьёзные ограничения. Дополнительные проверки и авторизации понижают производительность ядра, а такие вещи, как безопасное удаление, понижают скорость работы файловой системы. Всесилие суперпользователя (root) - одна из основных проблем безопасности. Поэтому в RSBACпоявился администратор безопасности (в дальнейшем офицер безопасности, SecurityOfficer, secoff). Оба (rootи secoff) не смогут влиять друг на друга и даже будут конкурировать за власть в системе. Администратор (root) сможет по-прежнему управлять системой в целом, производить настройки, заводить и удалять пользователей, ограничивать использование пользователями системных ресурсов. Офицер безопасности будет ограничивать всех пользователей (включая root) в доступе к тем или иным данным, в том числе и системным. С другой стороны, и администратор безопасности - всего лишь обычный пользователь и не может, например, создавать пользователей.

Объекты и субъекты доступа в RSBAC

Объекты RSBAC

RSBACразграничивает доступ от активных объектов (субъект) к пассивным объектам (просто объект). Один объект, в зависимости от типа доступа, может представать в обеих ролях. Субъектом всегда является процесс, действующий со стороны пользователя с определёнными атрибутами. Объект в RSBACназывается Целью (Target). Основные типы объектов представлены в таблице 1.

Таблица 1 - Основные типы объектов RSBAC

FILE Файл
DIR Каталог
SCD System Control Data: системные данные, такие как имя машины, системный журнал
USER Пользователь как объект
PROCESS Процесс как объект
FD Файловый дескриптор
DEV Устройство
IPC Объект IPC: семафоры, разделяемая память и т.д.
NONE Пустой объект

 

 

Запросы RSBAC

Перед тем как будет разрешён доступ к объекту, производится запрос к средствамADF. Доступ разрешается или запрещается в зависимости от типа запроса и цели. Основные запросы RSBAC:

ADD_TO_KERNEL- добавить модуль в ядро (для драйверов);

ALTER- изменить контрольную информацию для IPC;

APPEND_OPEN- открыть для добавления;

CHANGE_GROUP- сменить группу;

CHANGE_OWNER- сменить владельца;

CHDIR- сменить каталог;

CLONE- клонировать процесс;

CLOSE- запрос на закрытие;

CREATE- запрос на создание;

DELETE- запрос на удаление;

EXECUTE- запрос на запуск;

GET_PERMISSIONS_DATA - прочитатьправаUNIX;

GET_STATUS_DATA- получить информацию о файле (вызов stat()); LINK_HARD- сделать жёсткую ссылку;

MODIFY_ACCESS_DATA- модифицировать информацию о времени доступа к

файлу;

MODIFY_ATTRIBUTE- изменить атрибут RSBAC; MODIFY_PERMISSIONS_DATA- изменить права UNIX; MODIFY_SYSTEM_DATA- изменить системные данные;

MOUNT- выполнить операцию монтирования;

READ- произвести чтение;

READ_ATTRIBUTE- произвести чтение атрибута RSBAC;

READ_OPEN- открыть файл для чтения;

READ_WRITE_OPEN- открыть файл для чтения-записи; REMOVE_FROM_KERNEL- удалить модуль из ядра (для драйверов);

RENAME- переименовать;

SEARCH- произвести поиск;

SEND_SIGNAL- послать сигнал другим процессам;

SHUTDOWN- выключить/перезагрузить систему;

SWITCH_LOG- изменить параметры протоколирования RSBAC; SWITCH_MODULE- включить/выключить модуль;

TERMINATE- остановить процесс;

TRACE- трассировать процесс;

TRUNCATE- усечь файл;

UMOUNT- выполнить демонтирование;

WRITE- произвести запись;

WRITE_OPEN- открыть файл для записи.

Из всех существующих модулей рассмотрим только основные, применение которых решает подавляющее большинство задач по обеспечению безопасности системы:

AUTH(Authentification)

Этот модуль может быть рассмотрен как модуль поддержки для всех остальных модулей. Данный модуль контролирует смену владельцев для процессов (CHANGE_OWNER). Теперь процессы могут менять владельца только на конкретных разрешённых пользователей или некоторый набор пользователей (набор способностей). Оставлена возможность некоторым процессам вести себя как раньше в силу их особенностей (параметр «AuthMaySetuid»). К последним относится login- ему требуется производить смену на всех входящих в систему пользователей.

FF(FileFlags)

Эта модель позволяет быстро и просто настроить права на целые древа каталогов (только чтение, только запуск, только чтение и запуск ...) и отключить при необходимости наследование этих прав на определённые файлы (внутри каталога, настроенного только на чтение, могут быть файлы, в которые необходимо обеспечить запись). Очень удобна эта модель для создания замкнутой программной среды, в которой исполняемые программы и их библиотеки не подлежат изменению, а пользователи не могут запускать посторонние программы из своих домашних каталогов. Если возникнет необходимость обновления программного обеспечения, то администратор безопасности может временно снять ограничения.

Полный список прав:

no_execute- можно, например, назначить этот флаг на каталог /home, и тогда пользователи не смогут запускать самостоятельно собранные программы без ведома администратора безопасности;

secure_delete- применять к файлу безопасное удаление;

write_only- защита файла от чтения (можно применить для файлов журналов);

search_only- полезно только для каталогов: полное закрытие каталога от проникновения;

execute_only- только запуск;

read_only- только для чтения;

append_only- возможно только добавление;

no_mount- запрещает монтировать устройство;

add_inherited- снятие этого флага приведёт к отмене наследования для конкретного файла/каталога (по умолчанию установлен только этот атрибут);

no_delete_or_rename- защита от перемещения, удаления и переименования.

Флаги no_delete_or_renameи add_inheritedне могут быть унаследованы, они всегда должны быть установлены/сняты явно.

RC(RoleCompatibility)

В этой ролевой модели определяются RC-роли и RC-типы, а затем устанавливается, что может делать та или иная роль с тем или иным типом. Таким образом, создаётся некоторая абстрактная модель, которая затем привязывается к реальным пользователям, программам и файлам. Независимость модели от реальных субъектов и объектов позволяет производить мгновенную перенастройку политики безопасности быстрым переназначением ролей и/или типов. Интересной особенностью является возможность запускать программы с ролью, отличной от роли пользователя, производящего запуск. В результате, можно, например, произвести такие настройки, что прямой доступ к диску будут иметь только разрешённые программы, а все остальные пользователи системы (включая администратора) будут лишены такой возможности.

ACL(AccessControlLists)

Эта модель основана на списках контроля доступа. Количество возможных прав доступа по типам запросов (свыше 30) удовлетворит потребностям самого искушённого администратора; также, помимо возможности устанавливать права для пользователя и ACL-группы, возможно задание прав для RC-роли. Списки контроля доступа определяют, какой субъект (пользователь, роль RCили группа ACL) к какому объекту (какого типа объекта) может иметь доступ с каким запросом.

MAC(MandatoryAccessControl)

Модуль MACреализует модель мандатного разграничения доступа, предложенную в своё время Bellи LaPadula. Она описывает доступ активных объектов, называемых субъектами, к пассивным объектам, называемых объектами. Один объект, в зависимости от типа доступа, может представать в обеих ролях.

Выделяются отдельно множество объектов Oи множество субъектов S. Под объектами понимаются некие ресурсы системы, такие как файлы, каталоги, разделяемая память, каналы, файлы устройств. Субъекты - это пользователи и запускаемые ими процессы.

Субъекты пытаются получить доступ к объектам, а система защиты позволяет им это сделать или отказывает в доступе. Для принятия решения необходим некоторый критерий. Рассмотрим, что делается в мандатной модели в этих целях.

Каждому объекту и каждому субъекту назначается мандатная метка - уровень доступа (SecurityLevel), число Lи множество категорий M (MACCategories).

Необходимо иметь ещё так называемую матрицу доступа D, где на пересечении i-й строки и j-го столбца указано, какие права доступа имеет i-й субъект к j-му объекту.

Итак, в модель вносятся следующие правила:

- (ss-property): если субъект имеет право на запись или чтение к объекту, то принимается, что мандатная метка субъекта доминирует над мандатной меткой объекта;

- (ds-property): права на доступ объекта к субъекту берутся из матрицы доступа Dи только оттуда; это правило жёстко закрепляет связь матрицы доступа со всей моделью;

- (*-proprerty): если возникает ситуация, когда субъект открывает один объект для записи, а второй для чтения, причём метка второго объекта доминирует над меткой первого, то субъект получает отказ в доступе; данное правило позволяет исключить ситуацию перетекания информации от защищённого объекта к незащищённому.

Решение о доступе будет положительным, если мандатная метка субъекта доминирует над мандатной меткой объекта и положительно решение по (*-property).

Данная модель накладывает весьма жёсткие ограничения. Работать с ней не так легко, и не ориентированные на неё программы, скорее всего, будут почти всегда получать отказ.

Модулю MACпринадлежат следующие параметры:

- MACSecurityLevel- уровень секретности файла;

- MACCategories- множество категорий файла;

- MACTrustedforUsers- этот параметр позволяет указать, доверять ли другим пользователям и если да, то кому, т.е. доверенный пользователь может формально не иметь доступа, но при выставленном доверии файла к нему его все равно допустят.

Формат вывода данных об ошибках

Если запрос пользователя не разрешён, то в системном журнале появляются записи

вида:

Nov 30 18:29:38 localhost kernel: rsbac_adf_request(): request EXECUTE, pid 3719, ppid 3690, prog_name bash, uid 0, target_type FILE, tid Device 03:02 Inode 144405 Path /testing/exe, attr , value 0, result NOT_GRANTED by FF.

Данное сообщение означает, что процесс по имени bashс текущим uid0 (от имени root) попытался осуществить запуск (requestEXECUTE) исполняемого файла (Path /testing/exe) и модуль FFне позволил ему это сделать.

Практическая часть

Все рассматриваемые далее примеры выполняются от имени secoffпоскольку только он имеет все права для использования средств администрирования RSBAC. Администратор rootможет только просматривать установки, но не имеет прав на их изменение.

В оболочке администрирования RSBACвход в подменю и принятие внесённых изменений осуществляются нажатием Enter. Установка флагов производится нажатием клавиши «Пробел».

AUTH

Для того чтобы разрешить пользователю вход в систему, необходимо сделать следующее:

Запустить rsbac_fd_menu.

Ввести в строке «FDName» /bin/login. Добавить в подменю «AuthCapabilities» нового пользователя, чтобы он мог войти в систему. (Убедитесь, что пункт «AuthMaySetCap» установлен в значение 1 (On), а пункт «AuthMaySetuid» в значение 0 (Off).)

ACL

Для того, чтобы изменить права на файл или каталог всем пользователям, необходимо сделать следующее:

Запустить rsbac_fd_menu.

Ввести путь к каталогу testing. Перейти в подменю «ACLMenu».

Изменить «ChangeMask», сняв все запросы (нужно установить флаг на пункте “UnsetALL” и нажать Enter). Теперь надо установить только тот набор, который позволит любому делать только то, что нужно, к примеру, только читать файлы в директории, запретив все остальные действия. Список прав необходимо сформировать с помощью данных из системного журнала, в который записываются ошибки при попытке доступа к файлу, т.е. в соседних консолях необходимо параллельно пытаться осуществлять тот тип доступа к файлу/каталогу, который требуется, и просматривать системный журнал на предмет появления в нём записей о запрещении тех или иных запросов. Затем

возвращаетесь в консоль администрирования и добавляете эти права.

Если необходимо какому-либо пользователю назначить индивидуально дополнительные права (помимо тех, что были установлены в предыдущем пункте), тогда добавляем в подменю «AddACLEntry» (пункт «USER») пользователя (-лей). После этого немного ниже между двумя горизонтальными линиями появляется дополнительная запись с именем добавленного пользователя. Выделите его и нажмите Enter. Установите необходимый набор прав на запросы. (Будьте осторожны при изменении прав в маске администратора безопасности, чтобы не потерять возможность изменять права на объект!)

FF

Для того чтобы изменить атрибуты модуля FFу файла или каталога, необходимо сделать следующее:

Запустить rsbac_fd_menu.

Ввести путь к требуемому файлу/каталогу.

Выбрать пункт «FFFlags».

Отметить необходимые права.

Результирующее значение FFFlagsравняется сумме значений всех установленных атрибутов.

MAC

Запустите центральную программу администрирования rsbac_menu(открывается основное меню «MainMenu»). Перейдите в меню администрирования файлов («File/DirAttributes») и выберите файл, для которого требуется произвести настройки. Нам нужны только следующие параметры:

Пункт «MACSecurityLevel» - уровень секретности файла/каталога. Установите его, например, в 1 (confidential).

Пункт «MACCategories» - множество категорий файла/каталога. Установите несколько флагов.

Теперь если мы попытаемся открыть файл/каталог, то ничего не выйдет, даже если остальные модули RSBACи стандартные права Linuxпозволяют сделать это (они всё ещё продолжают действовать, как это было раньше (до установки системы RSBAC)). Чтобы получить возможность просмотреть файл/каталог, надо поднять уровень секретности пользователя, т.к. по умолчанию он самый минимальный.

Перейдите в меню управления пользователями («UserAttributes:Gotouserattributemenu»), затем в пункте «UserList: Chooseuserfromthelist» выберите пользователя.

Пункт «MACSecurityLevel» - уровень секретности пользователя. Пользователь может прочитать документы с уровнем не больше его собственного. Установите уровень секретности 2 (secret).

Пункт «MACCategories» - множество категорий доступа пользователя. Установите тот же набор флагов, что был установлен и для файла/каталога. В противном случае пользователь не получит доступа, поскольку не будут соблюдены все условия MACдля разрешения доступа.

Теперь пользователь сможет получить доступ к секретному файлу/каталогу, только когда он в следующий раз зайдёт в систему, т.е., чтобы проверить работу этого модуля, необходимо выполнить команду logoutили exitи снова войти в систему.

RC

Общее описание последовательности действий на примере.

Определяется RC-роль «пользователи» и RC-тип «домашний каталог», определяются права доступа для RC-ролей к RC-типам (так RC-роль «администратор системы» не имеет никакого доступа к RC-типу «домашний каталог», в то время как RC- роль «пользователь» имеет все необходимые права доступа к нему). Затем роли и типы привязываются к реальным пользователям и каталогам (RC-тип «домашний каталог» к /home).

Как только добавляется новый подтип цели FD(или иной другой), одновременно для него появляются соответствующие ACL-права во всех ролях, причём по умолчанию пустые. Теперь пользователи всех старых ролей не смогут читать файлы и каталоги нового подтипа.

Запустите rsbac_menu. Войдите в подменю «RCTypes». Выберите тип цели FD. Создайте новый тип «Stud_Work». Для этого выберите пункт «NewType» и нажмите Enter. В списке типов появится новый с цифрой в качестве имени. Выберите этот тип и нажмите Enter. Введите новое имя типа.

Создайтероль«Only Read Role». Для этого зайдите в меню «RCRoles». Далее выберите готовую роль «General_User», скопируйте её содержимое в новую роль (перейдите к пункту «CopyRole» и нажмите Enter- появляется подзапись с пометкой new;выберите её и нажмите два раза Enter). Назовите роль «OnlyReadRole» (пункт «Name»). Выберите пункт «TypeCompFD», затем «Stud_Work». Установите необходимые права. Выйдите в основное меню.

Также вам необходимо изменить права для типа «Stud_Work» пользователям rootи

secoff.

Для root:

Войдите в меню «RC Roles». Выберитероль«System Admin». Выберитепункт«Type Comp FD», затем«Stud_Work». Установите необходимые права. Здесь же выберите пункт «Chooserolefromlist».

Для secoff:

Выберите роль «RoleAdmin». Выберите пункт «TypeCompFD», затем «Stud_Work». Установите необходимые права.

Для остальных пользователей системы для RC-типа «Stud_Work» RC-роли «GeneralUser» установите права GET_PERMISSIONS_DATAи GET_STATUS_DATA.

Выберите раздел «UserAttributes», затем в пункте «UserList: Chooseuserfromthelist» выберите пользователя. В пункте «RCDefaultRole» установите новую роль пользователя.

Установите для каталога или файла новый FD-тип «Stud_Work» (раздел «File/DirAttributes», пункт «RCTypeFD»).

Порядок выполнения работы

1) Войдите в систему от имени администратора (логин: root, пароль: root_pas). Переключитесь в первую виртуальную консоль с помощью сочетания клавиш Alt+F1+Ctrl(для выхода из виртуального терминала используйте сочетание клавиш Alt+F7).

2) Войдите в систему от имени администратора (root) в первой свободной виртуальной консоли. Переключитесь на следующую консоль и войдите как офицер безопасности (логин: secoff, пароль: secoff_pas).

3) Зайдите от имени пользователя userв свободнойVC(логин: user, пароль: user_pas). Если вы не смогли войти, то просмотрите системный журнал, выясните, почему вход для пользователя запрещён и настройте для пользователя userвозможность входа в систему.

4) Создайте в корневом каталоге ( / ) новую директорию testот имени root. Создайте в ней текстовый файл text.txtодним из возможных способов (например, при помощи команды vitext.txt). Скопируйте в каталог testисполняемый файл dateиз каталога /binпод именем date. Просмотрите права на каталог test. Измените владельца каталога на user, просмотрите права на каталог (права на каталог должны быть в значении 755 или rwxr-xr-x). Создайте в корневом каталоге копию каталога testcименем test1 (при создании используйте опции -rи -p).

5) УстановитеFF Flags взначение 1 (read_only) и 64 (no_delete_or_rename) каталогу/test1. Проверьте работу атрибута read_only, попробовав создать новый файл в этом каталоге, скопировав в него файл. Так же проверьте атрибут no_delete_or_rename.

6) Установите FFFlagsатрибут 32 (no_execute) каталогу /testl. Попробуйте запустить из командной строки файл /testl/date.

7) Продемонстрируйте преподавателю проверку работы модуля. Прокомментируйте ошибки для модуля FFв системном журнале.

8) Средствами ACLустановите каталогу testправа для всех пользователей только на переход в каталог и просмотр его содержимого. Пользователю rootдобавьте свои индивидуальные права на каталог. Продемонстрируйте преподавателю работу установленного набора прав для каждого пользователя. После этого выполните действия текущего задания в обратном порядке, т.е. установите значения по умолчанию.

9) Средствами MACустановите на файл tеxtуровень секретности secretи несколько флагов МАС категорий. Попробуйте под пользователем userпереименовать файл text.txtв doc.txt. После этого выполните действия текущего задания в обратном порядке, т.е. установите значения по умолчанию. Попробуйте теперь переименовать файл text.txt. Продемонстрируйте преподавателю полученные результаты.

10) Средствами RCустановите пользователю userвсе права на каталог test. Разрешите только переход в каталог и просмотр его содержимого для root. Продемонстрируйте преподавателю проверку работы модуля RC, делая проверку по аналогии с проверкой в пунктах 8 и 9.

Контрольные вопросы










Последнее изменение этой страницы: 2018-06-01; просмотров: 275.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...