# Форум на русском языке  > Угрозы информационной безопасности  > Сетевые атаки  >  настройки защиты утилиты Dcomcnfg.exe

## SDA

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

Applications – содержит список COM-приложений. Выбрав одно из них, можно открыть диалог его настройки (кнопка Properties).

Default Properties – позволяет задать значения по умолчанию для уровней аутентификации и имперсонации. На этой странице можно также включить или выключить DCOM для текущей машины. Если DCOM выключен, работа с COM-объектами по сети невозможна. Значения этого переключателя можно найти в реестре по адресу HKEY_LOCAL_MACHINE\Software\Microsoft\OLE. На этой же странице есть еще одна опция, которая относится к защите. Она называется "Provide additional security for reference tracking". Эта опция заставляет COM защищать вызовы методов интерфейса IUnknown, отвечающие за подсчет ссылок. Это может предотвратить несанкционированное уничтожение объекта, например, вследствие вмешательства хакера.

Default Security – На этой странице можно задать значения по умолчанию для прав доступа и прав активации. Эти значения тоже хранятся в ключе HKEY_LOCAL_MACHINE\Software\Microsoft\OLE, в значениях DefaultAccessPermission и DefaultLaunchPermission, соответственно. Их содержимое – не что иное, как сериализованный дескриптор защиты. Эти настройки будут использоваться обычными DCOM-приложениями, если настройки для этих приложений не заданы явно. При задании прав нужно помнить, что список тех, кому разрешен доступ, обязательно должен содержать учетную запись SYSTEM! Иначе ты будешь получать сообщения об ошибке (например, "не хватает памяти" или "не могу загрузить user.dll"). Новые утилиты (dcomcnfg и OLEViewer) автоматически добавляют ее, но старые этого не делали, так что будь осторожны. На COM+-приложения эти настройки не распространяются.

На этой закладке есть еще одна кнопка - Default Configuration Permissions. Она позволяет настроить ACL разрешений/запрещений для ключа HKEY_CLASSES_ROOT. В этот ключ помещается информация о COM-объектах, регистрируемых в системе. Если запретить кому-нибудь доступ на запись в этот ключ реестра, этот кто-то не сможет устанавливать в систему COM-приложения. Осторожно, так как HKEY_CLASSES_ROOT может быть довольно большим и изменение прав доступа к нему может занять довольно много времени.

Default Protocols – эта закладка позволяет настроить список и приоритет использования для сетевых протоколов, используемых DCOM.

Для задания прав доступа к ключевым (с точки зрения COM) веткам реестра можно использовать regedt32 (regedit в Windows XP). Это позволит избежать лишних проблем с излишне продвинутыми пользователями или, наоборот, делегировать часть прав по администрированию обладателям менее привилегированных учетных записей. Настройка свойств отдельного DCOM-приложения производится в отдельном диалоговом окне, которое (как я уже говорил выше) можно вызвать на страницы Applications. Все установки, которые можно задать в этом диалоге, хранятся в ключе реестра HKEY_CLASSES_ROOT\AppID\{AppID приложения}. На рисунке показано содержимое этого ключа для COM-сервера SampleServerWithEvents


Вот объяснение страницы:

General – позволяет задать минимальный уровень аутентификации и получить кое-какую (малоинтересную) информацию. К сожалению, из dcomcnfg нельзя задать минимальный уровень имперсонации (как это можно сделать из диалога настройки COM+-приложения). Если нужно, можешь сделать это программно (с помощью функции CoInitializeSecurity).

Location – к защите прямого отношения не имеет. Позволяет указать, где будет запускаться сервер (на удаленном сервере или на данной машине). Обычно используется для указания компьютера- сервера. Данная установка не действует, если объект создается с помощью CoCreateInstanceEx (CreateObject в VB6), и имя сервера задано явно.

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

Identity – эта страница позволяет указать, под какой учетной записью и в какой Windows-станции будет запускаться DCOM-приложение. Dcomcnfg помещает настройки, сделанные на этой странице, в значение реестра RunAs. Вот возможные значения этого параметра:

The Interactive User – приложение будет запускаться под учетной записью вошедшего в систему интерактивного пользователя. При этом приложение будет запускаться в WinSta0 (см. выше), что позволит ему интерактивно взаимодействовать с пользователем. «Интерактивно взаимодействовать» подразумевает, что пользователь увидит все видимые окна, открываемые приложением (например, диалоги ASSERT), и, если у него есть соответствующие привилегии, сможет отлаживать приложение. Данный вариант настройки прекрасно подходит для отладки или поиска проблем. Для реальной работы этот режим годится плохо, так как приложение просто не запустится, если в системе нет интерактивного пользователя. К тому же, если в систему зайдет пользователь с недостаточными правами, работоспособность приложения может оказаться под угрозой. Естественно, когда интерактивный пользователь выходит из системы, все DCOM-приложения с данной настройкой принудительно закрываются. При выборе этого варианта загрузки в поле реестра RunAs заносится значение «Interactive User». Этот вариант запуска недоступен, если сервер зарегистрирован как сервис.

