Безопасность в Windows Server 2003

Windows Server 2003 - это новая серверная операционная система от Microsoft. Ее выход неоднократно откладывался, а названия несколько раз менялись. Тем не менее, все мы ждали появления детища Microsoft, затаив дыхание. Пожалуй, лучше всего чаяния бесчисленных системных администраторов и специалистов в области информационной безопасности описывают слова Билла Вегте, вице-президента подразделения Windows Server Division корпорации Microsoft: "При разработке Windows Server 2003 мы ставили во главу угла повышение безопасности системы. Безопасность является одной из главных забот пользователей, и новые функции, реализованные в этой версии, значительно облегчают создание защищенных систем. Windows Server 2003 представляет собой надежную безопасную платформу, обогащенную целым рядом новаторских решений".

С момента выхода новой операционной системы прошло уже около полугода. У нас было время разобраться с системой информационной безопасности Windows Server 2003. Теперь мы представляем вашему вниманию эту статью.

MS Office 2003 + Windows SharePoint Services = IRM


Перед тем, как перейти к рассмотрению системы безопасности в самой операционной системе, хотелось бы отдельно упомянуть технологию Information Rights Management (IRM). Эта технология, используемая в Microsoft Office 2003 и службах Windows SharePoint, позволяет управлять правами документов за пределами корпоративной сети.

Система управления правами доступа к информации (Information Rights Management), реализованная в Microsoft Office 2003, позволяет ограничить использование в документах функций копирования, вставки, печати, а для электронных сообщений и отправки. Это дает возможность пользователям и организациям более полно контролировать процесс доступа к важным информационным ресурсам. Данная технология разграничения доступа к информации достаточно надежна, она действует на уровне отдельных файлов, позволяя защищать документы и электронные сообщения вне зависимости от того, где они находятся.
Одной из важных особенностей новой системы управления правами является возможность разграничения доступа к отдельным частям одного документа. Данная функция, в частности, может использоваться при совместной работе нескольких людей над одним объемным документом: каждому из пользователей, в этом случае, могут быть указаны те части документа, с которыми он должен работать, и закрыт доступ к редактированию других его частей. Подобная система разграничения доступа позволяет избежать конфликтов версий при объединении фрагментов, созданных несколькими авторами, в единый документ.

Кроме того, система Information Rights Management может использоваться, чтобы задать время жизни документа или электронного сообщения, по истечении которого данный документ просто нельзя будет открыть. Эта функция может быть полезна при работе с регулярно обновляемыми документами, а также документами, содержащими быстро устаревающую информацию.

Защищенные с использованием технологии IRM файлы можно открывать только в приложениях Microsoft Office 2003. Пользователи, у которых не установлен пакет Office 2003, смогут просматривать защищенные документы при помощи бесплатной программы, выпущенной Microsoft специально для этих целей. В ближайшее время Microsoft также планирует выпустить набор инструментальных средств для разработки ПО, с помощью которого независимые разработчики смогут встраивать поддержку данной технологии в свои продукты, работающие под управлением Windows 98 SE и более поздних версий.

Технология IRM очень молода, однако уже успела принести своему разработчику награду "Технология года". 20 октября 2003 года в Москве прошла Осенняя сессия Всероссийской конференции "Информационная безопасность России в условиях глобального информационного общества", в числе организаторов которой были Комиссии по информационной безопасности при Полномочном представителе Президента РФ в Центральном федеральном округе и Мэре Москвы, Управление Правительства Москвы по экономической безопасности, Центры информационной безопасности и безопасности связи ФСБ России, Гостехкомиссия России, Министерство по связи и информатизации, Банк России и ряд других авторитетных государственных и общественных организаций. В конференции приняли участие более 280 человек, среди которых были высокопоставленные сотрудники и руководители ряда государственных и коммерческих организаций.

Именно это жюри и присудило столь почетное звание компании Microsoft. Важно отметить, что технология IRM получила свою первую награду в России еще до официального выхода в свет русскоязычной версии пакета Microsoft Office 2003, в котором она реализована. Это свидетельствует о высоком интересе к технологиям корпоративной безопасности со стороны российских специалистов и хорошей динамике развития самих технологий.

Технологии защиты информации в операционных системах Microsoft


Нельзя сказать, что система безопасности в Windows Server 2003 явилась чем-то революционно новым. Напротив, она имеет много общего с предыдущими поколениями серверных ОС Windows: Windows 2000 Server и Windows NT. Именно это общее подмножество и будет рассмотрено в данной главе.

