Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_СГTУ new v10.doc
Скачиваний:
148
Добавлен:
12.11.2019
Размер:
4.13 Mб
Скачать

5.2. Безопасность операционной системы windows

Операционная система Windows XP предоставляет средства единообразного контроля доступа к процессам, потокам, файлам, семафорам, окнам и другим объектам. Контролем доступа управляют два элемента: маркер доступа, который связан с каждым процессом, и дескриптор защиты, связанный с каждым объектом, для которого возможно межпроцессное взаимодействие [3].

Схема контроля доступа.

При входе пользователя система Windows XP использует для его аутентификации схему имя/пароль. Если пользователь успешно зарегистрирован, для него создается процесс, с которым ассоциируется маркер доступа. Этот маркер доступа, детали которого будут описаны далее, содержит идентификатор защиты (security ID — SID), по которому система безопасности идентифицирует данного пользователя. Когда начальный пользовательский процесс порождает какие-нибудь другие процессы, новый объект-процесс наследует тот же маркер доступа.

Маркер доступа имеет два предназначения.

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

  2. Наличие маркера доступа позволяет процессу в определенных рамках изменять свои характеристики безопасности, не влияя при этом на работу других процессов, запущенных от имени данного пользователя.

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

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

Когда приложение открывает ссылку на подлежащий защите объект, Windows XP проверяет, предоставляет ли дескриптор защиты объекта доступ пользователю, которому принадлежит приложение. Если проверка проходит, система Windows XP помещает предоставленные в результате права доступа в кэш.

Важным аспектом безопасности операционной системы Windows XP является концепция заимствования прав, упрощающая использование безопасности в среде клиент/сервер. Если клиент и сервер общаются между собой с помощью вызова удаленных процедур, сервер может временно принять параметры клиента, чтобы суметь оценить возможность доступа с правами клиента. После обработки обращения сервер возвращается к своему собственному состоянию.

Маркер доступа. На рис. 60, а показана общая структура маркера доступа, в который входят такие параметры.

  • Идентификатор защиты. Уникальным образом идентифицирует пользователя в рамках всех машин сети. Идентификатор защиты, как правило, соответствует регистрационному имени пользователя.

  • Идентификаторы защиты групп. Список групп, в которые входит пользователь. Группа — это просто набор идентификаторов пользователей, который идентифицируется при контроле доступа как группа. Каждая группа обладает собственным идентификатором защиты. Доступ к объекту можно определять на основе группового идентификатора защиты, персонального идентификатора защиты или их комбинации.

  • Привилегии. Список системных сервисов, важных для безопасности к которым может обратиться данный пользователь. Примером является создание маркера. Другой пример — назначение привилегий резервирования. Пользователям, обладающим этими привилегиями, разрешено пользоваться средствами создания резервных копий для резервного копирования файлов, которые им нельзя читать. Большинство пользователей не обладают никакими привилегиями.

  • Владелец по умолчанию. Если процесс создает другой объект, в данном поле указывается владелец нового объекта. Чаще всего пользователем нового процесса является пользователь родительского процесса. Однако пользователь может указать, что по умолчанию пользователем любого процесса, порожденного данным процессом, является идентификатор безопасности группы, к которой принадлежит пользователь.

  • Список контроля доступа по умолчанию. Это начальный список средств защиты, которые применяются к объекту, создаваемому данным пользователем. Впоследствии пользователь может изменить список контроля доступа любого объекта, которым он владеет или который принадлежит группе пользователя.

Идентификатор защиты (SID)

Идентификатор защиты групп

Привилегии

Флаги

Заголовок ACL

Пользователь по умолчанию

Владелец

Заголовок ACE

Список контроля доступа по умолчанию

Системный список контроля доступа (SACL)

Маска доступа

а) Маркер доступа

Список разграничительного контроля доступа (DACL)

Идентификатор защиты (SID)

б) дескриптор защиты

Заголовок ACE

Маска доступа

Идентификатор защиты (SID)

в) список контроля доступа

Рис.60. Структуры безопасности операционной системы Windows XP

Дескрипторы безопасности

На рис. 60. показана общая структура дескриптора защиты, который содержит в себе такие параметры.

Флаги. Определяют тип и содержимое дескриптора защиты. Флаги указывают на наличие (или отсутствие) системного списка контроля доступа и списка разграничительного доступа, на то, помещены ли эти списки в объект по умолчанию и какая адресация используется в указателях дескриптора: абсолютная или относительная. Относительные дескрипторы требуются для объектов, которые передаются по сети. Примером такого объекта является информация, передаваемая при удаленном вызове процедуры.

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

Системный список контроля доступа (System Access Control List — SACL). В этом списке указано, операции какого вида должны генерировать сообщения аудита. Чтобы выполнять операции чтения или записи с SACL какого-либо объекта, приложение должно иметь соответствующие привилегии в своем маркере доступа. Это нужно, чтобы предотвратить чтение несанкционированными приложениями системных списков контроля доступа (в результате чего они смогут избежать создания записей аудита), а также запись в них (что может привести к созданию слишком большого количества записей аудита, в которых затеряется запись о незаконной операции).

Список разграничительного контроля доступа (Discretionary Access Control List — DACL). Определяет, какие пользователи и группы могут получить доступ к данному объекту и для каких операций. Этот список состоит из записей контроля доступа (Access Control Entry — АСЕ).

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

