Compartir a través de


Compatibilidad con el firewall de FTP <firewallSupport>

Información general

El elemento <system.ftpServer/firewallSupport> se usa para configurar el intervalo de puertos que usará el servicio FTP para la actividad del canal de datos cuando se usa el comando PASV de FTP para negociar conexiones pasivas, que contiene la dirección IP y el puerto del servidor.

Cuando se negocian conexiones pasivas mediante el comando PASV de FTP, el servidor FTP envía una respuesta que contiene la dirección IP y el puerto del servidor. Al especificar los atributos lowDataChannelPort y highDataChannelPort, puede dirigir a los clientes de FTP para que se comuniquen con el firewall, lo que debe enrutar el tráfico de cliente al servidor FTP.

El intervalo válido para los puertos TCP/IP está comprendido entre 1025 y 65535. (Los puertos de 1 a 1024 están reservados para su uso por parte de los servicios del sistema). Puede especificar un intervalo de puertos especial de "0-0" para que el servidor FTP use el intervalo efímero de puertos TCP/IP de Windows. En las primeras versiones de Windows, el intervalo efímero de puertos TCP/IP se estableció para usar los puertos 1025 a 5000. A partir de Windows Vista y Windows Server 2008, el intervalo efímero de puertos TCP/IP se ha cambiado al intervalo comprendido entre 49152 y 65535. Para obtener más información sobre el intervalo efímero de puertos, consulte el artículo siguiente para ver el artículo en Microsoft Knowledge Base:

929851: El intervalo predeterminado de puertos dinámicos para TCP/IP ha cambiado en Windows Vista y en Windows Server 2008

Nota:

Puede utilizar <ftpServer/firewallSupport> para configurar la dirección IP externa por sitio para el firewall en cada sitio, esto le permite enrutar el tráfico del firewall para cada sitio mediante un firewall diferente.

Compatibilidad

Versión Notas
IIS 10.0 El elemento <firewallSupport> no se modificó en IIS 10.0.
IIS 8.5 El elemento <firewallSupport> no se modificó en IIS 8.5.
IIS 8.0 El elemento <firewallSupport> no se modificó en IIS 8.0.
IIS 7.5 El elemento <firewallSupport> del elemento <system.ftpServer> se incluye como una característica de IIS 7.5.
IIS 7.0 El elemento <firewallSupport> del elemento <system.ftpServer> se introdujo en FTP 7.0, que era una descarga independiente para IIS 7.0.
IIS 6,0 El elemento <firewallSupport> reemplaza a la propiedad de metabase MSFTPSVC/PassivePortRange de IIS 6.0.

Nota:

Los servicios FTP 7.0 y FTP 7.5 se enviaron fuera de banda para IIS 7.0, lo que requería descargar e instalar el servicio desde la siguiente dirección URL:

https://www.iis.net/expand/FTP

Con Windows 7 y Windows Server 2008 R2, el servicio FTP 7.5 se incluye como característica para IIS 7.5, por lo que la descarga del servicio FTP ya no es necesaria.

Configuración

Para admitir la publicación de FTP para el servidor web, debe instalar el servicio FTP. Para ello, siga estos pasos.

Windows Server 2012 o Windows Server 2012 R2

  1. En la barra de tareas, haga clic en Administrador del servidor.

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

  3. En el asistente para Agregar roles y características, haga clic en Siguiente. Seleccione el tipo de instalación y haga clic en Siguiente. Seleccione el servidor de destino y haga clic en Siguiente.

  4. En la página Roles de servidor, expanda Servidor web (IIS) y, después, seleccione Servidor FTP.

    Nota:

    Para admitir la autenticación ASP.Membership o la autenticación del Administrador de IIS para el servicio FTP, también deberá seleccionar Extensibilidad de FTP, además de Servicio FTP.
    Screenshot of F T P service and F T P Extensibility selected under F T P Server in the expanded Web Server (I I S) list. .

  5. Haga clic en Siguiente y, después, en la página Seleccionar características, vuelva a hacer clic en Siguiente.

  6. En la página Confirmar selecciones de instalación, haga clic en Instalar.

  7. En la página Resultados , haga clic en Cerrar.

