Freigeben über


Verweigern des Zugriffs auf Grundlage der Anmeldefehlerrate: <denyByFailure>-Element

Übersicht

Das <denyByFailure>-Element konfiguriert den FTP-Dienst dazu, den Zugriff auf den FTP-Dienst basierend auf der Anzahl von Authentifizierungsfehlern zu verweigern, die innerhalb eines bestimmten Zeitraums für einen FTP-Client auftreten. Wenn die Anzahl fehlgeschlagener Anmeldeversuche erreicht wurde, wird die FTP-Verbindung zwangsweise geschlossen, und die IP-Adresse des Clients wird für die im entryExpiration-Attribut festgelegte Dauer für den Zugriff auf den FTP-Dienst gesperrt. Das Verweigern des Zugriffs auf Grundlage der Fehlerrate kann nur für den Server aktiviert werden, nicht für einzelne Sites.

Hinweis

Wenn die IP-Adresse des Clients mit einem Zulassungseintrag für eine bestimmte IP-Adresse übereinstimmt, der im Feature „FTP-Einschränkungen für IP-Adressen und Domänen“ auf Serverebene festgelegt wurde, wird dem Client zusätzliches Vertrauen gewährt, und er kann die Einschränkungsüberprüfung für FTP-Anmeldeversuche umgehen.

Kompatibilität

Version Hinweise
IIS 10.0 Das <denyByFailure>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <denyByFailure>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <denyByFailure>-Element wurde in IIS 8.0 eingeführt.
IIS 7.5 N/V
IIS 7.0 N/V
IIS 6.0 N/V

Setup

Um das Verweigern des Zugriffs über die Authentifizierung auf Ihrem FTP-Server zu unterstützen, müssen Sie den Rollendienst „FTP-Dienst“ installieren.

Windows Server 2012

  1. Drücken Sie die Windows-Logo-Taste, und klicken Sie dann auf Server-Manager.

  2. Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.

  3. Im Assistenten zum Hinzufügen von Rollen und Features:

    • Klicken Sie auf der Seite Voraussetzungen auf Weiter.
    • Wählen Sie auf der Seite Installationstyp den Installationstyp aus, und klicken Sie dann auf Weiter.
    • Wählen Sie auf der Seite Serverauswahl den entsprechenden Server aus, und klicken Sie dann auf Weiter.
    • Stellen Sie auf der Seite Serverrollen sicher, dass Webserver (IIS) ausgewählt ist, und erweitern Sie diesen Eintrag.
    • Erweitern Sie FTP-Server, wählen Sie sowohl FTP-Dienst als auch FTP-Erweiterbarkeit aus, und klicken Sie dann auf Weiter.
    • Klicken Sie auf der Seite Features auf Weiter.
    • Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
    • Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows 8

  1. Öffnen Sie die Systemsteuerung von Windows.
  2. Öffnen Sie in der Windows-Systemsteuerung Programme und Features.
  3. Klicken Sie unter Programme und Funktionen auf Windows-Funktionen aktivieren oder deaktivieren.
  4. Erweitern Sie im Dialogfeld Windows-Features den Eintrag Internetinformationsdienste und dann FTP-Server.
  5. Wählen Sie unter FTP-Server die Optionen FTP-Dienst und FTP-Erweiterbarkeit aus, und klicken Sie dann auf OK.

Gewusst wie

Verweigern des Zugriffs auf den FTP-Server auf Grundlage der Anmeldefehlerrate

  1. Öffnen Sie Internetinformationsdienste-Manager (IIS):

    • Vorgehensweise unter Windows Server 2012 oder höher:

      • Klicken Sie auf der Taskleiste auf Server-Manager, wählen Sie Tools und dann Internetinformationsdienste-Manager (IIS) aus.
    • Vorgehensweise unter Windows 8 oder höher:

      • Halten Sie die Windows-Logo-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
      • Klicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS).
  2. Wählen Sie im Bereich Verbindungen den Server aus.

  3. Doppelklicken Sie im Bereich Start auf das Feature FTP-Anmeldeversuchsbeschränkungen.

    Screenshot of the Enable F T P Logon Attempt Restrictions, Maximum number of failed login attempts, and time period in seconds fields.

  4. Klicken Sie im Dialogfeld FTP-Anmeldeversuchsbeschränkungen auf Aktivieren, um die Beschränkungen zu aktivieren. Geben Sie dann die maximale Anzahl von Fehlern und den Zeitraum ein, um festzulegen, wann diese Fehler dazu führen, dass der Zugriff auf den FTP-Dienst verweigert wird.

  5. Klicken Sie auf Nur in Protokoll eintragen, um zu protokollieren, dass die Bedingung erfüllt wurde, Anmeldeversuche jedoch nicht zu blockieren.

  6. Klicken Sie im Bereich Aktionen auf Übernehmen.

Konfiguration

Das <denyByFailure>-Element wird auf Serverebene konfiguriert.