Рассмотрим подробнее структуру списков контроля доступа, так как они лежат в основе средства контроля доступа Windows NT (рис. 61). Каждый список состоит из общего заголовка и переменного количества элементов контроля доступа. В каждом элементе указан индивидуальный или групповой идентификатор защиты, а также маска доступа, в которой определены права, которые должны быть предоставлены данному идентификатору защиты. При попытке процесса получить доступ к объекту диспетчер объектов исполняющей системы Windows NT считывает в маркере доступа индивидуальные и групповые идентификаторы защиты, а затем просматривает список разграничительного контроля доступа объекта. Если обнаружено совпадение (т.е. если найден элемент контроля доступа, идентификатор защиты которого совпадает с идентификатором защиты, обнаруженным в маркере доступа), значит, этот процесс обладает правами доступа, установленными маской доступа данного элемента контроля доступа. На рис. 61 показано содержимое маски доступа. В 16 младших значащих разрядах указываются права доступа, применяющиеся к объектам определенного типа. Например, в нулевом разряде объекта-файла задается доступ по чтению, а в нулевом разряде объекта-события задается доступ для запроса статуса события.

Рис. 61. Маска доступа

В 16 старших разрядах маски содержатся биты, применимые к объектам всех видов.

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

Разрешение на изменение владельца. Позволяет программе изменять владельца объекта. Иногда это оказывается полезным, так как владелец объекта всегда может менять защиту своего объекта (владельцу нельзя отказывать в доступе для записи параметров избирательного контроля доступа).

Разрешение на изменение списка избирательного контроля доступа. Позволяет приложению изменять DACL, изменяя таким образом защиту объекта.

Контроль чтения. Позволяет приложению обращаться к полям в дескрипторе защиты, в которых указан владелец данного объекта и его DACL.

Разрешение на удаление. Позволяет приложению удалять объект.

Кроме того, в старшей половине маски доступа содержатся общие права доступа четырех видов. С помощью этих битов легко устанавливать специфические права доступа к различным объектам других типов. Предположим, например, что приложению нужно создать объекты нескольких видов таким образом, чтобы пользователи имели права доступа по чтению ко всем объектам, даже если само понятие “чтение” несколько изменяется в зависимости от типа объекта. Если бы приложению нужно было защищать каждый объект каждого вида, не используя биты общего доступа, оно должно было бы для объектов каждого вида создавать свой элемент контроля доступа, а затем аккуратно передавать его в качестве параметра при создании каждого объекта. Удобнее создать один элемент контроля доступа, в котором была бы выражена общая концепция разрешения чтения, а затем просто применять этот элемент контроля доступа к каждому создаваемому объекту. В этом и состоит предназначение битов общего доступа. Перечислим эти биты:

Generic_all — позволяет осуществлять все виды доступа;

Generic_execute — позволяет запускать исполняемые файлы;

Generic_write — позволяет осуществлять доступ для записи;

Generic_read — позволяет осуществлять доступ для чтения.

Значения битов общего доступа также влияют на стандартные типы доступа. Например, для файлового объекта бит Generic_read отображается в стандартные биты Read control и Synchronize, а также в специфические биты File Read Data, File_Read_Attributes и File_Read_EA.

Два оставшихся бита маски доступа имеют специальное значение. Бит Access System Security позволяет изменять контроль аудита и аварийного сигнала данного объекта. Однако недостаточно установить этот бит в элементе контроля доступа для идентификатора защиты. Кроме того, в маркере доступа процесса, обладающего этим идентификатором защиты, должна быть разрешена соответствующая привилегия.

Бит Maximum_Allowed — это не совсем бит доступа. Он изменяет алгоритм, по которому Windows NT сканирует список выборочного контроля доступа данного идентификатора безопасности. Обычно Windows NT просматривает список выборочного контроля доступа, пока не дойдет именно до того элемента контроля доступа, который предоставляет (бит установлен) или запрещает (бит не установлен) запрашиваемый процессом доступ, или пока она не дойдет до конца списка (в этом случае доступ запрещен). Бит Maximum_Allowed позволяет владельцу объекта определять набор прав доступа, представляющий собой максимум того, что может быть позволено данному пользователю. Предположим, что у приложения нет информации обо всех выполняемых над объектом операциях, разрешение на которые ему нужно будет просить на протяжении сеанса работы. При выполнении запроса возможны ситуации:

  1. Попытка открыть объект для всех возможных видов доступа. Недостаток этого подхода состоит в том, что в доступе может быть отказано, даже если приложение обладает всеми правами доступа, которые нужны для этого сеанса.

  2. Открытие объекта только для определенных видов доступа. При этом в объекте для каждого типа запроса открывается новый дескриптор. В большинстве случаев этот метод является предпочтительным, потому что при его использовании не бывает отказов в доступе без необходимости и не предоставляется больше доступа, чем нужно. Однако он требует дополнительных накладных расходов.

  3. Попытка открыть объект для доступа, осуществляемого в такой мере, в какой это позволяет идентификатор защиты. Преимущество такого метода в том, что пользователь не получит "искусственного" отказа в доступе. Однако при этом приложение может иметь больший доступ, чем требуется. Эта ситуация может скрывать имеющиеся в приложении ошибки.

Важная особенность системы безопасности операционной системы W2K состоит в том, что приложение может использовать структуру безопасности этой операционной системы для объектов, заданных пользователем и при реализации внешних файловых систем.