Поделиться через


Ограничение интерфейса RPC

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

Prerequisites

При использовании RestrictRemoteClients на сервере:

  • Клиенты RPC должны использовать безопасность RPC при обращении к серверным приложениям, что является лучшим способом для устранения угроз безопасности.

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

Ограничение устранения угроз вRemoteClients

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

Вызовы RPC с использованием протоколов без подключения завершаются ошибкой, если этот ключ включен. Безопасные вызовы RPC через протоколы без подключения, такие как UDP (протокол user Datagram) и IPX (Internetwork Packet Exchange), используют более низкий уровень безопасности по сравнению с протоколами, ориентированными на подключение. В частности, ncadg_ip_udp и ncadg_ipx считаются менее безопасными. В целях этой политики, эти звонки всегда считаются небезопасными.

Чтобы разрешить вызовы клиента RPC с помощью протоколов без подключения, оставьте RestrictRemoteClients значение отключенным.

Ограничения для клиентов RPC

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

Клиенты RPC, использующие последовательность протоколов именованного канала (ncacn_np), исключаются из всех ограничений, рассмотренных в этом разделе. Последовательность протоколов именованного канала не может быть ограничена из-за значительных проблем совместимости обратной связи.

RestrictRemoteClients также можно управлять программным способом в заголовке rpcdce.h API (интерфейс программирования приложений).

Настройка restrictRemoteClients

Чтобы изменить эти политики с помощью редактора групповой политики (объект групповой политики):

  1. Откройте Пуск>, введите gpedit.msc> и нажмите Enter, чтобы открыть редактор локальной групповой политики.

  2. Чтобы включить эквивалент параметров, перейдите к разделу "Конфигурация компьютера\Административные шаблоны\Вызов удаленной RestrictRemoteClients процедуры\Ограничения для клиентов RPC без проверки подлинности", а затем выберите один из следующих вариантов:

    • Отключен . Этот параметр является значением по умолчанию для SKU сервера. Соответствует значению RPC_RESTRICT_REMOTE_CLIENT_NONE в rpcdce.h и возлагается на серверное приложение ответственность за введение соответствующих ограничений RPC.
    • Аутентифицированный — соответствует значению RPC_RESTRICT_REMOTE_CLIENT_DEFAULT в rpcdce.h. Разрешает подключаться только к серверам RPC, работающим на компьютере, на котором применяется параметр политики, только прошедшие проверку подлинности клиентов RPC. Среда выполнения RPC отклоняет анонимные вызовы. Если интерфейс регистрирует обратный вызов безопасности и предоставляет флаг RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH , это ограничение не применяется к этому интерфейсу.
    • Проверка подлинности без исключений1 — соответствует значению RPC_RESTRICT_REMOTE_CLIENT_HIGH в rpcdce.h. Разрешает подключаться только к серверам RPC, работающим на компьютере, на котором применяется параметр политики, только прошедшие проверку подлинности клиентов RPC. Исключения не допускаются, если это значение задано, так как система не может получать удаленные анонимные вызовы с помощью RPC.

Для внесения изменений в любой из этих параметров требуется перезагрузка системы .

Caution

¹Не используйте это значение без значительного тестирования. Дополнительные сведения см. в разделе "Ограничения для клиентов RPC, не прошедших проверку подлинности".

EnableAuthEpResolution

Ключ EnableAuthEpResolution позволяет клиенту RPC использовать NTLM (NT LAN Manager) для проверки подлинности в службе сопоставления конечных точек, если он включен. Этот запрос выполняется только в том случае, если фактический вызов клиента RPC использует проверку подлинности RPC.

Клиенты RPC вызывают сервер RPC, имеющий зарегистрированную динамическую конечную точку с включенной проверкой подлинности клиента RPC Endpoint Mapper. Эти запросы выполняются от имени вызовов, прошедших аутентификацию с использованием NTLM.

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

Настройка EnableAuthEpResolution

Чтобы изменить эти политики с помощью редактора групповой политики (объект групповой политики):

  1. Выберите Пуск>, введите gpedit.msc> и нажмите ВВОД, чтобы открыть Редактор локальной групповой политики.

  2. Чтобы включить эквивалент EnableAuthEpResolution параметров, перейдите к разделу "Конфигурация компьютера\Административные шаблоны\System\Remote Procedure Call\Enable RPC Endpoint Mapper Client Authentication Authentication", а затем выберите один из двух доступных параметров:

    • Отключен . Этот параметр является значением по умолчанию. Клиенты RPC не аутентифицируются в службе сопоставления конечных точек, но могут взаимодействовать с этой службой на сервере Windows NT4.
    • Включено — клиенты ПК проходят аутентификацию через службу Endpoint Mapper для вызовов, содержащих информацию об аутентификации. Клиенты, выполняющие такие вызовы, не могут взаимодействовать со службой Сопоставления конечных точек Windows NT4 Server.

Для внесения изменений в любой из этих параметров требуется перезагрузка системы .

Important

Следующие параметры групповой политики, найденные в разделе "Конфигурация компьютера\Параметры Windows\Параметры безопасности\Локальные политики\Параметры безопасности", не могут использоваться:EnableAuthEpResolution

  • Безопасность сети: ограничение NTLM: входящий трафик NTLM — "Запретить все учетные записи"
  • Безопасность сети: ограничение NTLM: исходящий трафик NTLM на удаленные серверы — "Запретить все"

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

Другие флаги регистрации интерфейса RPC

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

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

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

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

  • RPC_IF_LOCAL_ONLY
    При регистрации интерфейса с этим флагом RPC отклоняет вызовы, выполненные удаленными клиентами RPC. Кроме того, локальные вызовы по всем ncadg_* последовательности протоколов и все ncacn_последовательности протоколов * (кроме именованных каналов, использующих ncacn_np) также отклоняются. Если вызов выполнен ncacn_np, RPC разрешает вызов только в том случае, если он не приходит из SRV (протокол расположения службы), который фильтрует все удаленные вызовы. Ncalrpc вызовы всегда разрешены.

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

См. также