Partager via


Refus par échec <denyByFailure>

Vue d’ensemble

L’élément <denyByFailure> configure le service FTP pour refuser l’accès au service FTP en fonction du nombre de fois où un client FTP ne parvient pas à s’authentifier dans un certain délai. Lorsque le nombre de tentatives de connexion ayant échoué a été atteint, la connexion FTP est fermée de force et l’adresse IP du client se voit interdire l’accès au service FTP pendant la durée du délai (comme défini par l’attribut entryExpiration). Le refus d’accès en fonction du taux d’échec ne peut être activée que pour le serveur, et non pour les sites individuels.

Remarque

Si l’adresse IP du client correspond à une entrée autorisée d’une adresse IP spécifique dans la fonctionnalité des restrictions liées au domaine et à l’adresse IP spécifiée au niveau du serveur, le client est traité avec une approbation supplémentaire et est autorisé à contourner la vérification de restriction des tentatives d’ouverture de session FTP.

Compatibilité

Version Notes
IIS 10.0 L’élément <denyByFailure> n’a pas été modifié dans IIS 10.0.
IIS 8.5 L’élément <denyByFailure> n’a pas été modifié dans IIS 8.5.
IIS 8.0 L’élément <denyByFailure> a été introduit dans IIS 8.0.
IIS 7.5 S/O
IIS 7.0 S/O
IIS 6.0 S/O

Programme d’installation

Pour prendre en charge le refus d’accès via l’authentification sur votre serveur FTP, vous devez installer le service de rôle de service FTP.

Windows Server 2012

  1. Appuyez sur la touche de logo Windows, puis cliquez sur Gestionnaire de serveur.

  2. Dans le Gestionnaire de serveur, cliquez sur Gérer, puis sur Ajouter des rôles et des fonctionnalités.

  3. Dans l’Assistant Ajouter des rôles et des fonctionnalités :

    • Sur la page Avant de commencer, cliquez sur Suivant.
    • Dans la page Type d’installation, sélectionnez le type d’installation, puis cliquez sur Suivant.
    • Dans la page Sélection du serveur, sélectionnez le serveur approprié, puis cliquez sur Suivant.
    • Dans la page Rôles de serveur, vérifiez que serveur web (IIS) est sélectionné, puis développez-le.
    • Développez le Serveur FTP, puis sélectionnez Service FTP et Extensibilité FTP, puis cliquez sur Suivant.
    • Dans la page Fonctionnalités, cliquez sur Suivant.
    • Dans la page Confirmer les sélections pour l'installation, cliquez sur Installer.
    • Dans la page Résultats , cliquez sur Fermer.

Windows 8

  1. Ouvrez le Panneau de configuration de Windows.
  2. Dans le Panneau de configuration Windows, ouvrez Programmes et fonctionnalités.
  3. Dans Programmes et fonctionnalités, cliquez sur Activer ou désactiver des fonctionnalités Windows.
  4. Dans la boîte de dialogue fonctionnalités Windows, développez Internet Information Services, puis développez FTP Server.
  5. Sous Serveur FTP, sélectionnez service FTP et extensibilité FTP, puis cliquez sur OK.

Procédure

Comment refuser l’accès au serveur FTP en fonction du taux d’échec d’ouverture de session

  1. Ouvrez le Gestionnaire des services Internet (IIS) :

    • Si vous utilisez Windows Server 2012 ou version ultérieure :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou version ultérieure :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, sélectionnez le serveur.

  3. Dans le volet Accueil, double-cliquez sur la fonctionnalité Restrictions des tentatives de connexion FTP.

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

  4. Dans la boîte de dialogue Restrictions des tentatives de connexion FTP, cliquez sur Activer pour activer les restrictions, puis entrez le nombre maximal d’échecs et le délai dans lequel ces échecs entraîneront le refus de l’accès au service FTP.

  5. Cliquez sur Écrire dans le journal uniquement pour indiquer que la condition a été remplie, mais pas pour bloquer les tentatives de connexion.

  6. Cliquez sur Appliquer dans le volet Actions.

Configuration

L’élément <denyByFailure> est configuré sur le serveur.

Attributs

Attribut Description
enabled Attribut booléen facultatif.

Permet au service FTP de refuser l’accès en fonction du taux d’échec.

La valeur par défaut est False.
maxFailure Attribut uint facultatif.

Spécifie le nombre d’échecs dans un laps de temps donné qui entraînera le refus de l’accès au service FTP.

La valeur par défaut est 4.
entryExpiration Attribut TimeSpan facultatif.

Spécifie la période pendant laquelle un nombre donné d’échecs entraînera un refus d’accès au service FTP.

La valeur par défaut est 00:00:30.
loggingOnlyMode Attribut booléen facultatif.

Spécifie que l’accès ne sera pas refusé en raison du taux d’échec, mais que l’événement sera journalisé.

La valeur par défaut est False.

Éléments enfants

Aucune.

Exemple Configuration

L’exemple suivant configure un élément <denyByFailure>.

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

Exemple de code

Les exemples de code suivants configurent le refus d’accès au serveur FTP en fonction du taux d’échec de connexion.

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

Remarque

Vous devez veiller à définir le paramètre commit sur apphost quand vous utilisez AppCmd.exe pour configurer ces paramètres. Cela valide les paramètres de configuration dans la section d’emplacement appropriée dans le fichier ApplicationHost.config.

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"