Управление разрешениями через шаблоны безопасности и групповые политики

Как ни странно, опыт преподавания курсов по безопасности Windows 2000 и Windows Server 2003 в нашем учебном центре показывает, что даже теперь, в начале 2004 года, то есть через четыре года после появления Active Directory, у квалифицированных специалистов нет четкого представления о групповых политиках, основном инструменте настройки Active Directory. В частности, возможность тиражировать разрешения на файлы и параметры реестра с помощью групповых политик вызывает на наших курсах живой интерес. Этому вопросу и посвящена данная статья.

Политики и шаблоны

Всем читателям наверняка знакомы инструменты проверки параметров защиты компьютера на соответствие шаблону и редактирования шаблонов защиты компьютера — оснастки Security Templates и Security Configuration and Analysis. Обучение работе с этими средствами входит в программу официальных курсов Microsoft, их применение описано в литературе (см., например, «Безопасность сети на основе Windows 2000: учебный курс MCSE». М.: Русская Редакция, 2001), в том числе в журнальных статьях («Все и сразу» С. Гордейчика в № 1 Windows & .NET Magazine/RE за 2003 год; «Конструктор шаблонов безопасности» М. Минаси в № 5 Windows & .Net Magazine/RE за тот же год). Во всех этих материалах упоминается, что шаблоны безопасности можно импортировать в групповые политики, тиражируя тем самым записанные в них параметры. Во всех статьях говорится, что с помощью шаблонов безопасности можно настраивать разрешения на объекты файловой системы и параметры реестра. Но нигде не делается на этом акцент. Давайте же восполним пробел.

Экран 1. Оснастка Security Templates

Рассмотрим оснастку Security Templates (см. экран 1). Если открыть любой из имеющихся в системе шаблонов, увидим, что в его составе имеются ветви File System, Registry и System Services. В составе этих ветвей хранится информация о разрешениях на объекты файловой системы, параметры реестра и службы, соответственно. Достаточно щелкнуть два раза мышью по любому имеющемуся в этих ветвях объекту и нажать в открывшемся окне кнопку Edit Security — откроется стандартное окно редактирования списка разрешений для объекта. Немногие знают, что доступ к системным службам тоже можно разграничивать, устанавливая разрешения: кому-то позволено только просматривать состояние службы, кому-то — останавливать и запускать службу и т. д.

Если интересующий вас объект в списке отсутствует, следует в меню All Tasks выбрать пункт Add file or Folder, Add Key или Add System Service, после чего перейти к объекту на своем компьютере, если он есть, либо ввести полный путь к файлу/папке или параметру реестра с клавиатуры. Из служб можно выбирать только те, что имеются на компьютере, на котором запускается оснастка.

Настроить параметры системы в соответствии с тем, что указано в шаблоне, можно тремя способами: с помощью оснастки Security Configuration and Analysis, через командную строку с помощью команды Secedit и через групповые политики. Последний вариант предпочтительнее остальных, так как позволяет тиражировать эти настройки сразу на большое количество компьютеров. Инкрементальные шаблоны безопасности (см. упомянутую выше статью С. Гордейчика) также удобно применять, используя групповые политики и их механизм наследования параметров.

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

Экран 2. Импорт шаблона безопасности в групповую политику

В оснастке Group Policy Editor для нужного объекта групповой политики следует выбрать ветвь Computer Settings — Windows Settings — Security Settings. Вызвав для этой ветви меню All Tasks, необходимо выбрать пункт Import Policy и в открывшемся окне выбрать нужный файл с расширением INF, содержащий параметры искомого шаблона безопасности. Далее можно редактировать эти настройки. Соответствующий интерфейс полностью воспроизводит интерфейс редактирования шаблона безопасности в оснастке Security Templates.

