适用于:Windows 7,Windows Server 2003,Windows Server 2008,Windows Server 2008 R2,Windows Vista
由于FTP的工作方式,在防火墙后面的服务器上使用文件传输协议(FTP)服务会产生一系列挑战。标准模式FTP客户端通过打开到TCP端口号21的“命令通道”连接来启动到服务器的会话。客户端通过向服务器发送PORT命令来请求文件传输。然后,服务器尝试在TCP端口号20上启动“数据通道”连接回客户端。客户端上运行的典型防火墙将来自服务器的此数据通道连接请求视为未经请求并丢弃数据包,从而导致文件传输到失败。Windows Vista和Windows Server 2008中具有高级安全性的Windows防火墙支持有状态FTP,允许它将端口20上的入站连接请求与来自客户端的先前出站PORT命令进行匹配。然而,
为避免此问题,FTP还支持“被动”操作模式,其中客户端启动数据通道连接。客户端不是使用PORT命令,而是在命令通道上发送PASV命令。服务器响应客户端应连接的TCP端口号以建立数据通道。默认情况下,服务器使用临时范围(1025到5000)中的可用端口。为了更好地保护服务器,您可以限制FTP服务使用的端口范围,然后创建一个防火墙规则,允许仅在允许的端口号上进行FTP通信。
本主题讨论如何:
-
将FTP服务配置为仅使用有限数量的端口进行被动模式FTP
-
配置入站防火墙规则以允许仅在允许的端口上进行入站FTP连接
以下过程显示在Internet Information Services(IIS)7.0版上配置FTP服务的步骤。如果您使用的是其他FTP服务,请参阅该产品的文档以了解相应的步骤。配置对SSL的支持超出了本主题的范围。有关更多信息,请参阅IIS文档。
将FTP服务配置为仅使用有限数量的端口进行被动模式FTP
-
在IIS 7.0管理器的“ 连接”窗格中,单击服务器的顶级节点。
-
在详细信息窗格中,双击“ FTP防火墙支持”。
-
输入您希望FTP服务使用的端口号范围。例如,
41000-41099
允许服务器同时支持100个被动模式数据连接。 -
输入数据连接到达的防火墙的外部IPv4地址。
-
在“ 操作”窗格中,单击“ 应用”以保存设置。
您还必须在FTP服务器上创建防火墙规则,以允许您在上一过程中配置的端口上的入站连接。虽然您可以创建一个按编号指定端口的规则,但更容易创建一个规则来打开FTP服务正在侦听的任何端口。您可以按照上一过程中的步骤限制FTP正在侦听的端口。
配置入站防火墙规则,以允许仅对FTP正在侦听的端口进行入站FTP连接
-
打开管理员命令提示符。单击开始,单击所有程序,单击附件,右键单击命令提示符,然后单击以管理员身份运行。
-
运行以下命令:
复制netsh advfirewall firewall add rule name=”FTP Service” action=allow service=ftpsvc protocol=TCP dir=in
-
最后,禁用有状态FTP过滤,以便防火墙不会阻止任何FTP流量。
复制netsh advfirewall set global StatefulFTP disable
解决办法:
禁用有状态 FTP 筛选,以使防火墙不会阻止任何 FTP 通信
dos窗口下执行:netsh advfirewall set global StatefulFTP disable