Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Operatsionnye_sistemy.doc
Скачиваний:
165
Добавлен:
12.03.2015
Размер:
4.94 Mб
Скачать

Глава 7. Организация безопасности в ос windows

§ 7.1. Технологии безопасности, реализованные в Windows

Ранее указывалось, что ОС Windows линейки 9x является незащищенной, в отли-

чие от Windows линейки NT, системой. Поэтому рассмотренный далее материал будет в

основном посвящен средствам защиты, реализованным в NT. Но следует отметить, что

некоторые элементы безопасности в Windows 98 все же были добавлены [4]:

• поддержка защищенных каналов;

• поддержка интеллектуальных карточек (smart cards);

• встроенная поддержка API-функций, предназначенных для выполнения операций

шифрования;

• встроенная поддержка алгоритма Authenticode;

• встроенная поддержка программы Microsoft Wallet (бумажник Microsoft).

Поддержка защищенных каналов осуществляется с помощью протокола РРТР

(Point to Point Tunneling Protocol), который позволяет устанавливать безопасное соеди-

нение с удаленной сетью даже посредством незащищенной сети. Такая связь устанавли-

вается с помощью зашифрованных инкапсулированных пакетов и обеспечивает возмож-

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

может подключиться к Internet с помощью протоколов TCP/IP и установить защищенное

IPX-соединение со своей офисной сетью. Обеспечивается поддержка SSL 3.0, новой

версии протокола SSL (Secured Sockets Layer), что повышает степень безопасности при

обмене данными по сетям Internet и intranet.

Поддержка операций с интеллектуальными карточками реализована в виде двух-

уровневой модели, включающей драйверы устройств считывания карточек, а также на-

бор API-функций, предназначенных для аутентификации, записи и чтения данных. Ин-

теллектуальные карточки выполняют, по крайней мере, три важные функции:

аутентификацию пользователей при входе в систему (вместо паролей или в сочетании с

ними); проведение финансовых операций по Internet и другим сетям;

хранение информации о человеке, например индивидуальные противопоказания к ле-

карствам или история болезни.

Поддержка API криптографии, технологии Authenticode и программы Microsoft

Wallet реализована в виде модулей, которые инсталлируются при установке Internet Ex-

plorer.

В табл. 7.1 перечислены возможности подсистем безопасности, реализованные в

Windows 95, Windows 98 и Windows NT.

Таблица 7.1

Технология

Windows 95

Windows 98 Windows 2000

Authenticode

PPTP-клиент

Надстройка (IE4) Есть

Надстройка (IE4) Есть

Есть

Есть

PPTP-сервер

Нет

Есть

Есть

Интеллектуальные карточки

API криптографии

Microsoft Wallet

Надстройка (IE4) Есть

Надстройка (IE4) Есть

Надстройка (IE4) Есть

Есть

Есть

Есть

Безопасность на уровне групп

Частично

Частично

Есть

Безопасность на уровне файлов Нет

Нет

Есть

Права и привилегии доступа для

отдельных объектов

Нет

152

Нет

Есть

Как показано в табл. 7.1, Windows NT и Windows 98 имеют много общих техноло-

гий безопасности, в частности технологии, связанные с Internet. Однако в Windows NT

они реализованы на более высоком уровне.

Хорошим примером различия между уровнями безопасности Windows NT и Win-

dows 98 является доступ к файлам. В Windows 98 (и Windows 95) защита обеспечивается

только на уровне доступа к диску и к папке. В указанных системах нельзя установить

индивидуальные права доступа к отдельным файлам. Отчасти это обусловлено тем, что

в среде Windows 98 существует много различных способов доступа к файлу: посредст-

вом DOS-прерываний, функций BIOS, функций Windows API, а также средств различ-

ных языков программирования (Pascal, C++ и т.д.). Из-за такого изобилия возможностей

доступа к файлам возникает множество "лазеек" в системе защиты, которые очень слож-

но предусмотреть и устранить, не прерывая работу текущих приложений [1, 7].

Технологии безопасности реализуются с помощью специального набора API-

функций, который называется API безопасности. Хотя этот набор входит в состав под-

системы Win32 API, он полностью реализован только в Windows NT. С точки зрения

программистов, это означает, что полная безопасность может быть обеспечена лишь в

этой системе. Такой вывод никого не удивит, ведь всем известно, что основное преиму-

щество Windows NT перед Windows 98 - это встроенная разветвленная система безопас-

ности.

В настоящее время в операционной системе Windows NT имеется около 80 API-

функций, предназначенных для обеспечения безопасности (исключая API-функции для

шифрования данных). Тем не менее API-функции, хотя бы частично способные работать

в среде Windows 98, можно пересчитать по пальцам. Как правило, со всеми API-

функциями безопасности системы Windows NT связаны функции-заглушки, которые

