Procédure : Utiliser IPSec pour fournir une communication sécurisée entre deux serveurs

Dernière mise à jour le 31 août 2004

Sur cette page

Objectifs
S'applique à
Comment utiliser ce module
Résumé
Points à connaître
Créer un filtre IP
Créer des actions de filtre
Créer des règles
Exporter la stratégie IPSec vers l'ordinateur distant
Attribuer des stratégies
Vérifier le fonctionnement
Ressources supplémentaires

Objectifs

Ce module vous permet d'effectuer l'opération suivante :

  • configurer un canal de communication sécurisé entre deux ordinateurs Microsoft® Windows® 2000 Server à l'aide de IPSec.

Haut de page

S'applique à

Ce module s'applique aux produits et technologies suivants :

  • Windows 2000 Server (avec le Service Pack 3)

  • Moniteur réseau Microsoft

  • Microsoft .NET Framework version 1.0 (avec le Service Pack 2) et versions ultérieures

  • Microsoft Visual Studio® 1.0 .NET et versions ultérieures

  • Microsoft Visual C#® .NET

  • Microsoft SQL Server™ 2000 (avec le Service Pack 2) et versions ultérieures

Haut de page

Comment utiliser ce module

Pour tirer le meilleur parti possible de ce module :

  • Vous devez posséder deux ordinateurs équipés du système d'exploitation Windows 2000 Server et configurés de la façon suivante :

    • Adresses IP fixes.

    • L'exemple de base de données Northwind doit être installé sur l'ordinateur serveur de base de données SQL Server 2000.

  • Vous devez être familiarisé avec la programmation en Visual C# .NET.

  • Vous devez être familiarisé avec l'environnement de développement Visual Studio .NET.

  • Vous devez être familiarisé avec la configuration de Windows 2000 à l'aide des outils d'administration Windows.

  • Vous devez être familiarisé avec l'outil Moniteur réseau Microsoft.

  • Lisez le module 4 « Communications sécurisées ». Ce module fournit des informations d'ensemble sur les questions relatives aux canaux de communication sécurisés et une présentation du protocole IPSec.

Haut de page

Résumé

IPSec (Internet Protocol Security) est un mécanisme de couche de transport qui permet d'assurer la confidentialité et l'intégrité des communications TCP/IP . IPSec prend également en charge l'authentification par ordinateur. Ces fonctionnalités font de IPSec le canal de communication sécurisé idéal, transparent pour toutes les applications.

Ce module décrit comment configurer un canal de communication sécurisé entre deux ordinateurs à l'aide du protocole IPSec.

Haut de page

Points à connaître

Le protocole IPSec (Internet Protocol Security) peut être utilisé pour sécuriser les données envoyées entre deux ordinateurs, tels qu'un serveur d'applications et un serveur de base de données. Le protocole IPSec est entièrement transparent pour les applications dans la mesure où les services de cryptage, d'intégrité et d'authentification sont mis en œuvre au niveau du transport. Les applications continuent de communiquer normalement les unes avec les autres par l'intermédiaire des ports TCP et UDP.