В марте прошлого года Билл Гейтс дал команду всем своим сотрудникам, занятым разработкой программного обеспечения, приостановить процесс написания нового кода и заняться исследованием того, что уже написано. Параллельно группа аналитиков изучала те сегодняшние проблемы и угрозы, которые существуют на рынке информационной безопасности. Результаты оказались довольно интересными. Например, удалось выяснить, что большинство проблем с безопасностью, возникающих у пользователей при работе с программным обеспечением (не только Microsoft), возникает из-за того, что сами продукты либо неправильно сконфигурированы (с точки зрения возможных угроз), либо не сконфигурированы вообще. Опросы, которые проводятся ежегодно, так называемые computer crime опросы (опросы о компьютерных преступлениях) выявляют процент компаний, которые были подвержены нападениям со стороны. По этим опросам от года к году легко проследить общую тенденцию. Уже в прошлом году 75% атак явились следствием неправильной конфигурации. Неправильной конфигурацией часто является и отсутствие конфигурации вообще. То есть, если вы, как администратор системы, используете Windows 2000 Server, инсталлируете свою систему по умолчанию, а потом никак ее не настраиваете, то в результате получаете незащищенную систему. Это не потому, что Windows 2000 Server - плохой продукт. Просто в основе его реализации лежит вполне определенная концепция: сразу предоставить пользователю максимум возможностей. В конфигурации по умолчанию максимум служб уже запущено, но пользователь сам должен позаботиться о защите своей системы. Практика показала, что такой подход в реальной жизни совершенно не применим. 70% пользователей ровным счетом ничего не сделали для защиты своей информационной системы.

Вот еще один любопытный факт. В одной европейской стране провели очень простой эксперимент: взяли человека с видеокамерой и микрофоном, одели его так, чтобы он был похож на журналиста, и поставили его возле выхода из метро. У каждого прохожего этот "журналист" с серьезным видом спрашивал: "Есть ли у вас электронный почтовый ящик?", а если есть то "Скажите, пожалуйста, адрес ящика и пароль для доступа к почте". И как вы думаете, какой процент респондентов сообщил эту информацию? Оказывается 63,5%!
Невозможно построить защищенную информационную систему, если не предупредить своих пользователей о том, что есть элементарные вещи, которые нельзя забывать. Иначе сколь угодно сложная информационная система окажется беззащитна.

В основе любой системы безопасности лежит политика, которую следует разработать перед тем, как что-либо внедрять.


Технологии, о которых пойдет речь, базируются на подходе Microsoft, который используется для построения защищенных информационных систем. Место Microsoft на картинке это слои технологии и процедуры, которые обеспечивают целостность, конфиденциальность и доступность.

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

Далее версия продукта будет умышлено опускаться, так как и Windows 2000, и Windows NT, и, естественно, Windows 2003 все операции, которые исполняются в информационной системе, аутентифицированы в ОС. Ниже можно видеть пример менеджера задач, который показывает, что каждому процессу, исполняющемуся на компьютере, обязательно соответствует учетная запись.


Будь то встроенная системная учетная запись, либо учетная запись пользователя, который запустил приложение, важно, что всегда абсолютно точно известно в контексте, какой учетной записи исполняется данный программный продукт (поток). Права доступа и привилегии данного исполняемого кода ограничены исключительно тем контекстом безопасности, который назначен учетной записи, от имени которой действует код. Аутентификация Windows 2000 и Windows 2003 может осуществляться по нескольким протоколам. Операционная система поддерживает целый ряд протоколов аутентификации. Когда мы говорим об аутентификации в домене, который является основной процедурой регистрации пользователей, то мы говорим о протоколе Kerberos, который на сегодняшний день является общепризнанным мировым стандартом.


Мы не будем подробно останавливаться на том, как работает протокол Kerberos. На картинке упомянуты его ключевые функции и составляющие. Чтобы в системе работал протокол Kerberos, необходима служба под названием Центр Распределения Ключей (KDC, Key Distribution Center). Она состоит из двух компонент: Центр Аутентификации (Authentication Service), который выдает билет TGT, и служба Ticket Granting, которая выдает билет на доступ в ресурс.

