Comment configurer RPC pour utiliser certains ports et comment sécuriser ces ports à l’aide d’IPsec

Résumé

Cet article explique comment configurer RPC pour utiliser une plage de ports dynamiques spécifique et comment sécuriser les ports de cette plage à l’aide d’une stratégie de sécurité du protocole Internet (IPsec). Par défaut, RPC utilise des ports dans la plage de ports éphémère (1024-5000) lorsqu’il affecte des ports aux applications RPC qui doivent écouter sur un point de terminaison TCP. Ce comportement peut rendre difficile la restriction de l’accès à ces ports pour les administrateurs réseau. Cet article décrit les moyens de réduire le nombre de ports disponibles pour les applications RPC et de restreindre l’accès à ces ports à l’aide d’une stratégie IPsec basée sur le registre.

Étant donné que les étapes de cet article impliquent des modifications à l’échelle de l’ordinateur qui nécessitent le redémarrage de l’ordinateur, toutes ces étapes doivent être effectuées en premier dans les environnements hors production afin d’identifier les problèmes de compatibilité des applications qui peuvent survenir à la suite de ces modifications.

Informations supplémentaires

Plusieurs tâches de configuration doivent être effectuées afin de déplacer, réduire et restreindre l’accès aux ports RPC.

Tout d’abord, la plage de ports dynamiques RPC doit être limitée à une plage de ports plus petite et plus facile à gérer, plus facile à bloquer à l’aide d’un pare-feu ou d’une stratégie IPsec. Par défaut, RPC alloue dynamiquement des ports compris entre 1 024 et 5 000 pour les points de terminaison qui ne spécifient pas de port sur lequel écouter.

Remarque
  Cet article utilise la plage de ports entre 5001 et 5021. Cela réduit le nombre de ports disponibles pour les points de terminaison RPC de 3 976 à 20. Le nombre de ports a été sélectionné arbitrairement et ne constitue pas une recommandation pour le nombre de ports nécessaires pour un système spécifique.

Ensuite, une stratégie IPsec doit être créée pour restreindre l’accès à cette plage de ports afin de refuser l’accès à tous les hôtes du réseau.

Enfin, la stratégie IPsec peut être mise à jour pour permettre à certaines adresses IP ou à certains sous-réseaux réseau d’accéder aux ports RPC bloqués et exclure tous les autres.

Pour démarrer la tâche de reconfiguration de la plage de ports dynamiques RPC, téléchargez l’outil de configuration RPC (RPCCfg.exe), puis copiez-le sur la station de travail ou le serveur à reconfigurer. Pour cela, accédez au site web de Microsoft à l’adresse suivante :

http://www.microsoft.com/download/details.aspx?FamilyID=0f9cde2f-8632-4da8-ae70-645e1ddaf369&DisplayLang=en Pour effectuer les tâches suivantes de création d’une stratégie IPsec, téléchargez l’outil Ipsecpol.exe des stratégies de sécurité du protocole Internet, puis copiez-le sur la station de travail ou le serveur à reconfigurer. Pour cela, accédez au site web de Microsoft à l’adresse suivante :

http://www.microsoft.com/download/details.aspx?displaylang=en&FamilyID=7D40460C-A069-412E-A015-A2AB904B7361 Remarque Pour créer une stratégie IPsec pour Microsoft Windows XP ou pour une version ultérieure du système d’exploitation Windows, utilisez Ipseccmd.exe. Ipseccmd.exe fait partie des outils de support de Windows XP. La syntaxe et l’utilisation de IPseccmd.exe sont identiques à la syntaxe et à l’utilisation de Ipsecpol.exe. Pour plus d’informations sur les outils de support de Windows XP, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft.

838079 Outils de support de Windows XP Service Pack 2

Déplacez et réduisez la plage de ports dynamiques RPC à l’aide de RPCCfg.exe

Pour déplacer et réduire la plage de ports dynamiques RPC à l’aide de RPCCfg.exe, procédez comme suit :

  1. Copiez RPCCfg.exe sur le serveur à configurer

  2. À l’invite de commandes, tapez rpccfg.exe -pe 5001-5021 -d 0.
    Remarque : cette plage de ports est recommandée pour les points de terminaison RPC, car les ports de cette plage ne sont pas susceptibles d’être alloués à d’autres applications. Par défaut, RPC utilise la plage de ports entre 1024 et 5000 pour allouer les ports des points de terminaison. Toutefois, les ports de cette plage sont également alloués dynamiquement pour être utilisés par le système d’exploitation Windows pour toutes les applications de sockets Windows et peuvent être épuisés sur des serveurs très utilisés, tels que les serveurs Terminal Server et les serveurs de niveau intermédiaire qui effectuent de nombreux appels sortants vers des systèmes distants.

    Par exemple, quand Internet Explorer contacte un serveur Web sur le port 80, il écoute sur un port dans la plage 1024-5000 la réponse du serveur. Un serveur COM de niveau intermédiaire qui effectue des appels sortants vers d’autres serveurs distants utilise également un port situé dans cette plage pour la réponse entrante à cet appel. Le déplacement de la plage de ports que RPC utilise pour ses points de terminaison vers la plage de ports 5001 réduira le risque que ces ports soient utilisés par d’autres applications.
    Pour plus d’informations sur l’utilisation de ports éphémères dans les systèmes d’exploitation Windows, reportez-vous aux sites web suivants de Microsoft.

