Операционная система

Инструментарий управления безопасностью

Информационный документ

Аннотация

Настоящий документ описывает инструментарий управления безопасностью (Security Configuration Tool Set, SCTS) – комплект подключаемых модулей (snap-in) Microsoft Management Console (MMC), разработанных для уменьшения затрат на анализ и управление безопасностью в сетях на базе Windows NT® или Windows® 2000. Инструментарий позволяет управлять безопасностью в системах на базе Windows NT или Windows 2000, а затем периодически проводить анализ системы, чтобы удостовериться в том, что конфигурация остается неповрежденной или вовремя сделать необходимые изменения. Этот инструментарий также объединен со средством управления административными изменениями и конфигурацией Windows (Windows Administration Change and Configuration Management), что позволяет автоматически конфигурировать политики на большом числе систем всего предприятия.

 


© 1999 Microsoft Corporation. Все права защищены.

Информация, изложенная в этом документе, представляет собой точку зрения корпорации Microsoft на обсуждаемые вопросы на день публикации. Поскольку Microsoft реагирует на изменения условий рынка, эта точка зрения не должна восприниматься как обязательство, и Microsoft не может гарантировать точность представленной информации после даты публикации.

Этот документ имеет исключительно информационный характер. MICROSOFT НЕ ДАЕТ НИ ПРЯМЫХ, НИ КОСВЕННЫХ ГАРАНТИЙ НА ЭТОТ ДОКУМЕНТ.

Microsoft, Active Desktop, BackOffice, логотип BackOffice, MSN, Windows и Windows NT являются зарегистрированными торговыми знаками или торговыми марками корпорации Microsoft в Соединенных Штатах и/или других странах.

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

Microsoft Corporation • One Microsoft Way • Redmond, WA 98052-6399 • USA

0499


СОДЕРЖАНИЕ


ВВЕДЕНИЕ. 1

Зачем нужен инструментарий управления безопасностью   1

Задачи разработки инструментария управления безопасностью   2

Возможности инструментария управления безопасностью   3

Полнота  3

Гибкость  4

Расширяемость  4

Простота  5

Обзор инструментария управления безопасностью... 6

Компоненты инструментария управления безопасностью   6

Конфигурации безопасности  7

База данных анализа и управления безопасностью   8

Области конфигурации и анализа безопасности  10

Интерфейсы инструментария управления безопасностью   11

Графические интерфейсы пользователя  14

Команда Secedit 15

НАСТРОЙКА безопасности.. 20

Политика учетных записей  20

Локальные политики и журнал событий  20

Встроенные группы  21

Безопасность реестра  22

Безопасность файловой системы  23

Безопасность системных служб  23

Анализ безопасности.. 26

Локальные политики и политика учетных записей  27

Управление встроенными группами  28

Безопасность реестра  28

Безопасность файловой системы  29

Безопасность системных служб  30

Интеграция политики групп.. 32

Конфигурация безопасности в объектах групповой политики  32

Дополнительные политики безопасности  33

Использование инструментов.. 35

Использование редактора конфигураций безопасности  35

Использование менеджера конфигураций безопасности  37

Использование расширения установок безопасности редактора групповой политики  39

Дополнительная информация.. 43

Приложение A. Реализация приспособления безопасности   44

Введение  44

Архитектура  45

Построение DLL механизма приспособления  46

Структуры данных  46

Вспомогательные API и API обратного вызова инструментария управления безопасностью   49

PFSCE_QUERY_INFO   49

PFSCE_SET_INFO   50

PFSCE_FREE_INFO   51

PFSCE_LOG_INFO   52

ConvertSecurityDescriptorToStringSecurityDescriptor 53

ConvertStringSecurityDescriptorToSecurityDescriptor 54

SceSvcAttachmentConfig  55

SceSvcAttachmentAnalyze  58

SceSvcAttachmentUpdate  60

Установка и регистрация  65

Построение подключаемого модуля расширения  65

Формат буфера обмена  68

Интерфейсы подключаемого модуля расширения  68

Установка и регистрация  69

Инициализация—добавление узла приспособления  70

Реализация ISceSvcAttachmentPersistInfo  72

 


ВВЕДЕНИЕ


Настоящий документ описывает инструментарий управления безопасностью – комплект подключаемых модулей (snap-in) Microsoft Management Console (MMC), разработанных для облегчения, интегрирования и централизации задач по анализу и управлению безопасностью в системах на базе Windows NT® и Windows® 2000. Microsoft Management Console – это Windows-приложение с многооконным (MDI) интерфейсом, использующее Интернет-технологии. MMC – ключевая деталь стратегии управления Microsoft, разработанная для того, чтобы предоставить единое пространство для всех средств управления, упростить передачу прав и снизить общую стоимость владения для корпоративных пользователей Windows и Windows NT. Сама по себе, MMC не реализует каких-либо управленческих функций, предоставляя взамен общую среду для подключаемых модулей, которые и определяют реальные управленческие функции. Подключаемые модули – это административные компоненты, интегрированные в общем пространстве – интерфейсе MMC.

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

Зачем нужен инструментарий управления безопасностью

Существующая версия Microsoft Windows NT имеет превосходную систему безопасности. Единственный вход в систему дает пользователю доступ к ресурсам по всей корпоративной сети. Система предоставляет средства управления политикой безопасности и учетных записей, а доменная модель Windows NT является весьма гибкой и поддерживает широкий спектр сетевых конфигураций. Windows 2000 расширяет эти возможности, предоставляя готовые для Интернет корпоративные сети, а также новые распределенные службы, входящие в операционную систему.

С точки зрения администратора, Windows NT предоставляет ряд графических средств, каждое из которых может быть использовано для конфигурирования различных сторон безопасности системы. Однако эти средства не централизованы – администратору, возможно, придется открыть три или четыре приложения для того, чтобы сконфигурировать систему безопасности для одного компьютера. Таким образом, использование этих приложений может оказаться дорогостоящим и громоздким для многих пользователей, осознающих важность безопасности. Кроме того, управление безопасностью может быть сложным, а с добавлением в Windows 2000 возможностей распределенной безопасности эта сложность еще более увеличилась.

В то время как Windows NT 4.0 предоставляет адекватные (пусть и не всегда удобные) средства конфигурации, ей недостает средств анализа безопасности. Единственным инструментом из этой категории является программа просмотра событий (Event Viewer), который разрабатывался без учета задач анализа отчетности корпоративного уровня. Существуют инструменты третьих фирм, выполняющие подобные задачи, но большая часть из них либо не реализует возможностей уровня предприятия, либо не являются полными.

Инструментарий создавался как центральный инструмент управления безопасностью, а в будущих версиях он создаст основу для анализа корпоративного уровня. Что наиболее важно, он уменьшит административные затраты, связанные с безопасностью, предоставляя единую точку, откуда безопасность всей системы может быть просмотрена, проанализирована и, в случае надобности, изменена. Задача состоит в том, чтобы предоставить полный, гибкий, расширяемый и простой инструментарий для управления и анализа системной безопасности.

Задачи разработки инструментария управления безопасностью

Первая задача инструментария управления безопасностью – предоставление единой точки для администрации безопасности систем на базе Windows NT и Windows 2000. Чтобы осуществить эту цель, инструмент должен позволять администратору:

·         Управлять безопасностью на одной или более машинах на базе Windows NT или Windows 2000.

·         Производить анализ безопасности компьютеров на базе Windows NT или Windows 2000.

·         Выполнять эти задачи из интегрированной и единой оболочки.

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

Инструментарий управления безопасности создавался не для того, чтобы заменить существующие системные инструменты, которые работают с различными аспектами системной безопасности, такие как User Manager, Server Manager, Access Control List (ACL) Editor и так далее. Напротив, его цель в том, чтобы дополнить их, определив механизм, который будет обрабатывать стандартный файл конфигурации и автоматически совершать в фоновом режиме требуемые действия. Администраторы могут продолжать использовать имеющиеся средства (или их новейшие версии), чтобы изменить отдельные установки безопасности, когда это необходимо.

Чтобы заполнить пробел в анализе безопасности в системе управления безопасностью Windows NT, инструментарий управления безопасностью предоставляет возможности анализа на микроуровне. Он разработан так, чтобы предоставлять информацию обо всех аспектах системы, связанных с безопасностью. Администраторы системы могут просматривать данные и осуществлять управление безопасностью для всей информационной инфраструктуры. В будущих версиях они также смогут создавать отчеты и делать специализированные запросы.

Возможности инструментария управления безопасностью

Инструментарий управления безопасностью разработан так, чтобы быть полным, гибким расширяемым и простым.

Полнота

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

·         Политику учетных записей — Вы можете использовать инструмент для того, чтобы установить политику доступа, включая доменную или локальную политику паролей, доменную или локальную политику блокировки учетных записей и доменную политику Kerberos.

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

·         Встроенные группы — Вы можете назначить групповое членство для встроенных групп типа администраторов, операторов сервера, операторов резервирования, опытных (power) пользователей и тому подобное, так же как и любой другой группы, которую вы захотите создать. Эту возможность следует использовать не как основное средство управления группами, а только для управления членством в определенных группах, которые имеют заданные возможности.

·         Системные службы — Вы можете конфигурировать безопасность для различных служб, установленных в системе, включая службы сетевого транспорта, такие как TCP/IP, NetBIOS, служба разделения доступа к файлам CIFS, и так далее. Могут быть сконфигурированы как опции запуска (автоматический, ручной или отключенный), так и контроль доступа к этим службам – позволить или запретить доступ к командам пуска, остановки, временной остановки и управления службами.

·         Разделение доступа к файлам и папкам — Вы можете управлять настройками файловой системы Windows NT (NTFS) и службы Redirector. Сюда входят возможности по отключению анонимного доступа и включению пакетных подписей и безопасности при доступе к различным сетевым файлам с разделенным доступом. Будущие версии будут включать прочие специфичные для различных служб области, включая таки службы как Internet Information Server.

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

·         Системное хранилище (store) — Вы можете использовать данный инструментарий для установки безопасности для локальных системных файловых томов и дерев каталогов.

·         Безопасность каталогов – Вы можете использовать данный инструментарий для управления безопасностью объектов, находящихся в Windows 2000 Active Directory™.

Гибкость

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

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

В состав инструментария управления безопасностью входит ряд предопределенных конфигураций, которые будут поставляться с первым выпуском. Вы можете использовать эти конфигурации в том виде, как они выпускались, или же построить на них собственную конфигурацию. Для этого можно использовать Редактор Конфигураций Безопасности (Security Configuration Editor), инструмент, входящий в состав инструментария управления безопасностью.

Расширяемость

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

Вдобавок, системные службы - это область, которая изначально создавалась с расчетом на расширение. Она позволяет любому создателю службы реализовать приспособление управления безопасностью (security configuration attachment), которое может конфигурировать настройки безопасности для этой конкретной службы, также как и выполнять любой необходимый анализ. Различные системы на базе Windows NT могут быть сконфигурированы для исполнения различных наборов служб. Microsoft ожидает, что независимые поставщики программного обеспечения (ISV) захотят добавить управление и анализ безопасности их службы в данный каркас общей безопасности. Инструментарий изначально поддерживает приспособления управления безопасностью встроенных служб разделения доступа к файлам Windows NT (CIFS). Будущие версии будут включать приспособления для IIS, и так далее.

Простота

Поскольку инструментарий управления безопасностью разрабатывался для уменьшения затрат, связанных с управлением безопасностью в сетях, особенно важно, чтобы он был легок в изучении и использовании. Инструментарий не содержит сложных настроек – только простой единообразный графический интерфейс пользователя (GUI) для определения конфигураций, их записи в файл и просмотра данных анализа безопасности, хранящихся в базе данных. Интерфейс использует стандартные контекстные меню и виды, поддерживаемые Microsoft Management Console. Не используется чрезмерная графика или статистика, только простые таблицы с визуальными подсказками, указывающими на проблемы безопасности. Вдобавок, в инструментарий входит запускаемая из командной строки утилита Secedit.exe, позволяющая администраторам вызывать управление и анализ из сценария. Администраторы могут использовать графический интерфейс или командную строку для того, чтобы применить ранее созданную конфигурацию и выполнить анализ, что позволяет им легко включить инструмент в существующую модель управления. Они также могут использовать графический интерфейс для определения конфигурации и просмотра анализируемых данных.

Следующий раздел документа представляет более глубокий обзор инструментария управления безопасностью, его архитектуры и того, как он вписывается в Windows NT и Windows 2000.

Обзор инструментария управления безопасностью


В распределенные службы безопасности Windows NT и Windows 2000 включены многие новые возможности, которые позволят упростить управление доменами, повысить производительность и интегрировать технологии безопасности Интернет, основанные на криптографии с открытым ключом (public-key cryptography). Вот некоторые особенности распределенных служб безопасности:

·     Интеграция со службой каталогов Windows 2000 Server (Active Directory), что предоставляет масштабируемое и гибкое управление учетными записями в больших доменах, не теряя контроль над мелкими структурными единицами и передачей административных полномочий.

·     Протокол аутентификации Kerberos, сложившийся стандарт безопасности Интернет, реализован как протокол по умолчанию для сетевой аутентификации и предоставляет фундамент для аутентификационного взаимодействия.