С точки зрения контроля доступа к объекту Microsoft использует концепцию, основанную на требованиях, которые сформулированы в Common Criteria. Возможно, вы помните, еще лет 5 назад шли бурные дебаты, по какой же книге красной или оранжевой уровень безопасности С2 сертифицирована ОС Windows, а по какой из них сертифицирована ОС Novel. В ходе дебатов пытались выяснить, какая из этих книг (красная или оранжевая) более сильная. На сегодняшний день это обсуждение совершенно неактуально, потому что нет уже ни С2, ни красной, ни оранжевой книги, есть единый универсальный набор требований для разного типа систем. Эти требования все собраны в Common Criteria.


Справа, в синем прямоугольнике, вы видите список стран, которые состоят в некоем консорциуме. В рамках этого консорциума Common Criteria является инвариантным сертификатом. То есть, какой-то продукт разработан, например, в Австрии, и там получил сертификат по Common Criteria, то автоматически он считается сертифицированным и во всех остальных странах, участвующих в этом соглашении. На сегодняшний день, по последним данным, к этому списку еще добавилась страна Венгрия. Россия тоже указана на картинке, правда самой последней со знаком вопроса. Дело в том, что Россия не является членом данного сообщества, и Common Criteria для нас не является законом, но далее будет показано, что российские требования по безопасности напрямую связаны с Common Criteria.

Common Criteria - это огромный набор различных требований по безопасности. Они делятся горизонтально по уровням (от наиболее простого к наиболее сложному) и по вертикали на профили, которые определяют конкретную тематику (для продукта). Windows построена в соответствии с требованием профиля, который называется "Controlled Access" - операционная система, обеспечивающая контроль доступа. На самом деле, это и есть тот самый уровень С2, о котором говорилось выше. Этот уровень был переработан и теперь входит в состав Common Criteria (именно под названием профиль "Controlled Access"). Главное требование этого профиля заключается в том, чтобы обеспечить контроль доступа к объектам (с помощью назначения этим объектам списка контроля доступа), а также проведение обязательного аудита операций (которые выполняются с объектами) и обеспечение разграничения административных полномочий.

Windows 2000 Server и Professional в прошлом году получили сертификат Common Criteria по уровню EAL4. EAL4 - максимально возможный уровень, по которому могут быть сертифицированы коммерческие ОС. Все более высокие уровни не могут быть номинированы для коммерческих систем. На них могут быть сертифицированы только специализированные системы, которые разрабатываются на уровне спецслужб правительств и соответственно не предназначены для использования рядовым пользователем. Поэтому, максимально возможный уровень сертификации Windows 2000 получен. Процесс сертификации длится очень долго (реально около 3 лет). Windows 2000 получила этот сертификат, практически, в момент выхода следующей версии Windows 2003. Сразу же после выхода начался сам процесс сертификации Windows 2003 и Windows XP. Но эти сертификаты Microsoft получит не раньше, чем через 2 года. Хотя тот факт, что система номинирована на данный уровень безопасности, говорит о многом.

Третье направление - средства шифрования, которые реализованы в системе безопасности. На самом деле, если представить себе в комплексе все службы, которые отвечают за защиту информации в составе ОС, то только одна из этих служб не использует никак шифрование. Это система контроля доступа. Она использует список контроля доступа.


Все остальные службы (прямоугольники на картинке), так или иначе, используют шифрование. Это шифрующая файловая система (которая защищает файлы на жестком диске), поддержка протокола IP Security (который защищает информацию на уровне сетевых пакетов), поддержка смарт-карт, весь процесс аутентификации служб удаленного доступа и, в частности, виртуальные сети. Большая часть из этих служб базируется на шифровании с открытым ключом, то есть для их работы необходима инфраструктура открытых ключей. С точки зрения такой системы, все средства шифрования реализованы в виде специальных модулей, которые называются Cryptographic Service Providers. Они лежат в основе всей этой пирамиды. CSP - это закрытый модуль, который выполняет криптографические операции и хранит личные ключи пользователей. Нет никой возможности напрямую получить доступ к информации, которая находится внутри криптографического провайдера, а уж тем более модифицировать его поведение. Это внутренняя закрытая структура. С другой стороны, есть стандартный интерфейс, который называется CryptoAPI. Все операции, которые выполняют шифрование, используют вызовы CryptoAPI для того, чтобы зашифровать/расшифровать какой-то поток данных.

В составе ОС от Microsoft присутствует набор криптографических провайдеров, которые обеспечивают необходимый набор алгоритмов для защиты информации. Возможно написание и своего собственного криптографического провайдера. Для того необходимо скопировать с web-сервера Microsoft CryptoSDK Provider Developer's Kit, в котором описаны устройство криптографического провайдера и правила его подключения к ОС.

