Centre de Recherche sur les Matériaux à Haute Température

- Home - News - Conseils - SécuritéMise à jour  -  Liens  -  Accès  -

Centre de Recherche sur les Matériaux à Haute Température

Liste de contrôle pour la sécurisation de Internet Information Services 5

Michael Howard
équipe de sécurité de Windows 2000
Les commentaires en bleu sont les miens quand  j'ai appliqué cette liste de contrôle

Ce document contient des recommandations et des conseils en matière de sécurisation d’un serveur Web fonctionnant sous Microsoft Windows 2000 et Internet Information Services (IIS) 5. Les paramètres sont erronés pour ce qui est de la sécurité par rapport à la fonctionnalité : il est par conséquent important que vous preniez connaissance des suggestions ci-après et que vous en teniez compte pour définir vos propres paramètres.

Remarque : ce document est une adaptation de l’ouvrage intitulé « Designing Secure Web-Based Applications for Microsoft Windows 2000 », Microsoft Press, ISBN : 0735609950.

Ceux d’entre vous qui connaissent la liste de contrôle d’Internet Information Server 4 pourront constater que la présente liste est plus courte. Il y a deux raisons à cela :

  • nombre des paramètres du système Windows 2000 peuvent se configurer à l’aide du modèle de sécurité fourni (hisecweb,inf), il n’y a donc aucun besoin de configurer les paramètres du Registre ;
  • certains des paramètres par défaut les moins sûrs de Microsoft Windows NT 4 et de Internet Information Server 4 sont désactivés par défaut dans Windows 2000 et IIS 5.

Sommaire

Considérations générales en matière de sécurité

Cette section traite de problèmes d’ordre général en matière de sécurité.

Consultation des stratégies de sécurité de votre société

Il est primordial d’adopter une stratégie en matière de sécurité. En effet, vous devez pouvoir apporter des réponses instantanées aux questions ci-dessous.

  • Comment réagir face à une intrusion ?
  • Où les fichiers de sauvegardes sont-ils conservés ?
  • Qui possède des autorisations d’accès au serveur ?

Vous trouverez des sources d’informations utiles en matière de stratégies de sécurité sur les sites suivants (en anglais) : SANS Institute ; Baseline Software, Inc. ; ainsi que dans l’ouvrage intitulé en anglais Practical Unix & Internet Security (O’Reilly Books, 1996).

Abonnement au service Microsoft Security Notification

Vous pouvez vous tenir informé en permanence des questions et des correctifs liés aux problèmes de sécurité de Microsoft en vous abonnant au service Microsoft Security Notification. Vous serez informé automatiquement de tout ce qui se fait en matière de sécurité par courrier électronique.

Vous devriez également placer un raccourci vers le programme « Microsoft Security Advisor Program » sur votre bureau. Pour cela, procédez comme cela est indiqué ci-après.

  1. Lancez Internet Explorer.
  2. Naviguez vers l’adresse http://www.microsoft.com/technet/security/notify.asp.
  3. Choisissez Ajouter aux Favoris dans le menu Favoris.
  4. Cochez la case Rendre disponible hors connexion.
  5. Cliquez sur Personnaliser.
  6. Cliquez sur Suivant dans l’Assistant Favoris hors connexion.
  7. Cliquez sur le bouton d’option Oui et précisez que vous souhaitez télécharger des pages dont les liens remontent à deux pages à partir de la présente.
  8. Cliquez sur Suivant.
  9. Cliquez sur le bouton d’option Créer une nouvelle planification, puis sur Suivant.
  10. Conservez les paramètres par défaut et cliquez sur Suivant.
  11. Cliquez sur Terminer.
  12. Cliquez sur OK.
  13. Choisissez Organiser les Favoris dans le menu Favoris.
  14. Sélectionnez le raccourci Sécurité Microsoft TechNet dans la boîte de dialogue Organiser les Favoris.
  15. Cliquez sur Propriétés.
  16. Cliquez sur l’onglet Télécharger de la boîte de dialogue Propriétés de Sécurité Microsoft TechNet.
  17. Désactivez la case Suivre les liens à l’extérieur du site Web de cette page.
  18. Cliquez sur OK puis sur Fermer.

