Ler en inglés

Compartir por


Restricción de la interfaz RPC

El servicio de Llamada a procedimiento remoto (RPC) protege las interfaces RPC de forma predeterminada para reducir ataques. La clave del Registro RestrictRemoteClients permite modificar el comportamiento de todas las interfaces RPC del sistema y se puede usar para eliminar el acceso anónimo remoto a las interfaces RPC del sistema, con algunas excepciones. Puede aplicar otros controles de interfaz mediante la clave del Registro EnableAuthEpResolution de la que se habla en este artículo. Las restricciones de la interfaz RPC se pueden configurar tanto para desarrolladores de aplicaciones RPC como para administradores del sistema.

Prerrequisitos

Cuando se usa RestrictRemoteClients en el servidor:

  • Es necesario que los clientes RPC usen la seguridad RPC al ponerse en contacto con las aplicaciones de servidor. Este es el mejor método para mitigar las amenazas de seguridad.

  • Excluya la configuración RPC de requerir autenticación estableciendo la marca RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH durante el registro. Esto configura que RPC permita conexiones anónimas a las aplicaciones.

Mitigación de amenazas RestrictRemoteClients

La habilitación de RestrictRemoteClients es útil para mitigar los gusanos que dependen de saturaciones de búfer que se puedan aprovechar de forma remota a través de conexiones anónimas. Es posible que las aplicaciones RPC que esperan recibir llamadas desde clientes RPC anónimos remotos no se ejecuten correctamente al usar esta característica. Como resultado, las aplicaciones que usan DCOM (modelo de objetos de componente distribuido) podrían no funcionar correctamente si se establece este valor.

Las llamadas RPC a través de protocolos sin conexión producirán un error si esta clave está habilitada. Las llamadas RPC seguras a través de protocolos sin conexión, como UDP (protocolo de datagramas de usuario) e IPX (intercambio de paquetes de trabajo de Internet), ncadq_ip_udp y ncadg_ipx respectivamente, usan un nivel de seguridad inferior a las llamadas a través de protocolos orientados a la conexión en los que estas llamadas siempre se consideran no seguras para los fines de esta directiva.

Para permitir llamadas de cliente RPC mediante protocolos sin conexión, mantenga el valor RestrictRemoteClients establecido en deshabilitado.

Restricciones para clientes RPC

Cuando se registra una interfaz mediante RpcServerRegisterIf, RPC permite que la aplicación de servidor restrinja el acceso a la interfaz a través de una devolución de llamada de seguridad. La clave del Registro RestrictRemoteClients obliga a RPC a realizar comprobaciones de seguridad adicionales para todas las interfaces, incluso si la interfaz no tiene ninguna devolución de llamada de seguridad registrada.

Los clientes RPC que usan la secuencia de protocolo de canalización con nombre (ncacn_np) están exentos de todas las restricciones descritas en esta sección. La secuencia de protocolo de canalización con nombre no se puede restringir debido a problemas significativos de compatibilidad con versiones anteriores.

RestrictRemoteClients también se puede controlar mediante programación en el encabezado rpcdce.h de API (Interfaz de programación de aplicaciones).

Configuración de RestrictRemoteClients

Para editar estas directivas mediante el editor de GPO (Objeto de directiva de grupo):

  1. Haga clic en Iniciar> tipo gpedit.msc> presione Intro para abrir el Editor de directiva de grupo local.

  2. Para habilitar el equivalente de configuración RestrictRemoteClients, vaya a Configuración del equipo\Plantillas administrativas\Sistema\Llamada a procedimiento remoto\Restricciones para clientes RPC no autenticados y, a continuación, seleccione una de las siguientes opciones:

    • Deshabilitado: esta configuración es el valor predeterminado para las SKU de servidor. Esto corresponde al valor RPC_RESTRICT_REMOTE_CLIENT_NONE en rpcdce.h y es responsabilidad de la aplicación de servidor imponer restricciones RPC adecuadas.
    • Autenticado: corresponde al valor RPC_RESTRICT_REMOTE_CLIENT_DEFAULT en rpcdce.h. Permite que solo los clientes de RPC autenticados se conecten a los servidores de RPC que se ejecutan en el equipo donde se aplica la configuración de directiva. El tiempo de ejecución de RPC rechaza las llamadas anónimas. Si una interfaz registra una devolución de llamada de seguridad y proporciona la marca RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH, esta restricción no se aplica a esa interfaz.
    • Autenticado sin excepciones1: corresponde al valor RPC_RESTRICT_REMOTE_CLIENT_HIGH en rpcdce.h. Permite que solo los clientes de RPC autenticados se conecten a los servidores de RPC que se ejecutan en el equipo donde se aplica la configuración de directiva. No se permiten excepciones cuando este valor se establece puesto que el sistema no puede recibir llamadas anónimas remotas mediante RPC.

Cualquier cambio en cualquiera de estas opciones de configuración requiere que un reinicio del sistema surta efecto.

Advertencia

¹ No use este valor sin pruebas significativas. Para obtener más información, vea Restricciones para clientes RPC no autenticados.

EnableAuthEpResolution

La clave EnableAuthEpResolution permite que el tiempo de ejecución del cliente RPC use NTLM (NT LAN Manager) para autenticarse en el asignador de extremos si está habilitado. Esta consulta autenticada solo tiene lugar si la llamada de cliente RPC real usa la autenticación RPC.

