Freigeben über


Verwenden dynamischer IP-Einschränkungen

von Nazim Lala

Einführung

Das DIPR-Modul (Dynamic IP Restrictions, Dynamische IP-Einschränkungen) für IIS 7.0 und höher bietet Schutz vor Denial-of-Service- und Brute-Force-Angriffen auf Webserver und Websites. Um diesen Schutz bereitzustellen, blockiert das Modul vorübergehend IP-Adressen von HTTP-Clients, die eine ungewöhnlich hohe Anzahl gleichzeitiger Anforderungen oder eine große Anzahl von Anforderungen über einen kurzen Zeitraum durchführen.

Features

Das DIPR-Modul umfasst die folgenden wichtigen Funktionen:

  • Blockieren von IP-Adressen basierend auf der Anzahl gleichzeitiger Anforderungen: Wenn ein HTTP-Client die Anzahl der zulässigen gleichzeitigen Anforderungen überschreitet, wird die IP-Adresse dieses Clients vorübergehend blockiert.
  • Blockieren von IP-Adressen basierend auf der Anzahl von Anforderungen innerhalb eines bestimmten Zeitintervalls: Wenn ein HTTP-Client die Anzahl an Anforderungen für ein festgelegtes Zeitintervall überschreitet, wird die IP-Adresse dieses Clients vorübergehend blockiert.
  • Zulassungsliste bestehend aus IP-Adressen, die nicht blockiert werden: Sie können eine Liste der IP-Adressen von Clients hinzufügen, die unabhängig von anderen Konfigurationen nicht vom Modul blockiert werden sollen.
  • Verschiedene Verweigerungsaktionen: Sie können angeben, welche Antwort an einen HTTP-Client zurückgegeben werden soll, für den die IP-Adresse blockiert ist. Das Modul kann die Statuscodes 403 und 404 zurückgeben oder die HTTP-Verbindung einfach beenden, ohne eine Antwort zurückzugeben.
  • Unterstützung für Webserver hinter einem Proxy: Wenn sich Ihr Webserver hinter einem Proxy befindet, können Sie das Modul so konfigurieren, dass die Client-IP-Adresse aus einem „X-Forwarded-For“-Header verwendet wird.
  • IPv6-: Das Modul bietet vollständige Unterstützung für IPv6-Adressen.

Installieren des DIPR-Moduls

Sie können die folgenden Methoden zum Installieren der Dynamischen IP-Einschränkungen ausprobieren:

Navigieren Sie im Bildschirm "Rollendienste auswählen" zu Webserversicherheit (IIS). > > Aktivieren Sie das Kontrollkästchen "IP- und Domäneneinschränkungen", und klicken Sie auf "Weiter", um fortzufahren.

Voraussetzungen

Sie müssen über eines der folgenden Betriebssysteme verfügen:

  • Windows Server 2008
  • Windows Vista SP1
  • Windows Server 2008 R2
  • Windows 7

Deinstallieren der Betaversion des DIPR-Moduls

Wenn Sie die erste Betaversion des DIPR-Moduls verwenden, müssen Sie sie deinstallieren, bevor Sie den Release Candidate installieren, oder ein Fehler tritt auf, und die Installation schlägt fehl. Stellen Sie sicher, dass Sie Ihre Konfiguration sichern, bevor Sie die Betaversion deinstallieren.

Wenn Sie den Beta 2-Release des DIPR-Moduls verwenden, können Sie direkt auf den finalen Release aktualisieren. Ihr Konfigurationseinstellungen bleiben dabei erhalten.

Konfigurieren dynamischer IP-Einschränkungen

Die dynamischen IP-Einschränkungen können entweder mithilfe von IIS-Manager, IIS-Konfigurations-APIs oder mithilfe des Befehlszeilentools appcmd konfiguriert werden.

Führen Sie die folgenden Schritte aus, um auf die Einstellungen der dynamischen IP-Einschränkungen im IIS-Manager zuzugreifen:

  1. Öffnen Sie den IIS-Manager.
  2. Wählen Sie in der linken Strukturansicht den Serverknoten aus, wenn Sie serverweite Einstellungen konfigurieren möchten. Wenn Sie standortspezifische Einstellungen konfigurieren möchten, wählen Sie stattdessen einen Websiteknoten aus.
  3. Klicken Sie in de rAnsicht „Funktionen“ auf „Dynamische IP-Einschränkungen“.
    Screenshot von I S Manager mit der Liste der Features im Hauptbereich, dynamische IP-Einschränkungen ist ausgewählt.
  4. Auf der Hauptseite „Dynamische IP-Einschränkungen“ können Sie die Konfiguration für sämtliche Funktionen aktivieren und angeben. Um der Zulassungsliste eine IP-Adresse hinzuzufügen, können Sie auf der rechten Seite auf den Link „Zulässige Adressen anzeigen“ klicken:
    Screenshot des I S-Managers mit Einschränkungen für dynamische I P im Hauptbereich. Im Bereich
  5. Wenn Sie den obigen Link „Zulässige Adressen anzeigen“ auswählen, wird ein Fenster wie weiter unten gezeigt angezeigt, in dem Ihnen alle IP-Adressen angezeigt werden, die die Überprüfung der dynamischen IP-Einschränkung umgehen dürfen. Sie können weitere IP-Adressen zu dieser Liste hinzufügen, indem Sie auf der rechten Seite den Link „Zulassungseintrag hinzufügen“ auswählen.
    Screenshot des I S-Managers mit dem Dialogfeld