Где взять шаблоны

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

  • Basicws.inf, Basicsv.inf и Basicdc.inf — это шаблоны безопасности со стандартными параметрами по умолчанию для Windows 2000 Professional, Windows 2000 Server и контроллеров домена Windows 2000, к компьютерам под Windows Server 2003 они неприменимы;
  • Setup Security.inf — это шаблон безопасности с параметрами, используемый сразу после установки для каждого конкретного компьютера под управлением Windows 2000, Windows XP или Windows Server 2003; его не следует импортировать через групповые политики, за исключением совсем уж однотипных настроек всех компьютеров в OU, вместо этого можно включить в групповые политики сценарий, содержащий вызовы Secedit для данного шаблона;
  • Compatws.inf — это шаблон, ослабляющий защиту ради совместимости со старыми программами; содержит, помимо прочего, менее жесткие ограничения на доступ к системным файлам;
  • Ocfilesw.inf и Ocfiles.inf — шаблоны, описывающие стандартные разрешения доступа к файлам дополнительных компонентов, входящих в состав Windows 2000: Internet Explorer 5.0, NetMeeting, IIS 5.0 и т. д.

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

  • Notssid.inf — шаблон, исключающий из списков доступа сервера Windows 2000 упоминание о группе Terminal Services; его можно применять как инкрементальный на тех компьютерах, где планируется использование старого программного обеспечения в режиме терминального сервера;
  • Certificate Services.inf — шаблон безопасности с параметрами для службы сертификатов Windows 2000;
  • File and print incremental.inf — шаблон с настройками для сервера Windows 2000 или Windows Server 2003 (следует загрузить с сайта Microsoft версию, соответствующую версии операционной системы), который играет роль сервера файлов и печати;
  • Infrastructure Incremental.inf — шаблон с настройками для сервера Windows 2000 или Windows Server 2003, обслуживающего сетевую инфраструктуру — содержащего службы DNS, WINS, DHCP и т. п.;
  • IIS Incremental.inf — шаблон с настройками для сервера Windows, на котором запущены службы IIS;
  • Exchange DC Incremental.inf, Exchange Back End Incremental.inf и OWA Front End Incremental.inf — шаблоны с настройками элементов Microsoft Exchange.

Приведенный список далеко не полный, новые шаблоны появляются регулярно.

Некоторые организации и ведомства также предлагают свои варианты шаблонов безопасности. Эти шаблоны затрагивают списки доступа к файлам и системным компонентам через реестр. В частности, для Windows 2000 свои шаблоны предлагают Агентство национальной безопасности США (www.nsa.gov) и Национальный институт стандартов и технологий США (www.nist.gov). Для Windows Server 2003 обе организации рекомендуют пользоваться шаблонами, поставляемыми вместе с «Руководством по защите систем на платформе Windows Server 2003» (Microsoft Windows Server 2003 Hardening Guide).

Шаблоны, предлагаемые NIST, могут быть интересны «любителям антиквариата» тем, что наряду с файлами, входящими в состав стандартной установки операционной системы Windows 2000 Professional, в них описаны списки доступа на файлы и разделы реестра, соответствующие установленному на компьютере Netscape Navigator 4.6.

Сделай сам

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

Если программа спроектирована со стандартным размещением компонентов, тогда все просто: в шаблон следует внести папку программы, по умолчанию C:Program Files<название программы> и параметр реестра HKEY_LOCAL_MACHINESoftware<название разработчика> <название программы>. Для этих объектов имеет смысл задать разрешения: Administrators —Full Control, Users — Read&Execute; с наследованием разрешений дочерними объектами. Те программные файлы, которые программа установки приложения записывает в системную папку %Windir%System32 и папку общих программных компонентов C:Program FilesCommon Files, унаследуют аналогичные разрешения от указанных папок. В случае программы со стандартным размещением компонентов все настраиваемые индивидуальные параметры для пользователя сохраняются в его профиле, путь к которому программа запрашивает у системы, а также в ветви реестра HKEY_CURRENT_USER.

К сожалению, не все программы написаны со стандартным размещением компонентов. В таком случае требуется исследование программы как в процессе установки, так и в ходе дальнейшей работы. Здесь можно задействовать как стандартные средства регистрации событий и аудита Windows, так и дополнительные утилиты. Существуют две бесплатные утилиты, разработанные компанией Sysinternals (www.sysinternals.com), Filemon и Regmon. Они предназначены для отслеживания операций с файлами и реестром. В данном случае трудно применить аудит доступа к объектам для регистрации событий безопасности Windows, так как для его использования требуется настройка на уровне отдельных объектов — папок, файлов и разделов реестра, а их для вновь устанавливаемой программы еще нужно выявить. Регистрацию событий и аудит Windows придется тем не менее задействовать: следует включить регистрацию событий категории Process Tracking. Для чего — будет сказано ниже.

Экран 3. Программа Filemon

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

Протоколы, получаемые в результате работы программ Filemon и Regmon, — это текстовые файлы в формате CSV, которые можно импортировать в Excel или Access для анализа. В этих протоколах фигурируют все операции в хронологическом порядке, которые выполнялись на компьютере как в ходе работы программы установки, так и в ходе работы системных служб или других программ, запущенных в это время. Поэтому обработка протоколов сводится к двум основным операциям: сначала следует отфильтровать все операции, кроме записи файлов и записи в реестр, а затем отбросить все операции, кроме тех, которые инициированы программой установки (либо службой Microsoft Installer, процесс MSIExec) и процессами, порожденными процессом установки. Для выявления этих процессов нужно проанализировать журнал аудита событий категории Process Tracking.

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

  • следует разбить его на две части, отдельно для файлов, отдельно для разделов реестра;
  • перед этими частями нужно подставить стандартные заголовки: [Registry Keys] перед перечнем разделов реестра и [File System] перед перечнем файлов.