Инфраструктура открытых ключей используется большинством служб защиты информации (например, шифрующей файловой системой). Для того чтобы воспользоваться этой инфраструктурой необходимо, чтобы был развернут центр сертификации, который бы выдавал сертификаты клиенту и обеспечивал жизненный цикл этих сертификатов. Такой центр сертификации входит в состав операционной системы Windows Server 2003 и Windows 2000 Server. Он может быть реализован как в режиме отдельно стоящего центра сертификации, так и в основном режиме enterprise-центра сертификации, который тесно интегрируется со службой каталогов Active Directory.


Перед вами пример того, как полностью автоматизировать процесс запросов для получения сертификата пользователя. Например, чтобы зашифровать файлы с помощью шифрующей файловой системы, пользователю необходимо получить специальный сертификат, который бы был предназначен для использования со службой шифрующей файловой системы. ОС автоматически генерирует запрос на получение сертификата. Для этого она использует шаблоны, которые предопределены и хранятся в Active Directory. Центр сертификации, получив запрос на выдачу сертификата по данному шаблону, связывается с Active Directory, аутентифицирует запрос, аутентифицирует пользователя и определяет, разрешено ли ему получить данный сертификат. Если все разрешено, то пользователь его получает. Эта стандартная процедура называется AutoDriving. Она является одной из новых возможностей Windows 2003. AutoDriving позволяет для всех служб, которые используют цифровые сертификаты, выполнять это в фоновом автоматическом режиме без участия пользователя. Поскольку инфраструктура открытых ключей должна быть достаточно хорошо доступна для всех ее пользователей, возможно, потребуется развернуть некую иерархию центра сертификации в случае, если предприятие содержит несколько подразделений разнесенных друг от друга на большое расстояние.


Чтобы приблизить конечного пользователей к центру сертификации можно построить подобную иерархию (см. картинку выше). Стандарт PKI это позволяет. Центр сертификации Microsoft точно также позволяет создавать сколь угодно сложную разветвленную иерархию, в разумных, конечно, пределах. Как правило, классические типовые реализации PKI ограничиваются тремя уровнями: корневой центр сертификации, промежуточный и конечный-выдающий.

Итак, цифровые сертификаты и соответствующая инфраструктура открытых ключей используются при аутентификации пользователей, если:

Речь идет об аутентификации с помощью смарт-карты.
Аутентификация происходит в рамках установления сеанса SSL, когда вы подключаетесь к web-серверу, который требует подключение по протоколу https (в Internet Explorer в правом нижнем углу окна появляется желтенький замочек). В процессе установления этого соединения выполняется аутентификация с использованием цифрового сертификата.
Служба удаленного доступа использует в качестве одного из протоколов аутентификации протокол TLS. Правда, в этом случае выполняется аутентификация удаленного пользователя по отношению к локальной сети, а не web-сервера по отношению к клиенту.

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

Переходим к цифровыми подписями. Цифровые подписи могут применяться где угодно. Чаще всего их используют для обеспечения целостности документа. Любой документ Microsoft Word, Exсel, или какой-нибудь еще можно защитить с помощью цифровой подписи, тем самым гарантируя целостность исходного документа. Сообщения электронной почты могут быть подписаны тоже, это гарантирует идентичность и целостность электронных сообщений.

Когда клиент копирует с сервера файл на свою рабочую станцию (этот процесс выполняется по протоколу SMB, Server Message Block), Windows 2003 позволяет установить цифровую подпись на пакеты, которые присылаются в рамках сеанса SMB. Тем самым даже на уровне файловых операций можно гарантировать целостность и идентичность передаваемых пакетов.

Немного остановимся теперь на смарт-картах. Смарт-карта это механизм, который позволяет усилить процесс аутентификации пользователя в системе. Самым слабым, и в тоже время самым популярным процессом аутентификации является использование пароля. Пароль - это, так называемая, однофакторная аутентификация. Смарт-карта это двухфакторная аутентификация. Здесь для того чтобы войти в систему, нужно, во-первых, иметь смарт-карту и предъявить ее системе, а, во-вторых, нужно доказать, что вы являетесь владельцем данной смарт-карты. То есть нужно знать ее PIN-код. Очевидно, что если вы напишете PIN-код на самой смарт-карте, а потом ее потеряете в людном месте, скорей всего, вашу систему нельзя считать безопасной. В идеальном случае злоумышленнику для того, чтобы попытаться войти от имени пользователя, который входит по смарт-карте, нужно сначала отнять эту смарт-карту у пользователя, а потом узнать, какой у нее PIN-код.

