|
Принципиальная структура списков
управления доступом в ОС Windows Vista не претерпела кардинальных
изменений, но есть ряд небольших, но важных изменений, о которых
необходимо иметь представление. Некоторые из этих изменений
необходимы
из-за проблем со списками ACL, присущих ОС Windows® XP. Первая проблема состоит в том, что
большинство пользователей в ОС Windows XP являются администраторами,
то есть учетные записи этих пользователей являются членами
встроенной группы «Администраторы». Эта проблема очень
распространена среди домашних пользователей, потому что всем учетным
записям, добавляемым во время установки системы, автоматически
даются права администраторов. Таким образом, все программы,
запускаемые этими пользователями, также выполняются с правами
администраторов, что предоставляет этим программам полный доступ к
операционной системе. В случае вредоносных программ эта проблема
встает особенно остро.
Другая проблема, которая
раздражает многих пользователей, заключается в том, что по умолчанию
списки ACL включают в себя записи управления доступом (ACE) для
встроенного участника безопасности «Все», членов группы «Опытные
пользователи» и т.п. К примеру, список ACL корневой папки
загрузочного раздела ОС Windows XP (обычно C:\) предоставляет права
на чтение всем и права на создание папок членам группы
«Пользователи». Помимо этого, в ОС Windows XP накладывается ряд
ограничений на действия, которые можно совершать со списками ACL. К
примеру, невозможно установить разрешения для текущего владельца
объекта. Можно установить разрешения для владельца объекта, но они
не переносятся в случае изменения текущего владельца. Также
владельцы объектов неявным образом обладают правами на эти объекты
независимо от установленных разрешений.
При разработке ОС Windows
Vista™ в корпорации Майкрософт был развернут проект для решения
многих из этих проблем и обеспечения поддержки других возможностей,
таких как управление учетными записями пользователей (UAC). В этой
статье внимание уделяется основным изменениям, связанным с
управлением доступом в ОС Windows Vista. В следующем выпуске
журнала, который выйдет через месяц, будет приведен обзор
инструментов для настройки управления доступом.
Изменения в учетных записях
пользователей и группах
Некоторые учетные записи
пользователей и группы появились в ОС Windows Vista впервые, а
некоторые учетные записи пользователей и группы, которые есть в ОС
Windows XP, отсутствуют в ОС Windows Vista. Также была изменена
функциональность некоторых учетных записей и групп. Каждое из
изменений влияет на способ настройки управления доступом.
Учетная запись «Администратор» по умолчанию
отключена Встроенная учетная запись «Администратор» с
относительным идентификатором безопасности (RID) 500 по умолчанию в
большинстве случаев теперь отключена. Изначально подразумевалось,
что эта учетная запись будет использоваться только в крайних
случаях. Она предназначалась для восстановления системы и данных в
случаях, когда все остальные способы оказались безуспешны. Однако
очень часто она используется в качестве обычной административной
учетной записи, что нарушает несколько принципов безопасности. Самым
главным из этих принципов является принцип отслеживания и
определения ответственности. В случае использования упомянутой
учетной записи невозможно отследить, кто именно совершал изменения в
системе. Поэтому использование этой учетной записи не
приветствовалось. Возможно, в дальнейшем в корпорации Майкрософт
будет принято решение полностью отказаться от этой учетной записи,
на сегодняшний же день ее сделали отключенной она по умолчанию. В
случае если в группе «Администраторы» кроме этой учетной записи
больше нет других членов, возможно использование идентификатора RID
500 в консоли восстановления и в безопасном режиме, но в остальных
случаях его невозможно и не нужно использовать.
Обратите внимание, что
встроенная учетная запись «Администратор» — это не то же самое, что
учетная запись-член группы «Администраторы». Далее в тексте
подразумевается, что «Администратор» (с заглавной буквы) — это
учетная запись с идентификатором RID 500, а просто слово
«администратор» — это любая другая учетная запись, которая является
членом группы «Администраторы». Название группы «Администраторы»
также будем писать с заглавной буквы.
В ОС Windows XP учетная
запись «Администратор» обладает рядом особых прав, которыми не
обладает никакая другая учетная запись с правами администратора. В
ОС Windows Vista для этой учетной записи из всех этих прав оставлено
только два. Во-первых, отключенная учетная запись «Администратор»
может использоваться в консоли восстановления, в случае, если в
системе больше нет других локальных администраторов. Во-вторых, на
эту учетную запись не распространяются ограничения управления
учетными записями (UAC), и поэтому она всегда обладает полными
правами. Это относится и к учетной записи «Администратор домена» с
идентификатором RID 500 в домене.
Ограничения прав группы «Опытные пользователи»
Из практических соображений от группы «Опытные
пользователи» было решено отказаться. Сама группа осталась, но было
убрано большинство разрешений, которые назначались этой группе. Не
секрет, что пользователь, который является членом группы «Опытные
пользователи» является на самом деле администратором, который просто
еще не установил себе соответствующие права. Однажды я
продемонстрировал, как можно за 45 минут получить полный доступ к
компьютеру под управлением системы Windows XP с пакетом обновления 2
и всеми необходимыми обновлениями путем предоставления своей учетной
записи прав администратора. Это время потребовалось на оценку
обстановки, написание небольшой программы на языке C++, выход из
системы и затем повторный вход. Все это было возможно благодаря
тому, что моя учетная запись была членом группы «Опытные
пользователи».
Полностью убрать из системы
эту группу было нельзя, потому что во многих организациях существует
сложная система настроенных разрешений, в которой участвуют учетные
записи-члены этой группы. Тем не мене, в последующих версиях ОС
Windows планируется полностью отказаться от этой группы.
Настоятельно рекомендуется уже сейчас начать планирование действий
для постепенного отказа от использования группы «Опытные
пользователи».
Учетная запись Trusted Installer Во
многих местах в настройках разрешений файловой системы можно увидеть
учетную запись Trusted Installer. На самом деле это служба, а не
учетная запись. Безопасность служб была усилена, поэтому теперь
каждая служба является полноценным участником безопасности, наравне
с учетными записями пользователей. Описание этой возможности
приводится в журнале TechNet Magazine в номере
за январь 2007 г. В книге Граймса и Йохансона Безопасность ОС
Windows Vista (издательство Wiley Press, 2007 г.) подробно
описывается усиление безопасности служб, а также повышение
эффективности этих служб за счет других возможностей, таких как
брандмауэр и служба IPsec.
Идентификатор безопасности
(SID) для служб теперь не назначается привычными администраторами
безопасности, такими как NT AUTHORITY или администратор домена.
Полное название виртуальной учетной записи для службы
TrustedInstaller — «NT SERVICE\TrustedInstaller», а идентификатор
безопасности (SID) этой записи
S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464
Идентификатор безопасности (SID) можно получить
для любой, даже для несуществующей службы. Для этого нужно выполнить
команду «sc showsid», как это показано на рис.
1.
Рисунок
1 Команда «sc showsid» выводит на
экран идентификатор SID для любой, даже несуществующей службы
Этот идентификатор
безопасности (SID) начинается со строчки S-1-5-80. Октет 80
соответствует относительному идентификатору
SECURIY_SERIVCE_ID_BASE_RID. Это означает, что идентификатор службы
назначается администратором безопасности NT SERVICE. Это справедливо
для любой службы. Остальная часть идентификатора и относительные
идентификаторы RID зависят от имени службы. Это позволяет
разработчику службы устанавливать для нее разрешения, даже если
служба еще не была собрана и установлена. Идентификатор определяется
именем службы и поэтому совпадает на различных компьютерах.
В консоли управления службами
службе «TrustedInstaller» соответствует отображаемое имя «Установщик
модулей Windows».
Учетные записи Центра справки и поддержки
удалены Учетные записи «Support_xxxxxx» и
«HelpAssistant» отсутствуют в системе Windows Vista при установке с
нуля, однако при обновлении с предыдущей версии ОС Windows эти
учетные записи сохраняются. Учетная запись «Support_xxxxxx»
использовалась для запуска сценариев из Центра справки и поддержи.
Некоторые поставщики OEM, которые поставляли свои собственные
справочные системы, могли также добавлять в систему собственные
учетные записи поддержки. Неясно, что произойдет с этими учетными
записями, но, скорее всего, поставщики OEM просто перестанут их
создавать. На самом деле, эти записи попросту больше не нужны. Более
того, с точки зрения обеспечения безопасности неправильно, что
пользователи могли запускать сценарии из центра справки с правами
других учетных записей. Лучше, если таких учетных записей вообще не
будет. В ОС Windows Vista есть другой способ выполнять эти
задачи.
Учетная запись
«HelpAssistant» использовалась во время сеансов работы с удаленным
помощником. Так же как и центр справки и поддержки, удаленный
помощник был переработан таким образом, чтобы для его работы не
требовалась учетная запись «HelpAssistant», соответственно, эта
запись была удалена.
Новые идентификаторы безопасности сетевого
расположения В операционных системах на основе ядра
Windows NT® всегда присутствовали
идентификаторы безопасности (SID) сетевого расположения, такие как
«NETWORK» и «INTERACTIVE». С их помощью можно было различать
пользователей, выполнивших выход через сеть и интерактивно. Также в
системах был идентификатор безопасности (SID) «REMOTE INTERACTIVE
LOGON», который назначался пользователям, выполнившим вход через
службу терминалов. На самом деле у пользователей службы терминалов в
маркере безопасности есть оба идентификатора: «REMOTE INTERACTIVE
LOGON» и «INTERACTIVE LOGON». В ОС Windows Vista помимо этих двух
идентификаторов были добавлены еще два: «DIALUP» и «INTERNET». Смысл
выделения пользователей, выполнивших вход через телефонное
подключение, не совсем ясен, особенно учитывая тот факт, что все
больше и больше пользователей предпочитают не использовать такие
соединения в качестве единственного способа подключения к сети. Тем
не менее, этот идентификатор присутствует. Идентификатор «INTERNET»
очевидно предназначен для выделения пользователей, выполнивших вход
из-за пределов локальной сети. Идентификатором «NETWORK», тем не
менее, отмечаются любые пользователи, выполнившие вход через
локальную сеть или через Интернет.
Идентификатор «OWNER RIGHTS» и права
владельца Теперь в системе есть идентификатор
безопасности (SID) «OWNER RIGHTS», который применяется к владельцу
файла, который является им на момент обращения. Основное назначение
этого идентификатора — ограничивать действия, которые может
совершать с файлом сам владелец. По сравнению с правами владельца в
системе Windows XP, в системе Windows Vista есть два существенных
отличия. Во-первых, если запись ACE распространяется на владельца
файла, то назначаемые этой записью права имеют приоритет перед
фактом владения файлом. Это очень значительное изменение. Оно сильно
повлияет на определенные аспекты администрирования системы, так как
многие привыкли к тому, что владелец неявно обладает полными
правами. Во-вторых, идентификатор безопасности (SID) «OWNER RIGHTS»
может использоваться для ограничения действий, которые может
совершать с объектом его владелец.
Представьте, что есть папка,
владельцем которой является пользователь Jesper. Список ACL этой
папки представлен на рис. 2. Пользователь
Jesper обладает правами только на чтение, несмотря на то, что он
является владельцем этой папки. Если он попытается скопировать файл
в эту папку, возникнет ошибка, потому что у пользователя Jesper нет
разрешений на запись в папку. Из сообщения об ошибке это понять не
так просто. При попытке скопировать с помощью Проводника Windows® файл в папку, владельцем который пользователь
является, но разрешениями на запись в которую он не обладает,
произойдет следующее. Сначала Проводник сообщит, что необходимо
расширить права для копирования файла, и попросит пользователя их
расширить, но копирование файла не произойдет, так как прав на
копирование объектов в эту папку у пользователя нет. Выдается
сообщение об ошибке «У вас нет разрешений на выполнение этого
действия», где есть кнопки для двух вариантов действий: «Повторить»
(как будто это может помочь) и «Отмена». И все это несмотря на то,
что пользователь является владельцем папки.
Рисунок
2 Доступ к папке есть только у
учетной записи «Local System» и еще у одного пользователя
Если пользователь Jesper
попытается изменить список ACL файла, ему будет предложено поднять
уровень его маркера. Так как он является владельцем файла, он сможет
это сделать. У владельца сохраняются неявные права на чтение и
изменение списков ACL (права «READ_CONTROL» и «WRITE_DAC»), если
только иное не задано с помощью записи ACE для идентификатора «OWNER
RIGHTS».
Чтобы понять, как работает
идентификатор SID «OWNER RIGHTS», добавим его к приведенному выше
списку ACL. Теперь учетная запись имеет разрешения, показанные на
рис. 3.
Рисунок
3 Добавление разрешений на доступ
к папке для идентификатора безопасности «OWNER RIGHTS» изменяет
разрешения для пользователя Jesper
После установки таких
разрешений пользователь Jesper может спокойно скопировать файл в
папку, потому что он является владельцем папки и у него есть
соответствующие права. Однако при попытке пользователя Jesper
изменить список ACL папки возникнет ошибка. Запись ACE для
идентификатора «OWNER RIGHTS» указывает, что у владельца есть только
разрешения на изменение объекта. Разрешений на изменение списка
управления доступом на уровне пользователей (DACL) у владельца нет.
Таким образом, основное назначение идентификатора «OWNER RIGHTS» —
избавиться от идентификатора маркера WRITE_DAC (то есть от
возможности изменения владельцем дескриптора безопасности).
В случае смены
администратором владельца объекта разрешение для идентификатора
«OWNER RIGHTS» на нового владельца автоматически не переносятся. В
данном случае запись ACE для этого идентификатора отключается за
счет установки наследования при запрете применения этой записи к
вложенным папкам и файлам. Другими словами, эта запись ACE не
применяется ни к каким объектам. Это необходимо, чтобы администратор
мог сохранить за собой возможность контроля над объектом. Чтобы
запись ACE для идентификатора «OWNER RIGHTS» снова стала активной,
необходимо, чтобы ее вручную активировал пользователь
«Администратор». Для этого он должен указать для этой записи область
применения: к данной папке, вложенным папкам, к папкам и файлам, в
зависимости от необходимости.
Есть ряд задач, для решения
которых полезно использовать идентификатор безопасности (SID) «OWNER
RIGHTS». Например, у администратора может возникнуть необходимость
разрешить пользователям создавать файлы и папки на файловом сервере,
но запретить им редактировать списки ACL для этих папок. Также
возможна ситуация, когда пользователи, которые ранее являлись
членами некоторой группы и создали ряд объектов, впоследствии были
по определенным соображениям удалены из этой группы. Необходимо
ограничить возможность таких пользователей изменять параметры этих
ранее созданных ими объектов.
Также идентификатор «OWNER
RIGHTS» очень успешно применяется для повышения безопасности служб.
Когда служба создает временный объект во время запуска,
идентификатором владельца этого объекта является основной
идентификатор безопасности (SID) процесса службы, обычно это
«LocalSystem», «NetworkService» или «LocalService», а не
идентификатор безопасности самой службы. Это означает, что любая
другая служба, запущенная в том же контексте процесса, может
изменить этот объект. Такая возможность крайне нежелательна. Задавая
для этого объекта разрешения для идентификатора безопасности (SID)
«OWNER RIGHTS» система может ограничить доступ остальным службам к
этому объекту.
Списки
ACL по умолчанию
Списки ACL, которые
устанавливаются по умолчанию в системе Windows XP, хорошо продуманы,
если не принимать во внимание мелкие недочеты, такие, как разрешение
пользователям создавать файлы в корневой папке загрузочного раздела.
Тем не менее, некоторые поставщики OEM считали, что они лучше знают,
как обеспечить достаточный уровень безопасность. На рис. 4 показано изображение списка ACL для
папки «Windows» на компьютере от одного очень известного поставщика
OEM. Компьютер работает под управлением системы Windows XP Media
Center Edition. По сути, безопасность файловой системы этим
поставщиком OEM была отключена.
Рисунок
4 Список ACL, настроенный
поставщиком OEM
В ОС Windows Vista списки ACL
претерпели ряд изменений. В ОС Windows XP привычным является тот
факт, что владельцем всех файлов операционной системы является
группа «Администраторы», таким образом, у всех членов этой группы
есть полный доступ к этим файлам. В системе Windows Vista это не
так.
Учетная запись Trusted Installer В ОС
Windows Vista владельцем большинства системных файлов является
идентификатор безопасности (SID) «TrustedInstaller», и только у
этого идентификатора есть полный доступ к этим файлам. Эта мера
является частью комплекса мер, принятых в ОС Windows Vista для
обеспечения целостности системы. Она препятствует процессам,
запущенным с правами администратора или учетной записи «Local
System», автоматически изменять эти файлы. Чтобы удалить системный
файл, необходимо стать владельцем этого файла, а затем добавить
запись ACE, позволяющую удалить его. Такой подход предоставляет
некоторую степень защиты от процессов, запущенных с правами учетной
записи «LocalSystem» с системной меткой целостности. Процессы с
более низкой целостностью не могут повысить свои права для изменения
владельца объекта. Некоторым службам можно установить средний
уровень целостности, несмотря на то, что они запущены с правами
учетной записи «Local System». Такие службы не смогут заменить
системные файлы, поэтому в случае атаки и захвата управления этой
службой, атакующая программа также не сможет заменить системные
файлы, поэтому вредоносным программам (в том числе скрытым) будет
сложнее установить себя в систему. Также администраторы больше не
смогут удалить системные файлы, которые они по каким-то своим
соображениям считают ненужными.
Записи ACE на запрещение Некоторых
администраторов шокирует тот факт, что теперь в файловой системе у
многих объектов присутствует запрещающая запись ACE «для всех». Если
разрешить отображение скрытых файлов, можно увидеть папку «Documents
and Settings», но при попытке зайти в эту папку возникнет ошибка
«Доступ запрещен». Чтобы понять, почему так происходит, взгляните на
структуру папки на рис. 5.
Рисунок
5 «Documents and Settings»
является точкой соединения, а не папкой
На самом деле «Documents and
Settings» — совсем не папка. Это точка соединения. Точки соединения
очень схожи с символическими ссылками, которые просто перенаправляют
доступ в другое место файловой системы. В данном случае эта точка
соединения указывает на папку C:\Users. В ОС Windows Vista было
изменено пространство имен файловой системы, и данные пользователей
были перенесены в папку C:\Users. Элементы пространства имен
«C:\Documents and Settings\<Имя пользователя>» также были
перенесены. Например, содержимое папки «C:\Documents and
Settings\<Имя пользователя>\Application Data» теперь
располагается в папке «C:\Users\<Имя
пользователя>\appdata\roaming». Все изменения можно легко
увидеть, если в командной строке выполнить команду «dir /s».
Результат работы этой команды показан на рис.
5. Такие значительные изменения в пространство имен были
внесены, чтобы обеспечить более наглядное представление для
пользователей и более четко отделить документы от данных. Вместо
того чтобы хранить все данные приложений внутри папки «Мои
документы», разработчики могут создавать собственные папки внутри
папки профиля пользователя, и пользователь легко сможет обнаружить
там эти папки. Данные приложений, общие для всех пользователей,
теперь располагаются в скрытой папке «%systemroot%\ProgramData», а
не в папке «Documents and Settings\All Users\Application Data».
Папка «C:\Documents and
Settings» была оставлена для обратной совместимости с приложениями,
в которых жестко запрограммировано использование этого имени папки,
вместо рекомендуемых к использованию переменных среды. Если бы папки
«C:\Documents and Settings» не стало, работа таких приложений была
бы нарушена. Поэтому эта и другие папки теперь представлены в виде
точек соединения или символических ссылок. Работа приложений, в
которых эти пути заданы явным образом, все же может быть нарушена.
Это зависит от способа доступа к данным в этих папках. Но такие
приложения и так некорректно работают на компьютерах с
локализованными версиями ОС Windows. В данном случае ключевым
моментом являются именно ошибки в приложении. Если после обновления
ОС Windows, например, после установки пакета обновлений 2 для ОС
Windows XP или обновление системы до ОС Windows Vista, перестают
работать приложения сторонних разработчиков, в большинстве случае
это происходит из-за неверных предположений, которые были сделаны
разработчиками этих приложений, или из-за некорректного
использования некоторых возможностей системы.
При попытке открыть файл
путем ввода в строке адреса пути «C:\Documents and Settings\<Имя
пользователя>\Мои документы\файл.txt» файл откроется без проблем,
при условии, конечно, что он такой файл в этой папке есть. Тем не
менее, при попытке открыть саму папку «C:\Documents and
Settings\<Имя пользователя>\Мои документы» возникнет ошибка
«Доступ запрещен». Чтобы понять, почему так происходит, взгляните на
список ACL на рис. 6.
Рисунок
6 Запись ACE на запрещение в папке
«Documents and Settings»
Взгляните на первую запись
ACE в списке. Эта запись, запрещающая для всех получение перечня
содержимого папки. Программы могут получить доступ к файлам по
полному пути, потому что установлено разрешение для всех на обход
перекрестной проверки (известное также под названием
«SeChangeNotifyPrivilege»). Попытки же получить список содержимого
папки будут приводить к ошибке из-за запрещающей записи ACE. Это и
есть причина, по которой нельзя увидеть, что же находится внутри
папки «C:\Documents and Settings» или удалить эту «папку». Благодаря
запрещающим записям ACE пользователи не могут удалить точку
соединения и нарушить работу старых приложений. Также эти записи
служат напоминанием для разработчиков о необходимости отказа от
использования старого пространства имен и перехода к использованию
переменных среды или строковых параметров реестра, чтобы уберечь
приложения от последствий из-за внесения изменений в будущем или
из-за языковых различий.
Эти точки соединения по
умолчанию являются скрытыми, поэтому большинство пользователей их
никогда не увидит. Если же все-таки пользователь увидит эти точки
соединения, он не сможет их удалить благодаря запрещающим записям
ACE.
Пропуск перекрестной
проверки Пользователи могут получить доступ к файлам, на
доступ к которым у них есть права, несмотря на то, что эти файлы
находятся в папках, доступ к которым запрещен для этих
пользователей. Причина этого заключается в том, что в системе
установлено разрешение для всех на пропуск перекрестной проверки.
Это разрешение (известное также под названием
«SeChangeNotifyPrivilege») на самом деле является самым основным
разрешением в системе Windows. Оно назначается процессу, у которого
удалены все другие разрешения, пока этот процесс специально не
запросит убрать и это разрешение. Если в ОС Windows Vista запустить
процесс с помощью команды «runas /trustlevel:0x10000 <», то
программа, указанная в параметре <команда> будет запущена с
ограниченным маркером безопасности. Из этого маркера будут изъяты
все разрешения, кроме разрешения «SeChangeNotifyPrivilege».
Для справки: при запуске
процесса со значением параметра «trustlevel» 0x20000 в маркере
безопасности будет присутствовать обычный набор идентификаторов
безопасности (SID), но будут отсутствовать разрешения. Значение
0x40000 соответствует обычному маркеру.
Продолжение статьи >>>
|
|