Проблемы безопасности в Windows

 

Операционная система Windows NT была раз­работана так, чтобы соответствовать уровню С2 требований безопасности Мини­стерства обороны США – Оранжевой книги. Этот стандарт требует наличия у операционных систем определенных свойств, позволяющих относить данные системы к достаточно надежным для выполнения военных задач определенного рода. Хотя при разработке операци­онной системы Windows 2000 не ставилось особой цели соответствия требовани­ям уровня С2, она унаследовала множество свойств безопасности от NT, включая следующие.

1. Безопасная регистрация в системе с мерами предосторожности против по­пыток применения фальшивой программы регистрации.

2. Дискреционное управление доступом.

3. Управление привилегированным доступом.

4. Защита адресного пространства для каждого процесса.

5. Обнуление страниц перед выделением их процессу.

6. Аудит безопасности.

Рассмотрим кратко эти аспекты (ни один из них не встречается в Windows 98). Безопасная регистрация означает, что системный администратор может потре­бовать от всех пользователей наличия пароля для входа в систему. Программа, имитирующая регистрацию в системе, использовалась ранее на некоторых систе­мах злоумышленниками с целью выведать пароль пользователя. Такая программа запускалась в надежде, что пользователь сядет за компьютер и введет свое имя и пароль. Имя и пароль записывались на диск, после чего пользователю сообщалось, что в регистрации ему отказано. В операционной системе Windows 2000 подоб­ный обман пользователя невозможен, так как пользователь для входа в систему должен нажать комбинацию клавиш CTRL+ALT+DEL. Эта комбинация клавиш всегда перехватывается драйвером клавиатуры, который вызывает при этом настоящую программу регистрации. Пользовательский процесс не может сам перехватить эту комбинацию клавиш или отменить ее обработку драйвером.

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

Средства управления привилегированным доступом позволяют системному администрато­ру (суперпользователю) получать доступ к объекту, несмотря на установленные его владельцем разрешения доступа.

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

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

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

Рассмотрим основные понятия безопасности опера­ционной системы Windows 2000.

У каждого пользователя (и группы) операционной системы Windows 2000 есть идентификатор безопасности SID (Security IDentifier), по которому операцион­ная система отличает его от других пользователей. Идентификаторы безопаснос­ти представляют собой двоичные числа с коротким заголовком, за которым следу­ет длинный случайный компонент. Каждый SID должен быть уникален в пределах всей планеты. Когда пользователь запускает процесс, этот процесс и его потоки работают под идентификатором пользователя. Большая часть системы безопасно­сти спроектирована так, чтобы гарантировать предоставление доступа к каждому объекту только потокам с авторизованными идентификаторами безопасности.

У каждого процесса есть маркер доступа, в котором указывается SID и другие свойства. Как правило, он назначается при регистрации в системе процедурой winlogon. Структура маркера доступа показана на рис. 5.

 

Рис. 5. Структура маркера доступа

 

Заголовок маркера содержит некоторую админи­стративную информацию. По значению поля срока действия можно определить, когда маркер перестанет быть действительным, но в настоящее время это поле не используется. Поле Groups (группы) указывает группы, к которым принадлежит процесс. Поле DACL (DACL, Discretionary Access Control List — список разграничительного контроля доступа) представляет собой список управ­ления доступом, назначаемый объектам, созданным процессом, если не опреде­лены другие списки ACL. Идентификатор безопасности пользователя указывает пользователя, владеющего процессом. Ограниченные идентификаторы SID по­зволяют ненадежным процессам принимать участие в заданиях вместе с надеж­ными процессами, но с меньшими полномочиями и меньшими возможностями причинения ущерба.

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

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

