Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
par Nazim Lala
Introduction
Le module DIPR (Dynamic IP Restrictions) pour IIS 7.0 et versions ultérieures fournit une protection contre les attaques par déni de service et par force brute sur les serveurs web et les sites web. Pour fournir cette protection, le module bloque temporairement les adresses IP des clients HTTP qui effectuent un nombre inhabituellement élevé de requêtes simultanées ou qui effectuent un grand nombre de requêtes sur une petite période de temps.
Fonctionnalités
Le module Restrictions IP dynamiques inclut les fonctionnalités clés suivantes :
- Blocage des adresses IP en fonction du nombre de requêtes simultanées : si un client HTTP dépasse le nombre de requêtes simultanées autorisées, l’adresse IP du client est temporairement bloquée.
- Blocage de l’adresse IP en fonction du nombre de requêtes sur une période donnée : si un client HTTP dépasse le nombre de requêtes effectuées sur un intervalle de temps spécifié, l’adresse IP de ce client est temporairement bloquée.
- Autoriser la liste des adresses IP qui ne seront pas bloquées : vous pouvez ajouter une liste des adresses IP des clients que vous souhaitez exclure d’être bloqués par le module, quelle que soit la configuration.
- Différentes actions de refus : vous pouvez spécifier la réponse à retourner à un client HTTP pour lequel l’adresse IP est bloquée. Le module peut retourner les codes d’état 403 et 404 ou simplement arrêter la connexion HTTP et ne retourner aucune réponse.
- Prise en charge des serveurs web derrière un proxy : si votre serveur web se trouve derrière un proxy, vous pouvez configurer le module pour utiliser l’adresse IP du client à partir d’un en-tête X-Forwarded-For.
- IPv6 : le module fournit une prise en charge complète des adresses IPv6.
Installation du module DIPR
Vous pouvez essayer les méthodes suivantes pour installer les restrictions d’adresse IP dynamique :
Dans l’écran Sélectionner les services de rôle, accédez à La sécurité du serveur > web (IIS). > Cochez la case IP et Restrictions de domaine, puis cliquez sur Suivant pour continuer.
Prérequis
Vous devez disposer de l’un des systèmes d’exploitation suivants.
- Windows Server 2008
- Windows Vista SP1
- Windows Server 2008 R2
- Windows 7
Désinstaller la version bêta du module DIPR
Si vous utilisez la première version bêta du module DIPR, vous devez la désinstaller avant d’installer le candidat à la mise en production, ou une erreur se produit et l’installation échoue. Veillez à sauvegarder votre configuration avant de désinstaller la version bêta.
Si vous utilisez la version bêta 2 du module DIPR, vous pouvez effectuer une mise à niveau directement vers la version finale. Vos paramètres de configuration seront conservés.
Configuration des restrictions d’adresse IP dynamique
Les restrictions IP dynamiques peuvent être configurées à l’aide du Gestionnaire IIS, des API de configuration IIS ou via l’outil de ligne de commande appcmd.
Pour accéder aux paramètres de restriction IP dynamique dans le Gestionnaire IIS, procédez comme suit :
- Ouvrez le Gestionnaire des services Internet (IIS).
- Dans l’arborescence à gauche, sélectionnez le nœud serveur si vous souhaitez configurer des paramètres à l’échelle du serveur, ou sélectionnez un nœud de site pour configurer des paramètres spécifiques au site.
- Dans la vue Fonctionnalités, cliquez sur « Restrictions IP dynamiques »
- Dans la page principale « Restrictions IP dynamiques », vous pouvez activer et spécifier la configuration de l’une des fonctionnalités. Pour ajouter une adresse IP à la liste verte, vous pouvez cliquer sur le lien « Afficher les adresses autorisées » à droite :
- La sélection du lien « Afficher les adresses autorisées » ci-dessus affiche une fenêtre, comme indiqué ci-dessous, où vous pouvez voir toutes les adresses IP autorisées à contourner la validation de restriction IP dynamique. Vous pouvez ajouter d’autres adresses IP à la liste en sélectionnant le lien « Ajouter une entrée autorisée » à droite.
Refuser l’adresse IP en fonction du nombre de demandes simultanées
Lorsque vous utilisez cette option, le serveur autorise l’adresse IP de n’importe quel client à effectuer uniquement un nombre configurable de requêtes simultanées. Toutes les demandes supplémentaires qui dépassent la limite spécifiée sont refusées.
Un moyen simple de tester cette fonctionnalité consiste à définir le nombre maximal de requêtes simultanées sur 2 en utilisant l’interface utilisateur ou en exécutant la commande appcmd :
%WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/dynamicIpSecurity
/denyByConcurrentRequests.enabled:"True"
/denyByConcurrentRequests.maxConcurrentRequests:"2"
/commit:apphost
Dans le dossier racine de votre site web, créez un fichier test.aspx et collez le contenu suivant :
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(3000);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Dynamic IP Restrictions Test</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Hello World!</h1>
</div>
</form>
</body>
</html>
Cette ASP.NET page pendant 3 secondes avant de retourner une réponse. Enregistrez le fichier, puis ouvrez le navigateur web, demandez, puis http://localhost/test.aspx
appuyez en permanence sur F5 pour actualiser le navigateur. Cela entraîne l’exécution de plus de 2 requêtes simultanées dans le navigateur. Par conséquent, vous verrez l’erreur 403 – Forbidden error from server:
Important
Lors de la configuration du nombre de requêtes simultanées pour une application web réelle, testez soigneusement la limite que vous choisissez pour vous assurer que les clients HTTP valides ne sont pas bloqués. Cela est particulièrement important pour les applications Internet enrichies qui ont des pages web AJAX activées et servent du contenu multimédia.
Blocage des adresses IP en fonction du nombre de requêtes au fil du temps
Lorsque vous utilisez cette option, le serveur refuse les demandes de toute adresse IP du client HTTP qui rend plus que configurable le nombre de requêtes sur une période donnée. L’adresse IP reste bloquée jusqu’à ce que le nombre de demandes au cours d’une période tombe en dessous de la limite configurée.
Pour tester cette fonctionnalité, définissez le « Nombre maximal de demandes » sur 5 et « Période » sur 5 000 à l’aide du Gestionnaire IIS ou de l’exécution de la commande appcmd :
%WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/dynamicIpSecurity /denyByRequestRate.enabled:"True" /denyByRequestRate.maxRequests:"5" /denyByRequestRate.requestIntervalInMilliseconds:"5000" /commit:apphost
Ouvrez le navigateur web, faites une requête pour http://localhost/welcome.png
et appuyez sur F5 pour actualiser la page en continu. Cela génère plus de 5 requêtes sur 5 secondes. Ainsi, vous verrez que le serveur répond avec le code d’état 403 – Forbidden :
Si vous attendez un autre délai de 5 secondes lorsque toutes les requêtes précédentes ont été exécutées, puis effectuez une demande, la demande réussit.
Important
Lors de la configuration du nombre de requêtes autorisées au fil du temps pour une application web réelle, testez soigneusement les limites que vous choisissez pour vous assurer que les clients HTTP valides ne sont pas bloqués. Cela est particulièrement important pour les applications Internet enrichies qui ont des pages web AJAX activées et servent du contenu multimédia.
Actions de refus
Le module peut être configuré pour effectuer les actions suivantes lors du refus des demandes d’adresses IP :
- Envoyer la réponse 403 (Forbidden) au client ;
- Envoyer la réponse 404 (File not found) au client ;
- Abandonner la requête en fermant la connexion HTTP, sans envoyer de réponse au client.
Prise en charge des serveurs web derrière le proxy
Si vos serveurs web se trouvent derrière un pare-feu ou un ordinateur proxy, l’adresse IP du client pour toutes les requêtes peut apparaître comme adresse IP du serveur proxy ou du serveur de pare-feu. Cela empêcherait le module de restriction IP dynamique d’être utile. Toutefois, la plupart de ces serveurs ajoutent un en-tête X-Forwarded-For dans la requête HTTP qui contient l’adresse IP du client d’origine. La case à cocher en mode « Proxy » dans la page de configuration principale restrictions d’adresse IP dynamique recherche d’abord l’adresse IP du client dans cet en-tête.