расположены в соответствующих DLL-файлах. Поэтому приложение, разработанное для

Windows NT, загружается в среде Windows 98 без ошибок компоновки. Следовательно,

разрабатывая приложение для Windows NT, вы самостоятельно должны определить, ка-

кие из его возможностей должны использоваться при работе в среде Windows 98 (если

приложение вообще сможет работать в этой среде).

Для каких приложений действительно необходимо обеспечить безопасность уров-

ня системы Windows NT? Первоочередными кандидатами являются программы, выпол-

няемые на сервере. Кроме того, безопасность на уровне Windows NT необходима при-

ложениям, имеющим доступ к собственным защищенным объектам (совместно

используемая память, файлы, семафоры, системный реестр и т.д.), а также большинству

приложений, применяемых в качестве сервисов.

Для предотвращения операции несанкционированного доступа к определенным

возможностям приложения или к определенным разделам базы данных, программисту

необходимо самостоятельно организовывать специальную проверку безопасности про-

граммы в следующей последовательности [1].

• Подготовка списка всех информационных объектов и/или операций, доступ к кото-

рым нельзя предоставлять без проверки полномочий пользователей.

• Разработка логической схемы специальных прав и привилегий доступа, которые

можно предоставлять различным пользователям и/или группам пользователей, экс-

плуатирующим вашу программу.

• Задание в своей программе проверки безопасности везде, где осуществляется доступ

к защищенным объектам или операциям.

• Ограничение доступа к защищенным объектам извне (например, с помощью стан-

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

бута доступа к объекту "Только для администратора" и запуска приложения с приви-

легиями администратора, чтобы оно имело доступ к собственному объекту.

153

Система безопасности в Windows NT основана на модели безопасности для каж-

дого пользователя. При выполнении всех операций, которые активизируются пользова-

телем после входа в систему (запуск приложений, доступ к принтерам и дискам, откры-

тие и закрытие файлов), производится проверка того, обладает ли пользователь

соответствующими правами и привилегиями [1, 7].

API-функции безопасности в Windows NT предоставляют возможность регистри-

ровать события на системном уровне и на уровне приложений. Это позволяет опреде-

лить, кто и когда имел доступ к различным компонентам системы. После того как поль-

зователь вошел на защищенный сервер, ему автоматически присваивается маркер

доступа. Этот маркер закреплен за пользователем все время, пока он находится в сети

Windows NT. С другой стороны, каждому системному объекту соответствует дескрип-

тор безопасности (security descriptor - SD), который содержит различную информацию,

связанную с безопасностью данного объекта. С помощью маркера доступа и дескрипто-

ра безопасности система защиты Windows NT проверяет при обращении к объекту, име-

ет ли пользователь право работать с данным объектом.

В Windows NT встроенные средства безопасности реализованы только для объек-

тов ядра операционной системы (подсистема Kernel). Поэтому, создавая такие объекты,

как растровые рисунки, указатели мыши, перья, кисти, значки, метафайлы или дескрип-

торы окон, вы не должны принимать меры по обеспечению их защиты (с помощью API-

функций безопасности). Но при создании или обращении к объектам ядра (файлы, пап-

ки, устройства хранения информации, каналы, почтовые слоты, последовательные пор-

ты, разделы реестра, консольные устройства и принтеры) необходимо предоставлять, по

крайней мере, дескриптор безопасности (или указывать вместо соответствующего пара-

метра значение NULL).

В среде Win32 постоянно приходится сталкиваться с API-функциями, предназна-

ченными для манипулирования объектами ядра. Эти функции в качестве аргумента все-

гда принимают указатель на структуру SECURITY_ATTRIBUTES. Подобные функции

мы уже рассматривали ранее, например при создании потоков и процессов, например

CreateThread().

HANDLE CreateThread (

LPSECURITY_ATTRIBUTES lpThreadAttributes,// привилегии доступа

DWORD dwStackSize,

// по умолчанию равен 0

LPTHREAD_START_ROUTINE lpStartAddress, // указатель на стартовую

// функцию

LPVOID lpParameter,

DWORD dwCreationFlags,

LPDWORD lpThreadId );

// значение, передаваемое

// функции

// активное состояние или

//состояние ожидания

// здесь система возвращает

// идентификатор потока

Чаще всего программист применяет данную функцию, просто задав значение

NULL в качестве аргумента lpSecurityAttributes. Такой подход является удачным при

реализации большинства стандартных операций доступа. Это связано с тем, что при за-

дании значения NULL используется набор параметров структуры SECURI-

TY_ATTRIBUTES, который задан по умолчанию.

Если необходимо нечто большее, чем атрибуты, заданные по умолчанию посредст-

вом значения NULL для структуры SECURITY_ATTRIBUTES, нужно вручную сформи-

ровать эту структуру.

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