·     Строгая аутентификация на основе сертификатов с открытым ключом, безопасных каналах на основе Secure Sockets Layer версии 3.0, и CryptoAPI версии 2.0 предоставляют стандартные протоколы для сохранения целостности и конфиденциальности данных при передаче через открытые сети.

Расширения безопасности были специально разработаны для удовлетворения нужд распределенных сетей уровня предприятия. В то время как службы безопасности Windows 2000 производят впечатление, очевидна необходимость инструмента для конфигурации и управления этими возможностями. Инструментарий управления безопасностью, подключаемый модуль Microsoft Management Console, удовлетворяет эту необходимость. (Детальное описание Microsoft Management Console можно найти в информационном документе “Microsoft Management Console: Overview” на веб-узле Microsoft.)

Компоненты инструментария управления безопасностью

Инструментарий состоит из следующих компонентов:

·              Служба управления безопасностью (Security Configuration Service) — эта служба – ключевой механизм инструментария управления безопасностью. Она работает в любой системе на базе Windows 2000 и отвечает за все функции управления и анализа безопасностью, предоставляемые инструментарием. Настоящая служба – центр всей инфраструктуры.

·              Установка безопасности (Setup Security)— Начальная конфигурация безопасности, выполняемая во время установки, выполняется настоящим инструментарием на основе предопределенных конфигураций, поставляемых с системой. При этом на каждом компьютере с «чистой» установкой Windows 2000 создается начальная база данных, называемая базой данных политики локального компьютера (Local Computer Policy).

Примечание. Это не тот случай, когда происходит обновление машины на базе Windows NT 4.0 или ранее, поскольку пользователь мог установить свои настройки безопасности, которые не должны быть затерты. В этом случае пользователь может использовать опцию Configure инструментария, чтобы использовать конфигурацию.

·              Редактор конфигураций безопасности (Security Configuration Editor) — Этот независимый подключаемый модуль позволяет вам задавать независимые от компьютера конфигурации безопасности, которые хранятся в текстовых .inf файлах.

·              Менеджер конфигураций безопасности (Security Configuration Manager) — Этот независимый подключаемый модель позволяет вам импортировать в базу данных безопасности (базу данных политики локального компьютера или любую конфиденциальную базу данных) одну или несколько ранее созданных конфигураций. Импорт конфигураций создает машинно-зависимую базу данных безопасности, которая хранит общую конфигурацию. Вы можете использовать общую конфигурацию на компьютере или сравнить текущую конфигурацию с конфигурацией из базы данных.

·              Расширение по управлению безопасности для редактора политики групп (Security settings extension to the Group Policy Editor) — Этот подключаемый модуль расширяет возможности редактора политики групп. Он позволяет вам определять конфигурации как часть объекта политики группы. Групповые политики – часть инициативы Microsoft Windows Administration. Для более подробной информации о политике групп и Windows Administration, смотри http://www.microsoft.com.

Впоследствии объекты политики групповой могут быть назначены отдельному компьютеру, домену или контексту организационной единицы (organizational unit scope) в Active Directory, таким образом, что они назначаются всем компьютерам этой области. Конфигурации безопасности различных объектов групповой политики (локальных объектов, доменов и организационных единиц) передаются компьютеру и импортируются в базу данных политики локального компьютера на этом компьютере. Общая конфигурация из этой базы данных периодически накладываются на компьютер, чтобы быть уверенным в том, что система остается верной корпоративной политике. Это называется политикой безопасности компьютера.

·         Инструмент командной строки Secedit.exe — программа, вызываемая из командной строки и дающая доступ к некоторым возможностям инструментария.

Конфигурации безопасности

Редактор конфигураций безопасности позволяет вам определять файлы конфигурации безопасности, в которых описываются настройки безопасности для каждой из областей безопасности (области включают политику учетных записей, локальную политику, ограниченные группы, реестр и так далее). Файлы конфигурации безопасности – это стандартные текстовые .inf-файлы. Используя, менеджер конфигураций безопасности, вы можете импортировать эти конфигурации в базы данных безопасности на различных компьютерах. Вы также можете импортировать эти конфигурации в объекты групповой политики для автоматического распространения на базы данных политики локального компьютера.

Подключаемый модуль редактора конфигураций безопасности предоставляет графический интерфейс пользователя, который позволяет вам редактировать файлы конфигурации безопасности для определения пользовательских конфигураций. Он предоставляет возможность использовать механизм "вырежи-и-вставь" (cut-and-paste), позволяя вам копировать часть конфигурации из различных файлов и создавать новую пользовательскую конфигурацию (смотри рисунок 1)

Рисунок 1. Редактор конфигураций безопасности

В комплект поставки инструментария управления безопасностью включены стандартные и рекомендуемые конфигурации, которые эффективны на типичных конфигурациях Windows NT и Windows 2000, включая те из них, в которых есть Интернет и интранет-компоненты. Предопределенные конфигурации включают различные рекомендации, описанные в информационном документе “Обеспечение безопасности установок Windows NT” (смотрите на microsoft.com). Вдобавок, способность подключаемого модуля редактировать конфигурации позволяет вам использовать предопределенные конфигурации или подогнать их под вашу конкретную среду.

База данных анализа и управления безопасностью

База данных анализа и управления безопасностью (база данных безопасности, security database) — это хранилище данных, специфичных для данного компьютера, которое создается, когда одна или более конфигураций импортируются на конкретный компьютер. Может существовать и начальная база данных, созданная при чистой установке Windows 2000. Эта база данных считается базой данных политики локального компьютера. Изначально она содержит установки безопасности для вашего компьютера, заданные по умолчанию. Вы можете экспортировать эту конфигурацию сразу же после установки и сохранить ее. Это полезно в том случае, когда вы хотите иметь возможность восстановить изначальную конфигурацию в любой момент.

База данных конфигурация и анализа безопасности — стартовая точка для всех конфигураций и анализов системы. База данных изначально создается на основе компьютеро-независимого конфигурационного файла, описанного выше. Новые конфигурации могут последовательно добавляться в базу данных без затирания всей конфигурации (смотри рисунок 2).

Рисунок 2. Меню менеджера конфигураций безопасности, показывающее, как базы данных могут быть выбраны и/или созданы

База данных политики локального компьютера — специальная база данных системы. Она определяет, какие политики безопасности сейчас в силе для системы. Политика может определять конфигурацию частично. Это значит, что различные атрибуты конфигурации могут игнорироваться. Например, безопасность для каждого файла или папки может быть не определена. Это подразумевает, что атрибуты конфигурации безопасности, которые не оговорены в политике, могут принимать любое значение — по умолчанию или определенное каким-либо другим механизмом, таким как ACL Editor в Windows Explorer для безопасности файлов и папок. Значения, не оговоренные политикой, также могут быть заданы вручную через личные базы данных. Тем не менее, любые пользовательские настройки, которые противоречат политике, подменяются значениями из политики. Личные конфигурации баз данных полезны в областях типа реестра и файловой системы, где многочисленные пользователи системы могут обезопасить свой улей реестра и личные каталоги.

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

Рисунок 3. Менеджер конфигураций безопасности показывает анализ

Области конфигурации и анализа безопасности

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

·         Политика учетных записей (Account policies) — эта зона позволяет вам устанавливать пароли, блокировку учетных записей и политику Kerberos. Политика Kerberos имеет значение только в контроллерах доменов Windows 2000.

·         Локальная политика (Local policies) — эта зона позволяет вам конфигурировать политику аудита, назначения пользовательских прав и настройки безопасности компьютера.

·         Встроенные группы (Restricted groups) — эти настройки управляют членством в избранных группах, показавшихся вам важными.

·         Деревья объектов — в этой категории три зоны безопасности:

·       Объекты каталогов – только в контроллерах доменов Windows 2000.

·       Ключи реестра.

·       Локальная файловая система.

Для каждого древа объектов, заданные файлы конфигурации позволяют вам конфигурировать (и анализировать) установки для дескрипторов безопасности, включая принадлежность объектов, список контроля доступа (Access Control List, ACL) и информация по аудиту.

·         Системные службы (System services) — В это зону входят все локальные и сетевые системные службы. Эта зона безопасности разработана таким образом, что независимые поставщики программных продуктов (independent software vendors, ISVs) могли создавать дополнения инструментария управления безопасностью для конфигурации и анализа специфичных системных служб. Вдобавок, Microsoft будет создавать дополнения для некоторых служб, поставляемых с системой. В первый выпуск будет включено дополнение для конфигурации и анализа безопасности в сетевой службе разделения доступа к файлам. Смотри в раздел A, Реализация дополнений инструментария управления безопасностью, реализационную и установочную информацию по данной теме.

Интерфейсы инструментария управления безопасностью

Графический интерфейс к инструментарию управления безопасностью предоставляется в виде ряда подключаемых модулей (snap-ins) для Microsoft Management Console (MMC). Графический интерфейс поддерживает следующие административные функции:

·         Определение конфигураций безопасности — в инструментарий включен редактор конфигураций безопасности, который позволяет задавать и сохранять конфигурации. Поскольку конфигурации хранятся в текстовых .inf-файлах, вы можете любой текстовый редактор для чтения примеров конфигураций, поставленных с инструментом и изучения их формата; однако Microsoft не рекомендует использовать ваш текстовый редактор для изменения файла конфигурации. Поступая таким образом, вы можете нечаянно изменить формат файла, так что он не будет распознан механизмом службы конфигурации безопасности. Вместо этого, используйте редактор конфигураций безопасности для создания или изменения файла конфигурации.

Чтобы использовать редактор конфигураций безопасности, запустите MMC и добавьте автономный модуль редактора конфигурации безопасности и все его расширения в новую консоль MMC, которую вы можете сохранить для последующего использования. За подробностями обращайтесь в справочную документацию по Microsoft Management Console.

·         Управления системной безопасностью — Чтобы сконфигурировать безопасность системы на базе Windows NT или Windows 2000, вы можете использовать одну из следующих возможностей инструментария:

·       Расширения установок безопасности для редактора групповой политики — этот вариант рекомендуется для тех случаев, когда ваша инфраструктура Windows базируется на Active Directory. Он также может быть использован локально на отдельных компьютерах с или без Active Directory. В этом случае, объект групповой политики конфигурируется на локальном компьютере. Для использования этого варианта, запустите редактор групповой политики и укажите на подходящий объект групповой политики, который может храниться в Active Directory или локально на компьютере. Щелкните на Computer Settings, затем Security Settings. Пространство имен узла, которое вы видите, аналогично представленному в редакторе конфигураций безопасности во время редактирования конкретной конфигурации. Вы можете вырезать и вставить отдельные узлы (каждый из которых представляет отдельную зону безопасности) из редактора конфигураций в групповую политику или импортировать целую конфигурацию в групповую политику. Благодаря этому конфигурация безопасности сохраняется как часть групповой политики и впоследствии накладывается как часть требований групповой политики. Объекты групповой политики накладываются на компьютер в зависимости от той области Active Directory (домен или организационная единица), к которой принадлежит компьютер. Это может привести к тому, что на компьютер накладывается несколько конфигураций безопасности. Если они содержат одни и те же значения, побеждает последняя по порядку наложения групповая политика. За подробностями об инфраструктуре групповой политики, смотри “Групповая политика Windows 2000” на microsoft.com.

·           Менеджер конфигураций безопасности — этот вариант рекомендуется только для тех случаев, когда ваша инфраструктура не базируется на Active Directory и вам не нужно, чтобы конфигурация периодически накладывалась на компьютер; другими словами, вы хотите контролировать управление и анализ вручную. Для этого, запустите MMC и добавьте подключаемый модуль менеджера конфигураций безопасности и все его расширения. По умолчанию, все модули указывают на базу данных политики локального компьютера. Для переключения на другую базу данных щелкните правой кнопкой на узле Security Configuration Manager, затем щелкните Set Database в выпадающего меню. В менеджере конфигураций, выберите Import Configuration из выпадающего меню. Откроется диалоговое окно File Open, в котором вам надо найти конфигурацию и выбрать ее. Повторите этот процесс для импортирования добавочных конфигураций как возрастающих значений. База данных соединяет различные конфигурации в одну общую, разрешая конфликты по принципу последнего записанного. Как только все конфигурации импортированы в выбранную базу данных, нажмите Configure Now в меню Context, чтобы наложить общую конфигурацию на систему. Диалоговое окно с индикатором прогресса покажет, как конфигурация накладывается на систему, а затем — список ошибок, если они возникли в процессе наложения.

·           Инструмент командной строки Secedit — этот вариант рекомендуется в том случае, когда ваша инфраструктура не базируется на Active Directory и у вас есть несколько компьютеров, которые надо часто конфигурировать. Запустите окно консоли, введите Secedit.exe; затем выберите подходящие значения, такие как место хранения базы, данных безопасности, какие конфигурации использовать и тому подобное. Вы также можете создать пакетный командный файл, а затем, используя планировщик задач, назначить его выполнение на нерабочее время. Вы можете использовать Microsoft System Management Server для распределения этой задачи на несколько различных компьютеров.

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