Другим основным понятием является дескриптор защиты. У каждого объекта есть ассоциированный с ним дескриптор защиты, содержащий список пользова­телей и групп, имеющих доступ к данному объекту. Дескриптор защиты состоит из заголовка, за которым следует список DACL с одним или несколькими элемен­тами АСЕ (Access Control Entry — элемент списка контроля доступа ACL). Два основных типа элементов списка — это разрешение и запрет доступа. Разрешаю­щий элемент содержит SID пользователя или группы и битовый массив, опре­деляющий набор операций, которые процессы с данным идентификатором SID могут выполнять с определенным объектом. Запрещающий элемент работает ана­ло-гично, но совпадение идентификаторов означает, что обращающийся процесс не может выполнять перечисленные операции. Например,
у Иды есть файл, дескрип­тор защиты которого указывает, что у всех пользователей есть доступ для чтения этого файла, Элвису запрещен всякий доступ, а у самой Иды есть все виды досту­па. Этот простой пример показан на рис. 6. Идентификатор защиты Everyone (все) соответствует множеству всех пользователей, но его действие может пере­крываться любым элементом списка, в котором явно указано нечто иное.

 

 

Рис. 6. Пример дескриптора защиты для файла

 

Кроме списка DACL, у дескриптора защиты есть также список SACL (System Access Control List — системный список контроля доступа), который похож на DACL, только вместо пользователей и групп, имеющих доступ к объекту, в нем перечисляются операции с этим объектом, регистрируемые в специальном журна­ле. На рис. 6 все действия, которые Мэрилин выполнит с этим файлом, будут регистрироваться в журнале.
В операционной системе Windows 2000 также пре­доставляются дополнительные возможности аудита для регистрации доступа к объектам.

 

Реализация защиты

 

Защита в автономной системе Windows 2000 реализуется при помощи нескольких компонентов, большую часть которых мы уже рассмотрели.

Регистрацией в системе управляет программа winlogon, а аутентификацией занимаются lsass и msgina.dll. Результатом успешной регистрации в системе является новая оболочка с ассоци­ированным с ней маркером доступа. Этот процесс использует в реестре ключи SECURITY и SAM. Первый ключ определяет общую политику безопасности, а вто­рой ключ содержит информацию о защите для индивидуальных пользователей.

Как только пользователь регистрируется в системе, выполняется операция защиты при открытии объекта. Для каждого вызова OpenХХХ требуется имя откры­ваемого объекта и набор прав доступа к нему. Во время обработки процедуры от­крытия объекта менеджер безопасности проверяет наличие у вызы­вающего процесса соответствующих прав доступа. Для этого он просматривает все маркеры доступа вызывающего процесса, а также список DACL, ассоциированный с объектом. Он просматривает по очереди элементы списка ACL. Как только он находит запись, соответствующую идентификатору SID вызывающего процесса или одной из его групп, поиск прав доступа считается законченным. Если вызыва­ющий процесс обладает необходимыми правами, объект открывается, в противном случае в открытии объекта отказывается.

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

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

 

Защита в Unix-системах

 

Основные положения

 

В настоящее время операционная система UNIX (особенно ее мо­дификации семейства Linux) широко используется в различных облас­тях, в том числе в организациях, где безопасность информации стоит на одном из первых мест.

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

В надежной системе административные задачи распадаются на не­сколько логических ролей. Каждая роль ответственна за сопровожде­ние одного аспекта системы. Идея о специфических административных ролях и соответствующих им задачах и обязанностях является основ­ной для построения надежной защиты в UNIX-системе. В UNIX любая логическая роль может быть назначена одному и тому же пользовате­лю или различным членам некоторой административной группы поль­зователей. С каждой расширенной ролью связана своя авторизация. Эта связь позволяет администратору вести полную регистрацию адми­нистративных действий.

Существуют, например, следующие администраторы:

 администратор системных утилит;

 администратор системных команд;

администратор системных файлов;

администратор учета пользователей и терминалов;

администратор службы аутентификации;

администратор почты;

администратор сети;

администратор печати;

администратор аудита и др.

При введении дополнительных компонент системы (СУБД, раз­личных видов сервиса и т.д.) в системе появляются соответствующие администраторы.

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