Utilisez une stratégie IPsec ou de pare-feu pour bloquer l’accès aux ports vulnérables de l’hôte affecté

Dans les commandes de la section suivante, tout texte apparaissant entre des signes de pourcentage ( %) est destiné à représenter le texte de la commande qui doit être entré par la personne qui crée la stratégie IPsec. Par exemple, chaque fois que le texte « %IPSECTOOL % » apparaît, la personne qui crée la stratégie doit le remplacer par ce texte comme suit :

  • Pour Windows 2000, remplacez « %IPSECTOOL % » par « ipsecpol.exe ».
  • Pour Windows XP ou une version ultérieure de Windows, remplacez « %IPSECTOOL % » par « ipseccmd.exe ».

Pour plus d’informations sur l’utilisation d’IPsec pour bloquer les ports, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

813878 Comment bloquer des protocoles et des ports réseau spécifiques à l’aide d’IPSec

Bloquer l’accès au mappeur de point final RPC pour toutes les adresses IP

Pour bloquer l’accès au mappeur de point final RPC pour toutes les adresses IP, utilisez la syntaxe suivante.

Remarque Sous Windows XP et sur les systèmes d’exploitation ultérieurs, utilisez Ipseccmd.exe. Sous Windows 2000, utilisez Ipsecpol.exe (Windows 2000).

%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f *=0:135:TCP -n BLOCK

Remarque Ne tapez pas « %IPSECTOOL % » dans cette commande. « %IPSECTOOL % » est destiné à représenter la partie de la commande qui doit être personnalisée. Par exemple, sous Windows 2000, tapez la commande suivante à partir d’un répertoire qui contient Ipsecpol.exe pour bloquer tout accès entrant au port TCP 135 :

ipsecpol.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f *=0:135:TCP -n BLOCK

Sous Windows XP et sur les systèmes d’exploitation ultérieurs, tapez la commande suivante à partir d’un répertoire qui contient Ipseccmd.exe pour bloquer tout accès entrant au protocole TCP 135 :

ipseccmd.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 135 Rule" -f *=0:135:TCP -n BLOCK

Bloquer l’accès à la plage de ports dynamiques RPC pour toutes les adresses IP

Pour bloquer l’accès à la plage de ports dynamiques RPC pour toutes les adresses IP, utilisez la syntaxe suivante.

Remarque Sous Windows XP et sur les systèmes d’exploitation ultérieurs, utilisez Ipseccmd.exe. Sous Windows 2000, utilisez Ipsecpol.exe (Windows 2000).

%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Block Inbound TCP %PORT% Rule" -f *=0:%PORT%:TCP -n BLOCK

Remarque Ne tapez pas « %IPSECTOOL % » ou « %PORT % » dans cette commande. « %IPSECTOOL % » et « %PORT % » sont destinés à représenter les parties de la commande qui doivent être personnalisées. Par exemple, tapez la commande suivante sur les hôtes Windows 2000 pour bloquer tout accès entrant au protocole TCP 5001 :

ipsecpol.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 5001 Rule" -f *=0:5001:TCP -n BLOCK

Pour bloquer tout accès entrant au protocole TCP 5001, tapez la commande suivante sur les hôtes Windows XP et sur les hôtes des systèmes d’exploitation Windows ultérieurs :

ipseccmd.exe -w REG -p "Block RPC Ports" -r "Block Inbound TCP 5001 Rule" -f *=0:5001:TCP -n BLOCK

Répétez cette commande pour chaque port RPC qui doit être bloqué en modifiant le numéro de port répertorié dans cette commande. Les ports qui doivent être bloqués sont compris entre 5001 et 5021.

Remarque N’oubliez pas de modifier le numéro de port dans le nom de la règle (le commutateur -r) et dans le filtre (le commutateur -f).

Facultatif : accordez l’accès au mappeur de point final RPC pour des sous-réseaux spécifiques si l’accès est nécessaire

Si vous devez accorder à des sous-réseaux spécifiques l’accès aux ports RPC restreints, vous devez d’abord permettre à ces sous-réseaux d’accéder au mappeur de point final RPC que vous avez bloqué précédemment. Pour donner un accès de sous-réseau spécifique au mappeur de point final RPC, utilisez la commande suivante :