·         Анализ безопасности системы — для анализа безопасности системы либо щелкните Analyze в меню Context подключаемого модуля менеджера конфигураций безопасности, либо используете утилиту командной строки для сбора данных в базу данных безопасности. Это может быть сделано в форме административного сценария, который может выполняться немедленно или в наиболее удобное время. Вы также можете использовать System Management Server для распределения этой задачи на несколько различных компьютеров.

·         Просмотр данных анализа безопасности — менеджер конфигураций безопасности позволяет вам просматривать данные анализа безопасности для каждой зоны безопасности. Рекомендации из конфигураций показаны рядом с данными о текущих настройках, а значки выделяют зоны риска, где текущие настройки не совпадают с настройками из конфигурации. Для исправления этих проблемы, реконфигурируйте систему, щелкнув Configure Now в меню Context. Менеджер также позволяет вам подогнать значения конфигурации под текущие системные значения. Вы можете сохранить текущие значения, которые отображены в базе данных. Следующие анализы не будут указывать на эту проблему. Это может быть полезно для внесения изменений на лету.

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

Графические интерфейсы пользователя

С помощью инструментария предоставляются следующие интерфейсы:

·      Редактор конфигураций безопасности (Security Configuration Editor) — этот автономный подключаемый модуль предоставляет возможности редактирования конфигураций безопасности. (Смотри рисунок 4.)

Рисунок 4 Редактор конфигураций безопасности

·         Менеджер конфигураций безопасности (Security Configuration Manager) — этот автономный подключаемый модуль позволяет импортировать конфигурации в базу данных безопасности, конфигурировать систему на основе любой (составной) конфигурации из базы данных и анализировать текущее состояние безопасности по отношению к сохраненной конфигурации и указывать любые различия. (Смотри рисунок 5.)

Рисунок 5. Менеджер конфигураций безопасности

·         Расширение установок безопасности (Security Settings Extension) — это подключаемый модуль расширения для редактора групповой политики. Он позволяет сохранять конфигурации как часть групповой политики объектов, которая впоследствии может назначаться отдельным компьютерам или группам компьютеров и автоматически накладываться на них. (Смотри рисунок 6)

Рисунок 6. Расширение установок безопасности для редактора групповой политики, показывая редактор в области политики локального компьютера.

Команда Secedit

Рисунок 7 показывает параметры, используемы утилитой конфигурирования безопасности из командной строки Secedit.

Рисунок 7. Утилита командной строки Secedit

Синтаксис команды:

secedit {/analyze | /configure | /generate | /refreshPolicy | /validate}

 

Детали для каждой команды приведены ниже:

Secedit analyze

Анализирует безопасность системы:

secedit /analyze [/scppath scppath] [/sadpath sadpath] [/log logpath] [/verbose] [/quiet]

 

где

·         /sadpath sadpathпуть к базе данных, относительно которой Secedit производит анализ. Результаты хранятся в этой базе данных, вместе с уже имеющейся информацией о конфигурации. Если sadpath не указана, тогда используется база данных по умолчанию. База данных по умолчанию —%windir%\security\database\secedit.sdb для администраторов или %userprofile%\secedit.sdb для пользователей. Если sadpath — новая база данных, должен быть задан параметр scppath.

·         /scppath scppath — путь к файлу конфигурации, который должен быть загружен в базу данных до выполнения анализа. Если scppath на задан, анализ производится на основе информации уже заданной в базе данных sadpath. Scppath имеет смысл только тогда, когда sadpath — новая база данных.

·         /log logpath— путь к файлу журнала для процесса. Если не задан, используется значение по умолчанию, %windir%\security\logs\scesrv.log.

·         /verbose — указывает Secedit на необходимость выводить детальную информацию о прогрессе.

·         /quiet — указывает Secedit на отмену вывода на экран и в журнал.


Secedit configure

Конфигурирует безопасность системы:

secedit /configure [/scppath scppath] [/areas areas] [/overwrite][/sadpath sadpath] [/log logpath] [/verbose] [/quiet]

 

где:

·         /sadpath sadpath — путь к базе данных, которую Secedit будет использовать для конфигурации системы (с добавлением информации из scppath если scppath задан.) Если sadpath не указана, тогда используется база данных по умолчанию. База данных по умолчанию —%windir%\security\database\secedit.sdb для администраторов или %userprofile%\secedit.sdb для пользователей. Если sadpath — новая база данных, должен быть задан параметр scppath.

·         /scppath scppath — путь к файлу конфигурации, который должен быть загружен в базу данных до выполнения конфигурации. Если scppath не задан, конфигурация производится на основе информации уже заданной в базе данных sadpath.

·         /areas areas — указывает, какие зоны безопасности должны быть обработаны:

·         SECURITYPOLICY — локальная и доменная политика системы.

·         USER_MGMT — установки учетных записей для каждого пользователя.

·         GROUP_MGMT — установки встроенных групп (только для групп, указанных в профиле).

·         USER_RIGHTS — Предоставление пользователю прав и привилегий на начало сеанса,

·         DSOBJECTS — безопасность объектов каталогов,

·         REGKEYS — безопасность ключей реестра,

·         FILESTORE — безопасность файлового хранилища,

·         SERVICES — конфигурация безопасности для всех служб.

Значение по умолчанию – все зоны. Каждая зона должна отделяться пробелом.

·         /log logpath — путь к файлу журнала для процесса. Если не задан, используется значение по умолчанию, %windir%\security\logs\scesrv.log.

·         /verbose — указывает Secedit на необходимость выводить детальную информацию.

·         /quiet — указывает Secedit на отмену вывода на экран и в журнал.

·         /overwrite — указывает на то, что конфигурация, загруженная из scppath должна "затереть" любую существующую в базе данных информацию. Любая последующая конфигурация из этой базы данных будет основываться только на информации из файла scppath. Если Overwrite не указано, информация из файла scppath добавляется к существующей в базе данных sadpath. Overwrite имеет смысл только если задана scppath.


Secedit generate

Создает файл конфигурации из базы данных:

secedit /generate /scppath scppath [/areas areas][/sadpath sadpath] [/log logpath] [/verbose] [/quiet]

 

где:

·         /sadpath sadpath — путь к базе данных, откуда будет браться информация для конфигурации. Если sadpath не указана, тогда используется база данных по умолчанию. База данных по умолчанию —%windir%\security\database\secedit.sdb для администраторов или %userprofile%\secedit.sdb для пользователей. Если sadpath — новая база данных, должен быть задан параметр scppath.

·         /scppath scppath — путь к файлу, в который будет записана информация о существующей конфигурации. Для этой операции scppath должна быть указана.

·         /areas areas — указывает, какие зоны безопасности должны быть обработаны:

·         SECURITYPOLICY — локальная и доменная политика системы.

·         USER_MGMT — установки учетных записей для каждого пользователя.

·         GROUP_MGMT — установки встроенных групп (только для групп, указанных в профиле).

·         USER_RIGHTS — Предоставление пользователю прав и привилегий на начало сеанса,

·         DSOBJECTS — безопасность объектов каталогов,

·         REGKEYS — безопасность ключей реестра,

·         FILESTORE — безопасность файлового хранилища,

·         SERVICES — конфигурация безопасности для всех служб.

Значение по умолчанию – все зоны. Каждая зона должна отделяться пробелом.

·         /log logpath — путь к файлу журнала для процесса. Если не задан, используется значение по умолчанию, %windir%\security\logs\scesrv.log.

·         /verbose — указывает Secedit на необходимость выводить детальную информацию о прогрессе.

·         /quiet — указывает Secedit на отмену вывода на экран и в журнал.

Secedit refreshpolicy

Запускает продвижение политики безопасности в фоновом режиме:

secedit /RefreshPolicy {MACHINE_POLICY | USER_POLICY}

 

где:

·         /RefreshPolicy указывает Secedit на то, что надо обновить политику безопасности:

·         MACHINE_POLICY — для локальной машины

·         USER_POLICY — для пользователя с этим ID доступа в систему.


Secedit validate

Проверяет корректность синтаксиса файла редактора конфигурации безопасности:

secedit /validate filename

 

где:

·         /validate filename указывает файл для проверки.

 

НАСТРОЙКА безопасности


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

Политика учетных записей

В Windows 2000 существует два типа учетных записей — доменные и локальные. Политика доменных учетных записей конфигурируется в домене, локальных – локально на компьютере. Это позволяет контролировать мельчайшие детали безопасности, однако создает определенные трудности. На рисунке 8 изображена политика учетных записей в процессе конфигурации.

Рисунок 8. Конфигурирование учетных записей

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

Локальные политики и журнал событий

В Windows 2000, локальные политики по определению локальны для компьютера вне зависимости от типа компьютера (контроллеры доменов, серверы или рабочие станции). Локальные политики включают политику аудита, назначение пользовательских прав и привилегий, и различные локально конфигурируемые настройки конкретной системы на базе Windows 2000.

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

·         Назначение пользовательских прав и привилегий позволяет вам контролировать, кому выданы права и привилегии на данной системе.

·         Установки безопасности позволяют вам контролировать доступ к объектам, таким как гибкий диск и CD-ROM.

Так же как и политика учетных записей, локальная политика может конфигурировать и анализироваться с использованием различных средств, предоставляемых инструментарием. На рисунке 9 показаны некоторые возможности управления локальной политикой.

Рисунок 9. Конфигурирование локальной политики

Встроенные группы

Зона встроенных групп позволяет вам управлять членством во встроенных группах, имеющих предопределенные возможности. Сюда входят администраторы, опытные пользователи, операторы печати, операторы серверов и так далее, так же как и группы доменов, такие как администраторы доменов.

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

 Вместе с членами группы, эта зона отслеживает и управляет обратное членство каждой ограниченной группы в колонке Members Of. Эта колонка показывает другие группы, к которым может принадлежать ограниченная группа. Вы можете использовать это поля для того, чтобы контролировать в какие именно группы могут входить члены вашей встроенной группы — вы также можете использовать эту возможность для ограничения группы пользователей в одной группе и запрета на присоединение к другой. (Смотри рисунок 10.)

Рисунок 10. Конфигурирование встроенных групп

Наложение конфигурации обеспечивает конфигурацию членства в группах согласно файлу конфигурации. Группы и пользователи, не указанные в файле, удаляются из ограниченной группы. Вдобавок, настройка Reverse Membership Configuration обеспечивает, что каждая ограниченная группа является членом только групп, указанных в колонке Member Of.

Безопасность реестра

Реестр — еще одно дерево объектов, в котором инструментарий управления безопасностью позволяет вам управлять объектами посредством придачи объекту описателя безопасности. В случае реестра, однако, объектами являются ключе реестра. Конфигурация содержит полный путь к ключу реестра и описатель безопасности в формате SDDL.

Поскольку Windows 2000 поддерживает модель динамического наследования для всех провайдеров объектов, при наложении безопасности на ключи реестра, инструментарий управления безопасностью следует тем же алгоритмам наследования, что и в случае с деревом каталогов. На рисунке 11 показан внешний вид подключаемого модуля при конфигурировании безопасности реестра.

Рисунок 11. Конфигурирование безопасности реестра

Безопасность файловой системы

Безопасность локальной файловой системы — третье дерево объектов, поддерживаемых инструментарием управления безопасностью. Он рассматривает все тома в системе как часть единого дерева, где корневой каталог каждого диска является узлом первого уровня в дереве. Это аналогично конфигурации безопасности реестра и каталогов в том, что файл конфигурации содержит список полностью заданных путей и описатели безопасности для каждого из них. На файлах NTFS также поддерживается модель динамического наследования. На рисунке 12 показан внешний вид подключаемого модуля при конфигурировании безопасности файловой системы.

Рисунок 12 Конфигурирование безопасности файловой системы

Безопасность системных служб

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

Рисунок 13. Конфигурирование безопасности системных служб.

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

·         DLL механизма, которая экспортирует три вполне определенных интерфейса. Реализация всех их необязательна. Один интерфейс используется для конфигурации параметров, второй запрашивает значения для анализа, а третий — обновляет значения. Вы можете выбрать реализацию только конфигурации, или только анализа, или обоих. Вы можете выбрать поддержку пользовательского редактирования информации, хранящейся в базе данных. Вы должны зарегистрировать имя этой DLL во вполне определенном месте реестра, вместе с названием службы, к которой она применима. Механизм конфигурации безопасности просматривает реестр на предмет списка служб и загружает DLL приспособления для каждой. Затем механизм конфигурации безопасности вызывают нужный интерфейс в зависимости от того, конфигурирует он систему или собирает информацию для анализа. Интерфейс взаимодействует с приспособлением, которое далее является ответственным за сохранение конфигурации или аналитической информации в заданном месте конфигурации и использование этой информации для управления системой или оповещения администратора.

·         Подключаемый модуль расширения, который расширяет подключаемые модули (редактор и менеджер) управления безопасностью в Microsoft Management Console. Подключаемый модель расширения состоит из узла панели области — со своим пространством имен — который расширяет узел служб для поддержки специфичных для данной службы параметров. Подключаемый модуль расширения также должен экспортировать вполне определенные интерфейсы для взаимодействия с подключаемыми модулями конфигурации безопасности. Подключаемый модуль расширения на взаимодействует напрямую со своей DLL механизма. Он предоставляет возможности только когда вызывается родительским подключаемым модулем (в данном случае инструментарием управления безопасностью).