Windows 8 o Windows 8.1

  1. En la pantalla Inicio, mueva el puntero hasta la esquina inferior izquierda, haga clic con el botón derecho en el botón Inicio y, a continuación, haga clic en Panel de control.

  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.

  3. Expanda Internet Information Services y, después, seleccione Servidor FTP.

    Nota:

    Para admitir la autenticación ASP.Membership o la autenticación del Administrador de IIS para el servicio FTP, también deberá seleccionar Extensibilidad de FTP.
    Screenshot of F T P Extensibility and F T P Service selected in a Windows 8 interface.

  4. Haga clic en OK.

  5. Haga clic en Cerrar.

Windows Server 2008 R2

  1. En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, luego, haga clic en Administrador del servidor.

  2. En el panel de jerarquía del Administrador del servidor, expanda Roles y, luego, haga clic en Servidor web (IIS).

  3. En el panel Servidor web (IIS), desplácese hasta la sección Servicios de rol y, luego, haga clic en Agregar servicios de rol.

  4. En la página Seleccionar servicios de rol del Asistente para agregar servicios de rol, expanda Servidor FTP.

  5. Seleccione Servicio FTP.

    Nota:

    Para admitir la autenticación ASP.Membership o la autenticación del Administrador de IIS para el servicio FTP, también deberá seleccionar Extensibilidad de FTP.
    Screenshot of F T P Service and F T P Extensibility selected under the expanded F T P server list.

  6. Haga clic en Next.

  7. En la página Confirmar selecciones de instalación, haz clic en Instalar.

  8. En la página Resultados , haga clic en Cerrar.

Windows 7

  1. En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.

  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.

  3. Expanda Internet Information Services y, luego, Servidor FTP.

  4. Seleccione Servicio FTP.

    Nota:

    Para admitir la autenticación ASP.Membership o la autenticación del Administrador de IIS para el servicio FTP, también deberá seleccionar Extensibilidad de FTP.
    Screenshot of F T P Extensibility and F T P Service selected in a Windows 7 interface.

  5. Haga clic en OK.

Windows Server 2008 o Windows Vista

  1. Descargue el paquete de instalación desde la siguiente dirección URL:

  2. Siga las instrucciones del siguiente tutorial para instalar el servicio FTP:

Procedimientos

Configuración del firewall global para el servicio FTP

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

    • Si usa Windows Server 2012 o Windows Server 2012 R2:

      • 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 Windows 8.1:

      • 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).
    • Si usa Windows Server 2008 o Windows Server 2008 R2:

      • En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, haga clic en el nombre del servidor.

  3. En el panel Inicio, haga doble clic en la característica Compatibilidad con el firewall de FTP.

  4. En el cuadro Intervalo de puertos del canal de datos, use una de las siguientes opciones para especificar un intervalo de puertos para las conexiones pasivas de canal de datos:

    • Use [puerto bajo]-[puerto alto] para un intervalo de puertos, donde cada puerto debe estar comprendido entre 1025 y 65535. Por ejemplo, 5000-6000.
    • Use "0-0" para configurar el servidor FTP para que use el intervalo efímero de puertos TCP/IP de Windows.
      Screenshot of setting the F T P Firewall Support Data Channel Port Range to a value of 0 dash 0.
  5. En el cuadro Dirección IP externa del firewall, escriba la dirección IPv4 del firewall del adaptador de red accesible desde Internet del firewall.

  6. En el panel Acciones, haga clic en Aplicar.

Para más información sobre cómo configurar las opciones de firewall para el servicio FTP, vea el tema siguiente en el sitio web IIS.net de Microsoft:

Configuración de los valores de firewall de FTP
https://www.iis.net/learn/publish/using-the-ftp-service/configuring-ftp-firewall-settings-in-iis-7

Configuración

El elemento <firewallSupport> se configura en el nivel global en ApplicationHost.config.

Atributos

Atributo Descripción
lowDataChannelPort Atributo int opcional.

Especifica el puerto más bajo para la actividad del canal de datos para las conexiones de datos pasivas.

El valor predeterminado es 0.
highDataChannelPort Atributo int opcional.

Especifica el puerto más bajo para la actividad del canal de datos para las conexiones de datos pasivas.

El valor predeterminado es 0.

Elementos secundarios

Ninguno.

Ejemplo de configuración

