Servicios y RPC/TCP

A partir de Windows Vista, el administrador de control de servicios (SCM) admite llamadas de procedimiento remoto a través del Protocolo de control de transmisión (RPC/TCP) y canalizaciones con nombre (RPC/NP). Las funciones SCM del lado cliente usan RPC/TCP de forma predeterminada.

RPC/TCP es adecuado para la mayoría de las aplicaciones que usan funciones de SCM de forma remota, como herramientas de administración remota o supervisión. Sin embargo, para la compatibilidad y el rendimiento, es posible que algunas aplicaciones necesiten deshabilitar RPC/TCP estableciendo los valores del Registro descritos en este tema.

Cuando un servicio llama a una función SCM remota, el SCM del lado cliente intenta primero usar RPC/TCP para comunicarse con el SCM del lado servidor. Si el servidor ejecuta una versión de Windows que admite RPC/TCP y permite el tráfico RPC/TCP, la conexión RPC/TCPP se realizará correctamente. Si el servidor ejecuta una versión de Windows que no admite RPC/TCP, o admite RPC/TCP, pero funciona detrás de un firewall que solo permite el tráfico de canalización con nombre, la conexión RPC/TCP agota el tiempo de espera y el SCM reintenta la conexión con RPC/NP. Esto se realizará correctamente, pero puede tardar algún tiempo (normalmente más de 20 segundos), lo que hace que la función OpenSCManager aparezca bloqueada.

TCP no incluye credenciales de usuario especificadas con un comando net use . Por lo tanto, si RPC/TCP está habilitado y sc.exe se usa para intentar acceder al servicio especificado, el comando podría producir un error con el acceso denegado. Deshabilitar RPC/TCP en el lado cliente hace que el comando sc.exe use una canalización con nombre que lleve credenciales de usuario, por lo que el comando se realizará correctamente. Para obtener información sobre sc.exe, consulte Control de un servicio mediante SC.

Nota

Un servicio no debe proporcionar credenciales explícitas a un comando net use , ya que esas credenciales podrían compartirse accidentalmente fuera de los límites del servicio. En su lugar, el servicio debe usar la suplantación de cliente para suplantar al usuario.

 

Valores del Registro RPC/TCP

RPC/TCP se controla mediante los valores del Registro SCMApiConnectionParam, DisableRPCOverTCP y DisableRemoteScmEndpoints, que están todos bajo la clavede controlSYSTEM\CurrentControlSet\de HKEY_LOCAL_MACHINE\. Todos estos valores tienen un tipo de datos REG_DWORD. Los procedimientos siguientes muestran cómo usar estos valores del Registro para controlar RPC/TCP.

En el procedimiento siguiente se describe cómo deshabilitar RPC/TCP en el lado cliente.

Para deshabilitar RPC/TCP en el lado cliente

  1. Combine el valor del Registro SCMApiConnectionParam con el valor de máscara 0x80000000.
  2. Reinicie la aplicación que llama a la función OpenSCManager .

En el procedimiento siguiente se describe cómo deshabilitar TCP en el lado servidor.

Para deshabilitar TCP en el lado servidor

  1. Establezca el valor del Registro DisableRPCOverTCP en 1.
  2. Reinicie el servidor.

En el procedimiento siguiente se describe cómo deshabilitar RPC/TCP y RPC/NP en el servidor (por ejemplo, para reducir la superficie expuesta a ataques).

Para deshabilitar RPC/TCP y RPC/NP en el servidor

  1. Establezca el valor del Registro DisableRemoteScmEndpoints en 1.
  2. Reinicie el servidor.

El valor del Registro SCMApiConnectionParam también se puede usar para especificar el intervalo de tiempo de espera rpc/TCP, en milisegundos. Por ejemplo, un valor de 30 000 especifica un intervalo de tiempo de espera de 30 segundos. El valor predeterminado es 21 000 (21 segundos).