Это гораздо сложнее, чем просто подобрать пароль. С паролями есть, как известно, одна большая проблема: пользователям очень тяжело придумывать и запоминать сложные пароли. С одной стороны, если не заставлять пользователей придумывать сложные пароли, они будут использовать пароли типа пробела или вообще пустого пароля, в лучшем случае, девичью фамилию жены или что-то в этом роде. Такие пароли подбираются очень быстро. Если заставить пользователя использовать сложные пароли (для этого есть специальный фильтр, который требует, чтобы по длине пароль был не меньше 8 символов и содержал буквы не просто одного регистра, а еще и маленькие, и большие и спецсимволы), сразу же возникнет проблема: пользователь может и заведет себе такой сложный пароль, но запомнит ли он его? Скорее всего, пароль будет храниться где-нибудь на бумажке. Смарт-карта избавляет пользователя от этой сложности. Во-первых, PIN-код запомнить гораздо проще, так как он состоит из цифр (даже если их будет 8, все же это проще, чем запоминать сложные комбинации букв). Во-вторых, смарт-карта это все-таки реальная сущность, которую нужно отобрать, чтобы попытаться войти в вашу систему.

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



Стратегическая концепция Microsoft: "Защищенные информационные системы"


Здесь стоит выделить четыре основных понятия.


Система является защищенной, если в ней обеспечена безопасность циркулирующих в ней данных (с точки зрения несанкционированного доступа).
Также система не может быть безопасной, если в ней не обеспечена конфиденциальность. Рассмотрим некоторые тонкости. Есть два понятия: privacy и confidentiality. Оба переводятся на русский язык как конфиденциальность. В понятие security входит компонент под названием confidentiality. Здесь же конфиденциальность имеет смысл защиту от несанкционированного доступа к информации. То есть, доступ к конфиденциальной информации имеют только те, кому это разрешено. Когда мы говорим о направлении конфиденциальности, то имеем в виду privicy. В данном случае речь идет немного о другом. Дело в том, что предприятие, которое получило в свое распоряжение частную приватную информацию от своих пользователей (например, банк, обслуживающий своих клиентов, знает все о них все довольно много - состояние счета и целый перечень личный данных) не будет делиться своими данными, с кем бы то ни было. Типичным нарушением конфиденциальности в данном контексте, является ситуация, когда какой-нибудь оператор сотовой связи, собрав паспортные данные своих абонентов, комплектует из них базу данных (записывая ее на CD) и продает на Митинском рынке в Москве. Или, например, на том же самом Митинском рынке продают CD с базой данных о всех автовладельцах с их домашними адресами и паспортными данными. Это нарушение конфиденциальности той организации, которая должна ее обеспечить.


Рассмотрим направление безопасности более подробно. Здесь, в качестве основного лозунга используется: "SD3 + Communications". На русском языке это означает: безопасность в архитектуре, безопасность по умолчанию, безопасность в работе и взаимодействие. Безопасность в архитектуре означает, что система должна быть построена таким образом, чтобы сами технологии по ее созданию использовали и учитывали требования, которые предъявляют к информационной безопасности. Безопасность по умолчанию заключается в том, что продукт, будучи установлен по умолчанию, является наиболее защищенным. С Windows 2000 была обратная картина. Там по умолчанию пользователь получал менее защищенный продукт и должен был привести его к соответствующему уровню безопасности. С Windows 2003 наоборот: пользователь сразу получает максимально защищенный продукт с минимальным набором возможностей, ему необходимо самостоятельно открывать возможности, добавлять какие-то функции и.т.д. Безопасность в работе - это те самые механизмы, которые обеспечивают защиту информации, и те службы, которые организованы в рамках информационной системы.

Вернемся к Common Criteria и его применению в России. Формально наша страна не использует Common Criteria, но фактически ГОСТы, которые вступает в силу с 1 января 2004 года и предъявляют требования к информационной безопасности, есть ни что иное, как перевод на русский язык Common Criteria. Поэтому, с одной стороны, в Common Criteria Россия не входит, с другой стороны, если продукт соответствует требованиям Common Criteria, то он, на самом деле, соответствует и российским требованиям. Обратное утверждение тоже справедливо.

