Partager via


Restriction de l’interface RPC

Le service d’appel de procédure distante (RPC) sécurise les interfaces RPC par défaut pour réduire les attaques. La clé de Registre RestrictRemoteClients vous permet de modifier le comportement de toutes les interfaces RPC sur le système et peut être utilisée pour éliminer l’accès anonyme à distance aux interfaces RPC sur le système, à quelques exceptions près. Vous pouvez appliquer d’autres contrôles d’interface en utilisant la clé de Registre EnableAuthEpResolution décrite dans cet article. Les développeurs d’applications RPC et les administrateurs système peuvent configurer des restrictions d’interface RPC.

Prerequisites

Quand vous utilisez RestrictRemoteClients sur votre serveur :

  • Vos clients RPC sont tenus d’utiliser la sécurité RPC lors du contact avec vos applications serveur, qui est la meilleure méthode pour atténuer les menaces de sécurité.

  • Exemptez votre paramètre RPC d’exiger l’authentification en définissant l’indicateur de RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH lors de l’inscription. Cela configure RPC pour autoriser les connexions anonymes à vos applications.

Atténuation des menaces avec RestrictionRemoteClients

L’activation de RestrictRemoteClients est utile pour l’atténuation des menaces des vers qui utilisent les dépassements de mémoire tampon exploitables pouvant être appelés à distance sur des connexions anonymes. Les applications RPC qui s’attendent à recevoir un appel des clients RPC anonymes distants peuvent ne pas s’exécuter correctement lors de l’utilisation de cette fonctionnalité. Par conséquent, les applications qui utilisent DCOM (Distributed Component Object Model) peuvent ne pas fonctionner correctement si cette valeur est définie.

Les appels RPC utilisant des protocoles sans connexion échouent si cette clé est activée. Sécuriser les appels RPC via des protocoles non connectés, comme UDP (protocole UDP) et IPX (protocole IPX), utilisent un niveau de sécurité inférieur par rapport aux protocoles orientés connexion. Plus précisément, ncadg_ip_udp et ncadg_ipx sont considérés comme moins sécurisés. Dans le cadre de cette stratégie, ces appels sont toujours considérés comme non sécurisés.

Pour autoriser les appels clients RPC à l’aide de protocoles sans connexion, conservez RestrictRemoteClients la valeur définie sur désactivée.

Restrictions pour les clients RPC

Quand une interface est inscrite avec RpcServerRegisterIf, RPC permet à l’application serveur de restreindre l’accès à l’interface en utilisant un rappel de sécurité. La clé de Registre RestrictRemoteClients force RPC à effectuer des vérifications de sécurité supplémentaires pour toutes les interfaces, même si l’interface n’a aucun rappel de sécurité inscrit.

Les clients RPC qui utilisent la séquence de protocole de canal nommé (ncacn_np) sont exemptés de toutes les restrictions décrites dans cette section. La séquence de protocole de canal nommé ne peut pas être restreinte en raison de problèmes de compatibilité descendante importants.

RestrictRemoteClients peut également être contrôlé par programmation dans l’en-tête de l’API rpcdce.h (Interface de programmation d’application).

Configuration de RestrictRemoteClients

Pour modifier ces stratégies dans l’éditeur GPO (objet stratégie de groupe) :

  1. Sélectionnez Le type de démarrage>gpedit.msc> appuyez sur Entrée pour ouvrir l’Éditeur de stratégie de groupe local.

  2. Pour activer l’équivalent des paramètres RestrictRemoteClients, accédez à Configuration ordinateur\Modèles d’administration\Système\Appel de procédure distante\Restrictions pour les clients à distance RPC non authentifiés, puis sélectionnez l’une des options suivantes :

    • Désactivé : ce paramètre est la valeur par défaut des références SKU de serveur. Correspond à la valeur RPC_RESTRICT_REMOTE_CLIENT_NONE dans rpcdce.h et il incombe à l’application serveur d’imposer des restrictions RPC appropriées.
    • Authentifié : correspond à la valeur RPC_RESTRICT_REMOTE_CLIENT_DEFAULT dans rpcdce.h. Autorise seulement les clients RPC authentifiés à se connecter aux serveurs RPC s’exécutant sur la machine où le paramètre de stratégie est appliqué. Le runtime RPC rejette les appels anonymes. Si une interface inscrit un rappel de sécurité et fournit l’indicateur de RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH , cette restriction ne s’applique pas à cette interface.
    • Authentifié sans exceptions1 : correspond à la valeur RPC_RESTRICT_REMOTE_CLIENT_HIGH dans rpcdce.h. Autorise seulement les clients RPC authentifiés à se connecter aux serveurs RPC s’exécutant sur la machine où le paramètre de stratégie est appliqué. Aucune exception n’est autorisée quand cette valeur est définie, car le système ne peut pas recevoir d’appels anonymes distants en utilisant RPC.

Toute modification apportée à l’un de ces paramètres nécessite qu’un redémarrage du système prenne effet.

Caution

¹N’utilisez pas cette valeur sans test significatif. Pour plus d’informations, consultez Restrictions pour les clients à distance RPC non authentifiés.

EnableAuthEpResolution

La EnableAuthEpResolution clé permet au runtime du client RPC d’utiliser NTLM (Gestionnaire NT LAN) pour s’authentifier auprès du mappeur de point de terminaison lorsqu’il est activé. Cette requête authentifiée a lieu seulement si l’appel du client RPC réel utilise l’authentification RPC.