Vous pouvez maintenant déplacer le raccourci Sécurité Microsoft TechNet de votre menu Favoris vers votre bureau. Une petite marque rouge apparaîtra sur l’icône lorsque des nouvelles en matière de sécurité surviendront.

Important : vous DEVEZ vous tenir informé des dernières nouvelles en matière de sécurité à mesure qu’elles arrivent. Nous n’insisterons jamais assez sur cela.

Considérations en matière de sécurité de Windows 2000

Cette section traite des questions de sécurité spécifiques de Windows 2000.

Consultation, mise à jour et déploiement du modèle de sécurité Hisecweb.inf fourni

Le CD fourni contient le modèle de sécurité Hisecweb.inf, (Ce modèle n'existe pas dans le CDrom ni dans  \WINNT\security\templates) il constitue une base qui peut s’appliquer à la plupart des sites Web sécurisés. Il permet de configurer la stratégie générale du système Windows 2000.

Voici comment utiliser ce modèle.

  1. Copiez le modèle dans le répertoire %windir%\security\templates.
  2. Ouvrez l’outil Modèles de sécurité et étudiez les paramètres. (Il faut créer cet outil avec la MMC)
  3. Ouvrez l’outil Configuration et analyse de la sécurité et chargez le modèle.
  4. Cliquez avec le bouton droit sur l’outil Configuration et analyse de la sécurité, puis choisissez l’option Analyser l’ordinateur maintenant dans le menu contextuel.
  5. Attendez la fin de l’analyse.
  6. Consultez les résultats, puis mettez à jour le modèle le cas échéant.
  7. Une fois que vous êtes satisfait du modèle, cliquez avec le bouton droit sur l’outil Configuration et analyse de la sécurité et choisissez l’option Configurer l’ordinateur maintenant dans le menu contextuel.

Créer l'outil Modèles de Sécurité

  • Bouton [Démarrer][Exécuter] taper MMC
  • Quand la console MMC est afficher faire [Console][Ajouter/supprimer un composant logiciel enfichable]
  • Faire Ajouter et rechercher Modèles de sécurité

Elle affiche directement les exemples contenus dans %windir%\security\templates

Configuration de la stratégie IPSec

Vous devriez envisager sérieusement de définir une stratégie de filtrage de paquets IPSec (Internet Protocol Security) pour chaque serveur Web. En effet, cette stratégie offre un degré supplémentaire de sécurité en cas de rupture de vos pare-feu. L’établissement de niveaux multiples de sécurité est généralement recommandé.

En règle générale, vous devriez bloquer tous les protocoles TCP/IP autres que ceux que vous souhaitez prendre en charge explicitement, ainsi que les ports que vous souhaitez ouvrir. Vous pouvez faire appel à l’outil d’administration IPSec ou à l’outil de ligne de commande IPSecPol pour déployer une stratégie IPSec.

Sécurisation du serveur Telnet

Si vous envisagez d’utiliser le serveur Telnet fourni avec Windows 2000, vous devez également penser à restreindre le nombre d’utilisateurs qui peuvent y accéder. Pour ce faire, procédez comme cela et indiqué ci-dessous.

  1. Ouvrez l’outil Utilisateurs et groupes locaux.
  2. Cliquez avec le bouton droit sur le nœud Groupes, puis choisissez Nouveau groupe dans le menu contextuel.
  3. Saisissez TelnetClients dans la zone Nom de groupe.
  4. Cliquez sur Ajouter, puis ajoutez les utilisateurs qui auront un accès Telnet à l’ordinateur.
  5. Cliquez sur Créer, puis sur Fermer

Si le groupe TelnetClients existe, le service Telnet ne permettra qu’aux utilisateurs définis dans le groupe d’accéder au serveur.

Considérations en matière de sécurité de IIS 5

Cette section traite des problèmes de sécurité spécifiques de Internet Information Services 5.

Définition des listes de contrôle d’accès (ACL) dans les répertoires virtuels

Même si cette procédure est liée spécifiquement à l’application, certaines règles d’or s’appliquent, telles que décrites dans le tableau F-1.

Type de fichier
Listes de contrôle d’accès
CGI (.exe, .dll, .cmd, .pl) Tout le monde (X)
Administrateurs (Contrôle total)
Système (Contrôle total)
Fichiers de script (.asp) Tout le monde (X)
Administrateurs (Contrôle total)
Système (Contrôle total)
Fichiers d’inclusion (.inc, .shtm, .shtml) Tout le monde (X)
Administrateurs (Contrôle total)
Système (Contrôle total)
Contenu statique (.txt, .gif, .jpg, .html) Tout le monde (R)
Administrateurs (Contrôle total)
Système (Contrôle total)

ACL par défaut conseillées par type de fichier.

Plutôt que de définir des ACL pour chaque fichier, il est plus pratique de créer des répertoires pour chaque type de fichier, de paramétrer l’ACL pour ce répertoire, puis de permettre à l’ACL d’hériter les fichiers. Voici un exemple de structure de répertoire :

  • c:\inetpub\wwwroot\myserver\static (.html)
  • c:\inetpub\wwwroot\myserver\include (.inc)
  • c:\inetpub\wwwroot\myserver\script (.asp)
  • c:\inetpub\wwwroot\myserver\executable (.dll)
  • c:\inetpub\wwwroot\myserver\images (.gif, .jpeg)

Veuillez noter que deux répertoires nécessitent une attention toute particulière :

  • c:\inetpub\ftproot (serveur FTP)
  • c:\inetpub\mailroot (serveur SMTP)

Les ACL de ces deux répertoires sont Tout le monde (Contrôle total) et doivent être remplacées par quelque chose de plus strict, en fonction de votre niveau de fonctionnalités. Il vous faudra placer le répertoire dans un volume différent du serveur IIS si vous souhaitez prendre en charge Tout le monde (écriture), ou faire appel aux quotas de disque de Windows 2000 pour limiter la quantité de données que l’on peut écrire dans ces répertoires.

Définition des ACL correspondant aux fichiers journaux IIS

Veillez à ce que les ACL correspondant aux fichiers journaux générés par IIS (%systemroot%\system32\LogFiles) soient les suivantes :

  • Administrateurs (Contrôle total)
  • Système (Contrôle total)
  • Tout le monde (RWC (lecture, écriture, modification))

Cela permet d’empêcher d’éventuels utilisateurs malveillants de supprimer les fichiers pour faire disparaître les traces de leur passage.

Activation de la journalisation

La journalisation est primordiale si vous souhaitez déterminer si votre serveur est attaqué. Pour cela, faites appel au format Journalisation étendue W3C en procédant comme cela est indiqué ci-dessous.

  1. Chargez l’outil Internet Information Services.
  2. Cliquez avec le bouton droit sur le site en question, puis sélectionnez Propriétés dans le menu contextuel.
  3. Cliquez sur l’onglet Site Web.
  4. Cochez la case Activer l'enregistrement dans le journal.
  5. Sélectionnez Format de fichier journal étendu du W3C dans la liste déroulante Format de journal actif.
  6. Cliquez sur Propriétés.
  7. Cliquez sur l’onglet Propriétés étendues, et définissez les propriétés suivantes :
  • Adresse IP du client
  • Nom d’utilisateur
  • Méthode
  • Ressource URI
  • état HTTP
  • état Win32
  • Agent utilisateur
  • Adresse IP du serveur
  • Port du serveur

Les deux dernières propriétés ne sont utiles que si vous hébergez plusieurs serveurs Web sur un seul ordinateur. La propriété état Win32 est utile en cas de débogage. Lorsque vous examinez le fichier journal, cherchez l’erreur 5, qui signifie refus d’accès. Vous trouverez la signification d’autres erreurs Win32 en saisissant net helpmsg err sur la ligne de commande ; err correspondant au numéro de l’erreur qui vous intéresse.

Définition des restrictions en matière d’adresse IP/adresse DNS.

Cette option n’est pas courante, mais elle existe, si vous souhaitez restreindre l’accès de vos sites Web à certains utilisateurs. Notez que si vous saisissez des noms DNS (Domain Name System), IIS doit faire une recherche DNS, ce qui peut prendre un certain temps.

Validation de la confiance en un contenu exécutable

Il est toujours difficile de savoir si l’on peut faire confiance à du contenu exécutable. Un test simple consiste à faire appel à l’outil DumpBin, qui vérifie si l’exécutable appelle certaines API. DumpBin figure dans de nombreux outils de développeurs Win32. Vous pouvez par exemple recourir à la syntaxe suivante pour vérifier si un fichier nommé MyISAPI.dll appelle RevertToSelf :

dumpbin /imports MyISAPI.dll | find "RevertToSelf"

Si aucun résultat n’apparaît à l’écran, c’est parce que MyISAPI.dll n’appelle pas RevertToSelf directement. Il se peut toutefois qu’il l’appelle par le biais de LoadLibrary, auquel cas vous pouvez utiliser une commande semblable pour vérifier également cela.

Mise à jour de certificats d’Autorité de certification racine sur le serveur IIS

Il s’agit d’une procédure en deux étapes : la première consiste à ajouter tout nouveau certificat d’Autorité de certification (CA) en qui vous avez confiance, en particulier tout nouveau certificat de CA racine que vous avez créé à l’aide de Microsoft Certificate Services 2.0. La seconde étape consiste à supprimer tous les certificats de CA racine en lesquels vous n’avez pas confiance. Notez que si vous ne connaissez pas le nom de la société qui a délivré le certificat racine vous ne devriez pas lui faire confiance !

Tous les certificats de CA racine qu’utilise IIS sont stockés dans la banque d’informations de votre ordinateur. Pour y accéder, procédez comme cela est indiqué ci-après.

  1. Ouvrez Microsoft Management Console (MMC).
  2. Choisissez Ajouter/Supprimer un composant logiciel enfichable dans le menu Console, puis cliquez sur Ajouter.
  3. Sélectionnez Certificats, puis cliquez sur Ajouter.
  4. Cliquez sur le bouton d’option Le compte de l’ordinateur.
  5. Cliquez sur Suivant.
  6. Sélectionnez l’ordinateur en question.
  7. Cliquez sur Terminer.
  8. Cliquez sur Fermer, puis sur OK.
  9. Développez le nœud Certificats.
  10. Développez Autorités de certification racines de confiance.
  11. Sélectionnez Certificats.

Une liste des certificats de CA racine valides s’affiche dans le volet droit. Vous pouvez en supprimer plusieurs si vous le souhaitez.

Désactivation ou suppression de tous les exemples d’application

Les exemples, comme leur nom l’indique, ne sont pas installés par défaut et ne devraient jamais l’être sur un serveur de production. Notez que certains exemples sont installés pour être seulement accessibles à partir de http://localhost, ou de 127.0.0.1 ; il faut toutefois les supprimer.

Le tableau F-2 répertorie les emplacements par défaut de certains de ces exemples.

Exemple
Répertoire virtuel
Emplacement
Exemples IIS \IISSamples c:\inetpub\iissamples
Documentation IIS \IISHelp c:\winnt\help\iishelp
Accès aux données \MSADC c:\program files\common files\system\msadc

Fichiers d’exemples livrés avec Internet Information Server 5.

Désactivation ou suppression des composants COM qui ne sont pas indispensables

Certains composants COM ne sont pas indispensables pour le fonctionnement d’une majorité d’applications et doivent par conséquent être supprimés. Vous devrez en particulier envisager de désactiver le composant objet de FileSystem, tout en sachant que cela aura pour effet de supprimer également l’objet dictionnaire. Notez également que certains programmes peuvent nécessiter des composants que vous désactivez. Par exemple, Site Server 3.0 utilise l’objet FileSystem. La commande suivante permet de désactiver ce dernier :

regsvr32 scrrun.dll /u

Suppression du répertoire virtuel IISADMPWD

Ce répertoire permet de redéfinir les mots de passe pour Windows NT et Windows 2000. Il est conçu principalement pour des scénarii intranet et n’est pas installé avec IIS5, mais il n’est pas non plus supprimé lors de la mise à jour d’un serveur IIS 4 vers la version 5. Vous devrez le supprimer si vous n’utilisez pas d’intranet ou si vous connectez le serveur au Web. Pour plus d’informations sur cette fonctionnalité, consultez l’article Q184619 de la Base de connaissances Microsoft.

Suppression des mappages de scripts non utilisés

IIS est configuré pour prendre en charge les extensions de nom de fichier courantes telles que .asp et .shtm. Ainsi, lorsqu’il reçoit une requête pour un fichier appartenant à l’un de ces types, l’appel est géré par une DLL. Si vous n’utilisez pas certaines de ces extensions ou fonctionnalités, vous devriez en supprimer les mappages en procédant comme suit :

  1. Ouvrez le Gestionnaire des services Internet ;
  2. Cliquez avec le bouton droit sur le serveur Web et choisissez Propriétés dans le menu contextuel ;
  3. Propriétés principales ;
  4. Sélectionnez Service WWW| Modifier | Répertoire de base | Configuration

Supprimez les références suivantes :

Si vous n’utilisez pas
Supprimez l’entrée suivante
La redéfinition du mot de passe pour le Web .htr
Connexion de base de données Internet (les 5 sites Web IIS 5 doivent s’appuyer sur la technologie ADO ou une technologie semblable) .idc
Inclusions côté serveur .stm, .shtm et .shtml
Impression Internet .printer
Index Server .htw, .ida et .idq

Extensions à supprimer de IIS 5.

Important : si vous n’avez pas absolument besoin de la fonctionnalité .htr, vous devez supprimer l’extension .htr.

Vérification des saisies <FORM> et des chaînes de requêtes dans votre code ASP

Nombre de sites font appel à la saisie utilisateur pour appeler d’autre code ou créer des instructions SQL directement. En d’autres termes, ils traitent l’entrée comme étant valable, bien formée et non malveillante. Cela est une erreur, car il existe de nombreuses attaques au cours desquelles la saisie utilisateur est considérée à tort comme étant valable et l’utilisateur peut en conséquence accéder en toute impunité au serveur ou provoquer des dégâts. Vous devez donc vérifier toutes les saisies <FORM> et les chaînes de requête avant de les transmettre à d’autres processus ou appels de méthodes qui pourraient recourir à des ressources extérieures telles que le système de fichiers ou une base de données.

Vous pouvez vérifier le texte à l’aide des expressions régulières de JScript V5 et VBScript V5. L’exemple de code suivant est destiné à éliminer tous les caractères non valables d’une chaîne (à savoir, les caractères autres que 0-9a-zA-Z ou _):

Set reg=New RegExp
reg.Pattern="\W+" ' Un ou plusieurs caractères
' AUTRES que 0-9a-zA-Z ou '_'
strUnTainted=reg.Replace(strTainted, "")

L’exemple suivant est destiné à éliminer tout le texte situé après un opérateur | :

Set reg=New RegExp
reg.Pattern="^(.+)\|(.+)" ' Tout caractère du début de
' la chaîne jusqu’à |.
strUnTainted=reg.Replace(strTainted, "$1")

Soyez prudent lorsque vous ouvrez ou créez des fichiers à l’aide du composant Scripting File System Object. Si le nom de fichier s’appuie sur la saisie utilisateur, ce dernier peut tenter d’ouvrir un port en série ou une imprimante. Le code JScript suivant éliminera les noms de fichiers non valables :

var strOut=strIn.replace(/(AUX|PRN|NUL|COM\d|LPT\d)+\s*$/i,"") ;

La syntaxe du modèle des moteurs de script de la version 5 est la même que celle de Perl 5.0. Pour plus d’informations, consultez la documentation relative au moteur de script V5 (en anglais). Le site MSDN (en anglais) propose des exemples.

Désactivation des chemins d’accès relatifs au répertoire parent

L’option de chemins d’accès relatifs au répertoire parent permet d’utiliser des guillemets doubles ".." dans les appels aux fonctions telles que MapPath. Cette option est activée par défaut et il vous faut la désactiver. Pour ce faire, procédez comme suit :

  1. Cliquez avec le bouton droit sur la racine du site Web, puis choisissez Propriétés dans le menu contextuel ;
  2. Cliquez sur l’onglet Répertoire de base ;
  3. Cliquez sur Configuration ;
  4. Cliquez sur l’onglet Options de l’application ;
  5. Désactivez la case Activer les chemins d’accès relatifs au répertoire parent.

Désactivation de l’adresse IP dans l’en-tête Contenu-emplacement

L’en-tête Contenu-emplacement permet d’afficher les adresses IP internes qui sont généralement masquées derrière un pare-feu NAT (Network Address Translation) ou un serveur proxy. 

Dernière mise à jour le lundi 11 décembre 2000

Page Up Updated 24 septembre, 2003 Hervé Chaudret
C.N.R.S.

-   Home   -  News   -   Conseils   -   Sécurité   -   Mise à jour   -   Liens   -   Accès   -

C.N.R.S.