Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SPO_VM_konspekt

.pdf
Скачиваний:
15
Добавлен:
01.03.2016
Размер:
7.34 Mб
Скачать

В ОС Windows реализовано управление доверительными отношениями, которые требуют поддержки наборов разных ролей для разных уровней работы в системе. В системе также имеется управление привилегированным доступом, т.е. функции администрирования могут выполнять только пользователи, входящие в группу администраторов. В соответствии со своей ролью, каждый пользователь обладает определенными правами – привилегиями – на выполнение различных операций в отношении системы в целом. Те же права в отношении конкретных объектов называются разрешениями. Каждая привилегия имеет легко читаемое текстовое имя, программное имя и идентификационный номер привилегии в системе (Luid). Важно знать, что в соответствии с принципом предоставления минимума привилегий, даже администратор системы по умолчанию обладает не всеми привилегиями. Управление привилегиями осуществляется с помощью LSA. Оно включает в себя задачи перечисления, назначения, удаления, выключения привилегий и ряд других задач. Извлечь список привилегий для конкретного пользователя можно из маркера доступа. Обычно, учетная запись пользователя по умолчанию не обладает никакими привилегиями. Привилегиями обладает группа, к которой принадлежит пользователь. Набор привилегий в маркере доступа представляет собой совокупность наборов привилегий пользователя и групп.

31

Лекция №11 (05.05.2012): Отдельные аспекты безопасности Windows

11.1. Выявление вторжений. Аудит системы защиты

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

Чтобы начать запись данных аудита, надо сформировать в дескрипторе безопасности объекта список SACL, в котором перечислено, какие действия от каких пользователей необходимо протоколировать.

11.2. Недопустимость повторного использования объектов

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

11.3. Защита от внешнего навязывания

ОС должна защищать себя от внешнего влияния (например, модификации загружаемой системы). Для этого в Windows встроены специальные средства, под названием Windows File Protection, которые защищают системные файлы от изменений даже со стороны пользователя с правами администратора. Защите подлежат все поставляемые с ОС файлы с расширением .sys, .dll, .exe, .ocx, а также некоторые шрифты TrueType. В случае изменения файла, он заменяется копией из каталога %windir%/system32/dllcache.

11.4. Маркер доступа. Контекст пользователя

Маркер создается при входе пользователя в систему и хранит сведения о контексте пользователя. Изначально маркер создается с оболочкой (например, explorer.exe), а затем все процессы, рожденные пользователем, получают дубликат данного маркера (создать дубликат может только служба Lsass при входе пользователя в систему).

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