Attribute

Attribut Beschreibung
enabled Optionales boolesches Attribut.

Ermöglicht es dem FTP-Dienst, den Zugriff auf Grundlage der Anmeldefehlerrate zu verweigern.

Der Standardwert ist False.
maxFailure Optionales uint-Attribut.

Gibt die Anzahl von Fehlern im festgelegten Zeitraum an, die dazu führt, dass der Zugriff auf den FTP-Dienst verweigert wird.

Der Standardwert ist 4.
entryExpiration Optionales TimeSpan-Attribut.

Gibt den Zeitraum an, in dem eine festgelegte Anzahl von Fehlern dazu führt, dass der Zugriff auf den FTP-Dienst verweigert wird.

Der Standardwert ist 00:00:30.
loggingOnlyMode Optionales boolesches Attribut.

Gibt an, dass der Zugriff aufgrund der Fehlerrate nicht verweigert wird, sondern nur das Ereignis protokolliert wird.

Der Standardwert ist False.

Untergeordnete Elemente

Keine.

Konfigurationsbeispiel

Im folgenden Beispiel wird ein <denyByFailure>-Element konfiguriert.

<system.ftpServer>
   <security>
      <authentication>
         <denyByFailure enabled="true" maxFailure="5" entryExpiration="00:00:45" loggingOnlyMode="false" />
      </authentication>
   </security>
</system.ftpServer>

Beispielcode

In den folgenden Codebeispielen wird das Verweigern des Zugriffs auf den FTP-Server auf Grundlage der Anmeldefehlerrate konfiguriert.

AppCmd.exe

appcmd.exe set config  -section:system.ftpServer/security/authentication /denyByFailure.enabled:"True" /denyByFailure.maxFailure:"10" /denyByFailure.entryExpiration:"00:00:35" /denyByFailure.loggingOnlyMode:"False"  /commit:apphost

Hinweis

Sie müssen den commit-Parameter auf apphost festlegen, wenn Sie „AppCmd.exe“ verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen in den entsprechenden Location-Abschnitt der Datei „ApplicationHost.config“ committet.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {

    private static void Main() {
        
        using(ServerManager serverManager = new ServerManager()) { 
            Configuration config = serverManager.GetApplicationHostConfiguration();
            
            ConfigurationSection authenticationSection = config.GetSection("system.ftpServer/security/authentication");
            
            ConfigurationElement denyByFailureElement = authenticationSection.GetChildElement("denyByFailure");
            denyByFailureElement["enabled"] = true;
            denyByFailureElement["maxFailure"] = 10;
            denyByFailureElement["entryExpiration"] = TimeSpan.Parse("00:00:35");
            denyByFailureElement["loggingOnlyMode"] = false;
            
            serverManager.CommitChanges();
        }
    }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim authenticationSection As ConfigurationSection = config.GetSection ("system.ftpServer/security/authentication")
      Dim denyByFailureElement As ConfigurationElement = authenticationSection.GetChildElement("denyByFailure")
      denyByFailureElement("enabled") = true
      denyByFailureElement("maxFailure") = 10
      denyByFailureElement("entryExpiration") = TimeSpan.Parse("00:00:35")
      denyByFailureElement("loggingOnlyMode") = false
      serverManager.CommitChanges
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var authenticationSection = adminManager.GetAdminSection("system.ftpServer/security/authentication", "MACHINE/WEBROOT/APPHOST");
var denyByFailureElement = authenticationSection.ChildElements.Item("denyByFailure");
denyByFailureElement.Properties.Item("enabled").Value = true;
denyByFailureElement.Properties.Item("maxFailure").Value = 10;
denyByFailureElement.Properties.Item("entryExpiration").Value = "00:00:35";
denyByFailureElement.Properties.Item("loggingOnlyMode").Value = false;

adminManager.CommitChanges();

VBScript

Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set authenticationSection = adminManager.GetAdminSection("system.ftpServer/security/authentication", "MACHINE/WEBROOT/APPHOST")
Set denyByFailureElement = authenticationSection.ChildElements.Item("denyByFailure")
denyByFailureElement.Properties.Item("enabled").Value = true
denyByFailureElement.Properties.Item("maxFailure").Value = 10
denyByFailureElement.Properties.Item("entryExpiration").Value = "00:00:35"
denyByFailureElement.Properties.Item("loggingOnlyMode").Value = false

adminManager.CommitChanges()

PowerShell

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST'  -filter "system.ftpServer/security/authentication/denyByFailure" -name "enabled" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST'  -filter "system.ftpServer/security/authentication/denyByFailure" -name "maxFailure" -value 10
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST'  -filter "system.ftpServer/security/authentication/denyByFailure" -name "entryExpiration" -value "00:00:35"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST'  -filter "system.ftpServer/security/authentication/denyByFailure" -name "loggingOnlyMode" -value "False"