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
Presione la tecla del logotipo de Windows y, después, haga clic en Administrador del servidor.
En el Administrador del servidor, haz clic en Administrar y, después, haz clic en Agregar roles y características.
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
- Abra el Panel de control de Windows.
- En el Panel de control de Windows, abra Programas y características.
- En Programas y características, haga clic en Activar o desactivar las características de Windows.
- En el cuadro de diálogo Características de Windows, expanda Internet Information Services y, a continuación, expanda Servidor FTP.
- 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
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).
En el panel Conexiones, seleccione el servidor.
En el panel Inicio, haga doble clic en la característica Restricciones de intentos de inicio de sesión en FTP.
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.
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.
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"