Для того чтобы помочь правительственным органам разобраться с тем, как устроена ОС и другие продукты Microsoft, в прошлом году была запущена программа Government Security Program. Она нацелена на то, чтобы установить прямой контакт между корпорацией Microsoft и правительственными органами, которые отвечают за безопасность. В рамках этой концепции (соглашения) было подписано несколько договоров. Россия явилась первым участником этой программы, с которой было подписано соглашение. Смысл его в том, что полгода назад российским службам (тогда еще ФАПСИ и гостехкомиссия) были предоставлены исходные коды ОС Windows XP и Windows Server 2003. На сегодняшний день существует лаборатория на базе НТЦ "Атлас", в ней организован процесс доступа к исходным кодам. На самом деле это означает, что российские службы сертифицируют продукты компании Microsoft.

Новые возможности системы безопасности Windows Server 2003


Теперь, непосредственно, о новых возможностях, которые появились в составе Windows Server 2003. Еще раз оговоримся, что ничего революционно нового Windows Server 2003 не приносит. В основном, это развитие тех технологий, которые были изложены выше.

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

Безопасность по дизайну - это то, как продукт создавался. Напомню, что когда Билл Гейтс дал команду заняться изучением того, что программисты написали, шел как раз самый разгар создания ОС Windows Server 2003. Раньше она называлась Windows .NET Server. Поэтому основные усилия были направлены на код Windows Server 2003. В частности, результатом исследований явилась выработка достаточно определенных четких стратегий и тактик по написанию защищенного кода. Было обнаружено определенное количество ошибочных подходов к программированию. Все эти данные собраны и описаны в книжке "Защищенный код", которая сейчас уже переживает второе издание и в скором времени (на "Платформе 2004") будет представлена в России на русском языке. Ее написали сотрудники корпорации Microsoft Майкл Ховард и Дэвид Леблан (Дэвид приедет на конференцию "Платформа 2004" и лично всем желающим поставит автограф на эту книжку).

Это не просто книжка про то, как надо программировать, это книжка про то, как писать защищенный код. Там изложение ведется по принципу: вот кусочек кода из Windows, в котором есть ошибка, попробуйте найти ее. На следующей странице дается описание, в чем была ошибка, какая с ней проблема и как эта ошибка была исправлена в реальной работе системы. То есть это не просто теоретические исследования, а реальные разработки из жизни, из существующих продуктов.

Раз уж речь зашла о программировании, то нельзя оставить без внимания ключ /GS в компиляторе Visual С++. Почему этот ключ так важен? Как мы знаем, большая часть атак на исполняемый код используют переполнение буфера. Когда приложению посылается в его входной буфер данных больше, чем размер этого буфера, избыточные данные переписывают соседний код, который, как правило, является адресом возврата из процедуры. Таким образом, управление можно передать вредному коду. То есть главное уязвимое место в любой программе - это отсутствие контроля буфера на его переполнение. Программист, реализующий поставленную перед ним прикладную задачу, концентрируется на том, чтобы обеспечить функционал для решения задачи и, как показало исследование, меньше всего думает о том, чтобы проверить буфер своего приложения (своей процедуры) на переполнение. Ключ /GS, поставленный в процессе компиляции, заставляет компилятор анализировать текст программ на возможные ошибки, приводящие к переполнению буфера, а также в код непосредственно добавляются некоторые вставки, которые защищают приложение даже в случае, если атака с переполнением буфера все же произойдет. Например, в стеке, где размещается буфер, добавляется еще некоторое пространство. То есть в реальной жизни (в реальном коде) размер буфера больше, чем тот, который разработчик задал при программировании. Очевидно, что таким образом риск проведения успешной атаки снижается. По итогам анализа исследуемого кода все участники работы над Windows 2003 прошли соответствующие тренинги (вспомните книжку), код скомпилирован с ключом /GS. Как результат Windows Server 2003 драматически снижает поле атак, в частности за счет того, что в нем ведется повсеместный контроль переполнения буфера.

Безопасность по умолчанию заключается в том, что отключена большая часть сервисов, которые изначально не нужны в системе. Таких сервисов по сравнению с Windows 2000 более 20. Например, Internet Information Services. Если вы инсталлируете Windows Server 2003 по умолчанию, то служба IIS 6.0 не устанавливается. Ее нужно инсталлировать отдельно и после этого она все равно поддерживает только статические html-файлы. Для того чтобы добавить новый функционал к web-серверу, нужно проделать все настройки явно. Что это дает?

