Compartir a través de


Denegar por error <denyByFailure>

Información general

El elemento <denyByFailure> configura el servicio FTP para denegar el acceso al servicio FTP en función del número de veces que un cliente FTP no se puede autenticar dentro de un período de tiempo especificado. Cuando se haya alcanzado el número de intentos de inicio de sesión con errores, la conexión FTP se cerrará de forma forzosa y la dirección IP del cliente quedará bloqueada para acceder al servicio FTP durante un período de tiempo (establecido por el atributo entryExpiration). La denegación del acceso por la tasa de errores solo se puede habilitar para el servidor, no para sitios individuales.

Nota:

Si la dirección IP del cliente coincide con una función Permitir entrada de una dirección IP específica en Restricciones de dominio y dirección IP para FTP especificada en el nivel de servidor, el cliente recibe un trato de confianza adicional y se le permite eludir la comprobación de restricción de intentos de inicio de sesión de FTP.

Compatibilidad

Versión Notas
IIS 10.0 El elemento <denyByFailure> no se modificó en IIS 10.0.
IIS 8.5 El elemento <denyByFailure> no se modificó en IIS 8.5.
IIS 8.0 El elemento <denyByFailure> se introdujo en IIS 8.0.
IIS 7.5 N/D
IIS 7.0 N/D
IIS 6,0 N/D

Configuración

Para admitir la denegación de acceso a través de la autenticación en el servidor FTP, debe instalar el servicio de rol Servicio FTP.

Windows Server 2012

  1. Presione la tecla del logotipo de Windows y, después, haga clic en Administrador del servidor.

  2. En el Administrador del servidor, haz clic en Administrar y, después, haz clic en Agregar roles y características.

  3. En el asistente para Agregar roles y características:

    • En la página Antes de comenzar, haga clic en Siguiente.
    • En la página Tipo de instalación, seleccione el tipo de instalación y, a continuación, haga clic en Siguiente.
    • En la página Selección del servidor, seleccione el servidor adecuado y, a continuación, haga clic en Siguiente.
    • En la página Roles de servidor, asegúrese de que Servidor web (IIS) está seleccionado y, después, expándalo.
    • Expanda Servidor FTP, seleccione Servicio FTP y Extensibilidad de FTP y, a continuación, haga clic en Siguiente.
    • En la página Características, haga clic en Siguiente.
    • En la página Confirmar selecciones de instalación, haz clic en Instalar.
    • En la página Resultados , haga clic en Cerrar.

Windows 8

  1. Abra el Panel de control de Windows.
  2. En el Panel de control de Windows, abra Programas y características.
  3. En Programas y características, haga clic en Activar o desactivar las características de Windows.
  4. En el cuadro de diálogo Características de Windows, expanda Internet Information Services y, a continuación, expanda Servidor FTP.
  5. En Servidor FTP, seleccione Servicio FTP y Extensibilidad de FTP y, a continuación, haga clic en Aceptar.

Procedimientos

Denegación del acceso al servidor FTP en función de la tasa de errores de inicio de sesión

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o versiones posteriores:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o versiones posteriores:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, seleccione el servidor.

  3. En el panel Inicio, haga doble clic en la característica Restricciones de intentos de inicio de sesión en FTP.

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

  4. En el cuadro de diálogo Restricciones de intentos de inicio de sesión en FTP, haga clic en Habilitar para habilitar las restricciones y, a continuación, escriba el número máximo de errores y el período de tiempo en el que esos errores pedirán acceso al servicio FTP para que se deniegue.

  5. Haga clic en Escribir en el registro solo para registrar que se ha cumplido la condición, pero no para bloquear los intentos de inicio de sesión.

  6. Haga clic en Aplicar en el panel Acciones.

Configuración

El elemento <denyByFailure> se configura en el nivel de servidor.

Atributos

Atributo Descripción
enabled Atributo Boolean opcional.

Permite que el servicio FTP deniegue el acceso en función de la tasa de errores.

El valor predeterminado es False.
maxFailure Atributo uint opcional.

Especifica el número de errores en el intervalo de tiempo específico que pedirá acceso al servicio FTP que se va a denegar.

El valor predeterminado es 4.
entryExpiration Atributo TimeSpan opcional.

Especifica el período de tiempo en el que un número determinado de errores provocará que se deniegue el acceso al servicio FTP.

El valor predeterminado es 00:00:30.
loggingOnlyMode Atributo Boolean opcional.

Especifica que no se denegará el acceso debido a la tasa de errores, pero que se registrará el evento.

El valor predeterminado es False.

Elementos secundarios

Ninguno.

Ejemplo de configuración

En el ejemplo siguiente se configura un elemento <denyByFailure>.

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

Código de ejemplo

Los ejemplos de código siguientes configuran la denegación de acceso al servidor FTP en función de la tasa de errores de inicio de sesión.

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

Nota:

Debe asegurarse de establecer el parámetro commit en apphost cuando use AppCmd.exe para configurar estos valores. Esto confirma los valores de configuración en la sección de ubicación adecuada del archivo 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"