%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP 135 from %SUBNET% Rule" -f %SUBNET%/%MASK%=0:135:TCP -n PASS

Remarque Dans cette commande, les instructions suivantes s’appliquent :

  • « %IPSECTOOL % » représente la commande à utiliser. Cette commande est soit « ipsecpol.exe » ou « ipseccmd.exe ». La commande utilisée dépend du système d’exploitation que vous configurez.

  • « %SUBNET % » représente le sous-réseau IP distant auquel vous souhaitez donner accès, par exemple, 10.1.1.0.

  • « %MASK % » représente le masque de sous-réseau à utiliser, par exemple, 255.255.255.0.

    Par exemple, la commande suivante permet à tous les hôtes du sous-réseau 10.1.1.0/255.255.255.0 de se connecter au port TCP 135. Tous les autres hôtes verront leurs connexions refusées par la règle de blocage par défaut qui a été créée précédemment pour ce port.

    %IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP Port 135 from 10.1.1.0 Rule" -f 10.1.1.0/255.255.255.0=0:135:TCP -n PASS
    

Facultatif : accordez l’accès à la nouvelle plage de ports dynamiques RPC pour des sous-réseaux spécifiques si un accès est nécessaire

Chaque sous-réseau qui a déjà été autorisé à accéder au mappeur de point final RPC doit également avoir accès à tous les ports de la nouvelle plage de ports dynamiques RPC (5001-5021).

Si vous permettez aux sous-réseaux d’atteindre le mappeur de point final RPC, mais pas la plage de ports dynamiques, l’application peut cesser de répondre ou vous pouvez rencontrer d’autres problèmes.

La commande suivante donne un accès de sous-réseau spécifique à un port de la nouvelle plage de ports dynamiques RPC :

%IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP %PORT% from %SUBNET% Rule" -f %SUBNET%/%MASK%=0:%PORT%:TCP -n PASS

Remarque Dans cette commande, les instructions suivantes s’appliquent :

  • « %IPSECTOOL % » représente la commande à utiliser. Cette commande est soit « ipsecpol.exe » ou « ipseccmd.exe ». La commande utilisée dépend du système d’exploitation que vous configurez.

  • « %PORT % » représente le port de la plage de ports dynamique auquel donner accès.

  • « %SUBNET % » représente le sous-réseau IP distant auquel vous souhaitez donner accès, par exemple, 10.1.1.0.

  • « %MASK % » représente le masque de sous-réseau à utiliser, par exemple, 255.255.255.0.

    Par exemple, la commande suivante permet à tous les hôtes du sous-réseau 10.1.1.0/255.255.255.0 de se connecter au port TCP 5001. Tous les autres hôtes verront leurs connexions refusées par la règle de blocage par défaut qui a été créée précédemment pour ce port.

    %IPSECTOOL% -w REG -p "Block RPC Ports" -r "Allow Inbound TCP Port 5001 from 10.1.1.0 Rule" -f 10.1.1.0/255.255.255.0=0:5001:TCP -n PASS
    

Remarque : Cette commande doit être répétée pour chaque sous-réseau et port dans la nouvelle plage de ports dynamiques RPC.

Affecter la stratégie IPsec

Remarque Les commandes de cette section prennent effet immédiatement.

Après avoir créé toutes les règles de blocage et toutes les règles d’autorisation facultatives pour les ports RPC configurés, affectez la stratégie à l’aide de la commande suivante :

%IPSECTOOL% -w REG -p "Block RPC Ports" –x

Remarque Pour annuler immédiatement l’attribution de la stratégie, utilisez la commande suivante :

%IPSECTOOL% -w REG -p "Block RPC Ports" –y

Remarque Pour supprimer la stratégie du Registre, utilisez la commande suivante :

%IPSECTOOL% -w REG -p "Block RPC Ports" -o

Vous devez redémarrer l’hôte pour que les modifications prennent effet.

Notes

  • Les modifications de configuration RPC nécessitent un redémarrage.
  • Les modifications apportées à la stratégie IPSec prennent effet immédiatement et ne nécessitent pas de redémarrage.

Après le redémarrage de la station de travail ou du serveur, les interfaces RPC qui utilisent la séquence de protocole ncacn_ip_tcp et ne spécifient pas de port TCP spécifique à lier se verront attribuer un port à partir de cette plage par le runtime RPC au démarrage du serveur RPC.

Remarque : le serveur peut nécessiter plus de 20 ports TCP. Vous pouvez utiliser la commande rpcdump.exe pour compter le nombre de points de terminaison RPC liés à un port TCP et augmenter ce nombre si nécessaire. Pour plus d’informations sur la procédure d’obtention de l’outil d’image mémoire RPC, reportez-vous au site Web de Microsoft à l’adresse suivante (en anglais) :

http://www.microsoft.com/download/details.aspx?displaylang=en&familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd