Suporte ao Firewall FTP <firewallSupport>
Visão geral
O elemento <system.ftpServer/firewallSupport>
é usado para configurar o intervalo de portas que o serviço FTP usará para atividade de canal de dados quando você usar o comando FTP PASV para negociar conexões passivas, que contém o endereço IP e a porta do servidor.
Quando conexões passivas são negociadas usando o comando FTP PASV, o servidor FTP envia uma resposta que contém o endereço IP e a porta do servidor. Ao especificar os atributos lowDataChannelPort
e highDataChannelPort
, você pode direcionar os clientes FTP para se comunicarem com o firewall, o que deve rotear o tráfego do cliente para o servidor FTP.
O intervalo válido para portas TCP/IP é de 1025 a 65535. (As portas de 1 a 1024 são reservadas para uso pelos serviços do sistema.) Você pode inserir um intervalo de portas especial de "0-0" para configurar o servidor FTP para usar o intervalo de portas efêmeras TCP/IP do Windows. Nas primeiras versões do Windows, o intervalo de portas efêmeras TCP/IP foi definido para usar as portas 1025 a 5000. A partir do Windows Vista e do Windows Server 2008, o intervalo de portas efêmeras TCP/IP foi alterado para 49152 a 65535. Para obter mais informações sobre o intervalo de portas efêmeras, consulte o seguinte artigo na Base de Dados de Conhecimento Microsoft:
Observação
Você pode usar o <ftpServer/firewallSupport>
para configurar o endereço IP externo por site para o firewall; isso permite rotear o tráfego de firewall para cada site por meio de um firewall diferente.
Compatibilidade
Versão | Observações |
---|---|
IIS 10.0 | O elemento <firewallSupport> não foi modificado no IIS 10.0. |
IIS 8.5 | O elemento <firewallSupport> não foi modificado no IIS 8.5. |
IIS 8.0 | O elemento <firewallSupport> não foi modificado no IIS 8.0. |
IIS 7.5 | O elemento <firewallSupport> do elemento <system.ftpServer> é fornecido como um recurso do IIS 7.5. |
IIS 7.0 | O elemento <firewallSupport> do elemento <system.ftpServer> foi introduzido no FTP 7.0, que foi um download separado para o IIS 7.0. |
IIS 6,0 | O elemento <firewallSupport> substitui a propriedade de metabase MSFTPSVC/PassivePortRange do IIS 6.0. |
Observação
Os serviços FTP 7.0 e FTP 7.5 enviados fora de banda para o IIS 7.0, o que exigia o download e a instalação de módulos do seguinte URL:
Com o Windows 7 e o Windows Server 2008 R2, o serviço FTP 7.5 é fornecido como um recurso para o IIS 7.5, portanto, o download do serviço FTP não é mais necessário.
Instalação
Para dar suporte à publicação FTP para seu servidor Web, você deve instalar o serviço FTP. Para fazer isso, execute as etapas a seguir.
Windows Server 2012 R2 ou Windows Server 2012
Na barra de tarefas, clique em Gerenciador do Servidor.
No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
Na página Funções do Servidor, expanda Servidor Web (IIS) e selecione Servidor FTP.
Observação
Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você precisará selecionar a Extensibilidade de FTP além do Serviço FTP.
.
Clique em Próximo e, na página Selecionar recursos, clique em Próximo novamente.
Na página Confirmar seleções de instalação, clique em Instalar.
Na página Resultados , clique em Fechar.
Windows 8 ou Windows 8.1
Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.
Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
Expanda Serviços de Informações da Internet e, em seguida, selecione Servidor FTP.
Observação
Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você também precisará selecionar a Extensibilidade de FTP.
Clique em OK.
Clique em Fechar.
Windows Server 2008 R2
Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, expanda Servidor FTP.
Selecione Serviço FTP.
Observação
Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você também precisará selecionar a Extensibilidade de FTP.
Clique em Avançar.
Na página Confirmar Seleções de Instalação, clique em Instalar.
Na página Resultados , clique em Fechar.
Windows 7
Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
Expanda Serviços de Informações da Internet e, em seguida, Servidor FTP.
Selecione Serviço FTP.
Observação
Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você também precisará selecionar a Extensibilidade de FTP.
Clique em OK.
Windows Server 2008 ou Windows Vista
Baixe o pacote de instalação da seguinte URL:
Siga as instruções no seguinte passo a passo para instalar o serviço FTP:
Instruções
Como definir as configurações de firewall global para o serviço FTP
Abra o Gerenciador dos Serviços de Informações da Internet (IIS):
Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:
- Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows 8 ou Windows 8.1:
- Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
- Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows Vista ou Windows 7:
- Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
- Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
No painel Conexões, clique no nome do servidor.
No painel Página Inicial, clique duas vezes no recurso Suporte do Firewall FTP.
Na caixa Intervalo de Portas do Canal de Dados, use uma das seguintes opções para inserir um intervalo de portas para conexões passivas de canal de dados:
- Use [low port]-[high port] para um intervalo de portas, em que cada porta deve estar entre 1025 e 65535. Por exemplo, 5000-6000.
- Use "0-0" para configurar o servidor FTP para usar o intervalo de portas efêmeras TCP/IP do Windows.
Na caixa Endereço IP Externo do Firewall, digite o endereço IPv4 do adaptador de rede voltado para a Internet do firewall.
No painel Ações, clique em Aplicar.
Para obter informações adicionais sobre como definir as configurações de firewall para o serviço FTP, consulte o seguinte tópico no site IIS.net da Microsoft:
Configurações do Firewall FTP
https://www.iis.net/learn/publish/using-the-ftp-service/configuring-ftp-firewall-settings-in-iis-7
Configuração
O elemento <firewallSupport>
é configurado no nível global em ApplicationHost.config.
Atributos
Atributo | Descrição |
---|---|
lowDataChannelPort |
Atributo int opcional. Especifica a porta mais baixa para a atividade do canal de dados para conexões de dados passivas. O valor padrão é 0 . |
highDataChannelPort |
Atributo int opcional. Especifica a porta mais baixa para a atividade do canal de dados para conexões de dados passivas. O valor padrão é 0 . |
Elementos filho
Nenhum.
Exemplo de configuração
O exemplo a seguir ilustra várias configurações no elemento <system.ftpServer>
global para um servidor. Mais especificamente, as configurações neste exemplo demonstram como:
Habilite o cache de credenciais FTP e especifique um tempo limite de 10 minutos (600 segundos).
Configure a porta baixa como 5000 e a porta alta como 6000 para comunicações de canal de dados.
Habilite o registro em log e especifique que os arquivos de log serão mantidos por site e que os arquivos de log serão girados diariamente por hora UTC.
Especifique um provedor FTP personalizado e especifique um parâmetro personalizado para esse provedor.
Especifique restrições de IP globais que permitem o acesso FTP do host local e negam acesso ao bloco 169.254.0.0 a 169.254.255.255 de endereços IP.
Configure a filtragem de solicitação com as seguintes opções:
- Bloqueie o acesso FTP ao diretório virtual _vti_bin, que é usado com as Extensões de Servidor do FrontPage.
- Bloqueie vários tipos de arquivo associados a executáveis.
- Especifique 100 MB como o tamanho máximo do arquivo.
Adicione uma regra de autorização global que permite o acesso para o grupo de administradores.
Especifique que a sintaxe de nome de domínio pode ser usada para nomes 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>
Exemplo de código
Os exemplos a seguir configuram o serviço FTP para usar o intervalo de portas de 5000 a 6000 para atividade de canal de dados quando conexões passivas são usadas.
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
Observação
Defina o parâmetro commit para apphost
quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo 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()