·         Установочный комплект, который регистрирует механизм для инструментария управления безопасностью и подключаемый модуль расширения.

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

Рисунок 14 Архитектура расширений и подключаемых модулей инструментария управления безопасностью

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

К тому же, интерфейс, используемый для расширения инструментария, описан в приложении A. "Реализация приспособления безопасности служб".

Анализ безопасности


Данный раздел описывает, как использовать инструментарий управления безопасностью для анализа различных аспектов безопасности системы на базе Windows 2000. Инструментарий управления безопасностью предоставляет графический интерфейс, позволяющий вам просматривать аналитическую информацию, собранную с системы. Вы также можете использовать менеджер конфигураций безопасности или утилиту командной строки secedit для сбора данных с системы. Это позволяет вам собирать данные в интерактивном режиме или планировать сбор данных как часть командного обработчика запускаемого в нерабочие часы с помощью System Management Server или планировщика задач.

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

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

По умолчанию, составная конфигурация — эта та, которая использовалась для конфигурации системы. Вы можете обновить составную конфигурацию, изменяя ее, импортируя дополнительные конфигурации или полностью заменяя ее на новую конфигурацию. Аналитическая информация собирается механизмом и хранится в стандартной базе данных на основе технологии Microsoft ISAM. Использование стандартной технологии баз данных Microsoft намеренно. Оно предоставит возможности для интегрированных механизмов отчета и высококлассных способностей, таких как запросы, трансакции и так далее. Также будет предоставляться поддержка ODBC.

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

·         Изменения конфигурации системы приводит к обновлению системных установок, так что они соответствуют установкам, рекомендуемым составной конфигурацией. Выбор опции Configure повторно накладывает все установки, указанные в составной конфигурации из базы данных.

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

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

Локальные политики и политика учетных записей

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

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

На рисунке 15 изображен менеджер конфигураций, показывающий информацию о политике безопасности.

Рисунок 15. Анализ локальной политики и политики учетных записей.

Управление встроенными группами

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

На рисунке 16 изображен менеджер конфигураций, показывающий информацию о встроенных группах.

Рисунок 16. Анализ членства во встроенных группах

Безопасность реестра

Механизм инструментария управления безопасностью использует пути к ключам реестра и их описатели безопасности (пути и описатели хранятся в составной конфигурации в формате SDDL) как основу для анализа. Механизм анализирует информацию реестра и предоставляет информацию о совпадениях текущих описателей безопасности с заданными. Механизм снова использует значения OK, Investigate (расследовать), и Not Configured (не задано) для категоризации информации описателей безопасности на текущем дереве при сравнении с записанной конфигурацией.

На рисунке 17 изображен менеджер конфигураций, показывающий информацию о безопасности реестра.

Рисунок 17. Анализ безопасности реестра

Безопасность файловой системы

Безопасность локальной файловой системы — третье объектной дерево, поддерживаемое инструментарием управления безопасностью. Механизм инструментария управления безопасностью использует пути к файлам и каталогам и их описатели безопасности (пути и описатели хранятся в составной конфигурации) как основу для анализа. Механизм анализирует информацию реестра и предоставляет информацию о совпадениях текущих описателей безопасности с заданными. Механизм использует значения OK, Investigate (расследовать), и Not Configured (не задано) для категоризации информации описателей безопасности при сравнении с записанной конфигурацией.

На рисунке 18 изображен менеджер конфигураций, показывающий информацию о безопасности локальной файловой системы.

Рисунок 18 Анализ безопасности файловой системы

Безопасность системных служб

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

Анализ специфичных для службы параметров безопасности предоставляется архитектурой приспособлений безопасности службы для инструментария управления безопасностью, как описывалось выше в разделе о конфигурации. В этом случае, инструментарий управления безопасностью вызывает определенные интерфейсы, чтобы позволить приспособлению собрать необходимую информацию и сохранить ее в определенном месте базы данных. Затем менеджер конфигурации вызывает аналитический интерфейс подключаемого модуля приспособления для показа информации, как и принятия действий по устранению проблемы. (Смотри рисунок 19)

Рисунок 19. Анализ установок безопасности служб

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

·      Политики (Policies)— включение или выключения пакетных сигнатур на сетевых пакетах для клиента и сервера, анонимный доступ, к разделенным ресурсам и каналам, и так далее.

·      Разделяемые ресурсы (Shares) — безопасность различных разделяемых ресурсов, доступных с вашего компьютера.

Рисунок 20. Анализ безопасности разделения доступа к файлам.

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

Интеграция политики групп


Конфигурация безопасности в объектах групповой политики

Как обсуждалось выше, важной частью инструментария управления безопасностью является его интеграция с инфраструктурой групповой политики, разработанной для инициативы Microsoft Windows Administration. Цель этой инициативы — позволить администраторам конфигурировать большое число клиентов посредством установки политики на сервере и ее автоматического продвижения и наложения на клиентов. Групповая политика использует Active Directory для того, чтобы позволить компьютерам и пользователям группироваться на основе области. Область определяется на одном из следующих уровней: узел, домен или организационная единица. Дополнительная поддержка позволяет подразделения внутри организационной единицы. Ограниченная групповая политика может также быть определенной локально на отдельных компьютерах, где она считается политикой локального компьютера. Подробностями можно найти в информационных документах по Windows Administration и групповой политике по адресу http://www.microsoft.com.

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

·              Политика учетных записей

·              Локальные политики

·              Ограниченные группы

·              Службы системы

·              Реестр

·              Файловая система

·              Объекты каталогов

На рисунке 21 изображен внешний вид той части групповой политики, которая посвящена безопасности. Щелкните Computer Settings, затем Security Settings, чтобы попасть в эту часть объекта групповой политики, выглядящую аналогично конфигурационной части редактора и менеджера конфигураций безопасности. В эти инструменты встроена поддержка механизма "вырежи-и-вставь", как и возможность импортировать и экспортировать конфигурации.

Рисунок 21. Внешний вид безопасности объекта группового политики

Дополнительные политики безопасности

Та часть групповой политики, которая посвящена безопасности, поддерживает дополнительные политики безопасности, используемые в предприятии на базе Active Directory. Эти политики также представлены в узле Security Settings любого объекта групповой политики (локального или базирующегося на Active Directory). Сюда входят:

·         Политика безопасности Интернет-протокола (Internet Protocol Security Policy) — данная политика указывает на объект IPSec в Active Directory. Объект политики IPSec определяет шифрование и требования к сигнатурам для пакетов IP между исходным компьютером и различными компьютерами назначения. Дополнительную информацию о IPSec можно найти по адресу http://www.microsoft.com.

·         Политика открытых ключей (Public-key policies) — данная политика включает ряд под-политик, которые используются технологиями на безе инфраструктуры открытого ключа включенных в Windows 2000. Сюда входят:

·         Агенты восстановления шифрованной информации (Encrypted data recovery agents) — данная политика включает ряд сертификатов X509 3-ей версии. Владелец секретного ключа, связанного с каждым из сертификатов имеет возможность восстановить любой файл, зашифрованный с использованием шифрованной файловой системы любого из компьютеров в зоне влияния данной политики. За более подробной информацией об этой политике и шифровании файловой системы, смотри информационный документ о шифровании файловых систем на http://www.microsoft.com.

·         Корневые сертификаты (Root certificates) — данная политика включает ряд самоподписанных сертификатов X509 версии 3, которые принадлежат различным полномочным сертификаторам. Любой сертификат, определенный как корневой в данной области (домен, организационная или локальная единица), представляет высшую веру в данном полномочном сертификаторе. Все проверки сертификаторов в ИОК должны завершаться на корневом сертификате, описанном здесь для принятия исходного сертификата как действующего.

·         Списки доверия сертификатам (Certificate trust lists) — данная политика включает ряд несамоподписанных сертификатов X509 версии 3, которые принадлежат различным полномочным сертификаторам. Эти сертификаторы иногда упоминаются как подчиненные сертификаторы. Списки доверия сертификатам содержат дополнительную информацию о том, в каких целях можно доверять сертификаторам и так далее. Это позволяет администраторам определять область различных сертификаторов в том смысле, какие типы действительных сертификатов они выдают. За более подробной информацией о списках доверия сертификатам и их использовании, смотри документацию ИОК на http://www.microsoft.com.

 

Использование инструментов


Использование редактора конфигураций безопасности

Для использования редактора конфигураций безопасности (Secure Configuration Editor, SCE) вы должны сначала загрузить подключаемый модуль в консоль MMC.

Для подключения SCE в консоль MMC

1.     Запустите MMC. В меню Start выберите Run и введите в поле Open команду

Mmc.exe

 

2.     Щелкните Console, затем Add/Remove Snap-ins.

3.     Щелкните Add.

4.     Выберите в списке Security Configuration Editor и щелкните OK.

5.     Щелкните на закладке Extensions. В выпадающем списке должно быть написано Security Configuration Editor.

6.     Выберите все перечисленные расширения.

7.     Вернитесь к выпадающему списку и посмотрите, не появилось ли новых подключаемых модулей. Если появилось, то выбирайте их по одному и подключайте их расширения.

8.     Повторяйте предыдущий шаг до тех пор, пока все расширения не будут добавлены. Таким образом, будет создана консоль MMC с полностью загруженным SCE.

9.     Щелкните Console, затем щелкните Save As для сохранения консоли для будущего использования.

Пример 1: Для выбора предопределенных конфигураций

1.     Запустите сохраненную консоль SCE.

2.     Откройте узел SCE. Вы должны увидеть путь по умолчанию для поиска конфигураций в вашем системном каталоге.

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

4.     Щелкните конфигурацию Basic Security.

5.     Щелкните Local Policies, затем щелкните Security Options.

6.     Щелкните Rename Administrator account to.

7.     Сбросьте флажок для того, чтобы включить это значение

8.     Введите какое-нибудь имя, например, “nobody.”

9.     Повторите процесс с Rename Guest account name to. Таким образом вы можете изменять в конфигурации что угодно.

10.  Щелкните правой кнопкой на узле Base Security и выберите Save As.

11.  В диалоговом окне File Open укажите путь для сохранения конфигурации.


Пример 2. Создание новой конфигурации

1.     Запустите сохраненную консоль SCE.

2.     Щелкните правой кнопкой на узле SCE, и щелкните Add configuration Search Path.

3.     Выберите каталог, где вы будете хранить новую конфигурацию.

4.     Щелкните OK.

5.     Узел с выбранным путем будет добавлен под узлом SCE.

6.     Щелкните правой кнопкой на этом узле и выберите New Configuration.

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

·         Импортировать существующую конфигурацию — щелкните правой кнопкой на новой конфигурации и выберите Import Configuration. Найдите нужную вам конфигурацию и щелкните OK.

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

·         Скопировать и вставить области из существующих конфигураций — перейдите к конфигурации, которую вы хотите скопировать. Выберите нужную зону (политика учетных записей, локальная политика, и так далее). Щелкните правой кнопкой на зоне и выберите Copy. Потом перейдите к той же зоне в новой конфигурации и щелкните правой кнопкой и выберите Paste.

Использование менеджера конфигураций безопасности

Для использования менеджера конфигураций безопасности (Secure Configuration Manager, SCM) вы должны сначала загрузить подключаемый модуль в консоль MMC.

Для подключения SCM в консоль MMC

1.     Запустите MMC. В меню Start выберите Run и введите в поле Open команду

Mmc.exe

 

2.     Щелкните Console, потом щелкните Add/Remove Snap-ins.

3.     Щелкните Add.

4.     Выберите из списка Security Configuration Manager и щелкните OK.

5.     Щелкните на закладке Extensions. В выпадающем списке должно быть написано Security Configuration Manager.

6.     Выберите все перечисленные расширения.

7.     Вернитесь к выпадающему списку и посмотрите, не появилось ли новых подключаемых модулей. Если появилось, то выбирайте их по одному и подключайте их расширения.

8.     Повторяйте предыдущий шаг до тех пор, пока все расширения не будут добавлены. Таким образом, будет создана консоль MMC с полностью загруженным SCM.

9.     Щелкните Console, затем щелкните Save As для сохранения консоли для будущего использования.

Пример 1: Применение предопределенной конфигурации на компьютер

1.     Запустите сохраненную консоль SCM. По умолчанию, область действия установлена на базу данных политики локального компьютера.

2.     Щелкните правой кнопкой на узле SCM, затем щелкните Import Configuration.

3.     Используя диалоговое окно File Open, найдите нужную вам конфигурацию.

4.     Удостоверьтесь, что флаг перезаписи существующей конфигурации сброшен и что существующая конфигурация не будет затерта, если только так не указано в импортируемой конфигурации.

5.     Щелкните OK. Таким образом, выбранная конфигурация становится частью конфигурации, хранимой в политике локального компьютера

6.     Щелкните Configure Now в меню Context.

Пример 2: Проверка совпадения текущей конфигурации с конфигурацией в базе данных политики локального компьютера

1.     Запустите сохраненную консоль SCM. По умолчанию, область действия установлена на базу данных политики локального компьютера.

2.     Щелкните правой кнопкой на узле SCM, затем щелкните Analyze.