IPSec vous permet d'effectuer les opérations suivantes :

  • Assurer la confidentialité des messages en cryptant toutes les données échangées entre deux ordinateurs.

  • Assurer l'intégrité des messages entre deux ordinateurs (sans crypter les données).

  • Fournir une authentification mutuelle entre deux ordinateurs. Vous pouvez, par exemple, faciliter la sécurisation d'un serveur de base de données en établissant une stratégie qui autorise uniquement les demandes émanant d'un ordinateur client particulier (un serveur Web ou un serveur d'applications, par exemple).

  • Limiter les ordinateurs qui peuvent communiquer entre eux. Vous pouvez également restreindre la communication à des protocoles IP et des ports TCP/UDP précis.

Ce module traite de la sécurisation du canal de communication entre un serveur d'applications et un serveur de base de données qui exécute SQL Server 2000. Le serveur d'applications utilise la bibliothèque de réseaux clients TCP/IP recommandée pour établir une connexion à SQL Server et le port TCP 1433 SQL Server par défaut. Cette configuration est illustrée dans la figure 1.

Figure 1 Comment configurer une solution

Ce module décrit l'utilisation d'une stratégie IPSec simple pour appliquer les éléments suivants :

  • Autoriser les communications avec SQL Server uniquement à partir du serveur d'applications à l'aide du protocole TCP via le port 1433.

  • Supprimer tous les autres paquets IP, y compris ICMP (ping).

  • Crypter l'ensemble des données échangées entre les deux ordinateurs pour garantir la confidentialité de ces informations.

Les avantages fournis par cette méthode sont les suivants :

  • La confidentialité de toutes les données échangées entre les deux ordinateurs est préservée.

  • La surface d'attaque sur SQL Server est considérablement réduite. Les seuls points d'attaque restants consistent à ouvrir une session de manière interactive sur le serveur de base de données, ou de prendre le contrôle du serveur d'applications et de tenter d'attaquer SQL Server par l'intermédiaire du port TCP 1433.

  • La stratégie IPSec est très simple à définir et à implémenter.

Cette stratégie présente cependant les inconvénients suivants :

  • SQL Server ne peut pas communiquer avec des contrôleurs de domaine. Par conséquent :

    • La stratégie de groupe ne peut pas être appliquée (le serveur de base de données doit être un serveur autonome).

    • L'authentification Windows entre les serveurs d'applications et de base de données nécessite des comptes locaux synchronisés (dotés d'un nom d'utilisateur et d'un mot de passe identiques) sur les deux ordinateurs.

    • Vous ne pouvez pas utiliser de méthodes d'application d'IPSec plus solides (Valeurs par défaut Windows 2000 / Kerberos).

  • SQL Server ne pourra pas communiquer avec d'autres ordinateurs, y compris des serveurs DNS.

  • La méthode présentée dans ce module fait appel à une authentification de clé pré-partagée, ce qui n'est pas recommandé pour les scénarios de production. Les systèmes de production doivent utiliser des certificats ou l'authentification de domaine de Windows 2000. Les stratégies IPSec qui ont recours à des secrets pré-partagés conviennent uniquement dans les environnements de développement ou de test.

  • Les deux ordinateurs doivent posséder des adresses IP statiques.

Remarques

  • Une stratégie IPSec est constituée d'un ensemble de filtres, d'actions de filtre et de règles.

  • Un filtre comprend :

    • une adresse IP source ou une plage d'adresses ;

    • une adresse IP de destination ou une plage d'adresses ;

    • un protocole IP, tel que TCP, UDP, ou « n'importe lequel » ;

    • des ports source et de destination (uniquement pour TCP ou UDP).

  • Les filtres peuvent également être en miroir sur deux ordinateurs. Un filtre en miroir applique la même règle sur l'ordinateur client et serveur (avec les adresses source et de destination inversées).

  • Une action de filtre indique les actions à entreprendre lorsqu'un filtre spécifique est invoqué. Il peut s'agir de l'une des actions suivantes :

    • Autoriser. Le trafic n'est pas sécurisé ; il est possible d'envoyer et de recevoir des données sans intervention.

    • Bloquer. Le trafic n'est pas autorisé.

    • Négocier la sécurité. Les points de terminaison doivent s'accorder puis utiliser une méthode sécurisée pour communiquer. S'ils ne peuvent s'entendre sur une méthode, la communication ne peut pas être établie. Lorsque la négociation échoue, vous pouvez indiquer si la communication non sécurisée peut être autorisée ou si toutes les communications doivent être bloquées.

  • Une règle associe un filtre à une action de filtre.

  • Une stratégie en miroir applique des règles à tous les paquets en utilisant l'inverse exact des adresses IP source et de destination indiquées. Une stratégie en miroir est créée dans ce module.

Haut de page

Créer un filtre IP

  • Pour créer un filtre IP sur l'ordinateur du serveur de base de données

    1. Ouvrez une session en tant qu'administrateur sur le serveur de base de données.

    2. Démarrez le composant logiciel enfichable MMC (Microsoft Management Console) Stratégie de sécurité locale à partir du groupe de programmes Outils d'administration.

    3. Dans le volet de gauche, cliquez avec le bouton droit sur Stratégies de sécurité IP sur l'ordinateur local et cliquez sur Gérer les listes de filtres IP et les actions de filtrage. Vous apercevrez deux listes de filtres déjà définies pour l'ensemble du trafic ICMP et IP.

    4. Cliquez sur Ajouter.

    5. Dans la boîte de dialogue Liste de filtres IP, tapez Port SQL dans le champ Nom.

    6. Cliquez sur Ajouter, puis sur Suivant pour éviter la boîte de dialogue d'accueil de l'Assistant Filtre IP.

    7. Dans la boîte de dialogue Source du trafic IP, sélectionnez Une adresse IP spécifique dans la liste déroulante Adresse source et entrez l'adresse IP de votre serveur d'applications.

    8. Cliquez sur Suivant.

    9. Dans la boîte de dialogue Destination du trafic IP, sélectionnez Une adresse IP spécifique dans la liste déroulante Adresse de destination et entrez l'adresse IP de votre ordinateur serveur de base de données.

    10. Cliquez sur Suivant.

    11. Dans la boîte de dialogue Type de protocole IP, sélectionnez TCP comme type de protocole et cliquez sur Suivant.

    12. Dans la boîte de dialogue Port de protocole IP, sélectionnez Depuis n'importe quel port, puis Vers ce port. Entrez 1433 comme numéro de port.

    13. Cliquez sur Suivant, puis sur Terminer pour fermer l'Assistant.

    14. Cliquez sur Fermer pour fermer la boîte de dialogue Liste de filtres IP.

Haut de page

Créer des actions de filtre

Cette procédure permet de créer deux actions de filtre. La première sert à bloquer toutes les communications à partir d'ordinateurs spécifiques, et la seconde sert à appliquer l'utilisation du cryptage entre les ordinateurs du serveur d'applications et du serveur de base de données.

  • Pour créer des actions de filtre

    1. Cliquez sur l'onglet Gérer des actions de filtre. Notez que différentes actions prédéfinies sont déjà présentes.

    2. Cliquez sur Ajouter pour créer une action de filtre. Lors des étapes suivantes, vous allez créer une action de blocage susceptible d'être utilisée pour bloquer toutes les communications issues des ordinateurs sélectionnés.

    3. Cliquez sur Suivant pour éviter la boîte de dialogue d'accueil de l'Assistant Action de filtre.

    4. Dans le champ Nom, tapez Bloquer et cliquez sur Suivant.

    5. Dans la boîte de dialogue Options générales d'action de filtrage, sélectionnez Bloquer et cliquez sur Suivant.

    6. Cliquez sur Terminer pour fermer l'Assistant.

    7. Cliquez sur Ajouter pour redémarrer l'Assistant Action de filtrage. Lors des prochaines étapes, vous allez créer une action de filtre destinée à imposer l'utilisation du cryptage entre les ordinateurs du serveur d'applications et du serveur de base de données.

    8. Cliquez sur Suivant pour éviter la boîte de dialogue d'accueil de l'Assistant Action de filtre.

    9. Dans le champ Nom, tapez Requiert une sécurité élevée et cliquez sur Suivant.

    10. Sélectionnez Négocier la sécurité et cliquez sur Suivant.

    11. Sélectionnez Ne pas communiquer avec des ordinateurs qui ne prennent pas en charge IPSec et cliquez sur Suivant.

    12. Sélectionnez Personnalisé et cliquez sur Paramètres.

    13. Vérifiez que la case à cocher Cryptage et intégrité des données (ESP) est activée.

    14. Sélectionnez SHA1 dans la liste déroulante Algorithme d'intégrité.

    15. Sélectionnez 3DES dans la liste déroulante Algorithme de cryptage.

    16. Activez les deux cases à cocher du groupe Paramètres de la clé de session pour générer une nouvelle clé respectivement tous les 100 000 Ko et toutes les 3 600 secondes.

    17. Cliquez sur OK pour fermer la boîte de dialogue Paramètres personnalisés de la méthode de sécurité et cliquez sur Suivant.

    18. Activez la case à cocher Modifier les propriétés et cliquez sur Terminer.

    19. Désactivez la case à cocher Accepter les communications non sécurisées mais toujours répondre en utilisant IPSec.

    20. Activez la case à cocher Session de clé principale PFS (Perfect Forward Secrecy) et cliquez sur OK.

    21. Cliquez sur Fermer pour fermer la boîte de dialogue Gérer les listes de filtres IP et les actions de filtrage.

Haut de page

Créer des règles

Cette procédure permet de créer deux règles qui serviront à associer le filtre généré lors de la première procédure, avec les deux actions de filtrage réalisées au cours de la procédure précédente.

  • Pour créer des règles

    1. Dans le volet de gauche, cliquez avec le bouton droit sur Stratégies de sécurité IP sur l'ordinateur local et cliquez sur Créer une stratégie de sécurité IP.

    2. Cliquez sur Suivant pour éviter la boîte de dialogue d'accueil de l'Assistant Stratégie de sécurité IP.

    3. Dans le champ Nom, tapez Sécuriser SQL et cliquez sur Suivant.

    4. Désactivez la case à cocher Activer la règle de réponse par défaut et cliquez sur Suivant.

    5. Conservez la case à cocher Modifier les propriétés activée et cliquez sur Terminer.

    6. Cliquez sur Ajouter pour démarrer l'Assistant Règle de sécurité.

    7. Cliquez sur Suivant pour éviter la boîte de dialogue d'accueil de l'Assistant Règle de sécurité.

    8. Cliquez sur Cette règle ne spécifie aucun tunnel, puis sur Suivant.

    9. Cliquez sur Toutes les connexions réseau, puis sur Suivant.

    10. Cliquez sur Utiliser cette chaîne pour protéger l'échange de clés (clé pré-partagée).

    11. Entrez MonSecret comme clé « secrète » dans la zone de texte.

      Remarque : cette clé doit être identique pour les deux ordinateurs afin qu'ils puissent communiquer correctement. Nous vous conseillons d'utiliser un nombre aléatoire long, mais dans le cadre de ce module, « MonSecret » suffira.

    12. Cliquez sur Suivant.

    13. Sélectionnez l'option Port SQL.

      Remarque : vous devez cliquer sur le cercle (case d'option) et non sur le texte de l'option à sélectionner.

    14. Cliquez sur Suivant.

    15. Sélectionnez l'option Requiert une sécurité élevée et cliquez sur Suivant.

    16. Cliquez sur Terminer pour revenir à la boîte de dialogue Propriétés de SQL sécurisé.

    17. Cliquez sur Ajouter pour redémarrer l'Assistant Règle de sécurité, puis sur Suivant pour éviter la boîte de dialogue d'accueil.

    18. Cliquez sur Cette règle ne spécifie aucun tunnel, puis sur Suivant.

    19. Cliquez sur Toutes les connexions réseau, puis sur Suivant.

    20. Dans la boîte de dialogue Méthode d'authentification, conservez l'option Valeurs par défaut de Windows 2000 (Protocole Kerberos V5) sélectionnée et cliquez sur Suivant.

      Remarque : cette règle définira l'action de filtrage Bloquer ; aucune authentification ne sera donc nécessaire.

    21. Dans la boîte de dialogue Liste de filtres IP, cliquez sur Tout le trafic IP, puis sur Suivant.

    22. Dans la boîte de dialogue Action de filtrage, sélectionnez l'option Bloquer et cliquez sur Suivant.

    23. Cliquez sur Terminer.

    24. Cliquez sur Fermer pour fermer la boîte de dialogue Propriétés de SQL sécurisé.

Haut de page

Exporter la stratégie IPSec vers l'ordinateur distant

La stratégie IPSec que vous avez créée sur le serveur de base de données doit maintenant être exportée et copiée sur l'ordinateur du serveur d'applications.

  • Pour exporter la stratégie IPSec vers l'ordinateur du serveur d'applications

    1. Dans le volet de gauche, cliquez avec le bouton droit sur le nœud Stratégies de sécurité IP sur l'ordinateur local, pointez sur Toutes les tâches et cliquez sur Exporter des stratégies.

    2. Dans le champ Nom, tapez SQL sécurisé et cliquez sur Enregistrer pour exporter le fichier vers le disque dur local.

    3. Copiez le fichier .ipsec sur le serveur d'applications ou rendez-le disponible en utilisant un partage de fichiers.

      Important : étant donné que le fichier de la stratégie exportée contient une clé pré-partagée en texte brut, il doit être correctement sécurisé. Il ne doit pas être stocké sur le disque dur de l'un des ordinateurs.

    4. Connectez-vous au serveur d'applications en tant qu'administrateur et démarrez le composant logiciel enfichable MMC Stratégie de sécurité locale.

    5. Cliquez avec le bouton droit sur Stratégies de sécurité IP sur l'ordinateur local, pointez sur Toutes les tâches et cliquez sur Importer des stratégies.

    6. Recherchez le fichier .ipsec précédemment exporté et cliquez sur Ouvrir pour importer la stratégie.

Haut de page

Attribuer des stratégies

Les stratégies IPSec doivent être attribuées avant d'être actives. Notez qu'une seule stratégie à la fois peut être active sur un même ordinateur.

  • Pour attribuer la stratégie SQL sécurisé sur les ordinateurs du serveur d'applications et du serveur de base de données

    1. Sur l'ordinateur du serveur d'applications, cliquez avec le bouton droit sur la stratégie SQL sécurisé qui vient d'être importée, puis cliquez sur Attribuer.

    2. Répétez l'étape précédente sur l'ordinateur du serveur de base de données. La stratégie en miroir est maintenant attribuée sur les deux ordinateurs.

      Les stratégies garantissent qu'un seul serveur d'applications peut communiquer avec le serveur de base de données. En outre, seules les connexions TCP utilisant le port 1433 sont autorisées, et l'ensemble du trafic entre les deux ordinateurs est crypté.

Haut de page

Vérifier le fonctionnement

Cette procédure utilise le Moniteur réseau pour vérifier que les données envoyées entre le serveur d'applications et le serveur de base de données sont cryptées.

  • Pour vérifier le bon fonctionnement du système

    1. Sur l'ordinateur du serveur d'applications, utilisez Visual Studio .NET pour créer une application de console C# nommée SQLIPSecClient.

    2. Copiez le code suivant vers class1.cs en remplaçant tout le code existant.

      Remarque : remplacez l'adresse IP figurant dans la chaîne de connexion par l'adresse IP de votre serveur de base de données.

      using System;
      using System.Data;
      using System.Data.SqlClient;
      
      namespace SQLIPSecClient
      {
        class Class1
        {
          [STAThread]
          static void Main(string[] args)
          {
            // Remplacer l'adresse IP dans la chaîne de connexion suivante par
            // l'adresse IP de votre serveur de base de données.
            SqlConnection conn = new SqlConnection(
              "server=192.168.12.11;database=NorthWind;Integrated Security=
              'SSPI'");
      
            SqlCommand cmd = new SqlCommand(
                                    "SELECT ProductID, ProductName FROM 
                                    Products");
            try
            {
              conn.Open();
              cmd.Connection = conn;
              SqlDataReader reader = cmd.ExecuteReader();
              while (reader.Read())
              {
                Console.WriteLine("{0} {1}", 
                           reader.GetInt32(0).ToString(), 
                           reader.GetString(1) );
              }
              reader.Close();
            }
            catch( Exception ex)
            {
            }
            finally
            {
              conn.Close();
            }
          }
        }
      }
      
    3. Dans le menu Générer, choisissez Générer la solution.

    4. Pour que l'authentification Windows s'effectue correctement entre les deux ordinateurs, vous devez dupliquer, sur l'ordinateur du serveur de base de données, le compte avec lequel vous êtes actuellement connecté de manière interactive à l'ordinateur de l'application. Assurez-vous que le nom d'utilisateur et le mot de passe correspondent.

      Vous devez également utiliser SQL Server Enterprise Manager pour créer une connexion de base de données destinée au compte nouvellement créé puis ajouter un utilisateur pour cette connexion à la base de données Northwind.

    5. Supprimez temporairement l'attribution de la stratégie IPSec SQL sécurisé sur les deux ordinateurs :

      1. Démarrez les paramètres de sécurité locale sur l'ordinateur du serveur d'applications.

      2. Cliquez sur Stratégies de sécurité IP sur l'ordinateur local.

      3. Dans le volet de droite, cliquez avec le bouton droit sur SQL sécurisé et cliquez sur Supprimer l'attribution.

      4. Répétez les étapes a à c sur l'ordinateur du serveur de base de données.

    6. Sur l'ordinateur du serveur de base de données, cliquez sur Moniteur réseau dans le groupe de programmes Outils d'administration.

      Remarque : une version limitée du Moniteur réseau est fournie dans Windows 2000 Server. La version complète est fournie dans Microsoft SMS.

      Si le Moniteur réseau n'est pas installé, accédez à Ajout/Suppression de programmes dans le Panneau de configuration, cliquez sur Ajouter ou supprimer des composants Windows, sélectionnez Outils de gestion et d'analyse dans la liste Composants Windows, cliquez sur Détails, puis sur Outils d'analyse réseau. Cliquez sur OK, puis sur Suivant pour installer la version limitée du Moniteur réseau. Le CD-ROM de Windows 2000 Server peut vous être demandé.

    7. Dans le menu Capturer, choisissez Filtrer pour créer un filtre destiné à afficher le trafic réseau TCP/IP entre le serveur d'applications et le serveur de base de données.

    8. Cliquez sur le bouton Démarrer la capture.

    9. Revenez à l'ordinateur du serveur d'applications et exécutez l'application console de test. Une liste de produits émanant de la base de données Northwind doit être affichée dans la fenêtre de la console.

    10. Revenez au serveur de base de données et cliquez sur le bouton Arrêter et afficher la capture dans le Moniteur réseau.

    11. Double-cliquez sur le premier cadre capturé pour afficher les données capturées.

    12. Faites défiler les cadres capturés. Vous devez voir l'instruction SELECT en texte brut, suivie de la liste des produits extraits de la base de données.

    13. Attribuez la stratégie IPSec SQL sécurisé sur les deux ordinateurs :

      1. Démarrez les paramètres de sécurité locale sur l'ordinateur du serveur d'applications.

      2. Cliquez sur Stratégies de sécurité IP sur l'ordinateur local.

      3. Dans le volet de droite, cliquez avec le bouton droit sur SQL sécurisé et cliquez sur Attribuer.

      4. Répétez les étapes a à c sur l'ordinateur du serveur de base de données.

    14. Dans le Moniteur réseau, fermez la fenêtre de capture.

    15. Cliquez sur le bouton Démarrer la capture et cliquez sur Non dans la zone de message Enregistrer le fichier.

    16. Revenez à l'ordinateur du serveur d'applications et exécutez de nouveau l'application console de test.

    17. Revenez au serveur de base de données et cliquez sur Arrêter et afficher la capture dans le Moniteur réseau.

    18. Vérifiez que les données sont désormais incompréhensibles (du fait de leur cryptage).

    19. Fermez le Moniteur réseau.

Haut de page

Ressources supplémentaires

Pour plus d'informations sur IPSec, consultez l'article « IP Security and Filtering » (en anglais) sur TechNet, à l'adresse :http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/winxppro/reskit/prcc_tcp_erqb.asp?frame=true.

Pour plus d'informations sur le Moniteur réseau, consultez la section « Network Monitor » (en anglais) du kit de développement de la plate-forme Microsoft sur MSDN, à l'adresse : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmon/netmon/network_monitor.asp.

Haut de page