Рассмотрим пример: был такой вирус Nimbda, который атаковал web-серверы под управлением IIS 5.0. Компания, которую недавно атаковал вирус Nimbda, успешно справилась с вирусом, но где-то по сети он еще "гуляет". Задача инженера придти и установить на абсолютно чистый компьютер ОС Windows 2000. Но после установки (все проделано аккуратно) и перезагрузки Nimbda стартует вместе с новой копией ОС. Это потому, что уязвимый для вируса ISS 5.0 устанавливается и активизируется по умолчанию. Windows 2003 такой ситуации не создаст. Вы спокойно можете поставить сервер, который максимально защищен, потом включить соответствующие антивирус и брандмауэр, а лишь после этого поднять web-сервер и добавить к нему необходимые службы.

Следующий аспект безопасности по умолчанию, это понижение привилегий служб, которые исполняются в операционной системе. Если вы являетесь администратором домена и эксплуатируете рабочую станцию как супер-пользователь (например, заходите в Интернет, скачиваете там какую-то программку, запускаете ее и получаете вирус). Проблема ни в том, что вы получили вирус, а в том, что вы администратор. Эта программа, которая незаконным образом на вашем компьютере завелась, будет дальше путешествовать по сети с вашими правами, потому что она исполняется в контексте администратора домена. Правильная рекомендация заключается в том, чтобы повседневные операции исполнять с минимально допустимыми привилегиями. Только в случае, когда необходимо выполнить административную функцию, тогда уже регистрироваться под именем администратора. В Windows 2003 появилось 2 новых учетных записи: одна называется Network Service, другая Local Service. Они специально предназначены для создания контекста безопасности серверных служб. Эти учетные записи имеют тот самый минимально допустимый уровень привилегий для того, чтобы серверная служба работала, и при этом обладают гораздо меньшими привилегиями, чем, например, учетная запись System или Администратор. Тем самым, если произойдет успешная атака или подключение через отладчик к этим службам, то возможности вредоносного кода или злоумышленника будут сильно ограничены.

Переходим к безопасности по внедрению. В Windows Server 2003 реализована технология Restriction Policy. Ее смысл в том, что администратор может явно установить ограничение на то, какие программы пользователи на рабочих станциях запускать могут, а какие нет. Он может это сделать по принципу "можно все, кроме того, что разрешено" или наоборот "ничего нельзя, разрешено только вот это".
Для администратора появилась новая возможность - использовать смарт-карту в таких утилитах runas.exe, net.exe и dcpromo.


Когда изначально на рабочей станции зарегистрирован обычный пользователь, и с этой машины нужно выполнить административную операцию (требующую прав учетной записи администратора), то можно воспользоваться командой runas. Windows Server 2003, как и Windows XP, позволяет в качестве параметров регистрации по команде runas указать либо имя пользователя и его пароль, либо смарт-карту.
Смарт-карты теперь поддерживаются и в терминальных сессиях. Правда, для того чтобы они поддерживались, терминальным сервером должен быть Windows Server 2003, терминальным клиентом - Windows XP.

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


По аутентификации в составе Windows Server 2003 появилась встроенная поддержка протокола аутентификации Digest. Раньше этот протокол поддерживался, но являлся частью ISS 5.0. Теперь, как и все остальные базовые протоколы аутентификации (Kerberos, NTLM, Schanel), он реализован в виде Security Support Provider (SSP) и помещен в соответствующий модуль архитектуры аутентификации.


Еще одна новая функциональная возможность это программные интерфейсы авторизации - Authorization API. К ним прилагается графический инструмент Authorization Manager. Смысл данной технологии заключается в том, что появляется так называемый ролевой доступ к web-приложениям. Если web-приложение (не любое абстрактное приложение, а именно web-приложение, работающее на базе ISS 6.0) предполагает некое разграничение ролей (администратор, уполномоченный, простой пользователь), то Windows Authorization API позволяют эти ограничения установить до того, как web-приложение будет запущено. То есть когда пользователь запускает соответствующий интерфейс web-приложения, сначала инициируются Authorization API, которые связываются с базой данных службами Authorization Manager и выясняют, какая роль в приложении предназначена данному конкретному пользователю. В соответствии с этой ролью web-приложение предоставит ровно те возможности, которые ей определены.