3.     Укажите путь к журналу ошибок и щелкните OK.

4.     Появится диалоговое окно с указателем прогресса.

5.     Если появятся ошибки, запустится Notepad с загруженным файлом журнала, чтобы показать ошибки.

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

Пример 3: Экспортирование текущей системной конфигурации одного компьютера и ее наложение на другой

1.     Запустите сохраненную консоль SCM на выбранном компьютере. По умолчанию, область действия установлена на базу данных политики локального компьютера.

2.     Щелкните правой кнопкой на узле SCM, затем щелкните Export Configuration.

3.     Укажите путь к файлу конфигурации, куда должна быть записана конфигурация. Это может быть сетевой путь к какому-либо разделенному ресурсу. Туда по окончанию будет записана конфигурация.

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

·         Если это только пара компьютеров, и вы хотите сделать это вручную, используйте пример 1 для наложения конфигурации на каждый из компьютеров

·         Если это большое число компьютеров, и вы находитесь в инфраструктуре на основе Active Directory, вы можете использовать расширение настроек безопасности редактора групповой политики, импортировать конфигурацию в объект групповой политики (Group Policy Object, GPO) и автоматически распространить ее на большое число систем

·         Если это большое число компьютера и у вас нет инфраструктуры на базе Active Directory, вы можете использовать System Management Server для наложения конфигурации на несколько компьютеров с помощью командного сценария, вызывающего Secedit.exe.

Пример 4: Анализ системы по отношению к конфигурациям, полученным из внешнего источника

1.     Запустите сохраненную консоль SCM.

2.     Щелкните правой кнопкой на New Database и выберите новую базу данных безопасности.

3.     Щелкните правой кнопкой на Import Configuration и укажите один из файлов конфигурации.

4.     Повторяйте предыдущие шаги для каждого из подключаемых файлов конфигурациею.

5.     Щелкните правой кнопкой на Analyze. Укажите путь к журналу ошибок, и щелкните OK.

6.     Появится диалоговое окно с указателем прогресса. Как только процесс завершится, вы сможете просмотреть различные зоны и найти расхождения. Их легко узнать по пиктограммам в виде знака X.

Использование расширения установок безопасности редактора групповой политики

Пример 1: Работа с политикой локального компьютера

1.     Щелкните правой кнопкой на значке My Computer на рабочем столе.

2.     Запустите подключаемый модуль управления компьютером, щелкнув Manage.

3.     Из меню System Tools выберите Local Computer Policy, затем Computer Settings, затем Security Settings. Вы должны увидеть узел конфигурации безопасности. Вы можете редактировать различные политики, такие как пароли, блокирование, протоколирование или права пользователей. Эти изменения вступают в силу немедленно после того, как вы завершили все изменения и закрыли подключаемый модуль.

3.Примечание: Если вы находитесь в инфраструктуре доменной политики, ваши изменения могут быть затерты изменениями Active Directory.

Пример 2: установка политики учетных записей для всех компьютеров домена

1.     Запустите Active Directory Manager.

2.     Из меню Start, выберите Programs, затем Administrative Tools, затем Active Directory Manager.

3.     Щелкните правой кнопкой на узле Domain, щелкните Tasks; затем щелкните Manage Group Policy.

4.     Появится диалоговое окно назначения групповой политики Group Policy. Оно покажет вам все существующие назначенные объекты групповой политики.

5.     Щелкните объект Default Domain Account Policy, затем щелкните Edit.

6.     Запустится редактор групповой политики, сфокусированный на выбранной политике.

7.     Щелкните узел Policy. Из меню Computer Settings выберите Security Settings, затем щелкните Account Policies.

8.     Теперь вы можете раскрывать каждый узел под политикой учетных записей.

·         Политика паролей – конфигурация настроек политики паролей в домене.

·         Политика блокировки паролей – конфигурация ограничений блокировки паролей.

·         Политика Kerberos – конфигурация политик, связанных с Kerberos.

Пример 3: Отключение RAS, DHCP, и DNS на всех компьютерах домена, за исключением определенных

Определение этой политики делится на две части. Сначала вы устанавливаете общую политику верхнего уровня для отключения этих служб на всех компьютерах домена. Затем вы перемещаете отдельные компьютеры, работающие с RAS, DHCP, и DNS в отдельные организационные единицы и настраиваете политику для включения соответствующих служб.
Часть 1: Для установки политики верхнего уровня

1.     Запустите Active Directory Manager. Из меню Start, выберите Programs, затем Administrative Tools, затем Active Directory Manager.

2.     Щелкните правой кнопкой на узле Domain, щелкните Tasks; затем щелкните Manage Group Policy. Появится диалоговое окно назначения групповой политики. Оно покажет вам все существующие назначенные объекты групповой политики.

3.     Запустит диалоговое окно назначения объекта групповой политики, щелкнув Add.

4.     Щелкните опцию New Group Policy, и замените указанное название названием Disable Network Services.

5.     Будет создан объект групповой политики и запущен редактор политики групп для этого объекта.

6.     В меню Computer Settings выберите Security Settings, затем щелкните System Services.

7.     Выберите каждую из трех служб и дважды щелкните для запуска диалогового окна конфигурации.

8.     Установите режим запуска службы на Disabled, затем щелкните OK.

9.     Закройте подключаемый модуль. Это установит требуемую политику.

Часть 2: Перемещение компьютеров RAS, DHCP, и DNS в отдельные организационные единицы и установка политики для подключения соответствующих служб

1.     Запустите Active Directory Manager. Из меню Start, выберите Programs, затем Administrative Tools, затем Active Directory Manager.

2.     Найдите место, где вы хотите создать организационную единицу для компьютеров с серверами RAS. Щелкните New, затем щелкните Organizational Unit и наберите следующее название:

Remote Access Servers

 

3.     Выберите RAS OU. Щелкните правой кнопкой на Tasks, затем щелкните Manage Group Policy. Появится диалоговое окно назначения групповой политики.

4.     Запустите диалоговое окно назначения объекта групповой политики, щелкнув Add.

5.     Выберите опцию New Group Policy и вставьте Enable RAS. Это создаст объект групповой политики и запустит редактор политики групп для него.

6.     В меню Computer Settings выберите Security Settings, затем щелкните System Services.

7.     Выберите RAS Service и дважды щелкните для запуска диалогового окна конфигурации.

8.     Установите режим запуска службы на Enabled, затем щелкните OK.

9.     Закройте подключаемый модуль. Это установит нужную политику для серверов RAS.

10.  Повторите вышеописанные шаги для серверов DHCP и DNS.

Дополнительная информация


С наиболее свежей информацией о Windows NT Server и Windows 2000 можно познакомиться по адресу: http://www.microsoft.com/ntserver, а также посетив электронную конференцию Windows NT Server Forum в сети Microsoft Network (GO WORD: MSNTS).

Приложение A. Реализация приспособления безопасности


В настоящем приложение описываются процедуры для построения и реализации приспособления для инструментария управления безопасностью.

Введение

Приспособления безопасности требуют реализации следующих двух частей.

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

·         Подключаемый модуль расширения Microsoft Management Console (MMC), предоставляющий редактору конфигурации и менеджеру возможности для конфигурации и анализа специфичных для приспособления установок безопасности. Расширение может быть показано в качестве узла в двух местах в пространстве имен инструментария управления безопасностью:

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

Инструментарий управления безопасностью напрямую поддерживает общие настройки безопасности для отдельных служб. Сюда входит политика вызова службы (отключенная, автоматическая или ручная), и описатели безопасности для каждой службы. Таким образом, ни одно приспособления конфигурации безопасности не должно пытаться сконфигурировать эти параметры. Архитектура приспособлений безопасности служб инструментария управления безопасностью предоставляет инфраструктуру, позволяющую конфигурировать и анализировать специфичные для службы настройки безопасности для отдельных служб. Например, Spooler — служба Windows NT, частные объекты (в данном случае, принтеры), которые нуждаются в защите. Вдобавок, у него есть параметры конфигурации, являющиеся специфичными для службы. Для Spooler, приспособление безопасности службы должно позволять конфигурацию и анализ настроек безопасности для каждого из объектов принтера и важных для безопасности параметров службы.

·       На том же уровне, что и Services и прочие зоны безопасности. Этот вариант должен использоваться в тех случаях, когда приспособление реализует более общую конфигурацию или анализ безопасности. Например, приспособление, которое отслеживает пакеты обновлений и «заплатки», наложенные на систему, может быть помещено на этом уровне, поскольку оно относится ко всей системе в целом.

 

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

Архитектура

На рисунке 1A изображены части архитектуры подключаемых модулей, куда включается инфраструктура приспособлений (подключаемых модулей, механизмов расширений и базы данных исследования).

Рисунок 1A. Архитектура подключаемых модулей, механизмов и расширений инструментария управления безопасностью.

Подписи к рисунку 1А

Security Configuration Editor Snap-in – подключаемый модуль редактора конфигурации безопасности

The Engine – механизм

Configuration – конфигурирования

Analysis – анализа

Extension Snap-ins for Attachments – подключаемые модули расширения

Service Attachment Engines – механизмы службы подключения

Interfaces – интерфейсы

 

The Security Configuration Tool Set, which consists of the main engine and the MMC snap-in, provides the overall framework for configuring and analyzing system security for installations of Windows NT and Windows 2000.

Инструментарий управления безопасностью, состоящий из основного механизма и подключаемого модуля MMC, предоставляет общий каркас для конфигурации и анализа безопасности системы в Windows NT и Windows 2000.

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

Построение DLL механизма приспособления

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

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

Структуры данных

Обратите внимание на то, что структуры данных, описанные здесь, объявлены в файле Scesvc.h, включенном в Microsoft Platform SDK.

·         Коды состояния SCE — Различные коды состояния инструментария управления безопасностью, возвращаемые вспомогательными функциями и ожидаемые от интерфейсов приспособления.

 

typedef DWORD SCESTATUS;

 

#define SCESTATUS_SUCCESS 0L

#define SCESTATUS_INVALID_PARAMETER 1L

#define SCESTATUS_RECORD_NOT_FOUND 2L

#define SCESTATUS_INVALID_DATA 3L

#define SCESTATUS_OBJECT_EXIST 4L

#define SCESTATUS_BUFFER_TOO_SMALL 5L

#define SCESTATUS_PROFILE_NOT_FOUND 6L

#define SCESTATUS_BAD_FORMAT 7L

#define SCESTATUS_NOT_ENOUGH_RESOURCE 8L

#define SCESTATUS_ACCESS_DENIED 9L

#define SCESTATUS_CANT_DELETE 10L

#define SCESTATUS_PREFIX_OVERFLOW 11L

#define SCESTATUS_OTHER_ERROR 12L

#define SCESTATUS_ALREADY_RUNNING 13L

#define SCESTATUS_SERVICE_NOT_SUPPORT 14L

 

·         Дескрипторы SCE — дескрипторы, предоставляемые инструментарием управления безопасностью интерфейсам приспособления для поддержки функций обратного вызова.

 

typedef PVOID SCE_HANDLE;

typedef ULONG SCE_ENUMERATION_CONTEXT, *PSCE_ENUMERATION_CONTEXT;

typedef struct _SCESVC_CALLBACK_INFO_ {

 

 SCE_HANDLE sceHandle;

 PFSCE_QUERY_INFO pfQueryInfo;

 PFSCE_SET_INFO pfSetInfo;

 PFSCE_FREE_INFO pfFreeInfo;

 PFSCE_LOG_INFO pfLogInfo;

 

} SCESVC_CALLBACK_INFO, *PSCESVC_CALLBACK_INFO;

 

·         Информация о конфигурации службы SCE — структура, которую интерфейсы расширения должны использовать при запросе или установке конфигурационной информации в базу данных или конфигурацию посредством поддерживаемых интерфейсов обратного вызова.

 

typedef enum _SCESVC_INFO_TYPE {

 

 SceSvcConfigurationInfo,

 SceSvcAnalysisInfo,

 SceSvcInternalUse                    // DO NOT USE.

 

} SCESVC_INFO_TYPE;

 

typedef struct _SCESVC_CONFIGURATION_LINE_ {

 

 LPTSTR Key;

 LPTSTR Value;

 DWORD ValueLen; // number of bytes

 

} SCESVC_CONFIGURATION_LINE, *PSCESVC_CONFIGURATION_LINE;

 

typedef struct _SCESVC_CONFIGURATION_INFO_ {

 

 DWORD Count;

 PSCESVC_CONFIGURATION_LINE Lines;

 

} SCESVC_CONFIGURATION_INFO, *PSCESVC_CONFIGURATION_INFO;

 

·         Информация об анализе службы SCE —   структура, которую интерфейсы расширения должны использовать при запросе или установке аналитической информации в базу данных или конфигурацию посредством поддерживаемых интерфейсов обратного вызова.

 

typedef enum _SCESVC_INFO_TYPE {

 

 SceSvcConfigurationInfo,

 SceSvcAnalysisInfo,

 SceSvcInternalUse             // DO NOT USE

 

} SCESVC_INFO_TYPE;

 

 

typedef struct _SCESVC_ANALYSIS_LINE_ {

 

 LPTSTR Key;

 PBYTE Value;

 DWORD ValueLen; // number of bytes

 

} SCESVC_ANALYSIS_LINE, *PSCESVC_ANALYSIS_LINE;

 