The Launching User – приложение будет запускаться под учетной записью запускающего пользователя (обычно удаленного). Описать данный параметр стоит хотя бы для того, чтобы им не пользоваться. Это особенно актуально потому, что этот параметр по глупости программеров из Microsoft применяется для DCOM-приложений по умолчанию (справедливости ради нужно заметить, что в COM+ он вообще отсутствует). Чем же так плох этот параметр? Дело в том, что при этой настройке COM SCM создает отдельный серверный процесс для каждой учетной записи, от лица которой производится попытка создать объект. При этом каждый сервер получит отдельную Windows-станцию. Это приведет к тому, что отдельные копии сервера (приложения) не смогут общаться между собой (и уж тем более с интерактивным клиентом), сервер будет ограничен правами конкретного пользователя, а такие вещи, как делегация, вообще будут невозможны. Применять данный вариант запуска нужно очень осторожно. Практически в любом случае можно найти другой выход (например, используя имперсонацию и подобрав подходящие параметры для функции CoRegisterClassObject). При выборе этого варианта загрузки поле реестра RunAs удаляется. Этот вариант запуска (как и предыдущий) недоступен, если сервер зарегистрирован как сервис.

This user – приложение будет запускаться под учетной записью, указанной в поле User (которое становится доступно после активизации данного варианта загрузки). Необходимо также задать пароль. При этом имя учетной записи проверяется на правильность, а вот с паролем можно и ошибиться. Чтобы уменьшить риск ошибки, диалог содержит поле для повторного ввода пароля. Но даже повторный ввод не спасет, если забыл выключить Caps Lock или русский язык. Самое противное, что о неправильности пароля узнаёшь только после того, как получичаешь соответствующее сообщение об ошибке при попытке создать COM-объект. При выборе этой опции серверному процессу будет выделена отдельная Windows-станция. Это означает, что сервер не сможет напрямую взаимодействовать с интерактивным пользователем. Если COM-сервер зарегистрирован как сервис (в реестре присутствует параметр LocalService), то сервер может быть активирован как обычный сервис (например, при старте системы). При выборе этого варианта запуска в параметр RunAs заносится имя учетной записи, под которой будет запускаться сервер.

The System Account – приложение будет запускаться под учетной записью SYSTEM. Этот пункт доступен, если сервер зарегистрирован как сервис (ATL-Wizard позволяет легко создавать такие серверы, необходимо только регистрировать их с опцией /service, а не /regserver). В этом случае настройки параметров загрузки можно задать в диалоге настройки сервиса. До появления W2k учетная запись SYSTEM не могла обращаться к сетевым ресурсам. В W2k и более старших версиях ОС учетная запись SYSTEM ассоциируется в сетевой среде с учетной записью компьютера, которому она принадлежит.

Если сервер должен взаимодействовать с интерактивным пользователем, нужно или написать отдельное клиентское приложение, или создать и зарегистрировать COM-сервер как сервис, указав при регистрации сервиса, что он должен иметь право взаимодействовать с рабочим столом. Сделать это можно в диалоге свойств сервиса. Какой способ лучше? Я считаю – первый. По-моему, неподходит серверу выпендриваться и лезть к незнакомым людям с вопросами и предложениями. Если пользователю будет нужно, он запустит утилиту администрирования и всласть наобщается с сервером. Если нужно оповещать пользователя, то, например, можно поместить клиентское приложение в папку Startup и вывести иконку в панели задач. При этом, если кому-то такой сервис не понравится, он сможет выгрузить и удалить зануду.

Если нужно просто выдать сообщение, например, о критичном сбое, можно воспользоваться функцией MessageBox, передав ей в качестве последнего параметра флаг MB_SERVICE_NOTIFICATION. Это заставит выдавать сообщение на default desktop (не обращая внимания на Windows-станцию, в которой создан сервер). Будьте при этом осторожны, так как окна сообщений, показываемые с флагом MB_SERVICE_NOTIFICATION модальны по отношению к системе, то есть если пользователь не закроет такое окно, второе не будет выведено.

Dcomcnfg не очень мощная, но порою незаменимая утилита. Нередко программист хочет избавить пользователя от использования этой утилиты, например, задавая настройки прямо из сервера (с помощью функции CoInitializeSecurity). Однако права активации всегда задаются через реестр, и их считывание происходит до загрузки сервера. Если хочется упростить жизнь пользователя, то следует или использовать COM+, или задавать необходимые настройки в момент инсталляции программы.


по материалам oszone.net

----------

Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru:

----------

