Содержание
Поскольку ОС UNIX с самого своего рождения задумывалась как многопользовательская операционная система, в ней всегда была актуальна проблема разделения доступа различных пользователей к файлам файловой системы. Схема безопасности, примененная в ОС UNIX, проста и удобна и одновременно достаточно мощна, что стала фактическим стандартом современных многопользовательских операционных систем.
Презентация 4-01: информационная безопасность
Информационная безопасность – меры по защите информации от неавторизованного доступа, разрушения, модификации, раскрытия и задержек в доступе. Основой информационной безопасности любой организации является политика безопасности.
Политика безопасности – это набор законов, правил и норм поведения, определяющих, как организация обрабатывает, защищает и распространяет информацию. Это активный компонент защиты, который включает в себя анализ возможных угроз и выбор мер противойдействия.
Важным элементом политики безопасности является управление доступом: ограничение или исключение несканкционированного доступа к информации и программным средствам. При этом используются два основных понятия: объект и субъект системы. Объектом системы мы будем называть любой её идентифицируемый ресурс (например, файл или устройство). Доступом к объекту системы – некоторую заданную в ней операцию над этим объектом (скажем, чтение или запись). Действительным субъектом системы назовем любую сущность, способную выполнять действия над объектами (имеющую к ним доступ). Действительному субъекту системы соответствует некоторая абстракция, на основании которой принимается решение о предоставлении доступа к объекту или об отказе в доступе. Такая абстракция называется номинальным субъектом. Например, студент МГТУ – действительный субъект, его пропуск в МГТУ – номинальный. Другим примером может служить злоумышленник, прокравшийся в секретную лабораторию с украденной картой доступа – он является действительным субъектом, а карта – номинальным (см. Рисунок 3.1, «Объект и субъект безопасности»).
Презентация 4-02: политика безопасности
Политика безопасности должна быть полной, непротиворечивой и рассматривать все возможности доступа субъектов системы к её объектам. Только соблюдение всех трех принципов гарантирует, что нарушить установленные правила (например, получить несанкционированный доступ к объекту) системными средствами невозможно. Если же предполагаемый злоумышленник воспользовался каким-нибудь внесистемным средством и смог получить статус номинального субъекта, к которому он не имеет отношения (например, подглядел чужой пароль и работает под чужим именем), никаких гарантий быть не может.
Полнота политики безопасности означает, что в ней должны быть отражены все существующие ограничения доступа. Непротиворечивость заключается в том, что решение об отказе или предоставлении доступа конкретного субъекта к конкретному объекту не должно зависеть от того, какими путями система к нему приходит. Третье требование, называемое также отсутствием недокументированных возможностей, должно гарантировать нам, что доступ не может быть осуществлен иначе как описанным в политике безопасности способом.
Политика безопасности включает в себя технические, организационные и правовые аспекты, в рамках этих лекций рассматривается только технический аспект.
Презентация 4-03: управление доступом
Существует несколько схем управления доступом, называемых моделями доступа. Рассмотрим самые известные из них:
Объектам и субъектам системы ставится в соответствие метка безопасности или мандат (например, гриф секретности). При этом метка безопасности субъекта описывает его благонадёжность, а метка безопасность объекта – степень закрытости информации. Доступ к объекту разрешён только субъектам с соответствующей или более сильной меткой.
Недостатком такой схемы можно считать слишком грубое деление прав, необходимость введения категорий доступа и т.п.. Также для данной модели доступа очень важно разработать механизм понижения секретности теряющих важность документов.
Все субъекты и объекты системы объединяются в таблицу, в строках которой находятся субъекты (активные сущности), а в столбцах – объекты (пассивные сущности), элементы же такой таблицы содержат перечисление прав, которыми субъект обладает в отношении данного объекта. Такая схема называется субъект-объектная модель.
Недостатками можно считать огромный размер таблицы и сложность администрирования в случае большого числа объектов и субъектов в системе.
Каждому объекту сопоставляется один субъект – владелец объекта. Владелец может по своему усмотрению давать другим субъектам или отнимать у них права на доступ к объекту. Если объект имеет несколько хозяев, они могут быть объединены общим субъектом – группой. Такая схема позволяет значительно сократить размер таблицы прав субъектов по отношению к объектам. Эта схема также называется субъект-субъектная модель.
Недостатком этой схемы является значительное облегчение управления доступом, что не позволяет простроить сложные отношения между субъектами и объектами.
Презентация 4-04: аутентификация и авторизация
Авторизация – это процесс определения того, имеет или не имеет некоторый субъект доступ к некоторому объекту. Авторизация может быть:
вопрос о доступе к объекту решается один раз, когда права задаются или изменяются, при этом пользователю ставится в соответствие некоторый номинальный субъект системы;
принятие решения о доступе производится при каждом обращении к объекту, часто это носит характер ограничения возможностей пользователя по объёму памяти и дискового пространства, времени работы и т.п..
Процессу авторизации всегда должен предшествовать процесс аутентификации. Аутентификация – это механизм сопоставления работающего пользователя системы некоторому номинальному субъекту. Как правило, при этом пользователю необходимо ввести пароль или предоставить секретный ключ.
Презентация 4-05: концепции безопасности UNIX
В операционной системе UNIX используется достаточно постая модель доступа, основанная на субъект-субъектной модели. В современных версиях UNIX помимо общей схемы можно использовать списки доступа. При этом реализуется статическая авторизация множественного доступа к объекту.
В UNIX роль номинального субъекта безопасности играет пользователь. Каждому пользователю выдается (обычно – одно) входное имя (login). Каждому входному имени соответствует единственное число, идентификатор пользователя (User IDentifier, UID). Это число и есть ярлык субъекта, которым система пользуется для определения прав доступа.
Каждый пользователь входит в одну или более групп. Группа – это образование, которое имеет собственный идентификатор группы (Group IDentifier, GID), объединяет нескольких пользователей системы, а стало быть, соответствует понятию множественный субъект. Значит, GID – это ярлык множественного субъекта, каковых у действительного субъекта может быть более одного. Таким образом, одному UID соответствует список GID.
Роль действительного (работающего с объектами) субъекта играет процесс. Каждый процесс снабжен единственным UID: это идентификатор запустившего процесс пользователя. Любой процесс, порожденный некоторым процессом, наследует его UID. Таким образом, все процессы, запускаемые по желанию пользователя, будут иметь его идентификатор. UID учитываются, например, когда один процесс посылает другому сигнал. В общем случае разрешается посылать сигналы «своим» процессам (тем, что имеют такой же UID).
Роль объекта в UNIX играют многие реальные объекты, в частности представленные в файловой системе: файлы, каталоги, устройства, каналы и т. п.. Каждый файл снабжён UID – идентификатором пользователя-владельца. Вдобавок у файла есть единственный GID, определяющий группу, которой он принадлежит.
Презентация 4-06: права доступа
На уровне файловой системы в UNIX определяется три вида доступа: чтение (read, r), запись (write, w) и использование (execution, x). Право на чтение из файла дает доступ к содержащейся в нем информации, а право записи – возможность ее изменять. При каждом файле имеется список того, что с ним может делать владелец (если совпадает UID процесса и файла), член группы владельцев (если совпадает GID) и кто угодно (если ничего не совпадает) (см. Рисунок 3.2, «Базовые права доступа в UNIX»). Такой список для каждого объекта системы занимает всего несколько байт.
Флаг использования трактуется по-разному в зависимости от типа файла. В случает простого файла он задаёт возможность исполнения файла, т.е. запуска программы, содержащейся в этом файле. Для директории – это возможность доступа к файлам в этой директории (точнее говоря, к атрибутам этих файлов – имени, правам доступа и т.п..).
Рассмотрим последовательность проверки прав на примере (см. Рисунок 3.3, «Последовательнось проверки прав доступа в UNIX»). Пусть файл имеет следующие атрибуты:
file.txt alice:users rw- r-- ---
Т.е. файл принадлежит пользователю «alice», группе «users» и имеет права на чтение и запись для владельца и только чтение для группы.
Презентация 4-07: последовательность проверки
Пусть файл пытается прочитать пользователь «bob». Он не является владельцем, однако он является членом группы «users». Значит, он имеет права на чтение этого файла.
Права записи в директорию трактуются как возможность создания и удаления файлов, а также измеение атрибутов файлов (например, переименование). При этом субъекту не обязательно иметь права на запись в эти удаляемые файлы.
Таким образом, из своего каталога пользователь может удалить любой файл. А если запись в каталог разрешена всем, то любой пользователь сможет удалить в нём любой файл. Для избежания этой проблемы был добавлен ещё один бит в права доступа каталога: бит навязчивости (sticky, t-бит). При его установке пользователь, имеющий доступ на запись в этот каталог, может изменять только собственные файлы.
Презентация 4-08: подмена идентификатора субъекта
В UNIX существует механизм, позволяющий пользователям запускать процессы от имени других пользователей. Это может быть полезным, если одному пользователю необходимо на время предоставлять права другого (например, суперпользователя).
Для разрешение подмены идентификатора пользователя применяется бит подмены идентификатора пользователя (set user id, suid-бит, s). Этот бит применяется совместно с битом исполнения (x) для обычных файлов. При установке этого бита на исполняемый файл процесс запускается от имени владельца, а не от имени запускаеющего пользователя (см. Рисунок 3.4, «Подмена идентификатора пользователя»).
Подмена идентификатора пользователя является потенциальной угрозой безопасности сиситемы и должена использоваться осторожно.
Ограниченность системы прав UNIX приводит к тому, что, к примеру, невозможно создать такое положение вещей, когда одна группа пользователей могла бы только читать из файла, другая – только запускать его, а всем остальным файл вообще не был бы доступен. Другое дело, что такое положение вещей встречается нечасто.
Со временем в различных версиях UNIX стали появляться расширения прав доступа, позволяющие устанавливать права на отдельные объекты системы. Поначалу это были так называемые флаги – дополнительные атрибуты файла, не позволяющие, например, переименовывать его или удалять из него информацию при записи (можно только дописывать). Флаги не устраняют главного недостатка, зато их легко организовать без изменения файловой системы: каждый флаг занимает ровно один бит.
Многие современные файловые системы UNIX поддерживают также списки доступа (ACL), с помощью которых можно для каждого объекта задавать права всех субъектов на доступ к нему.
На практике флаги или управление доступом использовать приходится нечасто. В большинстве случаев такая необходимость возникает в виде исключения – например, для временного уменьшения прав или для временного предоставления доступа (легко сделать с помощью ACL), а также при работе с очень важными файлами.
Презентация 4-09: суперпользователь
Пользователь root (он же суперпользователь) имеет нулевые UID и GID и играет роль доверенного субъекта UNIX. Это значит, что он не подчиняется законам, которые управляют правами доступа, и может по своему усмотрению эти права изменять. Большинство настроек системы доступны для записи только суперпользователю.
Как было сказано ранее (см. раздел «Беглый взгляд на архитектуру UNIX»), в UNIX существует уровень доступа ядра и уровень доступа системы. Суперпользователь работает на уровне доступа ядра, так что является по сути продолжением самой системы.
Многие команды должны исполняться только от имени суперпользователя, так как в них производится взяимодействие с частями ядра, отвечающими за взаимодействие с аппаратурой, права доступа и т.п.. Если же такие команды разрешается запускать простым пользователям, применяется рассмотренный выше механизм подмены идентификатора пользователя.
Системное администрирование в UNIX производится от имени пользователя root. При работе от этого имени следует быть очень осторожным: выполнение неверной команды может привести к краху системы и уничтожению информации. Поэтому даже администраторы никогда не работают в сеансе суперпользователя всё время, а переходят в режим суперпользователя только тогда, когда это действительно необходимо (например, с помощью команды su).
Презентация 4-10: вход пользователя в систему
В UNIX сеанс работы пользователя начинается с его аутентификации и заканчивается его выходом из системы. При входе в систему выполняется следующая последовательность действий (см. Рисунок 3.5, «Процесс входа в систему»):
При работе по сети роль getty исполняет сетевой демон, например ssh.
В некоторых современных UNIX-системах существуют расширения систем авторизации и аутентификации. Например, в Linux-системах этот механизм называется подключаемые модули аутентификации (Pluggable Authentication Modules, PAM). Эти средства выходят за рамки данных лекций.
Презентация 4-11: база данных пользователей
Все данные о пользователях UNIX хранит в файле /etc/passwd
в текстовом виде. Каждому пользователю соответствует одна строка, поля которой
разделяются двоеточиями:
входное имя:x:UID:GID:полное имя:домашний каталог:стартовый shell
Пример 3.1. Пример файла /etc/passwd
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/bin/false daemon:x:2:2:daemon:/sbin:/bin/false adm:x:3:4:adm:/var/adm:/bin/false ...
Каждый пользователь явно связан с одной из групп – это основная группа пользователя. Это сделано для того, чтобы каждый пользователь состоял хотя бы в одной группе. Все новые файлы, создаваемые этим пользователем, в качестве группы владельцев будут иметь его основную группу.
Из примера видно, что некоторые пользователи имеют «неправильные» командные оболочки, работа в которых невозможна. Это сделано специально для того, чтобы исключить возможность входа таких пользователей в систему.
Пароли на вход в систему пользователей в UNIX не хранятся в открытом виде,
хранятся только их хэши (набор байт, получаемый из пароля с помощью
односторонней функции). Даже если злоумышленник получит значение этого хэша, ему
придется подбирать пароль, применяя данную одностороннюю
функцию к различным словам и сравнивая со значением хэша. Часто хэши хранятся в
спациальном файле (например, /etc/shadow
), доступ к
которому разрешен только системе, так что перебор вообще не возможен.
Аналогичным образом информация о группах хранится в
файле /etc/group
. Каждой строке файла соответствует
информация о группе: её имя, числовой идентификатор и список пользователей,
входящих в эту группу.
Изменение информации о пользователях, также как и добавление новых пользователей, может производиться простым редактированием этого файла, однако более корректным способом является использование специальных утилит, которые рассматриваются далее.
Для добавления и удаления пользователей и групп существует набор команд: useradd, userdel, groupadd, groupdel. Эти команды доступны только суперпользователю и имеют единственный обязательный параметр: имя пользователя или группы.
С помощью команд usermod и groupmod можно изменять информацию в базах данных пользователей и групп. Эти команды также может выполнять только администратор системы.
Команда passwd позволяет простым пользователям изменять свой системный пароль, а суперпользователю – изменять пароль любого из пользователей системы.
Для изменения владельца файла или группы владельцев используются команды chown и chgrp. Из соображений безопасности спользовать эти команды может только суперпользователь.
Пользователь может изменять права доступа к своим файлам с помощью команды chmod.
Презентация 4-12: ограничения сеанса пользователя
В UNIX существует ряд динамических ограничений, накладываемых на процесс аутентификации пользователя и запущенные им программы. Ограничения можно разделить на следующие группы:
Вход пользователя в систему может быть ограничен видом терминала,
удалённым адресом (в случае сетевого входа в систему), временем работы.
Для задания этих ограничений
в некоторых UNIX-системах используется
файл /etc/login.access
Процессы пользователей могут быть ограничены по одному из следующих
параметром: объём используемой памяти, число одновременно открытых
файлов, число запускаемых процессов и т.п.. Для задания этих ограничений
в некоторых UNIX-системах используется
файл /etc/limits
.
Дисковые квоты позволяют ограничить объём используемого пространства жёсткого диска для каждого из пользователей системы. Для настройки данного ограничения необходима утилита quote, а также поддержка в выбранной файловой системе.
Ограничения действуют на протяжении всего сеанса работы пользователя.
Основой информационной безопасности любого предприятия является политика безопасности, которая включает в себя технические, организационные и правовые аспекты.
Основными элементами политики безопасности являются субъект, объект и отношения между ними. Выделяют ряд моделей доступа, среди которых маркерный доступ, списки пользователя (субъект-объектный доступ) и произвольное управление доступом (субъект-субъектный доступ).
В операционной системе UNIX субъектом является процесс пользователя, а объектом файл. Права группируются по владельцу объекта, группе владельцев и остальным и состоят из базовых прав: чтение, запись и исполнение, а также дополнительных прав (подмены субъекта и разделяемости каталога).
Аутентификация пользователя при входе в систему состоит в проверке пароля, соответствующего имени пользователя.
Информация о пользователях системы хранится в специальном
файле /etc/passwd
. Существует набор системных команд по
изменению базы данных пользователей и групп.
В UNIX можно устанавливать динамические ограничения на сеанс пользователя.
Ключевые термины:информационная безопасность, политика безопасности, объект, доступ, действительный субъект, номинальный субъект, модель доступа, мандатная модель, модель списков доступа, произвольное управление доступом, авторизация, аутентификация, пользователь, группа, права доступа в UNIX, sticky-бит, suid-бит, суперпользователь, сеанс работы, база данных пользователей, основная группа, дисковые квоты