typedef struct _SCESVC_ANALYSIS_INFO_ {

 

 DWORD Count;

 PSCESVC_ANALYSIS_LINE Lines;

 

} SCESVC_ANALYSIS_INFO, *PSCESVC_ANALYSIS_INFO;

 


Вспомогательные API и API обратного вызова инструментария управления безопасностью

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

К этим функциям относятся:

·         PFSCE_QUERY_INFO — Эта функция обратного вызова позволяет расширению получать конфигурационную или аналитическую информацию из базы данных службы.

·         PFSCE_SET_INFO — Эта функция обратного вызова позволяет расширению устанавливать конфигурационную или аналитическую информацию в конфигурационный файл или базу данных данной службы.

·         PFSCE_FREE_INFO — Эту функцию обратного вызова следует использовать для освобождения буферов, распределенных инструментарием управления безопасностью для расширения.

·         PFSCE_FREE_INFO — Эта функция обратного вызова используется для записи в файл журнала информации, образовавшейся в ходе различных операций инструментария: конфигурации, анализа и продвижения политики.

·         ConvertSecurityDescriptorToStringSecurityDescriptor — Эта функция получает двоичный описатель безопасности Windows NT и возвращает его текстовое представление. Это полезно при хранении описателей безопасности в файлах конфигурации.

·         ConvertStringSecurityDescriptorToSecurityDescriptor — Эта функция получает текстовый описатель безопасности, полученный из ConvertSecurityDescriptorToStringSecurityDescriptor и возвращает двоичный описатель безопасности Windows NT, заданный текстом. Это полезно при чтении текстового описателя безопасности из файла конфигурации и его наложении на объект системы.

Функции обратного вызова объявлены в файле Scesvc.h из Platform SDK, а функции поддержки – в Sddl.h. Статические подключаемые библиотеки —Scesvc.lib и Advapi32.lib — доступны для платформ x86 и Alpha. Подробнее эти функции описаны ниже.

PFSCE_QUERY_INFO

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

typedef

SCESTATUS

(*PFSCE_QUERY_INFO)(

 IN SCE_HANDLE sceHandle,

 IN SCESVC_INFO_TYPE sceType,

 IN LPTSTR lpPrefix OPTIONAL,

 IN BOOL bExact,

 OUT PVOID *ppvInfo,

 OUT PSCE_ENUMERATION_CONTEXT psceEnumHandle

);

 

Параметры

·         sceHandle— дескриптор SCE, переданный приспособлению инструментарием управления безопасностью. Используется для определения места хранения информации.

·         sceType—Должен быть установлен в SCE_SERVICE_CONFIGURATION_INFO, если запрашивается конфигурационная информация, или в SCE_SERVICE_ANALYSIS_INFO, если аналитическая.

·         lpPrefix— Может быть NULL. Если не NULL, то возвращаются все ключи. Если задана строка, в возвращаемую информацию включаются все ключи (и соответствующие значения) с таким же префиксом, как и заданная строка.

·         bExact— Не используется, если lpPrefix равен NULL. Если этот параметр - TRUE, возвращается ключ, точно совпадающий со строкой из lpPrefix. Если параметр - FALSE, возвращаются все ключи (и их значения), имеющие префикс, заданный в lpPrefix.

·         ppvInfo— Указатель на указатель типа SCESVC_CONFIGURATION_INFO если sceType равен SceSvcConfigurationInfo. В противном случае он должен быть равен SCESVC_ANALYSIS_INFO, если sceType - SceSvcAnalysisInfo. Инструментарий управления безопасностью — а не расширение — размещает буфер; поэтому указатель должен указывать на NULL.

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

Возвращаемые значения

SCESTATUS_SUCCESS означает успешное выполнение. Одно из следующих значений обозначает ошибку:

·         SCESTATUS_INVALID_PARAMETER

·         SCESTATUS_RECORD_NOT_FOUND

·         SCESTATUS_BAD_FORMAT

·         SCESTATUS_OTHER_ERROR

·         SCESTATUS_NOT_ENOUGH_RESOURCE

PFSCE_SET_INFO

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

typedef

SCESTATUS

(*PFSCE_SET_INFO)(

 IN SCE_HANDLE sceHandle,

 IN SCESVC_INFO_TYPE sceType,

 IN LPTSTR lpPrefix OPTIONAL,

 IN BOOL bExact,

 IN PVOID pvInfo

);

 

Параметры

·         SceHandle— дескриптор SCE, переданный приспособлению инструментарием управления безопасностью. Это используется для определения места хранения информации.

·         sceType— Должен быть установлен в SCE_SERVICE_CONFIGURATION_INFO, если устанавливается конфигурационная информация, или в SCE_SERVICE_ANALYSIS_INFO, если аналитическая.

·         lpPrefix—Может быть NULL. Если не NULL, переписываются все ключи. Если задана строка, переписываются все ключи с таким префиксом, как заданная строка.

·         bExact — Не используется, если lpPrefix равен NULL. Если этот параметр - TRUE, переписывается ключ, точно совпадающий со строкой из lpPrefix. Если параметр - FALSE, переписываются все ключи, имеющие префикс, заданный в lpPrefix.

·         ppvInfo— Указатель на указатель типа SCESVC_CONFIGURATION_INFO если sceType равен SceSvcConfigurationInfo. В противном случае он должен быть равен SCESVC_ANALYSIS_INFO если sceType - SceSvcAnalysisInfo.

Возвращаемые значения

SCESTATUS_SUCCESS означает успешное выполнение. Одно из следующих значений обозначает ошибку:

·         SCESTATUS_INVALID_PARAMETER

·         SCESTATUS_RECORD_NOT_FOUND

·         SCESTATUS_BAD_FORMAT

·         SCESTATUS_NOT_ENOUGH_RESOURCE

·         SCESTATUS_ACCESS_DENIED

·         SCESTATUS_DATA_OVERFLOW

·         SCESTATUS_OTHER_ERROR

PFSCE_FREE_INFO

Расширение должно вызвать эту функцию для освобождения буферов, размещенных инструментарием управления безопасностью в вызовах PFSCE_QUERY_INFO.

typedef

SCESTATUS

(*PFSCE_FREE_INFO)(

 IN PVOID pvServiceInfo

);

 

Параметры

pvServiceInfo — Указатель на освобождаемый буфер.

Возвращаемые значения

SCESTATUS_SUCCESS означает успешное завершение. SCESTATUS_INVALID_PARAMETER ошибка.

PFSCE_LOG_INFO

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

typedef

SCESTATUS

(*PFSCE_LOG_INFO)(

 IN INT ErrLevel,

 IN DWORD Win32rc,

 IN LPTSTR pErrFmt,

 ...

);

 

Параметры

·         ErrLevel — Задает уровень ошибки, начиная с которого информация будет записываться в журнал. Если операция находится на этом уровне, она протоколируется, в противном случае она игнорируется. В различные уровни входят:

 

#define SCE_LOG_LEVEL_ALWAYS 0

#define SCE_LOG_LEVEL_ERROR 1

#define SCE_LOG_LEVEL_DETAIL 2

#define SCE_LOG_LEVEL_DEBUG 3

 

·         Win32rc — Возвращаемое значение, которое должно быть записано в журнал. Это может быть ошибочное значение, возвращенное каким-либо системным API, вызванным приспособлением для конфигурации или анализа.

·         PerrEmt — Строка с завершающим нулем, которую следует записать в файл журнала.

 


ConvertSecurityDescriptorToStringSecurityDescriptor

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

WINADVAPI

BOOL

WINAPI

ConvertSecurityDescriptorToStringSecurityDescriptorA(

 IN PSECURITY_DESCRIPTOR SecurityDescriptor,

 IN DWORD RequestedStringSDRevision,

 IN SECURITY_INFORMATION SecurityInformation,

 OUT LPSTR *StringSecurityDescriptor OPTIONAL,

 OUT PULONG StringSecurityDescriptorLen OPTIONAL

 );

WINADVAPI

BOOL

WINAPI

ConvertSecurityDescriptorToStringSecurityDescriptorW(

 IN PSECURITY_DESCRIPTOR SecurityDescriptor,

 IN DWORD RequestedStringSDRevision,

 IN SECURITY_INFORMATION SecurityInformation,

 OUT LPWSTR *StringSecurityDescriptor OPTIONAL,

 OUT PULONG StringSecurityDescriptorLen OPTIONAL

 );

 

Параметры

·         SecurityDescriptor — Указатель на описатель безопасности (Смотри Platform SDK для описания функций, манипулирующими описателями безопасности.)

·         RequestedStringSDRevision — Задает версию текстового представления описателя безопасности. Должно быть SDDL_REVISION.

·         SecurityInformation — Задает часть информации о безопасности, которая должна быть преобразована в текстовую форму. (Значения SECURITY_INFORMATION описаны в Platform SDK)

·         StringSecurityDescriptor — Задает текстовую форму описателя безопасности, возвращаемую функцией. Буфер размещается функцией и должен освобождаться при необходимости функцией SceSvcFree.

·         StringSecurityDescriptorLen — указатель на ULONG, в который пишется длина строки.

Возвращаемая строка размещается вспомогательной функцией. Она должна освобождаться функцией LocalFree.


Возвращаемые значения

SCESTATUS_SUCCESS означает успешное выполнение. Одно из следующих значений обозначает ошибку:

·         SCESTATUS_INVALID_PARAMETER

·         SCESTATUS_NOT_ENOUGH_RESOURCE

ConvertStringSecurityDescriptorToSecurityDescriptor

Это вспомогательная функция, позволяющая приспособлению конвертировать текстовое представление описателя безопасности (созданное ConvertSecurityDescriptorToStringSecurityDescriptor) обратно в его двоичную форму.

WINADVAPI

BOOL

WINAPI

ConvertStringSecurityDescriptorToSecurityDescriptorA(

 IN LPCSTR StringSecurityDescriptor,

 IN DWORD StringSDRevision,

 OUT PSECURITY_DESCRIPTOR *SecurityDescriptor,

 OUT PULONG SecurityDescriptorSize OPTIONAL

 );

WINADVAPI

BOOL

WINAPI

ConvertStringSecurityDescriptorToSecurityDescriptorW(

 IN LPCWSTR StringSecurityDescriptor,

 IN DWORD StringSDRevision,

 OUT PSECURITY_DESCRIPTOR *SecurityDescriptor,

 OUT PULONG SecurityDescriptorSize OPTIONAL

 );

 

Параметры

·         StringSecurityDescriptor — Задает текстовую форму описателя безопасности.

·         RequestedStringSDRevision — Задает версию текстового представления описателя безопасности. Должно быть SDDL_REVISION.

·           SecurityDescriptor — Указатель на указатель на дескриптор безопасности. Эта функция размещает достаточно памяти для создания самоопределяющегося описателя безопасности. Она должна быть освобождена при необходимости функцией SceSvcFree.

·           SecurityDescriptorSize — Задает размер размещенного описателя безопасности

Буфер возвращаемого описателя безопасности размещается вспомогательной функцией. Он должен освобождаться функцией LocalFree.

Возвращаемые значения

SCESTATUS_SUCCESS означает успешное выполнение. Одно из следующих значений обозначает ошибку:

·         SCESTATUS_INVALID_PARAMETER

·         SCESTATUS_RECORD_NOT_FOUND

·         SCESTATUS_NOT_ENOUGH_RESOURCE

Требуемые интерфейсы приспособления

Вот три интерфейса, которые должно реализовывать приспособление:

·         SceSvcAttachmentConfig — Менеджер безопасности вызывает этот интерфейс при конфигурации системы.

·         SceSvcAttachmentAnalyze — Менеджер безопасности вызывает этот интерфейс при анализе системы.

·         SceSvcAttachmentUpdate — Менеджер безопасности вызывает этот интерфейс при получении запроса на обновление информации из подключаемого модуля MMC.

SceSvcAttachmentConfig

Syntax

 

typedef

SCESTATUS

(*PF_ConfigAnalyzeService)(

 IN PSCESVC_CALLBACK_INFO pSceCbInfo

);

 

Параметры

·         PSceCbInfo— Структура, передаваемая в механизм приспособления инструментарием управления безопасностью при запросе этого интерфейса. Она предоставляет дескриптор контекста, который используется различными функциями обратного вызова, и предоставляет указатели на вспомогательные функции.

Интерфейс должен делать следующее:

·         Использовать вспомогательную функцию инструментария управления PFSCE_QUERY_INFO для запроса конфигурационной информации.

·         Сконфигурировать службу.

Возвращаемые значения

·         SCESTATUS_SUCCESS означает успешное завершение.

·         Любое другое возвращаемое значение, определенное выше.

Пример программы (кода)

 

SCESTATUS

WINAPI

SceSvcAttachmentConfig(

 IN PSCESVC_CALLBACK_INFO pSceCbInfo

 )