Первый механизм позволяет изъять из маркера определенные привилегии, наличие которых при выполнении данных операции не нужно (добавлять или удалять

32

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

Кроме запуска нового процесса, существует возможность функционирования одного из потоков процесса с маркером, отличным от текущего процесса. Это называется перевоплощением (impersonation). Когда перевоплощенный поток получает доступ к какому-либо объекту, все остальные потоки также получают к нему доступ.

33

Лекция № 12(12.05.2012): Файловая система Windows. Интерфейс файловой системы

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

Директории – это системные файлы, поддерживающие структуру файловой системы. В этом файле содержится перечень содержащихся в нем файлов и устанавливается связь между файлами и их разнообразными атрибутами.

Абстрактно файл представляется в виде линейной последовательности байт, что очень удобно для организации межпроцессных взаимодействий при работе с внешними устройствами и тому подобное. Также из-за удобности структуры к файлам иногда относят другие объекты операционной системы, такие как физические или логические диски, порты ввода/вывода, каналы и другие, которые создаются функцией CreateFile. Для хранения файлов обычно используются устройства прямого доступа, позволяющие обращаться напрямую к любому своему блоку. Это обеспечивает произвольный доступ к байтам каждого файла.

Файловая система на диске представляет собой иерархическую структуру, которая организована засчет наличия в ней специальных файлов – директорий, или каталогов. Каталоги имеют идентичный внутренний табличный формат и обеспечивают многоуровневое именование файлов. Запись о файле, хранящаяся в каталоге, содержит имя файла, некоторые атрибуты и ссылки, необходимые для нахождения блоков файла. В итоге, файловая система образует собой древовидную структуру, где нет циклов (в идеале), и путь от корня до файла однозначно определяет файл.

Жесткие диски принято разбивать на логические диски или разделы. Имена разделов хранятся в каталоге \?? пространства имен объектов, которые осуществляют связь логического диска и реального устройства. Также Windows позволяет создать, так называемую, точку монтирования, т.е. связать какой-либо пустой каталог с одним из логических разделов.

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

Главная файловая таблица MFT

В файловой системе NTFS запись о файле в каталоге сопоставляется с записью о файле в главной файловой таблице диска - MFT (master file table), которая содержит информацию о расположении данных файла.

34

Рисунок 12.1 - Записи MFT

MFT – главная структура данных на диске, представляет собой обычный файл, содержащий до 248 записей размером 1 Кб каждая (см. рис. 12.1). Каждому файлу или каталогу соответствует одна запись. Записи 12-15 зарезервированы для служебных файлов, а записи, начиная с 16-й, предназначены для файлов пользователей. Для больших файлов требуется несколько записей, первая из которых называется базовой. Таблица MFT может располагаться в любом месте диска.

В состав каждой записи входит заголовок и последовательность пар <заголовок атрибута, значение>. Если атрибут целиком помещается в записи MFT, он считается резидентным. В противном случае атрибут помещается в отдельные блоки диска, а в заголовке атрибута хранится информация о его местонахождении. Всегда резидентны атрибуты: "имя файла", "стандартная информация", а такие атрибуты, как "поток данных файла", "индекс" большого каталога обычно нерезидентны, хотя для файлов размером несколько сот байтов поток данных может быть резидентным атрибутом, т.к. целиком помещается в записи MFT.

Чаще данные файла все же не помещаются в записи MFT. В этом случае вслед за заголовком в записи размещается список дисковых блоков файла (рис. 12.2).

Рисунок 12.2 - Запись MFT для 10-блочного файла, состоящего из четырех фрагментов (серий)

Решается задача приведения в соответствие номера блока в файле (LCN) номеру блока на диске (VCN). Для этого блоки диска представляются в виде совокупности серий, каждая из которых является непрерывной последовательностью блоков. Например, на рис. показано отображение 10-блочного файла, блоки которого размещаются в 9, 10, 25, 26, 27, 63, 85, 86, 87 и 88-м блоках диска. Схема весьма эффективна, особенно для не слишком фрагментированных файлов, например, непрерывный файл независимо от размера описывается всего одной серией.

35

Для сильно фрагментированных файлов требуется много серий и несколько MFT записей. Первая запись о файле содержит список остальных записей. Если этот список велик, то он является нерезидентным атрибутом и размещается в отдельном файле.

Реализация директорий

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

Как и любому файлу, каталогу соответствует запись в таблице MFT. Эта запись включает в себя совокупность записей о файлах, входящих в данный каталог и индексирована таким образом, чтобы обеспечить эффективный поиск имени файла. Каждая запись о файле включает в себя его имя, метку времени, размер и ссылку на MFTзапись для данного файла. Все это позволяет поисковым программам быстро получать основную информацию о файле из записи в каталоге без обращения к MFT-записи самого файла. Запись MFT для небольшого каталога, где записи о файлах являются резидентным атрибутом, показана на рисунке:

Для больших каталогов совокупность записей о файлах не помещается в MFTзапись каталога. Она является нерезидентным атрибутом и организована в виде B+ дерева, обеспечивающего быстрый поиск имени файла в алфавитном порядке. MFTзапись каталога содержит корень этого дерева, а его ветви размещаются в отдельных блоках диска.

Создание связей

Связывание файлов - техника, заимствованная из Unix, - образование для файла или каталога нескольких родительских каталогов.

Соединение между директорией и разделяемым файлом называется "связью" или "ссылкой" (link). Дерево файловой системы превращается в циклический граф.

ОС Windows (как и Unix) поддерживает два вида связей - жесткие (hard link) и символические (symbolic link). В случае жесткой связи запись о файле появляется в новом каталоге, а MFT-запись этого файла включает счетчик количества ссылок на данный файл. Удаление файла приводит к уменьшению счетчика на 1, и реальное удаление и освобождение его блоков происходит, когда значение счетчика равно 0.

36

Символическая линковка - создание нового файла, который содержит путь к связываемому файлу. Обычно в системе создается каталог, который связывается с уже существующим каталогом. Этот метод удобен для "подъема" (уменьшения степени вложенности) каталогов. Удаление символической связи на связываемый файл никак не влияет. Удаление связываемого файла делает символическую связь недействительной.

Жесткие связи создаются вызовом Win32-функции CreateHardLink. Штатной утилиты, поддерживающей жесткие связи, нет, хотя в состав ресурсов Windows для этих целей включена POSIX утилита ln.

Символическую связь (иногда говорят точку соединения, junction) можно образовать при помощи входящей в состав ресурсов Windows утилиты linkd.exe или при помощи свободно распространяемой утилиты junction.exe с сайта .

Тот факт, что операции монтирования и связывания могут превратить иерархическое дерево файловой системы в циклический граф, делает работу с ней более сложной. Поскольку теперь к файлу существует несколько путей, программа поиска файла может найти его на диске несколько раз. Простейшее практическое решение данной проблемы - ограничить число директорий при поиске. С этой целью при поиске файлов Windows Explorer останавливает рекурсию по достижении 32-го уровня вложенности или при превышении длины пути в 256 символов. Это зависит от того, какое событие наступит раньше.

Совместный доступ к файлу

Пользователи часто нуждаются в разделении файлов и совместном доступе к ним. Операция открытия файла имеет следствием создание объекта "открытый файл".

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

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

37

потоков захватить часть файла между двумя записями для монопольного доступа. Для этого используются Win32-функции LockFile и UnlockFile.

Кэширование в Windows NT

Самый легкий способ повысить производительность файловой системы – это минимизировать количество обращений к диску засчет кэша. В общем случае, использование быстрого устройства для оптимизации работы медленного. Часть данных файла, которая активно используется, размещается в буфере оперативной памяти и периодически производится синхронизация.

Устройство кэша Windows слегка отличается от традиционных. Традиционный способ. Буфер оперативной памяти содержит ряд блоков диска и располагается между файловой системой и системой ввода/вывода. Перед операцией чтения/записи проверяется наличие блока кэша. Если отсутствует – блок считывается с диска.

В Windows кэш работает на более высоком уровне. В результате чтения/записи запрос может быть произведен непосредственно из кэша. В противном случае, менеджер кэша делает запрос диспетчеру ввода/вывода на проецирование в кэш части файла. После чего запрос удовлетворяется из кэша. Таким образом, Windows поддерживает единый кэш для всех файловых систем, снимая проблему кэширования с этих самых файловых систем. Данный механизм кэширования использует механизм отложенной записи (lazy write). Записываемые данные накапливаются в течение времени. После чего сбрасываются на диск пакетом. Однако есть возможность сбросить содержимое кэша на диск немедленно.

Надежность файловой системы NTFS. Журналирование.

Файловая операция затрагивает сразу несколько объектов файловой системы, например, при записи в файл происходит выделение блоков диска, модификация MFTзаписи файла и MFT-записи $Bitmap, модификация каталоговой записи. Таким образом, в течение короткого периода времени информация в файловой системе является несогласованной. Если произойдет сбой, то будет всё плохо.

Для предотвращения подобных ситуаций при работе с файловой системой NTFS используется механизм транзакций – совокупность действий, выполняемых файловой системой. Транзакции выполняются либо целиком, либо не выполняются совсем.

Механизм журналирования заносит в протокол последовательность действий во время транзакций, и если произошел сбой, то при наличии протокола можно осуществить откат системы в состояние до начала транзакции. В журнал заносятся только изменения метаданных (MFT-записей), а изменение данных пользователя не заносится.

Для файла журнала отводится MFT-запись $Log. Последовательность действий с файлом журнала:

1)в кэш файла журнала заносится запись о предполагаемой транзакции;

2)выполняется транзакция, т.е. модифицируется файловая система;

3)файл журнала сбрасывается из кэша на диск;

4)диспетчер кэша записывает на диск изменения в файловой системе.

Данная схема является компромиссом между полной отказоустойчивостью системы и максимальной производительностью файловых операций.

При нахождении bad-блоков они «присоединяются» к метафайлу $BadBlock, т.е. изымаются из списка доступных.

38

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]