По алгоритмам шифрования, которые встроены в операционную систему, принципиально то, что появилась встроенная поддержка нового стандарта шифрования Advanced Encryption Standard. В Windows XP стандарт входит после первого сервис пака, а в Windows Server 2003 изначально.

Шифрующая файловая система получила ряд новых возможностей, которые коснулись нескольких аспектов. Это, прежде всего, поддержка WebDAV (технология WebDAV это возможность передавать/пересылать файлы прямо в рамках сеанса http). Если в рамках такого сеанса файл закачивается с тома NTFS, то он может быть зашифрован под шифрующей файловой системой. В этом и заключается поддержка технологии WebDAV.

Наиболее важным изменением шифрующей файловой системы является появление графического интерфейса для подключения других пользователей к шифрованному файлу. Изначально шифрующая файловая система устроена таким образом, что владелец файла может его зашифровать и потом только он может с этим файлом работать. Все остальные не смогут получить к нему доступ, потому что файл зашифрован. Графический интерфейс шифрующей файловой системы Windows Server 2003 и Windows XP позволяет владельцу файла подключить к этому файлу других явно указанных пользователей (но не групп). Тогда эти пользователи тоже смогут работать с этим зашифрованным файлом. Причем все операции будут производиться абсолютно прозрачно. Возможен также выбор алгоритма шифрования (симметричного). Напомним, что сам файл в шифрующей файловой системе шифруется симметричным алгоритмом. В Windows 2000 это DESX, а в Windows 2003 и Windows XP это алгоритм Triple DES или AES. Для того чтобы перейти на эти алгоритмы нужно изменить всего лишь один параметр в настройках системы.
Механизм автоматического запроса и получения сертификата в оригинале называется auto-enrollment. Фактически можно настроить систему безопасности таким образом, чтобы получение цифровых сертификатов выполнялось полностью автоматически без участия пользователя. Центр сертификации в Windows Server 2003 получил в данном контексте свое мощное развитие. Это коснулось его внутренней организации. Для удобства и расширения спектра решаемых задач появилась так называемая вторая версия шаблонов сертификатов, которые в отличие от тех, что имели место в Windows 2000, можно модифицировать (в этих сертификатах можно использовать различные служебные поля). Тем самым у администратора появляется больше гибкости в настройке инфраструктуры открытых ключей.
Самая главная новая возможность центра сертификации в Windows 2003 это ограниченная субординация. Вспомните иерархию нескольких центров сертификации, когда один корневой, другой подчиненный. Вот эта связь устанавливается, когда родительский центр сертификации выдает сертификат своему подчиненному на право быть центром сертификации. Субординация означает, что в сертификат, который выдается подчиненному центру, закладываются определенные ограничения на его работу. Например, на обслуживание определенного пространства имен пользователей или ограничение на развитие дальнейшей иерархии.

Каждому центру можно запретить, например, сертифицировать следующий центр, а разрешить лишь обслуживать пользователей. С помощью механизма мапирования политик реализуется стандарт кросс-сертификации. То есть, если существует несколько инфраструктур открытых ключей (несколько деревьев), между ними можно установить доверие, которое позволит прозрачно работать пользователям определенных в разных иерархиях PKI.

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


Еще одна возможность, которая расширяет технологию PKI в Windows Server 2003 это архивирование ключей. По умолчанию этот механизм не работает. Если вы его включили, то появляется защищенное хранилище, которое содержит личные ключи пользователей, туда они помещаются в момент выдачи пользователю сертификата. Хранилище необходимо в том случае, если пользователь по какой-то причине потеряет свой ключ. Такое иногда бывает. Вот пример из практики. Пользователь разбивает диск на два тома (С: и D:), на диск С: ставит операционную систему (здесь же находятся профили пользователей, в которых хранятся личные ключи). Потом пользователь зашифровывает файлы на диске D:, работает некоторое время, но что-то ему не нравится. Пользователь переустанавливает систему, отформатировав диск С:. Сможет ли он после этого прочитать файлы на диске D:? Нет, если не сохранил свои ключи. Для спасения в таких ситуациях используется архив. Пользователь может обратиться к администратору и получить свой личный ключ, чтобы расшифровать информацию, которая была зашифрована прежде.

* * *


На этом обзор возможностей безопасности Windows Server 2003 мы заканчиваем. Конечно, нельзя утверждать, что тема раскрыта полностью. Однако мы искренне надеемся, что воссоздать целостную картину нам удалось...