Blockieren der IP-Adresse basierend auf der Anzahl gleichzeitiger Anforderungen

Bei Verwendung dieser Option gestattet der Server der IP-Adresse eines Clients nur eine konfigurierbare Anzahl gleichzeitiger Anforderungen. Alle zusätzlichen Anforderungen, die den angegebenen Grenzwert überschreiten, werden verweigert.

Eine einfache Möglichkeit zum Testen dieser Funktion ist das Festlegen der maximalen Anzahl gleichzeitiger Anforderungen auf 2 mithilfe der Benutzeroberfläche oder durch Ausführen des Befehls „appcmd“:

%WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/dynamicIpSecurity 
/denyByConcurrentRequests.enabled:"True" 
/denyByConcurrentRequests.maxConcurrentRequests:"2" 
/commit:apphost

Erstellen Sie im Stammverzeichnis Ihrer Website eine Datei namens „test.aspx“ und fügen Sie den folgenden Inhalt in die Datei ein:

<%@ 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>

Diese ASP.NET Seite wartet drei Sekunden, bevor eine Antwort zurückgegeben wird. Speichern Sie die Datei, öffnen Sie dann den Webbrowser, fordern Sie http://localhost/test.aspx an, und drücken Sie dann immer wieder F5, um den Browser zu aktualisieren. Dies führt dazu, dass der Browser mehr als zwei gleichzeitige Anforderungen durchführt, sodass vom Server der Fehler „403 – Verboten“ angezeigt wird:

Screenshot einer Serverfehlerseite. Die Fehlerzusammenfassung zeigt H T T P Fehler 403.7 Verboten.

Wichtig

Wenn Sie die Anzahl der gleichzeitigen Anforderungen für eine echte Webanwendung konfigurieren, sollten Sie den Grenzwert, den Sie auswählen, sorgfältig testen, um sicherzustellen, dass gültige HTTP-Clients nicht blockiert werden. Dies ist besonders wichtig für umfassende Internetanwendungen (Rich Internet Applications), die über AJAX-aktivierte Webseiten verfügen und Medieninhalte bereitstellen.

Blockieren der IP-Adresse basierend auf der Anzahl der Anforderungen in einem Zeitintervall

Wenn Sie diese Option verwenden, verweigert der Server Anforderungen von jeder IP-Adresse des HTTP-Clients, die innerhalb eines bestimmten Zeitintervalls mehr als die konfigurierbare Anzahl von Anforderungen tätigt. Die IP-Adresse bleibt gesperrt, bis die Anzahl der Anforderungen innerhalb eines Zeitraums unter den konfigurierten Grenzwert fällt.

Um diese Funktion zu testen, legen Sie die „Maximale Anzahl an Anforderungen“ auf 5 und den „Zeitraum“ auf 5.000 fest. Verwenden Sie dafür entweder IIS Manager, oder führen Sie den Befehl „appcmd“ aus:

%WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/dynamicIpSecurity /denyByRequestRate.enabled:"True" /denyByRequestRate.maxRequests:"5" /denyByRequestRate.requestIntervalInMilliseconds:"5000" /commit:apphost

Öffnen Sie den Webbrowser, fordern Sie http://localhost/welcome.png an, und drücken Sie dann F5, um die Seite immer wieder zu aktualisieren. Dadurch werden mehr als fünf Anforderungen über einen Zeitraum von fünf Sekunden generiert, sodass der Server mit dem Statuscode „403 – Verboten“ reagiert:

Screenshot einer Serverfehlerseite. Die Fehlerzusammenfassung zeigt H T T P Fehler 403.8 Verboten.

Wenn Sie weitere fünf Sekunden warten, nachdem alle vorherigen Anforderungen ausgeführt wurden, und dann eine Anforderung stellen, wird diese erfolgreich ausgeführt.

Wichtig

Wenn Sie die Anzahl der zulässigen Anforderungen über einen Zeitraum für eine echte Webanwendung konfigurieren, sollten Sie die Grenzwerte, die Sie auswählen, sorgfältig testen, um sicherzustellen, dass gültige HTTP-Clients nicht blockiert werden. Dies ist besonders wichtig für umfassende Internetanwendungen (Rich Internet Applications), die über AJAX-aktivierte Webseiten verfügen und Medieninhalte bereitstellen.

Ablehnen von Aktionen

Das Modul kann so konfiguriert werden, dass die folgenden Aktionen ausgeführt werden, wenn Anforderungen für IP-Adressen verweigert werden:

  • Senden der Antwort 403 („Verboten“) an den Client
  • Senden der Antwort 404 („Datei nicht gefunden“) an den Client
  • Beenden der Anforderung durch Schließen der HTTP-Verbindung ohne Sende einer Antwort an den Client

Unterstützung für Webserver hinter Proxy

Wenn sich Ihre Webserver hinter einer Firewall oder einem Proxycomputer befinden, wird die Client-IP für alle Anforderungen möglicherweise als IP des Proxy- oder Firewallservers angezeigt. Dies würde die Möglichkeit eines sinnvollen Einsatzes des DIPR-Moduls beeinträchtigen. Die meisten dieser Server fügen jedoch in der HTTP-Anforderung einen „X-Forwarded-For“-Header hinzu, der die IP-Adresse des ursprünglichen Clients enthält. Wenn Sie auf der Hauptkonfigurationsseite für dynamische IP-Einschränkungen das Kontrollkästchen für den Modus „Proxy“ aktivieren, wird zunächst dieser Header auf die Client-IP-Adresse überprüft.