{

//

//variable definitions

//

PSCESVC_CONFIGURATION_INFO pConfigInfo = NULL;

SCESTATUS     retCode;

SCE_ENUMERATION_CONTEXT    EnumContext = 0;

 

if ( pSceCbInfo == NULL ||

 pSceCbInfo->sceHandle == NULL ||

 pSceCbInfo->pfQueryInfo == NULL ||

 pSceCbInfo->pfSetInfo == NULL ||

 pSceCbInfo->pfFreeInfo == NULL ) {

 

 return(SCESTATUS_INVALID_PARAMETER);

}

 

//

// now read the information and configure system using it.

//

// NOTE: you may decide to read all the information first

// and then do the configure, it is implementor’s choice.

//

 

do {

      

 

__try {

 retCode = (*(pSceCbInfo->pfQueryInfo))(

 pSceCbInfo->sceHandle,

 SceSvcConfigurationInfo,

 NULL,

 FALSE,

 (PVOID *)&pConfigInfo,

 &EnumContext

 );

 

 } __except (EXCEPTION_EXECUTE_HANDLER) {

 retCode = SCESTATUS_SERVICE_NOT_SUPPORT;

       }

 

       if(retCode == SCESTATUS_SUCCESS &&

              pConfigInfo != NULL)

       {

              ULONG  i;

              //

              // We have some information, let’s configure.

              //

              for(i = 0;i < pConfigInfo->Count; i++)

              {

                     if(pConfigInfo->Line[i].Key == NULL)

                           continue;

 

                     //

                     // We have a key that we should process.

                     // This will the core of doing configuration.

                     //

                     ProcessConfigurationLine(pConfigInfo->Line[i]);

              }

 

              //

              // free the data we got back.

              //

      

__try {

 

 (*(pSceCbInfo->pfFreeInfo))((PVOID)pConfigInfo);

 

} __except (EXCEPTION_EXECUTE_HANDLER) {

//nothing

}

              PConfigInfo = NULL;

       }

       //

       // handle other return codes, as needed.

       //

} while ( retCode == SCESTATUS_SUCCESS && CountReturned > 0);

 

//

// if return code is not success, we should set up

// error message appropriately.

//

 

//

// return the retCode.

//

return retCode;

      

}

 


SceSvcAttachmentAnalyze

Syntax

 

typedef

SCESTATUS

(*PF_ConfigAnalyzeService)(

 IN PSCESVC_CALLBACK_INFO pSceCbInfo

);

 

Параметры

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

Интерфейс должен делать следующее:

·         Напрямую запросить информацию о конфигурации из службы.

·         Использовать PFSCE_QUERY_INFO для запроса конфигурационной информации.

·         Найти различия между параметрами в зависимости от типа и синтаксиса.

·         Использовать PFSCE_SET_INFO для записи информации об отличиях в базу данных.

Возвращаемые значения

·         SCESTATUS_SUCCESS означает успешное завершение.

·         Любое другое возвращаемое значение, определенное выше.

Пример программы

 

SCESTATUS

WINAPI

SceSvcAttachmentAnalyze(

IN SCE_HANDLE sceHandle,

       OUT PWSTR *ppszErrMessage,

       OUT PDWORD pdErrLength    

);

{

       //

       // define various local variables.

       //

 

 

if ( pSceCbInfo == NULL ||

 pSceCbInfo->sceHandle == NULL ||

 pSceCbInfo->pfQueryInfo == NULL ||

 pSceCbInfo->pfSetInfo == NULL ||

 pSceCbInfo->pfFreeInfo == NULL ) {

 

 return(SCESTATUS_INVALID_PARAMETER);

}

 

//

// now read the base config information, query system

// setting corresponding to it, compare them

// and write to the database.

//

//

 

do {

 

__try {

 retCode = (*(pSceCbInfo->pfQueryInfo))(

 pSceCbInfo->sceHandle,

 SceSvcConfigurationInfo,

 NULL,

 FALSE,

 (PVOID *)&pConfigInfo,

 &EnumContext

 );

 

 } __except (EXCEPTION_EXECUTE_HANDLER) {

 retCode = SCESTATUS_SERVICE_NOT_SUPPORT;

 }

 

 

       if(retCode == SCESTATUS_SUCCESS &&

              pConfigInfo != NULL)

       {

              ULONG  i;

              //

              // We have some information, let’s configure.

              //

              for(i = 0;i < pConfigInfo->Count; i++)

              {

                     if(pConfigInfo->Line[i].Key == NULL)

                           continue;

 

                     //

                     // We have a key that we should query.

                     // This function is expected to query

                     // the system configuration corresponding

                     // to the key value.

                     //

                     QueryConfigurationLine(pConfigInfo->Line[i].Key,

&SystemValue);

                          

                           //

                           // now compare the values.

                           //                        

                            CompareValue(pConfigInfo->Line[i].Key,

                                                SystemValue,

                                                pConfigInfo->Line[i].Value,

                                                &Result

                                         );

 

                           //

                           // Check if there is something that should

                           // be written to analysis part of the                         // database.

if(Result != NULL)

                           {

                                  //

                                  // we will overwrite exactly one                              // value.

                                  // more efficient way to do this

                                  // would be to accumulate a

                                  // set of values and commit.

                                  //

 

__try {

 retCode = (*(pSceCbInfo->pfSetInfo))(

 pSceCbInfo->sceHandle,

 SceSvcAnalysisInfo,

 pConfigInfo->Line[I].Key,

 TRUE,

 (PVOID)&Result

 );

 } __except (EXCEPTION_EXECUTE_HANDLER) {

 retCode = SCESTATUS_SERVICE_NOT_SUPPORT;

       }

                                  if(retCode != SCESTATUS_SUCCESS)

                                  {

                                         // if it doesn’t get set, we

                                         // need to do some cleanup

                                         // here.

                                  }

                           }

              }

 

              //

              // free the data we got back.

              //

              SceSvcFree((PVOID)pConfigInfo);

__try {

(*(pSceCbInfo->pfFreeInfo))((PVOID)pConfigInfo);

} __except (EXCEPTION_EXECUTE_HANDLER) {

}

              PConfigInfo = NULL;

 

//

// should also free possible buffers SystemValue and

// Result, up to each attachment

//

 

       }

       //

       // handle other return codes, as needed.

       //

} while ( retCode == SCESTATUS_SUCCESS && pConfigInfo != NULL);

 

//

// if return code is not success, we should set up

// error message appropriately, if error buffer is not NULL

//

 

//

// return the retCode.

//

return retCode;

             

}

 

SceSvcAttachmentUpdate

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

Syntax

 

typedef

SCESTATUS

(*PF_UpdateService)(

 IN PSCESVC_CALLBACK_INFO pSceCbInfo,

 IN PSCESVC_CONFIGURATION_INFO ServiceInfo

);

 

Параметры

·         PsceCbInfo — Структура, передаваемая в механизм приспособления инструментарием управления безопасностью при запросе этого интерфейса. Она предоставляет дескриптор контекста, который используется различными функциями обратного вызова. Он также предоставляет указатели на вспомогательные функции.

·         ServiceInfo — Задает измененную конфигурационную информацию, базирующуюся на пользовательских изменениях и предоставленную подключаемым модулем расширения приспособления. (Смотри описание структуры данных SCESVC_CONFIGURATION_INFO в разделе структур данных.)

Интерфейс расширения должен делать следующее:

·         Использовать вспомогательную функцию инструментария управления PFSCE_QUERY_INFO для запроса базовой (конфигурационной) информации.

·         Использовать PFSCE_SET_INFO для запроса последнего ряда изменений (аналитической информации), хранимой в базе данных.

·         Использовать ServiceInfo для подсчета новой конфигурационной информации.

·         Использовать ServiceInfo и аналитическую информацию для подсчета новой аналитической информации.

·         Использовать PFSCE_SET_INFO для записи новой конфигурации в базу данных.

·         Использовать PFSCE_SET_INFO для записи новой аналитической информации в базу данных.

Возвращаемые значения

·         SCESTATUS_SUCCESS означает успешное завершение.

·         Любое другое возвращаемое значение, определенное выше.

Пример программы

 

SCESTATUS

WINAPI

SceSvcAttachmentUpdate(

       IN SCE_HANDLE sceHandle,

       IN SCESVC_CONFIGURATION_INFO *ServiceInfo

       );

{

 

if ( pSceCbInfo == NULL ||

 pSceCbInfo->sceHandle == NULL ||

 pSceCbInfo->pfQueryInfo == NULL ||

 pSceCbInfo->pfSetInfo == NULL ||

 pSceCbInfo->pfFreeInfo == NULL ||

 ServiceInfo == NULL ) {

 

 return(SCESTATUS_INVALID_PARAMETER);

}

       //

       // process each line of the passed information.

       //

       for(i=0; i < ServiceInfo->Count; i++)

       {

              EnumContext = 0;

 

__try {

 retCode = (*(pSceCbInfo->pfQueryInfo))(

 pSceCbInfo->sceHandle,

 SceSvcConfigurationInfo,

 ServiceInfo->Lines[i].Key,

 TRUE,

 (PVOID *)&pConfigInfo,

 &EnumContext

 );

} __except (EXCEPTION_EXECUTE_HANDLER) {

 retCode = SCESTATUS_SERVICE_NOT_SUPPORT;

}

              if(retCode != SCESTATUS_SUCCESS &&

retCode != SCESTATUS_RECORD_NOT_FOUND)
{

                     //

                     // handle the error here.

                     //

                     break;

              }

 

              //

              // if the value specified is NULL, deletion

              // of the key is requested.

              //

if(ServiceInfo->Line[i].Value == NULL)

              {

                     if(retCode == SCESTATUS_SUCCESS)

                     {

                           //

                           // Lets ensure that analysis is ok.

                           //

                           EnumContext = 0;

 

__try {

 retCode = (*(pSceCbInfo->pfQueryInfo))(

 pSceCbInfo->sceHandle,

 SceSvcAnalysisInfo,

 ServiceInfo->Lines[i].Key,

 TRUE,

 (PVOID *)&pAnalInfo,

 &EnumContext

 );

} __except (EXCEPTION_EXECUTE_HANDLER) {

 retCode = SCESTATUS_SERVICE_NOT_SUPPORT;

}

                           if(retCode == SCESTATUS_RECORD_NOT_FOUND)

                           {

                                  //

                                  // Analysis Info was not found,

                                  // this means it was matched during

                                  // actual analysis. Now, we are

                                  // deleting the configuration info,

                                  // hence current configuration is

                                  // what analysis should save.

                                  //

                                  UpdateInfo->Count = 1

                                  UpdateInfo->Line = &UpdateLine;

                                  UpdateLine.Key = pConfigInfo->Line[0].Key;

                                  UpdateLine.Value =

(PBYTE)pConfigInfo->Line[0].Value;

 

 

__try {

 retCode = (*(pSceCbInfo->pfSetInfo))(

 pSceCbInfo->sceHandle,

 SceSvcAnalysisInfo,

 NULL,

 TRUE,

 (PVOID)&UpdateInfo

 );

 

 } __except (EXCEPTION_EXECUTE_HANDLER) {

 retCode = SCESTATUS_SERVICE_NOT_SUPPORT;

       }

                                  if(retCode != SCESTATUS_SUCCESS)

                                  {

                                         //

                                         // cleanup, something

                                         // failed.

                                         //

                                  }

                           }

                           elseif (retCode == SCESTATUS_SUCCESS)

                           {

                                  //

                                  // simply delete the configuration.

                                  // we already have analysis info in

                                  // place.

                           }

                           else

                           {

                                  //

                                  // handle other error codes.

                                  //

                           }

 

                           //

                           // delete the key

                           //

 

__try {

 retCode = (*(pSceCbInfo->pfSetInfo))(

 pSceCbInfo->sceHandle,

 SceSvcConfigurationInfo,

 ServiceInfo->Lines[i].Key,

 TRUE,

 NULL

 );

} __except (EXCEPTION_EXECUTE_HANDLER) {

 retCode = SCESTATUS_SERVICE_NOT_SUPPORT;

}

                           if(retCode != SCESTATUS_SUCCESS)

                           {

                                  //

                                  // error cleanup.

                                  //

                           }     

                    

                     }

                     //

                     // SCESTATUS_RECORD_NOT_FOUND means nothing more.

                     // as the key does not even exist.

                     //    

              }

              else

{

                     //

                     // Value to set is non-NULL,

                     // hence we must compare with current analysis

                     // if it is same, then delete the current analysis

                     // if it is different, do nothing to the analysis.

                     // Simply update the configuration info.

                     //

                     // left as exercise to the implementor.

                     //

              }

 

 

if ( pConfigInfo != NULL ) {

 

 __try {

 (*(pSceCbInfo->pfFreeInfo))((PVOID)pConfigInfo);

 } __except (EXCEPTION_EXECUTE_HANDLER) {

 }

}

              pConfigInfo = NULL;

 

 

if ( pAnaInfo != NULL ) {

 

 __try {

 (*(pSceCbInfo->pfFreeInfo))((PVOID)pAnaInfo);

 

 } __except (EXCEPTION_EXECUTE_HANDLER) {

 }

}

PAnalInfo = NULL;

 

       }

       //

       // error cleanup

       // set detail error message appropriately if the buffer

       // is not NULL

       //

       return retCode;

 

}


Установка и регистрация

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

Для установки и регистрации DLL