Los clientes RPC realizan llamadas a un servidor RPC que tiene un punto de conexión dinámico registrado con la autenticación de cliente del Asignador de extremos de RPC habilitada que se consultan en nombre de llamadas autenticadas mediante la autenticación NTLM.

Los clientes RPC que intentan realizar una llamada mediante un punto de conexión dinámico consultarán primero el Asignador de extremos de RPC en el servidor para determinar a qué punto de conexión debe conectarse. Esta consulta se realiza de forma anónima, incluso si la llamada del cliente RPC se realiza mediante seguridad RPC. La interfaz del Asignador de extremos de RPC no será accesible de forma anónima si la configuración RestrictRemoteClients está habilitada.

Configuración de EnableAuthEpResolution

Para editar estas directivas mediante el editor de GPO (Objeto de directiva de grupo):

  1. Haga clic en Iniciar> tipo gpedit.msc> presione Intro para abrir el Editor de directiva de grupo local.

  2. Para habilitar el equivalente de la configuración EnableAuthEpResolution, vaya a Configuración del equipo\Plantillas administrativas\Sistema\Llamada a procedimiento remoto\Habilitar autenticación de cliente del Asignador de extremos de RPC y, a continuación, seleccione una de las dos opciones disponibles:

    • Deshabilitado: esta es la configuración predeterminada. Los clientes RPC no se autenticarán en el Servicio de asignador de extremos, pero podrán comunicarse con dicho servicio en Windows NT4 Server.
    • Habilitado: los clientes de PC se autentican a través del Servicio de asignador de extremos para las llamadas que contienen información de autenticación. Los clientes que realicen llamadas de este tipo no podrán comunicarse con el Servicio de asignador de extremos de Windows NT4 Server.

Cualquier cambio en cualquiera de estas opciones de configuración requiere que un reinicio del sistema surta efecto.

Importante

Las siguientes opciones de directiva de grupo que se encuentran en Configuración del equipo\Configuración de Windows\Configuración de seguridad\Directivas locales\Opciones de seguridad no se pueden usar con EnableAuthEpResolution:

  • Seguridad de red: Restringir NTLM: tráfico NTLM entrante: "Denegar todas las cuentas"
  • Seguridad de red: restringir NTLM: tráfico NTLM saliente hacia servidores remotos: "Denegar todo"

Se recomienda alejarse de NTLM para proteger mejor su entorno. Si se enfrenta a una opción entre restringir NTLM y usar EnableAuthEpResolution, el enfoque recomendado es restringir NTLM en su entorno.

Otras marcas de registro de interfaz RPC

Estas marcas de registro de interfaz se han creado para que los desarrolladores de aplicaciones protejan con más facilidad las interfaces de RPC:

  • RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH
    Cuando se registra esta marca, el tiempo de ejecución de RPC invoca la devolución de llamada de seguridad registrada para todas las llamadas, independientemente de la configuración de seguridad de llamadas. Sin esta marca, RPC rechaza todas las llamadas no autenticadas antes de que lleguen a la devolución de llamada de seguridad. Esta marca solo funciona cuando se registra una devolución de llamada de seguridad.

  • RPC_IF_SEC_NO_CACHE
    Se registra una devolución de llamada de seguridad para una interfaz con el fin de restringir el acceso a esa interfaz. La devolución de llamada de seguridad típica suplanta al cliente para determinar si el cliente tiene derechos suficientes para realizar una llamada a la interfaz. Si una identidad de cliente determinada pasa una devolución de llamada de seguridad una vez, normalmente pasa la misma devolución de llamada de seguridad siempre.

    • El tiempo de ejecución de RPC aprovecha este patrón al recordar cuándo una identidad de cliente individual pasa una devolución de llamada de seguridad y omite la devolución de llamada de seguridad para las llamadas posteriores de ese cliente a la misma interfaz. Esta característica se denomina almacenamiento en caché de devolución de llamada de seguridad y ha existido desde la familia de sistemas operativos de Microsoft Windows 2000. Puede usar la marca RPC_IF_SEC_NO_CACHE para deshabilitar el almacenamiento en caché de devolución de llamada de seguridad para una interfaz determinada. Esto resulta útil en caso de que la comprobación de seguridad cambie, posiblemente rechazando una identidad de cliente que se permitía anteriormente.
  • RPC_IF_LOCAL_ONLY
    Cuando se registra una interfaz con esta marca, RPC rechaza las llamadas realizadas por clientes RPC remotos. Además, las llamadas locales a través de todas las secuencias de protocolo ncadg_* y todas las secuencias de protocolo ncacn_* (excepto las canalizaciones con nombre, mediante ncacn_np) también se rechazan. Si se realiza una llamada en ncacn_np, RPC solo permite la llamada si no procede de SRV (Protocolo de ubicación del servicio), que filtra todas las llamadas remotas. Las llamadas Ncalrpc siempre se permiten.

El uso de estas marcas queda a discreción del desarrollador de aplicaciones. Los desarrolladores de aplicaciones RPC se proporcionan con herramientas de seguridad adicionales para ayudar a proteger la interfaz RPC, ya que estas marcas no cambiarán ninguna aplicación existente o harán que se ejecuten incorrectamente.

Referencias adicionales