En el ejemplo siguiente se muestran varios valores de configuración en el elemento <system.ftpServer> global para un servidor. En concreto, la configuración de este ejemplo muestra cómo:

  • Habilite el almacenamiento en caché de credenciales de FTP y especifique un tiempo de espera de 10 minutos (600 segundos).

  • Configure el puerto bajo como 5000 y el puerto alto como 6000 para las comunicaciones del canal de datos.

  • Habilite el registro y especifique que los archivos de registro se conserven por sitio y que roten diariamente por hora UTC.

  • Especifique un proveedor FTP personalizado así como un parámetro personalizado para ese proveedor.

  • Especifique restricciones de dirección IP globales que permitan el acceso FTP desde el host local y denieguen el acceso al bloque de direcciones IP comprendido entre 169.254.0.0 y 169.254.255.255.

  • Configure el filtrado de solicitudes con las siguientes opciones:

    • Bloquear el acceso FTP al directorio virtual _vti_bin, que se usa con las Extensiones de servidor de FrontPage.
    • Bloquee varios tipos de archivo asociados a los ejecutables.
    • Especifique 100 MB como tamaño máximo de archivo.
  • Agregue una regla de autorización global que permita el acceso para el grupo de administradores.

  • Especifique que la sintaxis de nombre de dominio se puede usar para los nombres de host virtual FTP.

<system.ftpServer>
   <caching>
      <credentialsCache enabled="true" flushInterval="600" />
   </caching>
   <firewallSupport lowDataChannelPort="5000" highDataChannelPort="6000" />
   <log centralLogFileMode="Site">
      <centralLogFile period="Daily" localTimeRollover="false" enabled="true" />
   </log>
   <providerDefinitions>
      <add name="FtpXmlAuthentication"
         type="FtpXmlAuthentication, FtpXmlAuthentication, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73" />
      <activation>
         <providerData name="FtpXmlAuthentication">
            <add key="xmlFileName" value="C:\Inetpub\XmlSample\Users.xml" />
         </providerData>
      </activation>
   </providerDefinitions>
   <security>
      <ipSecurity enableReverseDns="false" allowUnlisted="true">
         <add ipAddress="169.254.0.0" subnetMask="255.255.0.0" allowed="false" />
         <add ipAddress="127.0.0.1" allowed="true" />
      </ipSecurity>
      <requestFiltering>
         <hiddenSegments>
            <add segment="_vti_bin" />
         </hiddenSegments>
         <fileExtensions allowUnlisted="true">
            <add fileExtension="exe" allowed="false" />
            <add fileExtension="cmd" allowed="false" />
            <add fileExtension="com" allowed="false" />
            <add fileExtension="bat" allowed="false" />
         </fileExtensions>
         <requestLimits maxAllowedContentLength="104857600" />
      </requestFiltering>
      <authorization>
         <add accessType="Allow" roles="administrators" permissions="Read, Write" />
      </authorization>
   </security>
   <serverRuntime>
      <hostNameSupport useDomainNameAsHostName="true" />
   </serverRuntime>
</system.ftpServer>

Código de ejemplo

En los ejemplos siguientes se configura el servicio FTP para usar el intervalo de puertos de 5000 a 6000 para la actividad del canal de datos cuando se usan conexiones pasivas.

AppCmd.exe

appcmd.exe set config -section:system.ftpServer/firewallSupport /lowDataChannelPort:"5000" /commit:apphost

appcmd.exe set config -section:system.ftpServer/firewallSupport /highDataChannelPort:"6000" /commit:apphost

Nota:

Debe asegurarse de establecer el parámetrocommit 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 logSection = config.GetSection("system.ftpServer/log");
         logSection["centralLogFileMode"] = @"Central";

         ConfigurationElement centralLogFileElement = logSection.GetChildElement("centralLogFile");
         centralLogFileElement["enabled"] = true;

         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 firewallSupportSection As ConfigurationSection = config.GetSection("system.ftpServer/firewallSupport")
      firewallSupportSection("lowDataChannelPort") = 5000
      firewallSupportSection("highDataChannelPort") = 6000

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

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

var firewallSupportSection = adminManager.GetAdminSection("system.ftpServer/firewallSupport", "MACHINE/WEBROOT/APPHOST");
firewallSupportSection.Properties.Item("lowDataChannelPort").Value = 5000;
firewallSupportSection.Properties.Item("highDataChannelPort").Value = 6000;

adminManager.CommitChanges();

VBScript

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

Set firewallSupportSection = adminManager.GetAdminSection("system.ftpServer/firewallSupport", "MACHINE/WEBROOT/APPHOST")
firewallSupportSection.Properties.Item("lowDataChannelPort").Value = 5000
firewallSupportSection.Properties.Item("highDataChannelPort").Value = 6000

adminManager.CommitChanges()