Повышение безопасности в ОС Windows Vista с помощью новых списков управления доступом (ACL)
Принципиальная структура списков управления доступом в ОС Windows Vista не претерпела кардинальных изменений, но есть ряд небольших, но важных изменений, о которых необходимо иметь представление.
Принципиальная структура списков управления доступом в ОС 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 соответствует обычному маркеру.
Разрешения по умолчанию
В ОС Windows Vista разрешения по умолчанию для файловой системы несколько отличаются от разрешений в ОС Windows XP. Списки ACL для папок «%systemdrive%» (обычно значение этой переменной соответствует загрузочному разделу C:\) в ОС Windows XP или Windows Server® 2003 выглядят так (или для ранних версий Windows XP почти так):
D:AR
(A;OICI;FA;;;BA)
(A;OICIIO;FA;;;CO)
(A;;0x1200a9;;;WD)
(A;OICI;FA;;;SY)
(A;OICI;0x1200a9;;;BU)
(A;CI;0x100004;;;BU)
(A;CIIO;0x100002;;;BU)
Ниже приведен список ACL для той же папки в ОС Windows Vista:
D:PAI
(A;;FA;;;BA)
(A;OICIIO;GA;;;BA)
(A;;FA;;;SY)
(A;OICIIO;GA;;;SY)
(A;OICI;0x1200a9;;;BU)
(A;OICIIO;SDGXGWGR;;;AU)
(A;;LC;;;AU)
Между этими двумя списками есть ряд различий, которые стоит отметить. Во-первых, встроенной группе «BA» («BUILTIN\Администраторы») в списке соответствуют две записи, а не одна. При этом результирующие права, которые получает учетная запись, в обоих случаях одинаковы. В ОС Windows Vista одна запись ACE предоставляет полный доступ к корневой папке и не распространяется на вложенные объекты, а другая запись распространяется только на вложенные папки и файлы и предоставляет все встроенные права («GA» или, иначе, «полный доступ»). То же самое относится и к записям ACE для участника безопасности «SY» («LocalSystem»). В ОС Windows XP одна запись ACE предоставляла полный доступ как непосредственно к корневой папке, так и вложенным папкам и файлам. Результирующие разрешения в первом и во втором случае совпадают. Разделение на две записи было сделано для упрощения управления, а также на случай необходимости восстановления списка ACL.
Интересное отличие заключается в отсутствии в варианте для системы Windows Vista записи ACE для участника безопасности «CO» («Создатель-владелец»). Это означает, что теперь при создании пользователем объекта в корневой папке файловой системы этому объекту не будут назначаться специальные разрешения для его создателя.
Также видно, что отсутствует запись ACE для участника безопасности «WD» («Все»). Многих пользователей, которые интересовались вопросами безопасности, волновал вопрос присутствия этой записи ACE, несмотря на то, что они не всегда осознавали последствия совершаемых ими действий. Сотрудники корпорации Майкрософт безуспешно пытались в течение нескольких лет объяснить, что участник безопасности «Все» и встроенная группа «Пользователи» функционально идентичны. В конце концов, они отчаялись и просто убрали эту запись из списка. Благодаря наличию идентичной записи ACE для встроенной группы «BU» («BUILTIN\Пользователи»), которая также наследуется вложенными папками и файлами, в итоге удаление этой записи не вызвало никаких изменений.
Помимо этого, две из записей ACE для группы «BU» были заменены на записи ACE для участника безопасности «AU» («Прошедшие проверку»). Причина для этого заключается в том, что учетная запись «Гость» является членом встроенной группы «Пользователи» (благодаря членству встроенного участника безопасности «ИНТЕРАКТИВНЫЕ» в группе «Пользователи»), но не является членом участника безопасности «Прошедшие проверку». Чтобы у пользователя «Гость» были права на чтение и выполнение файлов, запись ACE с номером 0x1200a9 («Чтение и выполнение») по-прежнему назначается для группы «BU». Записи ACE, которые разрешают создавать файлы и папки, относятся теперь только к пользователям, прошедшим проверку. Это постепенный переход от системы Windows XP к системе Windows Vista. В отличие от ОС Windows XP, в ОС Windows Vista пользователь «Гость» не может создавать файлы в корневой папке. Не следует забывать, что на практике такое ограничение редко требовалось. Чтобы создавать файлы в корневой папке, необходимо включить учетную запись «Гость» и получить доступ к корню загрузочного раздела. По умолчанию учетная запись «Гость» отключена.
Напоследок предлагается обратить внимание еще на две примечательные записи ACE. В ОС Windows XP есть запись ACE, наследуемая вложенными папками, устанавливающая разрешение 0x100004 для встроенной группы «Пользователи». Эта запись позволяет пользователям создавать вложенные папки, в них еще вложенные папки, и так далее. Также есть запись ACE 0x100002 только для наследования, которая распространяется на вложенные папки. Эта учетная запись позволяет пользователям создавать файлы и вложенные папки в папках, которые они создали в корневой папке. Другими словами, в совокупности эти две записи ACE позволяют пользователям, в том числе и пользователю «Гость», создавать файлы и папки в корневой папке.
В ОС Windows Vista в списке ACL есть соответствующие записи ACE: запись ACE только для наследования, которая распространяются на вложенные контейнеры и файлы и предоставляют права на чтение («GR»), запись («GW»), выполнение («GX») и на чтение дескриптора безопасности («SD»), а также запись ACE, которая применяется только к корневой папке и предоставляет разрешение «LC». Аббревиатура «LC» на самом деле относится к разрешениям для службы Active Directory®. В службе Active Directory это разрешение позволяет пользователю получить список дочерних объектов контейнера. Шестнадцатеричное значение этого разрешения 0x4. Для папки такое значение соответствует разрешению «FILE_ADD_SUBDIRECTORY». Это разрешение функционально эквивалентно разрешению со значением 0x100004, потому что в списке ACL уже есть запись ACE 0x1200a9, в котором установлен флаг 0x100000 (обозначает возможность использования объекта для синхронизации). Другими словами, в сумме эти разрешения обладают таким же эффектом, что и разрешения в ОС Windows XP — пользователи могут создавать вложенные папки в корневой папке.
Можно легко заметить, что в записях ACE сплошь и рядом присутствуют шестнадцатеричные числа, например, 0x1200a9. На самом деле эти значения являются битовыми масками, соответствующими установленным флагам доступа для конкретных записей ACE. Такие программы, как «icacls», «sc» или «scedit» при выводе записей из списка ACL вместо чисел отображают понятные текстовые названия для разрешений, если такие соответствия имен значениям разрешений существуют.
Чтобы определить, что обозначает разрешение LC, достаточно посетить веб-узел MSDN®, найти на странице строчку «LC», и посмотреть на значение, которое соответствует этой записи в колонке «Право доступа». Для разрешения «LC» там будет значение «ADS_RIGHT_ACTRL_DS_LIST». В файле «Iads.h» можно найти, что этой строчке соответствует численное значение 0x4. В этом файле находятся значения для разрешений, которые относятся к службе Active Directory (содержат префикс «ADS_RIGHT»). Остальные разрешения и соответствующие им шестнадцатеричные значения расположены в файле «AccCtrl.h». Узнав шестнадцатеричное значение, можно легко найти соответствующую маску доступа в файлах «WinNT.h» или «AccCtrl.h», чтобы узнать, что именно обозначает эта маска.
Более подробную информацию можно получить из книги Джеспера Йохансона и Стива Райли (Steve Riley) «Защита сети под управлением Windows» (издательство «Addison-Wesley», 2005 г.). В 17-й главе этой книги подробно описывается, как анализировать строчки на языке описания дескрипторов безопасности (SDDL) и записи ACE.
Разрешения, назначаемые вложенным папкам, создаваемым в корневой папке, в ОС Windows Vista определяются исключительно записью ACE (A;OICIIO;SDGXGWGR;;;AU). Это является самым большим различием между записями в списке ACL корневой папки в ОС Windows Vista и Windows XP. Вместо разрешения полного доступа создателю вложенных папок, как это было в ОС Windows XP, в Windows Vista изменение этих папок разрешается пользователям, прошедшим проверку.
В итоге получается, что в новом списке ACL у создателя объекта больше нет каких-либо специальных прав на этот объект, благодаря чему ситуация с правами становится более понятной. С другой стороны, теперь у пользователей, прошедших проверку, есть права на изменение даже тех вложенных папок, которые были созданы администраторами. Это очень существенное отличие от ОС Windows XP. В системе Windows XP члены группы «Пользователи» и пользователи, прошедшие проверку, не обладали правами на доступ к объектам, созданным в корневой папке администраторами. Несмотря на то, что на первый взгляд новые записи ACE кажутся странными и неправильными, их конечный эффект практически не отличается от записей в системе Windows XP.
Если подвести итог, в ОС Windows Vista все пользователи, включая пользователя «Гость», обладают правами на чтение и исполнение в корневой папке. Правами на создание новых файлов и папок обладают только пользователи, прошедшие проверку. При этом они обладают не полными правами на созданные этими пользователями папки и файлы, а только правами на изменение. Другими словами, разрешения в ОС Windows Vista лишь слегка ограничивают доступ по сравнению с системой Windows XP. Смысла в отключении учетной записи «Гость» больше нет.
Изменения в маркерах безопасности
Когда в ОС Windows XP вход выполняется пользователем, который является членом группы «Администраторы», маркер безопасности этого пользователя содержит идентификатор SID группы «Администраторы». Такой пользователь обладает всеми правами группы «Администраторы». В ОС Windows Vista это больше не так благодаря системе управления учетными записями пользователей. Идентификатор SID группы «Администраторы» по прежнему присутствует в маркере безопасности пользователя, но у этого идентификатора установлен режим «только запрет», как это показано на снимке экрана программы Process Explorer на рис. 7.
Рисунок 7 Система UAC до повышения полномочий устанавливает для идентификатора SID «Администраторы» режим «только запрет»
При осуществлении управления доступом этот идентификатор SID в маркере используется только для отказа в доступе, другими словами, он сопоставляется только запрещающим записям ACE. Любые разрешающие записи ACE для этого идентификатора SID игнорируются. Это означает, что пользователь не является на протяжении всего времени полноценным администратором, даже, несмотря на то, что он выполнил вход в систему как администратор.
Уровни целостности
Теперь в системе Windows поддерживается такой параметр процессов и объектов, как «уровень целостности». Уровни целостности также представляются в виде записей ACE, но не на пользовательском уровне управления доступом (DACL). Эти записи относятся к системному списку управления доступом (SACL) и обладают дополнительными специальными полями. Например, флаг «NW» указывает, что процесс с более низким уровнем целостности не может изменять объект с более высоким уровнем целостности (разрешение «SDDL_NO_WRITE_UP»). В статье Марка Руссиновича (Mark Russinovich) «Внутренне устройство управления учетными записями пользователей в системе Windows Vista» этого выпуска журнала TechNet Magazine приводится подробное описание работы уровней целостности.
Заключение
Несмотря на то, что таких революционных изменений в управлении доступом, которые были сделаны с выходом ОС Windows 2000, в ОС Windows Vista не произошло, в ней было сделано много небольших изменений. Каждое изменение в отдельности кажется незначительным, но в сумме все эти изменения заставляют пересмотреть многие принципы управления системой. Также есть ряд нововведений, к которым относятся, прежде всего, управление учетными записями пользователей и усиление безопасности служб. Некоторые администраторы могут быть очень разочарованы первым опытом работы с ОС Windows Vista. Встречались комментарии о том, что ОС Windows Vista является «тиранической» и не позволяет удалять некоторые элементы операционной системы, которые по той или иной причине раздражают администраторов. Тем не менее, есть очень веские причины для всех этих изменений, и если затратить некоторые время на их анализ, можно осознать необходимость этих изменений.
Джеспер Йохансон (Jesper Johansson) — архитектор безопасности в большой компании, занимающейся продажами через Интернет. В его обязанности входит разработка стратегии безопасности, охватывающей большой перечень различных служб и параметров. Он работает в этой области уже 20 лет и написал множество статей и две книги о компьютерной безопасности. В свободное от основной деятельности время он работает инструктором подводного плавания.