Les clients RPC effectuent des appels à un serveur RPC disposant d’un point de terminaison dynamique inscrit avec l’authentification client du mappeur de point de terminaison RPC activée. Ces appels sont interrogés au nom des appels authentifiés à l’aide de l’authentification NTLM.

Les clients RPC qui tentent d’effectuer un appel à l’aide d’un point de terminaison dynamique interrogent le mappeur de point de terminaison RPC sur le serveur pour déterminer le point de terminaison auquel il doit se connecter. Cette requête est effectuée de manière anonyme, même si l’appel du client RPC lui-même est effectué avec la sécurité RPC. L’interface du mappeur de point de terminaison RPC n’est pas accessible anonymement si le RestrictRemoteClients paramètre est activé.

Configuration d’EnableAuthEpResolution

Pour modifier ces stratégies dans l’éditeur GPO (objet stratégie de groupe) :

  1. Sélectionnez Le type de démarrage>gpedit.msc> appuyez sur Entrée pour ouvrir l’Éditeur de stratégie de groupe local.

  2. Pour activer l’équivalent des paramètres EnableAuthEpResolution, accédez à Configuration ordinateur\Modèles d’administration\Système\Appel de procédure distante\Activer l’authentification du client Mappeur de point de terminaison RPC, puis sélectionnez l’un des deux paramètres disponibles :

    • Désactivé : ce paramètre est la valeur par défaut. Les clients RPC ne s’authentifient pas auprès du service Endpoint Mapper, mais ils sont en mesure de communiquer avec le service Endpoint Mapper sur Windows NT4 Server.
    • Activé : les clients PC s’authentifient via le service Endpoint Mapper pour les appels qui contiennent des informations d’authentification. Les clients qui effectuent ces appels ne peuvent pas communiquer avec le service Mapper de point de terminaison du serveur Windows NT4.

Toute modification apportée à l’un de ces paramètres nécessite qu’un redémarrage du système prenne effet.

Important

Les paramètres de stratégie de groupe suivants trouvés dans Configuration ordinateur\Paramètres Windows\Paramètres de sécurité\Stratégies locales\Options de sécurité ne peuvent pas être utilisés avec EnableAuthEpResolution:

  • Sécurité réseau : Restreindre NTLM : Trafic NTLM entrant, « Refuser tous les comptes »
  • Sécurité réseau : Restreindre NTLM : Trafic NTLM sortant vers des serveurs distants – « Refuser tout »

S’éloigner de NTLM pour mieux sécuriser votre environnement est encouragé. Si vous devez choisir entre restreindre NTLM et utiliser EnableAuthEpResolution, l’approche recommandée est de restreindre NTLM dans votre environnement.

Autres indicateurs d’inscription d’interface RPC

Ces indicateurs d’inscription d’interface sont créés pour faciliter la sécurisation d’une interface RPC par un développeur d’applications :

  • RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH
    Quand cet indicateur est inscrit, le runtime RPC appelle le rappel de sécurité inscrit pour tous les appels, quels que soient les paramètres de sécurité des appels. Sans cet indicateur, RPC rejette tous les appels non authentifiés avant qu’ils n’atteignent le rappel de sécurité. Cet indicateur fonctionne uniquement quand un rappel de sécurité est inscrit.

  • RPC_IF_SEC_NO_CACHE
    Un rappel de sécurité est inscrit pour une interface pour restreindre l’accès. En règle générale, le rappel de sécurité emprunte l’identité du client pour vérifier si le client dispose de droits suffisants pour effectuer un appel à l’interface. Une fois qu’une identité cliente particulière passe le rappel de sécurité, elle transmet généralement le même rappel de sécurité lors des tentatives suivantes.

    Le runtime RPC tire parti de ce modèle en se souvenant quand une identité cliente individuelle passe un rappel de sécurité. Il ignore ensuite le rappel de sécurité pour les appels suivants par ce client vers la même interface. Cette fonctionnalité est appelée mise en cache de rappel de sécurité et existe depuis la famille de systèmes d’exploitation Microsoft Windows 2000. Vous pouvez utiliser l’indicateur RPC_IF_SEC_NO_CACHE pour désactiver la mise en cache du rappel de sécurité pour une interface donnée. Ce qui est utile si la vérification de sécurité peut changer, éventuellement rejeter une identité cliente qui a été précédemment autorisée.

  • RPC_IF_LOCAL_ONLY
    Lorsqu’une interface est inscrite avec cet indicateur, RPC rejette les appels effectués par les clients RPC distants. Par ailleurs, les appels locaux sur toutes les séquences de protocole ncadg_* et toutes les séquences de protocole ncacn_* (à l’exception des canaux nommés, avec ncacn_np) sont également rejetés. Si un appel est effectué sur ncacn_np, RPC l’autorise uniquement s’il ne provient pas de SRV (Service Location Protocol), qui filtre tous les appels distants. Les appels Ncalrpc sont toujours autorisés.

L’utilisation de ces indicateurs est à la discrétion du développeur d’applications. Les développeurs d’applications RPC sont fournis avec des outils de sécurité supplémentaires pour sécuriser leur interface RPC, car ces indicateurs ne modifient aucune application existante ni ne les provoquent à une exécution incorrecte.

Voir aussi