1.     Скопируйте DLL приспособления в соответствующий каталог, желательно  %windir%\Security\Attachments. Вы можете создать это каталог, если его не существует. Считается, что только системные администраторы могут устанавливать приспособления на системе.

2.     Создайте ключ реестра под:

HKEY_LOCAL_MACHINE\

    Software\

       Microsoft\

          Windows NT\

             CurrentVersion\

                SecEdit\Services\

                   [Service Name]

Название службы, использованное здесь — зарегистрированное название приспособления. Оно должно быть уникальным во избежание конфликтов с другими приспособлениями. Название службы должно быть тем же, что и название в менеджере управления службами, если приспособление конфигурирует специфичные для службы параметры. Название, используемое в менеджере управления службами — это то название, по которому каждая службы связывается с инструментарием управления безопасностью.

3.     Создайте следующие значения в этом ключе:

·         Value Name = ServiceAttachmentPath

·         VValue Type = REG_SZ

·         VValue = полный путь для DLL подключения(например, %windir%\Security\Attachments\Something.dll).

Построение подключаемого модуля расширения

Подключаемые модули инструментария управления безопасностью разработаны с учетом поддержки подключаемых модулей расширения приспособлений. Взаимодействие между подключаемыми модулями инструментария управления безопасностью и подключаемыми модулями расширения обрабатывается стандартными механизмами MMC и двумя вполне определенными интерфейсами COM. Механизм приспособления отвечает за конфигурацию и анализ системной безопасности и обновление конфигурации службы в базе данных; расширение приспособления позволяет пользователю просматривать, создавать и изменять конфигурационную и аналитическую информацию. Для нормального функционирования подключаемый модуль приспособления должен следовать указаниям подключаемых модулей расширений MMC и приспособлений, описанных в этом документе.

Каждый подключаемый модуль должен быть подключаемым модулем расширения, а эти подключаемые модули расширения — предоставлять свои функции только по требованию подключаемых модулей инструментария управления безопасностью. Каждый подключаемый модуль приспособления может расширять только узел Services. Он декларирует себя как подчиненного узла Services, а затем, для каждого экземпляра узла Services, консоль MMC автоматически зависимые подключаемые модули расширения. Каждому приспособлению принадлежит свой узел панели области действия и связанная панель результатов MMC. Расширения приспособлений должны позволять пользователю создавать или изменять установки безопасности службы в конфигурации, обрабатываемой подключаемыми модулями редактора и менеджера конфигураций безопасности. Они также должны быть способны показывать конфигурацию и/или анализ настроек безопасности вместе с аналитическим статусом. Они должны поддерживать редактирование настроек конфигурации безопасности для службы, а результаты анализа должны обновляться в зависимости от обновленных значений конфигурации.

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

Рисунок A2. Схема интерфейсов COM для приспособлений

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

Существует три операции, которые должен поддерживать подключаемый модель приспособления:

·         Показ конфигурационной и/или инспекционной информации — для показа информации узел подключаемого модуля приспособления расширяет подключаемый модуль редактора или менеджера конфигураций безопасности в узле Services. Вот типы узлов редактора или менеджера конфигураций безопасности, которые могут быть расширены:

·       Configuration Services NodeType ={24a7f717-1f0c-11d1-affb-00c04fb984f9}

·       Analysis Services NodeType = {678050c7-1ff8-11d1-affb-00c04fb984f9}

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

1.     Использовать метод QueryInterface для запроса интерфейса ISceSvcAttachmentData.

2.     Вызвать метод Initialize для информирования инструментария управления безопасностью о загрузке и установить контекст для взаимодействия с определенной информацией.

3.     Либо вызвать метод GetData для немедленного получения информации, или подождать, пока узел не будет выбран пользователем.

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

·         Изменение конфигурационной информации в базе данных — подключаемый модуль приспособления должен также предоставлять возможность изменять конфигурационную информацию через узел инспекции. Это позволят пользователю сделать изменения и повторна наложить конфигурацию. Логику этих действий следует делать аналогичной логике изменения информации в файлах конфигурации. Сделанные изменения вступают в силу на конфигурации, сохраненной в базе данных инспекции.

Формат буфера обмена

 

#define CCF_SCESVC_ATTACHMENT ( L”CCF_SCESVC_ATTACHMENT” )

 

Этот буфер обмена используется для каждого подключаемого модуля расширения для вытягивания имени конфигурационного файла из редактора или менеджера конфигураций безопасности. Имя конфигурационного файла имеет тип PWSTR. Впоследствии, это имя конфигурации используется во взаимодействии между приспособлением и редактором или менеджером конфигураций безопасности в методе Initialize.

Интерфейсы подключаемого модуля расширения

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

ISceSvcAttachmentData

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

class ISceSvcAttachmentData : public IUnknown

{

public:

  virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetData(

    /* [in] */ SCE_HANDLE sceHandle,

    /* [in] */ SCESVC_INFO_TYPE sceType,

    /* [out] */ PVOID *ppvData,

    /* [in out] */ PSCE_ENUMERATION_CONTEXT psceEnumHandle ) = 0;

 

  virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Initialize(

    /* [in] */ LPCTSTR ServiceName,

    /* [in] */ LPCTSTR TemplateName,

    /* [in] */ LPUNKNOWN lpUnknown,

    /* [out] */ SCE_HANDLE *sceHandle) = 0;

 

  virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FreeBuffer(

    /* [in] */ PVOID pvData) = 0;

 

  virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CloseHandle(

    /* [in] */ SCE_HANDLE sceHandle) = 0;

 

};

 

ISceSvcAttachmentPersistInfo

Этот интерфейс— абстрактный класс, который должен реализовываться каждым подключаемым модулем расширения приспособления. Подключаемый модуль редактора или менеджера конфигураций безопасности вызывает это интерфейс для проверки, существует ли измененная информация, нуждающаяся в записи в конфигурационный файл или базу данных. (с помощью IsDirty). В этом случае, он вызывает метод Save для получения у подключаемого модуля информации, нуждающейся в сохранении.

class ISceSvcAttachmentPersistInfo : public IUnknown

{

public:

 virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Save(

 /* [out] */ SCE_HANDLE *sceHandle,

 /* [out] */ PVOID *ppvData,

 /* [out] */ PBOOL pbOverwriteAll ) = 0;

 

 virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE IsDirty() = 0;

 

 virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FreeBuffer(

 /* [in] */ PVOID pvData) = 0;

 

};

 

Установка и регистрация

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

Подключаемый модуль приспособления должен быть зарегистрирован под ключом реестра:

HKEY_LOCAL_MACHINE\

    Software\

       Microsoft\

          MMC\

             Snapins

 

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

Подключаемые модули приспособления также должны следующим образом зарегистрировать себя под под ключами Security Configuration Editor Services NodeType:

·         Для расширения пространства имен редактора конфигураций безопасности, используйте следующий ключ реестра:

 

HKLM\

    Software\

       Microsoft\

          MMC\

             NodeTypes\

                24a7f717-1f0c-11d1-affb-00c04fb984f9\

                   Extensions\

                      NameSpace

 

·         Для расширения аналитического пространства имен менеджера конфигураций безопасности используйте следующий ключ реестра:

 

HKLM\

    Software\

       Microsoft\

          MMC\

             NodeTypes\

                678050c7-1ff8-11d1-affb-00c04fb984f9\

                   Extensions\

                      NameSpace

 

За более подробной информацией можно найти в файле Scesvc.h в Platforms SDK.

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

Инициализация—добавление узла приспособления

Когда развертывается узел Services редактора или менеджера конфигураций безопасности MMC использует IComponentData::Notify и сообщение MMCN_EXPAND для оповещения редактора или менеджера конфигураций безопасности и всех его расширений. Инструментарий управления безопасностью затем выделяет из lpDataObject свой собственный формат и останавливает дальнейшую обработку, увидев, что тип узла - Services. Подключаемые модули приспособлений (зарегистрированные как расширения) также выделяют тип узла из lpDataObject. Если тип узла совпадает с определенным ранее, подключаемый модуль приспособления вставляет свои коренные узлы под указанным родительским узлом.

//

// detect which extension node to extend

//

 

GUID* nodeType = ExtractNodeType(lpDataObject);

 

if ( nodeType == NULL ) {

 return S_OK;

}

 

if ( ::IsEqualGUID(*nodeType, cNodetypeSceTemplateServices) == TRUE )

 folderType =ATTACHEMNT_STATIC;   // defined by attachment writer.

else if (::IsEqualGUID(*nodeType, cNodetypeSceAnalysisServices)

== TRUE)

 folderType =ATTACHMENT_STATIC_ANALYSIS;

// defined by attachment writer

 

// Free resources

::GlobalFree(reinterpret_cast<HANDLE>(nodeType));

 

//

// As an extension snapin, the service attachment

// root node should be added

// Insert that node, and remember it

// as the root of the SMB Extension namespace.

//

CheckAndInsertRootNodeToMMCScopePane

 

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

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

PWSTR * TemplateName = ExtractTemplateNameFromDataObject(lpDataObject);

 

2.     Установить контекст редактора или менеджера конфигураций безопасности. Как только имя конфигурации безопасности станет известно (или это узел Service типа Inspection), подключаемый модуль приспособления должен запросить интерфейс ISceSvcAttachmentData и вызвать метод Initialize для установления контекста.

//

// QueryInterface for the main snap-in’s IUnkown.

//

LPUNKNOWN pUnk;

 

hr = lpDataObject->QueryInterface(IID_IUnknown,

 reinterpret_cast<void**>(&pUnk));

 

//

// QueryInterface ISceSvcAttachmentData

//

if ( SUCCEEDED(hr) ) {

 hr = pUnk->QueryInterface(IID_ISceSvcAttachmentData,

 reinterpret_cast<void**>(&pSceData));

}

 

//

// QueryInterface the attachment’s IUnknown as

// that is needed by the main snap-in.

//

((LPUNKNOWN)m_pSnapin)->QueryInterface(IID_IUnknown, reinterpret_cast<void**>(&pUnk));

 

//

// Call Initialize to setup context with main snap-in.

//

m_pSceData->Initialize(ServiceName, TemplateName, pUnk, &sceHandle);

 

Примечание Вы должны вызвать CloseHandle для закрытия sceHandle.

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

//

// GetData – we get the configuration information here.

//

m_pSceData->GetData (sceHandle, SceSvcConfigurationInfo, &pData,

 &enumHandle );

 

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

Реализация ISceSvcAttachmentPersistInfo

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

class CSceSvcAttachmentPersistInfo:

 public ISceSvcAttachmentPersistInfo,

 public CComObjectRoot

{

BEGIN_COM_MAP(CSceSvcAttachmentPersistInfo)

 COM_INTERFACE_ENTRY(ISceSvcAttachmentPersistInfo)

END_COM_MAP()

 

 friend class CDataObject;

 friend class CComponentDataImpl;

 

 CSceSvcAttachmentPersistInfo();

 ~CSceSvcAttachmentPersistInfo();

 

public:

// ISceSvcAttachmentPersistInfo interface members

 STDMETHOD(IsDirty)();

 STDMETHOD(Save)(SCE_HANDLE *sceHandle, PVOID *ppvData,

PBOOL pbOverwriteAll );

 STDMETHOD(FreeBuffer)(PVOID pvData);

...

 

private:

 CString m_TemplateName;

 LPSCESVCATTACHMENTDATA m_pSceData;

 SCE_HANDLE m_sceHandle;

...

 

};

 

//

// Implementing IsDirty()

//

STDMETHODIMP CSceSvcAttachmentPersistInfo::IsDirty()

{

 if ( m_pSnapin == NULL ) {

return S_FALSE;

 }

 //

 // just calling the snapin’s main IsDirty.

 //

 return m_pSnapin->IsDirty();

}

 

//

// Implementing Save()

//

STDMETHODIMP CSceSvcAttachmentPersistInfo::Save(

 SCE_HANDLE *psceHandle,

 PVOID *ppvData,

 PBOOL pbOverwriteAll )

{

 if ( psceHandle == NULL || ppvData == NULL ||

pbOverwriteAll == NULL ) {

 return E_INVALIDARG;

 }

 

 if ( m_pSnapin != NULL ) {

 

 m_pSnapin->SaveDataInBuffer(ppvData, pbOverwriteAll);

 

 *psceHandle = m_sceHandle;

 

 }

 

 return S_OK;

}

 

//

// Implementing FreeBuffer

//

STDMETHODIMP CSceSvcAttachmentPersistInfo::FreeBuffer(PVOID pvData)

{

 if ( pvData == NULL ) {

 return S_OK;

 }

 

 PSCESVC_ANALYSIS_INFO pTempInfo=(PSCESVC_ANALYSIS_INFO)pvData;

if ( pTempInfo->Lines != NULL ) {

 

 for ( DWORD i=0; i < pTempInfo->Count; i++ ) {

 

 if ( pTempInfo->Lines[i].Key != NULL )

 LocalFree(pTempInfo->Lines[i].Key);

 

 if ( pTempInfo->Lines[i].Value != NULL )

 LocalFree(pTempInfo->Lines[i].Value);

 }

 

 LocalFree( pTempInfo->Lines);

 }

 

 LocalFree(pTempInfo);

return S_OK;

}