Services et RPC/TCP
À compter de Windows Vista, le gestionnaire de contrôle de service (SCM) prend en charge les appels de procédure à distance sur le protocole RPC/TCP (Transmission Control Protocol) et les canaux nommés (RPC/NP). Les fonctions SCM côté client utilisent RPC/TCP par défaut.
RPC/TCP convient à la plupart des applications qui utilisent des fonctions SCM à distance, telles que les outils d’administration ou de supervision à distance. Toutefois, pour des fins de compatibilité et de performances, certaines applications peuvent avoir besoin de désactiver RPC/TCP en définissant les valeurs de Registre décrites dans cette rubrique.
Lorsqu’un service appelle une fonction SCM distante, le SCM côté client tente d’abord d’utiliser RPC/TCP pour communiquer avec le SCM côté serveur. Si le serveur exécute une version de Windows qui prend en charge RPC/TCP et autorise le trafic RPC/TCP, la connexion RPC/TCPP réussit. Si le serveur exécute une version de Windows qui ne prend pas en charge RPC/TCP, ou qui prend en charge RPC/TCP, mais qui fonctionne derrière un pare-feu qui autorise uniquement le trafic de canal nommé, la connexion RPC/TCP expire et le SCM retente la connexion avec RPC/NP. Cela aboutira à terme, mais peut prendre un certain temps (généralement plus de 20 secondes), ce qui entraîne le blocage de la fonction OpenSCManager .
TCP ne contient pas les informations d’identification utilisateur spécifiées avec une commande net use . Par conséquent, si RPC/TCP est activé et quesc.exe est utilisé pour tenter d’accéder au service spécifié, la commande peut échouer avec l’accès refusé. La désactivation de RPC/TCP côté client entraîne l’utilisation par la commande sc.exe d’utiliser un canal nommé qui contient les informations d’identification de l’utilisateur, afin que la commande réussisse. Pour plus d’informations sur sc.exe, consultez Contrôle d’un service à l’aide de SC.
Notes
Un service ne doit pas fournir d’informations d’identification explicites à une commande net use , car ces informations d’identification peuvent être partagées par inadvertance en dehors des limites du service. Au lieu de cela, le service doit utiliser l’emprunt d’identité client pour emprunter l’identité de l’utilisateur.
Valeurs de Registre RPC/TCP
RPC/TCP est contrôlé par les valeurs de Registre SCMApiConnectionParam, DisableRPCOverTCP et DisableRemoteScmEndpoints, qui sont toutes sous la cléde contrôleSYSTEM\CurrentControlSet\HKEY_LOCAL_MACHINE\. Toutes ces valeurs ont un type de données REG_DWORD. Les procédures suivantes montrent comment utiliser ces valeurs de Registre pour contrôler RPC/TCP.
La procédure suivante explique comment désactiver RPC/TCP côté client.
Pour désactiver RPC/TCP côté client
- Combinez la valeur de Registre SCMApiConnectionParam avec la valeur de masque 0x80000000.
- Redémarrez l’application qui appelle la fonction OpenSCManager .
La procédure suivante décrit comment désactiver TCP côté serveur.
Pour désactiver TCP côté serveur
- Définissez la valeur de Registre DisableRPCOverTCP sur 1.
- Redémarrez le serveur.
La procédure suivante décrit comment désactiver à la fois RPC/TCP et RPC/NP sur le serveur (par exemple, pour réduire la surface d’attaque).
Pour désactiver à la fois RPC/TCP et RPC/NP sur le serveur
- Définissez la valeur de Registre DisableRemoteScmEndpoints sur 1.
- Redémarrez le serveur.
La valeur de Registre SCMApiConnectionParam peut également être utilisée pour spécifier l’intervalle de délai d’expiration RPC/TCP, en millisecondes. Par exemple, une valeur de 30 000 spécifie un intervalle de délai d’attente de 30 secondes. La valeur par défaut est 21 000 (21 secondes).