3. Процесс WinLogon отправляет имя учетной записи и зашифрованный пароль локальным средствам безопасности (LSA). Если учетная запись локальна для этого компьютера Windows 2000, LSA запрашивает диспетчер учетных записей безопасности (SAM) локального компьютера Windows 2000; в другом случае LSA запрашивает контроллер домена того домена, в который входит компьютер.
4. Если пользователь представил допустимые имя пользователя и пароль, LSA создает токен доступа, содержащий SID учетной записи пользователя и идентификаторы SID для групп, в которые входит пользователь. Токен доступа также получает LUID, который будет описан далее в этой главе в разделе «Права или разрешения». Токен доступа затем передается обратно процессу WinLogon.
5. Процесс WinLogon передает токен доступа подсистеме Win32 вместе с запросом на создание процесса входа в систему для пользователя.
6. Процесс входа в систему устанавливает окружение пользователя, включая запуск Windows Explorer и отображение фона и значков рабочего стола.
4.3. Объекты и Разрешения
Windows 2000 поддерживает безопасность для различных типов объектов, включая (но не ограничиваясь ими) каталоги, файлы, принтеры, процессы и сетевые общие папки. Каждый объект предоставляет функции, определяющие действия, которые могут быть выполнены для этого объекта, например: открыть, закрыть, читать, записывать, удалять, запускать, останавливать, печатать и т. д.
Информация безопасности для объекта содержится в дескрипторе безопасности (security descriptor) объекта. Дескриптор безопасности состоит из четырех частей: владелец, группа, Discretionary Access Control List (список разграничительного контроля доступа, DASL) и System Acess Control List (системный список контроля доступа, SACL). Windows 2000 использует эти части дескриптора безопасности в следующих целях:
• владелец — эта часть содержит SID учетной записи пользователя-владельца объекта. Владелец объекта всегда может изменить настройки DACL (разрешения) объекта;
• группа — эта часть используется подсистемой POSIX Windows 2000. Файлы и каталоги в операционных системах UNIX могут принадлежать групповой учетной записи, так же как и отдельной учетной записи пользователя. Эта часть содержит SID группы этого объекта в целях совместимости с POSIX, а также для идентификации основной группы для учетных записей пользователя;
• Discretionary Access Control List — DACL содержит список учетных записей пользователя и учетных записей групп, обладающих разрешением на доступ к службам объекта. В DACL существует столько записей контроля доступа, сколько существует учетных записей пользователей или групп, для которых доступ к объекту был задан специально;
• System Acess Control List — SACL также содержит записи управления доступом (АСЕ, access control entry), но эти записи АСЕ используются для аудита, а не для разрешения или запрещения доступа к функциям объекта. SACL содержит столько записей АСЕ, сколько существует учетных записей пользователей или групп, для которых специально проводится аудит.
Каждая запись управления доступом в DACL или SACL состоит из идентификатора безопасности, сопровождаемого маской доступа. Маска доступа (access mask) в DACL определяет те функции объекта, для доступа к которым у SID есть разрешение. Специальный тип записи контроля доступа, называемый запрещающей записью АСЕ (deny АСЕ), указывает, что весь доступ к объекту будет запрещен для учетной записи, определенной идентификатором SID. Запрещающая АСЕ перекрывает все остальные записи АСЕ. Разрешение No Access (нет доступа) в Windows 2000 реализовано при помощи запрещающей записи АСЕ.
Доступ разрешен, если токен доступа содержит любой SID, совпадающий с разрешением в DACL. Например, если отдельной учетной записи разрешен доступ на чтение и учетная запись пользователя является членом групповой учетной записи, которой разрешен доступ на запись, тогда токен доступа для этого вошедшего в систему пользователя будет содержать оба SID, и DACL разрешит доступ к объекту и на чтение, и на запись. Запрещающие записи управления доступом все равно перекрывают суммарное действие всех остальных разрешений.
Записи управления доступом в SACL образуются тем же способом, что и записи в DACL (они составляются из SID и маски доступа), но маска доступа в этом случае определяет те функции объекта, для которых будет проводиться аудит у этой учетной записи.
Не у каждого объекта есть списки DACL или SACL. Файловая система FAT, например, не записывает информацию безопасности, поэтому у объектов файлов и каталогов, хранимых на томе FAT, нет списков DACL и SACL. Когда DACL отсутствует, любая учетная запись пользователя обладает доступом ко всем функциям объекта. Это не равнозначно ситуации, когда список DACL объекта пуст. В этом случае ни одна учетная запись не будет иметь доступа к объекту. Когда у объекта отсутствует SACL, аудит объекта невозможен.
Процессы не обращаются напрямую к таким объектам, как файлы, каталоги или принтеры. Операционная система Windows 2000 (а именно ее часть Win32) обращается к объектам от лица процессов. Основная цель этого — сделать программы проще. Программа не обязана знать, как непосредственно манипулировать каждым типом объекта, она просто просит об этом операционную систему. Еще одним важным преимуществом, особенно с точки зрения безопасности, является то, что, поскольку операционная система выполняет все действия для процессов, она может принудительно отслеживать безопасность объектов.
Когда процесс просит подсистему Win32 выполнить действие над объектом (например, прочитать файл), подсистема Win32 сверяется с Security Reference Monitor (монитор проверки безопасности), чтобы удостовериться, что процесс обладает разрешением на осуществление действия над объектом. Security Reference Monitor сравнивает токен доступа процесса со списком DACL объектов, сверяя каждый SID в токене доступа с идентификаторами SID в списке DACL Если существует запись управления доступом (АСЕ) с совпадающим SID, которая содержит маску доступа, разрешающую действие, и нет АСЕ с совпадающим SID, содержащей запрещающую маску для действия над объектом, то Security Reference Monitor разрешает подсистеме Win32 выполнить действие.
Security Reference Monitor также проверяет, осуществляется ли аудит доступа к объекту и требуется ли запись в журнал событий Security Log (Безопасность) Windows 2000. Аудит проверяется точно так же, как и проверка разрешений, — путем сравнения каждого SID в токене доступа с SID каждой записи управления доступом. При обнаружении совпадения монитор проверяет, принадлежит ли выполняемое действие (или функция) к перечисленным в маске доступа. Если да и если результат проверки безопасности по списку SACL совпадает с проводимым аудитом (произошел отказ в доступе и проводится аудит отказа в доступе, или доступ был успешен и проводится аудит успешного доступа, или произошли оба этих события), то в этом случае событие аудита записывается в журнал событий.
Некоторые действия применяются не к конкретному объекту, а к группе объектов или ко всей операционной системе. Завершение работы с операционной системой, например, повлияет на все объекты в системе. Пользователь должен обладать правами пользователя (user rights) для осуществления таких действий.
Средства Local Security Authority включают локально уникальный идентификатор (LUID) при создании токена доступа. LUID описывает, какое из прав пользователя имеет конкретная учетная запись. Local Security Authority создают LUID на основе информации о безопасности в базе данных диспетчера безопасности учетных записей (для учетной записи локального компьютера) или Active Directory (для учетной записи домена). LUID является объединением прав этой конкретной учетной записи пользователя и прав всех групп, в которые входит эта учетная запись.
Права имеют больший приоритет, чем разрешения (permissions). Вот почему учетная запись администратора может стать владельцем файла, чей владелец удалил все разрешения на доступ; Administrator (Администратор) обладает правом Take Ownership of Files or Other Objects (смена владельца файлов или других объектов). Операционная система Windows 2000 вначале проверяет права пользователя и затем (если нет права пользователя, специально разрешающего действие) сверяет записи АСЕ, хранимые в DACL, с идентификаторами SID в токене доступа.
Учетные записи пользователя обладают правом на чтение и запись для объекта, для которого они являются владельцем, даже в случае наличия у того запрещающей записи АСЕ. Учетная запись пользователя может также изменять разрешения для принадлежащего ей объекта.
5.Файловая система NTFS
Файловая система NTFS — главный бастион безопасности Windows 2000. Безопасный компьютер под управлением Windows 2000 работает на платформе NTFS, образующей основу для постоянной безопасности.
LSA дает гарантию, что выполняющиеся программы не могут нарушить адресное пространство памяти друг друга и что все обращения к ядру должным образом авторизованы. Но что может помешать программе заменить программные файлы LSA эквивалентной службой, которая будет работать неверно? Ответом на этот вопрос является NTFS, и этот пример подчеркивает, почему безопасная файловая система — обязательное требование для безопасной операционной системы. Не имея возможности доверять файловой системе, хранящей системные файлы, нельзя доверять системе, работа которой реализуется посредством исполнения этих файлов.
Рассмотрим случай проникновения вируса на компьютер с Windows 95. Пользователь выполняет программу, содержащую вирус. Вирус определяет, какая программа запустила текущую программу, и заражает ее, таким образом распространяя себя далее на один уровень. При следующем запуске этой программы вирус сделает то же самое, а также заразит каждую программу, порожденную этой программой. Через несколько циклов вирус распространится до ключевых программ операционной системы, таким образом заражая каждый выполняемый в ней файл. Рассмотрим теперь случай, когда пользователь выполняет зараженную вирусом программу в Windows 2000. Эта программа пытается записать свой вирусный заголовок в explorer.exe, но блокируется средствами безопасности файловой системы NTFS, потому что у пользователя нет разрешений на запись в explorer.exe. Благодаря NTFS этот тип вирусов моментально останавливается Windows 2000. При попадании в систему некоторым вирусам удается выжить в пользовательском режиме (например, макровирусам Word или червям Outlook), но эти вирусы все равно не могут заразить саму операционную систему — если только вирус не был запущен с учетной записью, обладающей административным доступом к компьютеру.