Затем следует подставить общий стандартный заголовок в начале файла, каждую строку взять в кавычки и подставить в конец строки после кавычек: «,0,»D:AR(A;CI;KA;;;BA)(A;CI;KR;;;BU)»» (именно такой текст, только внешние кавычки следует убрать). Эту строку можно воспроизвести на своем компьютере, сделав некий тестовый шаблон с установленными разрешениями на один файл и один раздел реестра, а затем открыв соответствующий INF-файл в Notepad (см. листинг 1). Приведенные в листинге разрешения соответствуют стандартным разрешениям по умолчанию в среде Windows Server 2003.

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

Дело в том, что многие программы сохраняют свои промежуточные рабочие данные непосредственно в папке программы, а не в папке, указанной в переменной окружения %TEMP%. Часто приходится использовать такие программы, написанные для Windows 95/98/ME, так как ждать новых версий, написанных с учетом требований многопользовательской операционной системы, обеспечивающей разграничение доступа к ресурсам, по тем или иным причинам не приходится. Если установить на файлы и папки разрешения, указанные выше (Administrators — Full Control, Users —Read & Execute, унаследовать разрешения от папки на дочерние объекты), тогда такую программу можно будет запускать и полноценно использовать лишь при наличии прав администратора на данном компьютере. В таком случае опять придется задействовать мониторинг событий, но уже не в процессе установки, а в ходе повседневной работы программы.

Вновь следует использовать утилиты Filemon и Regmon, включить регистрацию событий категории Process Tracking, чтобы выявить дочерние процессы, запускаемые данной программой, и отследить их активность тоже. Кроме того, необходимо включить регистрацию событий категории Use of User Rights: возможно, для обеспечения работоспособности программы придется наделить пользователей какими-то системными привилегиями, которые у администратора имеются изначально.

При обработке протоколов, полученных при использовании программ Filemon и Regmon, следует:

  • оставить записи, относящиеся к активности основного процесса программы и его дочерних процессов, перечень которых даст анализ журналов регистрации Windows в части событий категории Process Tracking;
  • стандартными средствами той программы, в которую импортированы для обработки протоколы мониторинга в формате CSV, создать отчет для каждого ресурса, к которому обращались рассматриваемые процессы, и указать перечень запрошенных процессами типов доступа;
  • этот отчет следует проанализировать и добавить в созданный в результате мониторинга установки шаблон безопасности содержащиеся в данном отчете файлы и разделы реестра, предоставив соответствующие разрешения группе Users.

Кроме того, нужно проанализировать журнал регистрации событий безопасности Windows в части событий категории Use of User Rights, относящихся к исследуемым процессам. Если там упоминаются системные привилегии, не предоставленные по умолчанию группе Users, придется в шаблон безопасности для программы добавить настройки в раздел Local Policies — User Rights Assignment, предоставляющие соответствующие права и привилегии группе Users. Лучше бы этого не делать, поскольку расширение прав группы Users ослабляет защиту компьютера, но если иначе необходимая программа не работает, деваться некуда.

Еще один способ

Если на машине установлена Windows XP или Windows Server 2003, можно вместо манипуляций с Filemon и Regmon модифицировать ярлык программы, чтобы она запускалась в режиме эмуляции рабочей среды более ранней версии Windows. Но если при этом используется эмуляция не Windows NT/2000, запуск в таком режиме приводит к расширению прав данного процесса до уровня локального администратора или даже системы, что сводит на нет всю защиту, обеспечиваемую операционной системой. Поэтому в корпоративной среде указанной возможностью пользоваться вряд ли стоит — слишком велик риск. Впрочем, уровень риска оценивать вам, сопоставлять его с приобретенным удобством тоже вам, и, хотя в конечном счете принимать решение, возможно, придется вашему начальнику, за последствия отвечать опять же вам. К тому же такие параметры ярлыка программы, в отличие от разрешений на файлы и реестр, через шаблоны безопасности и групповые политики тиражировать невозможно.


Алексей Сотский — преподаватель учебного центра, имеет сертификаты MCSE, MCT. С ним можно связаться по адресу: alex100@infosec.ru