Разграничение доступа к данным в ос windows 2000
Причинами таких воздействий могут быть:
— отказы и сбои аппаратуры;
— помехи на линии связи от воздействий внешней среды;
— ошибки человека как звена системы;
— системные и системотехнические ошибки разработчиков;
— структурные, алгоритмические и программные ошибки;
Преднамеренные угрозы связаны с действиями человека, причинами которых могут быть определенное недовольство своей жизненной ситуацией, сугубо материальный интерес или простое развлечение с самоутверждением своих способностей, как у хакеров, и т.д.[12]
Нет никаких сомнений, что на предприятии произойдут случайные или преднамеренные попытки взлома сети извне. В связи с этим обстоятельством требуется тщательно предусмотреть защитные мероприятия.
Для вычислительных систем характерны следующие штатные каналы доступа к информации:
— терминалы пользователей, самые доступные из которых это рабочие станции в компьютерных классах;
— терминал администратора системы;
— терминал оператора функционального контроля;
— средства отображения информации;
— средства загрузки программного обеспечения;
— средства документирования информации;
— внешние каналы связи.
Принято различать пять основных средств защиты информации:
6.1. Анализ возможностей системы разграничения доступа Windows 2000 Advanced Server
Windows 2000 Advanced Server имеет средства обеспечения безопасности, встроенные в операционную систему. Ниже рассмотрены наиболее значимые из них.
6.1.1. Слежение за деятельностью сети
Windows 2000 Server дает много инструментальных средств для слежения за сетевой деятельностью и использованием сети. ОС позволяет просмотреть сервер и увидеть, какие ресурсы он использует; увидеть пользователей, подключенных к настоящему времени к серверу и увидеть, какие файлы у них открыты; проверить данные в журнале безопасности; записи в журнале событий; и указать, о каких ошибках администратор должен быть предупрежден, если они произойдут. [3]
6.1.2. Начало сеанса на рабочей станции
Всякий раз, когда пользователь начинает сеанс на рабочей станции Windows 98, экран начала сеанса запрашивает имя пользователя, пароль и домен. Затем рабочая станция посылает имя пользователя и пароль в домен для идентификации. Сервер в домене проверяет имя пользователя и пароль в базе данных учетных карточек пользователей домена. Если имя пользователя и пароль идентичны данным в учетной карточке, сервер уведомляет рабочую станцию о начале сеанса. Сервер также загружает другую информацию при начале сеанса пользователя, как например установки пользователя, свой каталог и переменные среды.
По умолчанию не все учетные карточки в домене позволяют входить в систему. Только карточкам групп администраторов, операторов сервера, операторов управления печатью, операторов управления учетными карточками и операторов управления резервным копированием разрешено это делать.
Для всех пользователей сети предприятия предусмотрено свое имя и пароль.
6.1.3. Учетные карточки пользователей
Каждый клиент, который использует сеть, должен иметь учетную карточку пользователя в домене сети. Учетная карточка пользователя содержит информацию о пользователе, включающую имя, пароль и ограничения по использованию сети, налагаемые на него. Имеется возможность также сгруппировать пользователей, которые имеют аналогичные ресурсы, в группы; группы облегчают предоставление прав и разрешений на ресурсы, достаточно сделать только одно действие, дающее права или разрешения всей группе.
Таблица 6.1 показывает содержимое учетной карточки пользователя.
Содержимое учетной карточки.
Учетная карточка пользователя.
Элемент учетной карточки.
Часы начала сеанса
Уникальное имя пользователя, выбирается при регистрации.
Полное имя пользователя.
Часы, в течение которых пользователю позволяется входить в систему. Они влияют на вход в систему сети и доступ к серверу. Так или иначе, пользователь вынужден будет выйти из системы, когда
его часы сеанса, определенные политикой безопасности, истекут
Дата истечения срока
Имена рабочих станций, на которых пользователю позволяется работать. По умолчанию пользователь может использовать любую рабочую станцию, но возможно введение ограничений.
Дата в будущем, когда учетную карточку автоматически исключают из базы, полезна при принятии на работу временных служащих
Учетная карточка пользователя.
Элемент учетной карточки.
Сценарий начала сеанса
Тип учетной карточки
Каталог на сервере, который принадлежит пользователю; пользователь управляет доступом к этому каталогу.
Пакетный или исполняемый файл, который запускается автоматически, когда пользователя начинает сеанс.
Файл, содержащий запись о параметрах среды рабочего стола (Desktop) пользователя, о таких, например, как сетевые соединения, цвета экрана и установочные параметры, определяющие, какие аспекты среды, пользователь может изменить.
Тип учетной карточки — глобальный или локальный.
6.1.4. Журнал событий безопасности
Windows 2000 Server позволяет определить, что войдет в ревизию и будет записано в журнал событий безопасности всякий раз, когда выполняются определенные действия или осуществляется доступ к файлам. Элемент ревизии показывает выполненное действие, пользователя, который выполнил его, а также дату и время действия. Это позволяет контролировать как успешные, так и неудачные попытки каких-либо действий.
Журнал событий безопасности для условий предприятиа является обязательным, так как в случае попытки взлома сети можно будет отследить источник.
Таблица 6.2 включает категории событий, которые могут быть выбраны для ревизии, а также события покрываемые каждой категорией.
Организация контроля доступа в операционных системах Windows 2000/XP
Описанный выше обобщенный механизм доступа к ресурсам имеет в каждой операционной системе свои особенности.
Система управления доступом в ОС Windows 2000/XP отличается высокой степенью гибкости, которая достигается за счет большого разнообразия субъектов и объектов доступа, а также детализации операций доступа.
Для разделяемых ресурсов в Windows 2000/XP применяется общая модель объекта, который содержит такие характеристики безопасности, как набор допустимых операций, идентификатор владельца, список управления доступом. Объекты создаются для любых ресурсов в том случае, когда они становятся разделяемыми. Характеристики объектов делятся на две части – общую часть, состав которой не зависит от типа объекта, и индивидуальную, определяемую типом объекта.
Для системы безопасности ОС Windows на основе технологии NT характерно наличие большого количества встроенных субъектов доступа – как отдельных пользователей (Администратор, Гость), так и групп (Администраторы, Гости, Пользователи, Опытные пользователи, Операторы архива и др.). Смысл этих встроенных пользователей и групп состоит в том, что они наделены некоторыми правами, облегчая администратору работу по созданию эффективной системы разграничения доступа.
При добавлении нового пользователя администратору остается только решить, к какой группе или группам отнести этого пользователя. При этом администратор может создавать новые группы, а также добавлять права к встроенным группам для реализации собственной политики безопасности, но во многих случаях встроенных групп вполне достаточно.
В операционных системах Windows 2000/XP реализованы три класса операций доступа, которые отличаются типом субъектов и объектов, участвующих в этих операциях.
· Права – определяются для субъектов типа группа на выполнение некоторых системных операций: установку системного времени, архивирование файлов, дефрагментация диска, выключение компьютера и т.п. В этих операциях участвует особый объект доступа – операционная система в целом. Именно права отличают одну встроенную группу пользователей от другой. Некоторые права у встроенной группы являются также встроенными – их у данной группы нельзя удалить. Остальные права встроенной группы можно удалять или добавлять.
· Возможности пользователей определяются для отдельных пользователей или групп на выполнение действий, связанных с формированием их операционной среды, например, изменение состава главного меню программ, возможность пользоваться пунктом меню Выполнить и т.п. За счет уменьшения набора возможностей, которые по умолчанию доступны пользователю, администратор может «заставить» пользователя работать с той операционной средой, которую администратор считает наиболее подходящей и ограждающей пользователя от возможных ошибок. Реализуются возможности, как правило, в домене при помощи механизма групповых политик безопасности.
· Разрешения– это множество операций, которые могут быть определены для субъектов всех типов по отношению к объектам любого типа. Разрешения предоставляются и аннулируются владельцем объекта (или администратором). Разрешения доступа к файлам и каталогам реализуются операционной системой только при использовании файловой системы NTFS.
Права и разрешения, данные группе, автоматически предоставляются ее членам, позволяя администратору рассматривать большое количество пользователей как единицу учетной информации и минимизировать свои действия.
Возможности в виде групповых политик безопасности распространяются только на специальные организационные единицы – подразделения, в состав которых могут входить как пользователи, так и компьютеры. На группы пользователей действие групповых политик безопасности не распространяется. Групповая политика для пользователя определяет его возможности работы на рабочих станциях домена. Групповая политика для компьютера определяет возможности работы на нем пользователей домена.
Групповая политика безопасности состоит из набора параметров безопасности. Конкретный параметр безопасности может реализовывать одну из трех политик: политика включена, политика отключена и политика не задана.
Подразделения с разными групповыми политиками безопасности можно вкладывать друг в друга. При этом параметры безопасности, заданные в групповой политике внутренней (дочерней) организационной единицы переопределяют соответствующие параметры безопасности внешнего подразделения (кроме параметров, для которых в групповой политике дочернего подразделения политика не задана).
Разрешения на доступ к файлам и каталогам при использовании файловой системы NTFS бывают индивидуальные и основные. Индивидуальные разрешения относятся к элементарным операциям над файлами и каталогами, а основные разрешения являются объединением нескольких индивидуальных разрешений.
На рис. 2.14 приведен интерфейс утилиты назначения основных разрешений пользователям и группам пользователей на примере каталога wincmd.
Рис. 2.14. Интерфейс назначения разрешений на файлы и каталоги
Следует отметить существование в операционной системе групп пользователей SYSTEM и СОЗДАТЕЛЬ-ВЛАДЕЛЕЦ, которых нет в явном виде в числе локальных пользователей и групп пользователей в консоли Управление компьютером, но для которых тоже можно задать набор разрешений.
В файловой системе NTFS версии 5, используемой в операционных системах Windows 2000/XP, имеется 6 основных разрешений на каталог и 5 основных разрешений на файл.
В табл. 2.5 приведены наборы индивидуальных разрешений для всех вариантов основных разрешений.
Разграничение доступа к объектам в операционной системе Windows
Для разграничения доступа субъектов к объектам КС в защищенных версиях операционной системы Windows используется дискреционное управление доступом (см. парагр. 1.4). С каждым объектом разграничения доступа связывается дескриптор безопасности SD (security descriptor), содержащий следующую информацию:
- • идентификатор безопасности (SID) владельца объекта;
- • идентификатор безопасности первичной группы владельца (в Windows это поле не используется в алгоритме проверки прав доступа субъекта к объекту);
- • дискреционный список контроля доступа (discretionary access control list — DACL);
- • системный список контроля доступа (system access control list — SACL).
Список SACL управляется администратором системы и будет рассмотрен в парагр. 2.4. Список DACL предназначен для идентификации пользователей и групп, которым предоставлен или запрещен определенный тип доступа к объекту. Этот список редактируется владельцем объекта, но и члены группы администраторов по умолчанию имеют право на смену разрешений на доступ к любому объекту, которое может быть у них отнято владельцем объекта.
Каждый элемент списка DACL (access control entry — АСЕ) определяет права доступа к объекту одного пользователя или группы. Каждый АСЕ содержит следующую информацию:
- • идентификатор безопасности SID субъекта, для которого определяются права доступа;
- • маску доступа (access mask — AM), которая специфицирует контролируемые данным АСЕ права доступа;
- • тип АСЕ;
- • признак наследования прав доступа к объекту, определенных для родительского объекта.
Элементы списка DACL могут быть двух типов — элементы, разрешающие специфицированные в них права доступа (Access- allowed АСЕ), и элементы, запрещающие определенные в них права доступа (Access-denied АСЕ). Элементы для запрещения субъектам использования определенных прав доступа должны размещаться в «голове» списка, до первого из элементов, разрешающих использование субъектом тех или иных прав доступа.
Право доступа субъекта к объекту означает возможность обращения субъекта к объекту с помощью определенного метода (типа) доступа. В операционной системе Windows различаются специальные, стандартные (общие) и родовые (generic) права доступа к объектам. Специальные права доступа определяют возможность обращения к объекту по свойственному только данной категории объектов методу — чтение данных из объекта, запись данных в объект, чтение атрибутов объекта, выполнение программного файла и т. д. Стандартные права доступа определяют возможность доступа к объекту по методу, применимому к любому объекту, — изменение владельца объекта, изменение списка DACL объекта, удаление объекта и т. д.
Каждое из родовых прав доступа представляет собой комбинацию специальных и стандартных прав и предоставляет возможность обращения к объекту с помощью некоторого набора методов доступа. Определены следующие родовые права доступа:
- 1. Для файлов и папок:
- • полный доступ (включает в себя все специальные и стандартные разрешения);
- • изменение (все разрешения, кроме «Удаление подпапок и файлов», «Смена разрешений» и «Смена владельца»);
- • чтение и выполнение (включает разрешения на «Обзор папок (выполнение файлов)», «Содержание папки (чтение данных)», «Чтение атрибутов», «Чтение дополнительных атрибутов», «Чтение разрешений», «Синхронизация»);
- • список содержимого папки (только для папок); включает в себя те же разрешения, что и «Чтение и выполнение», но они наследуются по-разному. Разрешение «Список содержимого папки» наследуется только папками, но не файлами, и отображается только при просмотре разрешений на доступ к папкам. Разрешение «Чтение и выполнение» наследуется как файлами, так и папками, и всегда отображается при просмотре разрешений на доступ к файлам или папкам;
- • чтение (включает в себя право на «Содержание папки (чтение данных)», «Чтение атрибутов», «Чтение дополнительных атрибутов», «Чтение разрешений», «Синхронизацию»);
- • запись (включает в себя разрешения «Создание файлов (запись данных)», «Создание папок (дозапись данных)», «Запись атрибутов», «Запись дополнительных атрибутов», «Чтение разрешений», «Синхронизацию»).
Специальное право на «Обзор папок» предполагает возможность перемещения по структуре папок в поисках других файлов или папок, даже если пользователь не обладает разрешением на доступ к просматриваемым папкам. Право на «Содержание папки» дает возможность просмотра имен файлов и подпапок, содержащихся в папке. Это разрешение относится только к содержимому данной папки и не означает, что имя самой этой папки также должно включаться в список.
Специальное право «Выполнение файлов» разрешает или запрещает запуск программ. Разрешение «Обзор папок» для папки не означает автоматическую установку разрешения «Выполнение файлов» для всех файлов в этой папке. Право на «Запись данных» разрешает или запрещает внесение изменений в файл и запись поверх имеющегося содержимого. Право на «Дозапись данных» разрешает или запрещает внесение данных в конец файла, но не изменение, удаление или замену имеющихся данных.
Для разделов реестра стандартное право на смену разрешений для него именуется «Запись ОАС». Общее право «Синхронизация» (для разделов реестра именуется «Уведомление») разрешает или запрещает ожидание различными потоками объектов и синхронизацию их с другими потоками, которые могут занимать их. Это разрешение применимо только к программам, выполняемым в многопоточном режиме с несколькими процессами. Стандартное право на «Удаление» разрешает или запрещает удаление объекта.
Стандартным правом «Смена владельца» обладают только члены группы администраторов (это разрешение корреспондирует с соответствующей привилегией, см. парагр. 2.2).
Процесс преобразования родового права доступа к объекту в набор специальных и стандартных прав называется отображением права доступа. Преимуществом родовых прав доступа является то, что при их установке владелец объекта может ничего не знать об особенностях этого типа объектов (например, владелец может не знать, что чтение данных из объекта и чтение его атрибутов реализуются с помощью разных методов доступа).
При попытке доступа к объекту субъект может запросить предоставить ему максимально возможные для него права доступа, указав в качестве маски доступа константу MAXIMUM_ ALLOWED. В этом случае субъект может открыть объект без детального анализа определенных для него прав доступа, который будет выполняться операционной системой в процессе проверки конкретных прав доступа субъекта к объекту. Маска доступа MAXIM UMALLOWED не может естественно использоваться в элементах DACL.
Маска доступа, содержащаяся в элементе DACL, представляет собой значение длиной 32 бита. Первые 16 битов определяют специальные права доступа, биты с 16 до 23 — стандартные права доступа, бит 24 — право ACCESSJSYSTEMSECURITY (см. парагр. 2.4), бит 25 — право MAXIMUM ALLOWED, биты 26 и 27 зарезервированы для дальнейшего использования и биты с 28 по 31 определяют родовые права доступа, отображаемые в специальные и стандартные права при попытке доступа к объекту.
Маркер доступа субъекта, обращающегося к некоторому объекту КС, поступает в локальную службу безопасности LSA (см. рис. 2.1). От LSA маркер доступа поступает к монитору безопасных ссылок (security reference monitor — SRM), который просматривает DACL из дескриптора безопасности SD соответствующего объекта и принимает решение R о предоставлении доступа субъекту или отказе в доступе (рис. 2.10). Получив от SRM результат R, LSA передает его субъекту, запросившему доступ к объекту.
При проверке прав доступа субъекта к объекту монитором безопасных ссылок строятся две маски — требуемых и разрешенных прав доступа (desired access mask и granted access mask).
Рис. 2.10. Проверка прав доступа к объекту
В первой маске установлены биты, соответствующие запрашиваемым субъектом видам доступа. Во второй маске все биты первоначально сброшены.
Монитор безопасных ссылок использует следующий алгоритм проверки запрошенных субъектом прав доступа к объекту:
- 1. Если в дескрипторе безопасности объекта нет DACL, то биты в маске разрешенных прав доступа устанавливаются в соответствии с маской требуемых прав и проверка завершается. Субъект получает все запрошенные им права доступа.
- 2. Если маска требуемых прав пуста, то проверка завершается, а попытка доступа субъекта отклоняется.
- 3. Если в маске требуемых прав включен бит ACCESS_ SYSTEM SECURITY, то маркер доступа проверяется на наличие у субъекта права «Управление аудитом и журналом безопасности». Если это право у субъекта есть, то данный бит сбрасывается в маске требуемых прав и устанавливается в маске разрешенных прав.
- 4. Если в маске требуемых прав установлены биты «Чтение разрешений» «Смена разрешений» или «Смена владельца», то идентификатор безопасности субъекта сравнивается с SID владельца из дескриптора безопасности объекта. При совпадении данные биты сбрасываются в маске требуемых прав и устанавливаются в маске разрешенных прав.
- 5. Если АСЕ содержит только унаследованные от родительского объекта разрешения, то он пропускается.
- 6. Если SID из маркера доступа субъекта не совпадает с идентификатором безопасности, содержащимся в элементе АСЕ списка контроля доступа к объекту, то АСЕ пропускается.
- 7. Если в элементе АСЕ запрещается доступ к объекту для субъекта с данным SID, то сравниваются маска требуемых прав и маска доступа, определенная в АСЕ. Если при сравнении находится хотя бы один общий метод доступа, то все биты в масках требуемых и разрешенных прав сбрасываются, а попытка доступа субъекта к объекту отклоняется.
- 8. Если в элементе АСЕ разрешается доступ к объекту для субъекта с данным SID, то также сравниваются маска требуемых прав и маска доступа, определенная в АСЕ. Если все или часть битов совпадают, то соответствующие биты сбрасываются в маске требуемых прав и устанавливаются в маске разрешенных прав.
- 9. Если часть битов маски требуемых прав еще установлены, то проверка продолжается и осуществляется переход к следующему АСЕ.
- 10. Если достигнут конец списка DACL из дескриптора безопасности объекта до того, как в маске требуемых прав будут сброшены все биты, то попытка доступа субъекта к объекту отклоняется. Все биты, которые были установлены в маске разрешенных прав, сбрасываются.
При проверке прав доступа к общему объекту, находящемуся на другом компьютере, данный алгоритм выполняется для субъекта и всех групп, в которые он входит. Таким образом, права доступа к общему объекту определяются минимальными из прав групп субъекта.
Из приведенного алгоритма ясно, что если DACL объекта пуст, то любой доступ к нему запрещен всем субъектам, за исключением владельца объекта, которому разрешены чтение и (или) изменение списка контроля доступа к объекту. Эта особенность может быть использована для защиты от несанкционированного доступа к объекту с конфиденциальной информацией со стороны запущенных пользователем программ (например, компьютерных игр), которые не должны иметь доступ к данному объекту, но содержат вредоносные закладки, пытающиеся прочитать и сохранить данные из объектов, чьим владельцем является запустивший их на выполнение пользователь. Для предотвращения подобной угрозы владелец объекта должен исключить из списка DACL данного объекта все элементы (или явно запретить любые права доступа к объекту для всех субъектов, включая самого себя). После этого любой запущенной им программе, содержащей закладку, будет отказано в доступе к объекту. Если требуется получить действительно необходимый доступ к данному объекту его владелец сможет снова внести изменения в DACL этого объекта.
К сожалению, рассмотренный способ защиты от несанкционированного доступа не предотвратит угрозы, исходящей из закладки, внедренной в программу, использующую информацию из защищаемого объекта (например, в бухгалтерскую программу).
Если у объекта КС нет дескриптора безопасности (например, у папок и файлов, размещенных на дисках под управлением файловой системы FAT), то любые пользователи и группы могут получить любые права доступа к данному объекту.
Среди объектов доступа в операционной системе Windows различаются контейнерные и неконтейнерные объекты. Контейнерный объект, например папка, имеет логические связи с другими объектами (вложенными папками и файлами), которые могут наследовать определенные права доступа от своего родительского объекта. По умолчанию изменение прав доступа к папке автоматически распространяется на права доступа к файлам этой папки, но не на вложенные в нее другие папки. При наследовании права доступа, установленные для дочерних объектов, могут добавляться к правам доступа, установленным для родительского объекта, или полностью заменяться ими.
Назначение дескрипторов безопасности вновь создаваемым объектам в защищенных версиях операционной системы Windows производится по следующим правилам:
- 1) на основе явно заданного субъектом и корректного по форме дескриптора безопасности (например, при вызове системных функций CreateFile или CreateDirectory при создании файлов или папок, при вызове системной функции RegCreateKeyEx при создании раздела реестра и т. п.);
- 2) на основе механизма наследования (если при создании объекта дескриптор безопасности не задается);
- 3) из маркера доступа субъекта, создающего объект (если наследование невозможно).
Рассмотрим более подробно механизм наследования прав доступа из дескриптора безопасности родительского объекта. Наследование дескриптором безопасности дочернего объекта элементов АСЕ из списка DACL дескриптора безопасности объекта-родителя зависит от следующих флагов, содержащихся в заголовке АСЕ:
- • CONTAINERINHERITACE — данный АСЕ наследуется контейнерным дочерним объектом;
- • OBJECT INHERIT ACE — данный АСЕ наследуется неконтейнерным дочерним объектом;
- • INHERIT ONLY ACE — данный АСЕ не используется при проверке прав доступа к родительскому объекту и используется только при наследовании разрешений дочерними объектами;
. NO_PROPAGATE_INHERIT_ACE — флаги OBJECT_ INHERIT ACE и CONTAINER_INHERIT_ACE сбрасываются при наследовании данного АСЕ.
Если в маске доступа АСЕ родительского объекта содержатся родовые права доступа, то перед наследованием данного АСЕ происходит их отображение.
В Windows возможно разграничение доступа к следующим объектам:
- • файлам и папкам на дисках под управлением файловой системы NTFS;
- • разделам реестра;
- • принтерам;
- • трубам (pipes);
- • процессам и потокам (нитям, threads);
- • файлам, отображенным на память (file-mapping objects);
- • маркерам доступа;
- • службам (services);
- • объектам состояния окна (window station objects) — буферу обмена, глобальным атомам, объектам рабочего стола;
- • рабочим столам;
- • объектам синхронизации (событиям, мьютексам, семафорам);
- • объектам задач.
Пользователи КС для назначения субъектам КС прав доступа к файлам и папкам на дисках с файловой системой NTFS, чьими создателями-владельцами они являются, должны применять средства Проводника Windows. Для этого (рис. 2.11) выполняются команды «Общий доступ и безопасность» или «Свойства» контекстного меню папки либо команда «Свойства» контекстного меню файла (в операционных системах Windows ХР и старше необходимо выключить режим «Использовать простой общий доступ к файлам» на вкладке «Вид» окна свойств папки).
Рис. 2.11. Редактирование разрешений
Рис. 2.12. Просмотр всех установленных разрешений
Кнопки «Добавить» и «Удалить» позволяют изменять количество элементов АСЕ в списке DACL, а в окне «Разрешения для . » можно устанавливать родовые права доступа к объекту конкретным пользователям и группам.
Нажатие кнопки «Дополнительно» позволяет отобразить окно настроек дополнительных параметров безопасности для объекта. На вкладке «Разрешения» (рис. 2.12) можно просмотреть и при необходимости изменить любые (в том числе специальные и стандартные) права доступа к объекту.
На вкладке «Владелец» (рис. 2.13) можно просмотреть и (при наличии соответствующей привилегии) изменить информацию о владельце объекта (записать в SID владельца в дескрипторе безопасности объекта SID нового владельца). На вкладке «Действующие разрешения» (рис. 2.14) можно проверить, какие права доступа к объекту установлены для конкретного пользователя или группы, выбирающиеся с помощью кнопки «Выбрать». Действующие разрешения определяются с учетом членства субъекта доступа в различных группах.
Установка прав доступа субъектов КС к установленным в системе принтерам, системным службам и разделам реестра производится аналогично с помощью функций панели управления и редактора реестра (regedit.exe). Отметим, что разграничение до-
Рис. 2.13. Просмотр информации о владельце
Рис. 2.14. Просмотр разрешений для выбранного субъекта
ступа к разделам реестра возможно при любой файловой системе, используемой на диске с реестром.
Заметим, что проводник и редактор системного реестра Windows правильно отображают список DACL объекта только при выполнении двух условий:
- • все элементы АСЕ, запрещающие доступ к объекту, находятся в «голове» списка DACL;
- • в элементах АСЕ, запрещающих доступ субъектов к объекту, запрещены все права доступа, а не избранные.
Если эти условия не соблюдаются, то системные программы Windows предлагают пользователю, обладающему соответствующими правами, изменить список DACL для выполнения указанных условий.
Приведем прототипы функций из набора Windows API, предназначенных для работы с дескрипторами безопасности объектов и проверки прав доступа субъектов к объектам:
DWORD GetNamedSecuritylnfo (LPTSTR pObjectName,
SE OBJECT TYPE ObjectType, SECURITY INFORMATION
Securitylnfo, PSID *ppsidOwner, PSID *ppsidGroup, PACL *ppDacl,
PACL *ppSacl, PSECURITY_DESCRIPTOR *ppSecurityDescriptor);
/* получение информации типа Securitylnfo (о владельце, его группе, DACL и (или) SACL) из дескриптора безопасности объекта pObjectName типа ObjectType (файл или папка, раздел реестра, принтер и т. п.) как значений параметров ppsidOwner (SID владельца объекта), ppsidGroup (SID его группы), ppDacl (DACL) и ppSacl (SACL); в ppSecurityDescriptor помещается указатель на дескриптор безопасности объекта */
DWORD GetSecuritylnfo (HANDLE handle, SE_OBJECT_TYPE ObjectType, SECURITYJNFORMATION Securitylnfo, PSID *ppsidOwner, PSID *ppsidGroup, PACL *ppDacl, PACL *ppSacl, PSECURITY_DESCRIPTOR *ppSecurityDescriptor); /* получение информации из дескриптора безопасности объекта, заданного не своим именем, а дескриптором handle */
DWORD SetNamedSecuritylnfo (LPTSTR pObjectName,
SE OBJECT TYPE ObjectType, SECURITYJNFORMATION Securitylnfo, PSID psidOwner, PSID psidGroup, PACL pDacl, PACL pSacl); /* установка значений в дескрипторе безопасности объекта с именем pObjectName */
DWORD SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType, SECURITYJNFORMATION Securitylnfo, PSID psidOwner, PSID psidGroup, PACL pDacl, PACL pSacl);
/* установка значений в дескрипторе безопасности объекта с дескриптором handle */
BOOL GetSecurityDescriptorOwner (PSECURITYDESCRIPTOR pSecurityDescriptor, PSID *pOwner, LPBOOL lpbOwnerDefaulted);
/* получение в *pOwner указателя на идентификатор безопасности владельца объекта, указатель на дескриптор безопасности которого записан в pSecurityDescriptor; в *lpbOwnerDefaulted помещается признак того, что владелец объекта был назначен по умолчанию */
BOOL GetSecurityDescriptorDacl (PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbDaclPresent, PACL *pDacl,
LPBOOL lpbDaclDefaulted); /* получение в *lpbDaclPresent признака существования дискреционного списка контроля доступа и в *pDacl — указателя на этот список из дескриптора безопасности объекта, указатель на который содержится в pSecurityDescriptor; в *lpbOwnerDefaulted помещается признак того, что DACL был назначен по умолчанию */
DWORD GetExplicitEntriesFromAcl (PACL pad, PULONG pcCountOfExplicitEntries, PEXPLICIT_ACCESS *pListOfExplicitEntries); /* получение в pListOfExplicitEntries массива
из *pcCountOfExplicitEntries элементов АСЕ, извлеченных из списка контроля доступа, на который указывает расі; функция возвращает ERROR_SUCCESS в случае успешного завершения */
DWORD SetEntriesInAcl (ULONG cCountOfExplicitEntries, PEXPLICIT_ACCESS pListOfExplicitEntries, PACL OldAcl, PACL *NewAcl); /* добавление cCountOfExplicitEntries элементов массива pListOfExplicitEntries в существующий DACL, на который указывает OldAcl, или в новый DACL, если 01dAcl=NULL; при успехе функция возвращает ERROR_SUCCESS, а в *NewAcl помещается указатель на буфер с новым DACL */
BOOL InitializeSecurityDescriptor (PSECURITYDESCRIPTOR pSecurityDescriptor, DWORD dwRevision); /* инициализация нового дескриптора безопасности в буфере, указатель на который будет записан в pSecurityDescriptor;
BOOL SetSecurityDescriptorDacl (PSECURITY_DESCRIPTOR pSecurityDescriptor, BOOL bDaclPresent, PACL pDacl, BOOL bDaclDefaulted); /* замещение дискреционного списка контроля доступа, на который указывает pDacl в дескрипторе безопасности, на который указывает pSecurityDescriptor; если bDacl Present=TRU Е, то происходит обновление DACL (иначе этот список удаляется из дескриптора безопасности); если bDaclDefaulted=TRUE, то DACL получен с помощью механизма умолчания (иначе он точно определяет права доступа субъектов) */
VOID BuildExplicitAccessWithName (PEXPLICIT_ACCESS pExplicitAccess, LPTSTR pTrusteeName, DWORD AccessPermissions, ACCESS MODE AccessMode, DWORD Inheritance); /* подготовка данных для ACE pExplicitAccess типа AccessMode: имени субъекта pTrusteeName, прав его доступа AccessPermissions и флагов наследования Inheritance */
DWORD GetEffectiveRightsFromAcl (PACL pad, PTRUSTEE pTrustee, PACCESS MASK pAccessRights); /* получение в pAccessRights прав доступа субъекта pTrustee из DACL расі */
VOID MapGenericMask (PDWORD AccessMask, PGENERIC_MAPPING GenericMapping); /* отображение родовых прав доступа из GenericMapping в маску специальных и стандартных прав доступа AccessMask */
К недостаткам разграничения доступа к объектам КС, реализованного в защищенных версиях операционной системы Windows, можно отнести то, что пользователи КС не имеют средств управления правами доступа субъектов к объектам других типов (процессам и потокам, рабочим столам и оконным объектам, маркерам доступа, объектам синхронизации и др.).
Теперь рассмотрим способы аппаратной защиты инициированных субъектами процессов в операционной системе Vinclows. Ядро и драйверы устройств выполняются в нулевом кольце защиты, а весь остальной системный код и приложения пользователей — в третьем кольце защиты. Первое и второе кольца защиты не используются. Каждый процесс получает адресное пространство размером 4 гигабайта, рассматриваемое как шесть совпадающих друг с другом сегментов — код, данные и стек для третьего кольца защиты, код, данные и стек для нулевого кольца защиты.
Наиболее вероятной ошибкой в программах, которая приводит к несанкционированному изменению данных, хранящихся в оперативной памяти по произвольному адресу, является использование указателей, не получивших начального значения и связанных с близкими к нулевым адресами памяти. Но в ОС Vin- с1оУ8 все адреса от -65 536 до 65 535 принадлежат зарезервированным зонам, оперативная память из которых не должна использоваться ни в какой ситуации. Поэтому выявление программных ошибок, связанных с неправильным использованием указателей, не является трудоемким. Еще одна зарезервированная зона адресов памяти предназначена для предотвращения переполнения адресного пространства процесса.
Адресное пространство процесса содержит также системную область адресов, обратиться к которой можно только из кода, содержащегося в нулевом кольце защиты. Включение системного пространства адресов в адресное пространство процесса позволяет упростить обработку аппаратных прерываний в коде, выполняющемся в третьем кольце защиты.
Оставшаяся часть адресного пространства процесса (помимо зарезервированных зон и области системных адресов) предназначена для кода и данных самого процесса. В эту же часть проецируется и выделенная процессу дополнительная оперативная память.
Таким образом, в операционной системе Vindows реализован подход, в соответствии с которым каждому процессу выделяется индивидуальное адресное пространство, которое аппаратно изолировано от адресных пространств других процессов. В этом случае, какой бы адрес оперативной памяти не использовался в процессе, невозможно обращение к памяти, выделенной другому процессу, так как одному и тому же значению адреса в разных адресных пространствах соответствуют различные физические адреса оперативной памяти компьютера.
Дополнительно используемый в Windows подход обеспечивает надежную защиту от случайных, вызванных ошибками в программах обращений процессов к памяти других выполняющихся системных и пользовательских приложений. Но, поскольку часть оперативной памяти должна быть разделяемой (проецироваться в адресные пространства различных процессов), сохраняется угроза преднамеренного несанкционированного доступа одного процесса к части адресного пространства другого процесса, относящейся к разделяемой памяти. Исключение возможности использования разделяемой памяти приведет к существенному усилению требований операционной системы к размеру оперативной памяти компьютера, а производительность КС значительно снизится.
В состав операционных систем Windows для рабочих станций, начиная с Windows ХР, включен персональный брандмауэр (Internet Connection Firewall), который блокирует непредусмотренные запросы на подключение к компьютеру из Интернета (т. е. этот персональный брандмауэр осуществляет фильтрацию только входящего трафика). Возможно создание исключений для некоторых программ, которым требуется свободное подключение к Интернету. При использовании другого межсетевого экрана персональный брандмауэр Windows должен быть отключен.
В состав серверных операционных систем Windows, начиная с Windows Server 2003, включен базовый брандмауэр, который может использоваться в интеграции с механизмом трансляции сетевых адресов (NAT). Вся информация об отправителях и получателях пакетов заносится в специальную таблицу, а весь входящий трафик сравнивается с содержанием этой таблицы. Пропускаются пакеты только тех соединений, которые были установлены хостами защищаемой корпоративной сети. Возможно разрешение входящих подключений к выбранным сетевым службам, например корпоративному Web-серверу.
В дополнение к динамически формируемым правилам фильтрации могут быть добавлены и статические, позволяющие регулировать сетевой трафик на основе информации об адресах и протоколах для входящих и исходящих пакетов. Для каждого такого правила (фильтра) определяется действие — принимать все пакеты, кроме тех, что отвечают указанным критериям, или отбрасывать все пакеты, кроме тех, которые соответствуют заданным критериям.