方案:在 IIS 上生成 FTP 站点

作者:Keith Newman 和 Robert McMurray

文件传输协议 (FTP) 简单来说是一种协议的计算机系统之间传输文件。 IIS 8 包括易于配置的 FTP 服务器。

本文档介绍了如何在现有 IIS 8 Web 服务器上安装和配置 FTP 服务器。 前两个步骤是必需的。 虽然其他所有步骤均是可选的,但建议执行。

先决条件

若要充分利用本教程,你必须具有对运行以下操作系统之一的计算机的访问权限:

  • Windows Server® 2012
  • Windows® 8

步骤 1:在现有 IIS Web 服务器上安装 FTP

此步骤演示了如何在现有运行 Windows Server 2012 或 Windows 8 的 IIS Web 服务器上安装 FTP 服务。

在 Windows Server 2012 上安装 FTP

  1. 在“开始”屏幕上,单击“服务器管理器”磁贴,然后单击“是”
  2. 在“服务器管理器仪表板” 中,单击“添加角色和功能”
  3. 如果显示“添加角色和功能向导” 的“开始之前” 页,请单击“下一步”
  4. 在“选择安装类型” 页上,选择“基于角色或功能的安装” ,然后单击“下一步”
  5. 在“选择目标服务器” 页上,选择“从服务器池中选择服务器” ,从“服务器池” 列表中选择你的服务器,然后单击“下一步”
  6. 在“选择服务器角色” 页上,展开“Web 服务器(IIS)” 节点,然后展开“FTP 服务器” 节点。
  7. 选中“FTP 服务器” 复选框和“FTP 服务” 复选框,然后单击“下一步”
  8. 在“选择功能”页上,单击“下一步”
  9. “确认安装选择”页上,单击“安装”

在 Windows 8 上安装 FTP

  1. 在“开始”屏幕上,键入“控制面板”,然后单击搜索结果中的“控制面板”图标
  2. 单击“程序”,然后单击“打开或关闭 Windows 功能”
  3. 在“Windows 功能”对话框中,展开“Internet Information Services”节点
  4. 展开“FTP 服务器”节点
  5. 选中“FTP 服务器”复选框和“FTP 服务”复选框,然后单击“确定”

步骤 2:添加 FTP 站点

在你的 IIS Web 服务器上安装 FTP 服务后,便可以添加一个或多个 FTP 站点。 当你希望支持客户端使用文件传输协议 (FTP) 与站点进行文件传输时,可添加 FTP 站点。

注意

由于 FTP 设置包含在站点部分中,因此更改任何 FTP 设置还会强制网站应用程序回收。 如果要避免此副作用,请添加一个专为 FTP 而不是为 HTTP 和 FTP 配置的站点。

添加 FTP 站点

  1. 打开 IIS 管理器。

  2. 在“连接” 窗格中,展开服务器节点,然后单击“站点” 节点。

  3. 在“操作” 窗格中,单击“添加 FTP 站点” 以打开“添加 FTP 站点” 向导。

  4. 在“站点信息” 页上的“FTP 站点名称” 框中,为 FTP 站点输入唯一的友好名称。

  5. 在“物理路径”框中,键入物理路径或单击浏览按钮(“...”)来查找内容目录的物理路径

  6. 单击“下一步” 以打开“绑定和 SSL 设置” 页。

  7. 在“绑定” 下的“IP 地址” 列表中,如果你不希望 IP 地址保持为“全部未分配” ,请选择或输入 IP 地址。

  8. 在“端口” 框中,输入端口号。

  9. (可选)在“虚拟主机” 框中,如果要在单个 IP 地址上承载多个 FTP 站点,请输入主机名。 例如,键入 www.contoso.com

  10. 如果要手动启动站点,请清除“自动启动 FTP 站点” 框。

  11. 在“SSL” 下,从“SSL 证书” 列表中选择证书。 (可选)单击“视图” 以打开“证书” 对话框框,然后验证有关所选证书的信息。

  12. 选择以下任一选项:

    • 允许 SSL:允许 FTP 服务器支持与客户端之间的非 SSL 和 SSL 连接。
    • 要求 SSL:要求对 FTP 服务器与客户端之间的通信进行 SSL 加密。
  13. 单击“下一步” 以打开“身份验证和授权信息” 页。

  14. 在“身份验证” 下,选择要使用的身份验证方法:

    • 匿名:允许任何用户在仅提供用户名 anonymousftp的情况下访问内容。 (大多数(但不是所有)FTP 客户端都为你自动输入用户名。)
    • 基本:要求用户提供有效用户名和密码才能访问内容。 因为“基本”身份验证会在网络上传输未加密的密码,所以仅当你知道客户端与 FTP 服务器之间的连接是安全的(如使用安全套接字层 (SSL))时,才使用此身份验证方法。
  15. 在“授权” 下,从“允许访问” 列表中,选择以下选项之一:

    • 所有用户:所有用户(无论是匿名还是已标识)都可以访问内容。
    • 匿名用户:匿名用户可以访问内容。
    • 指定的角色或用户组:只有特定角色或用户组的成员才能访问内容。 在对应框中输入角色或用户组。
    • 指定的用户:只有指定的用户才能访问内容。 在对应框中输入用户名。
  16. 如果从“允许访问” 列表中选择了选项,请选择以下两个权限之一或两者:

    • 读取:允许授权用户从目录读取内容。
    • 写入:允许授权用户向目录写入内容。
  17. 单击“完成”。

步骤 3:配置 FTP 站点默认值

当你希望新的 FTP 站点使用不同的默认值时,可更改 FTP 站点默认值。

注意

更改默认值时,新值不会替代现有站点。 手动更改任何现有站点的值。

配置 FTP 站点默认值

  1. 打开 IIS 管理器。
  2. 在“连接”窗格中,单击服务器节点和“站点”节点
  3. 在“操作”窗格中,单击“FTP 站点默认值”
  4. 编辑设置,然后单击“确定”

下表列出了可在“FTP 站点默认值”对话框中进行配置的设置

设置类别 设置名称 说明
常规 允许 UTF-8 指定是否使用 UTF8 编码。 默认值为 true。
常规 自动启动 如果为 true,则 FTP 站点在创建时或在 FTP 服务启动时启动。 默认值为 true。
连接 控制通道超时 指定连接因不活动而超时的超时值(以秒为单位)。
连接 数据通道超时 指定数据通道因不活动而超时的超时值(以秒为单位)。
连接 禁用套接字池 指定套接字池是否用于通过 IP 地址而不是端口号或主机名区分的站点。
连接 最大连接数 指定同时连接到服务器的最大连接数。
连接 达到最大连接数时重置 指定当发送最大连接数响应时是否断开 FTP 会话。
连接 服务器侦听积压工作 (backlog) 指定可排队的未处理套接字的数目。
连接 未经身份验证的超时 指定建立新连接与身份验证成功之间的超时值(以秒为单位)。
凭据缓存 Enabled 指定是否为 FTP 服务启用凭据缓存。
凭据缓存 刷新间隔 指定存储在缓存中的凭据的缓存生存期(以秒为单位)。
文件处理 允许在上传时读取文件 指定将文件传输到服务器时,是否可以读取这些文件。
文件处理 允许重命名时进行替换 指定重命名文件时,这些文件是否可以替代其他文件。
文件处理 保留部分上传 指定是否保留已部分上传的文件。

步骤 4:配置防火墙支持

使用“FTP 防火墙支持”功能配置以下设置,使 FTP 服务器能够接受来自防火墙的被动数据连接:

  • 数据通道端口范围:指定被动数据连接的端口范围。 还必须在防火墙上打开相同范围的端口。 此选项只能在服务器级别配置,端口范围“0-0”意味着使用服务器的临时端口范围。 临时端口是 TCP/IP 根据预定义的范围分配的临时传输协议端口。
  • 防火墙的外部 IP 地址:指定防火墙的外部 IP 地址,以便客户端通过防火墙与 FTP 服务器通信时知道要使用哪一个 IP 地址。

配置防火墙支持

  1. 打开 IIS 管理器。

  2. 在“连接”窗格中,选择服务器节点。

  3. 在“功能视图”中,双击“FTP 防火墙支持”

  4. 在“数据通道端口范围”框中,键入端口号的范围(使用连字符分隔)。 例如,键入 5000-6000。 或键入 0-0 以使用在 Windows TCP/IP 设置中指定的默认端口范围

    注意

    请勿使用端口 0-1024,因为这些端口是保留的端口。

  5. 在“防火墙的外部 IP 地址”框中,键入防火墙的 IP 地址

  6. 在“操作”窗格中,单击“应用”

步骤 5:配置用户隔离

利用用户隔离功能,可将 FTP 服务器配置为隔离用户,从而防止用户访问相同 FTP 站点上其他用户的目录。 如果你选择不隔离用户,则他们将共享公共目录结构。

例如,在仅提供下载共享内容功能的站点或无需保护用户之间的数据的站点上,你可以选择不隔离用户。

如果你希望在你的站点上隔离用户,则可以选择以下隔离选项之一:

  1. 用户名目录:将用户会话隔离到与 FTP 用户帐户同名的物理或虚拟目录中。 用户只能看见自己的 FTP 根位置,因此受限制而无法向上浏览物理或虚拟目录树。 将忽略创建的所有全局虚拟目录。
  2. 用户名物理目录:将用户会话隔离到与 FTP 用户帐户同名的物理目录中。 用户只能看见自己的 FTP 根位置,因此受限制而无法向上浏览物理目录树。 创建的所有全局虚拟目录适用于所有用户。
  3. 在 Active Directory 中配置的 FTP 主目录:将用户会话隔离到在 Active Directory 帐户设置中为每个 FTP 用户配置的主目录中。

配置用户隔离

  1. 打开 IIS 管理器。

  2. 在“功能视图”中,双击“FTP 用户隔离”

  3. 如果不想隔离用户,则在“不隔离用户。启动用户位置”下,选择以下选项之一

    • FTP 根目录:指定所有 FTP 会话均在 FTP 站点的根目录中启动。 此选项将禁用所有用户隔离和起始文件夹逻辑。
    • 用户名目录:指定所有 FTP 会话均在与当前登录用户同名的物理或虚拟目录中启动(如果该文件夹存在);否则,FTP 会话将在 FTP 站点的根目录中启动。
  4. 如果想要隔离用户,则在“隔离用户。将用户限制在以下目录”下,选择以下选项之一

    • 用户名目录(禁用全局虚拟目录):将用户会话隔离到与 FTP 用户帐户同名的物理或虚拟目录中。
    • 用户名物理目录(启用全局虚拟目录):将用户会话隔离到与 FTP 用户帐户同名的物理目录中。
    • 在 Active Directory 中配置的 FTP 主目录:将用户会话隔离到在 Active Directory 帐户设置中为每个 FTP 用户配置的主目录中。
    • 自定义:此选项是一项高级功能,选择该选项,开发人员能够基于其唯一的业务需求创建提供主目录查找的自定义提供程序。
  5. 如果你在上一步中选择的是“在 Active Directory 中配置的 FTP 主目录”,则请单击“设置”按钮,然后在“设置凭据”对话框的“用户名”和“密码”框中键入对你的 Active Directory 服务器具有访问权限的用户名和密码。 在“确认密码”框中再次输入密码,然后单击“确定”

  6. 在“操作”窗格中,单击“应用”

步骤 6:配置目录浏览选项

目录浏览功能为你提供对用户浏览 FTP 目录时所显示内容的控制。

配置目录浏览选项

  1. 打开 IIS 管理器。

  2. 在“连接”窗格中,选择服务器级别或站点级别

  3. 在“功能视图”中,双击“FTP 目录浏览”

  4. 在“FTP 目录浏览”页面上的“目录列表样式”下,选择以下选项之一

    • MS-DOS:以与 MS-DOS 一致的方式显示目录内容。
    • UNIX:以与 UNIX 一致的方式显示目录内容。
  5. 在“目录列表选项”下,选择要在目录列表中显示的信息。 可以选择以下任一选项:

    1. 虚拟目录:显示虚拟目录。
    2. 可用字节:以字节为单位显示文件大小。
    3. 四位数年份:使用四位数而不是两位数来显示年份。
  6. 在“操作”窗格中,单击“应用”

步骤 7:配置登录尝试限制

利用此功能,可以配置在指定时间内、IP 地址被拒绝前允许的最大失败登录尝试次数。

配置登录尝试限制

  1. 打开 IIS 管理器。
  2. 在“连接”窗格中,选择服务器级别
  3. 在“功能视图”中,双击“FTP 登录尝试限制”
  4. 在“FTP 登录尝试限制”页面上,选中“启用 FTP 登录尝试限制”复选框
  5. 在“最大失败登录尝试次数”框中,键入一个正整数。 默认值为 4。
  6. 在“超时(秒)”框中,键入一个正整数。 默认为 30。
  7. 选择“基于失败的登录尝试次数拒绝 IP 地址”或“仅写入日志”。 如果选择“仅写入日志”,则 IIS 将不会限制客户端,即使超出最大失败尝试次数也是如此
  8. 在“操作”页面中,单击“应用”

步骤 8:配置请求筛选

使用“FTP 请求筛选”功能页可以为 FTP 站点定义请求筛选设置。 FTP 请求筛选是一种允许 Internet 服务提供商 (ISP) 和应用程序服务提供商对协议和内容行为进行限制的安全功能。

配置请求筛选

  1. 打开 IIS 管理器。
  2. 在“连接”窗格中,选择服务器级别或站点级别
  3. 在“功能视图”中,双击“FTP 请求筛选”图标
  4. 要更改常规请求筛选设置,请单击“操作”窗格中的“编辑功能设置”。 然后,根据需要编辑常规设置。
  5. 要基于文件扩展名添加筛选器,请选择“文件扩展名”选项卡。在“操作”窗格中,单击“允许文件扩展名”或“拒绝文件扩展名”。 在“文件扩展名”框中键入扩展名,然后单击“确定”
  6. 要基于 URL 段添加筛选器(例如文件夹名称),请选择“隐藏段”选项卡。在“操作”窗格中,单击“添加隐藏段”。 在“隐藏段”框中键入段,然后单击“确定”
  7. 要基于 URL 序列添加筛选器,请选择“拒绝 URL 序列”选项卡。在“操作”窗格中,单击“添加 URL 序列”。 在“URL 序列”框中键入序列,然后单击“确定”
  8. 要基于命令添加筛选器,请选择“命令”选项卡。在“操作”窗格中,单击“允许命令”或“拒绝命令”。 在“命令”框中键入命令,然后单击“确定”。 (警告:添加基于命令的筛选器的功能是一项高级功能。如果误用此功能,则可能拒绝对服务器上所有 FTP 客户端的访问。)

步骤 9:配置 FTP 日志记录

可以使用“FTP 日志记录”功能配置服务器或站点级别的日志记录功能以及配置日志记录设置

配置 FTP 日志记录

  1. 打开 IIS 管理器。

  2. 在“连接”窗格中,选择服务器级别或站点级别

  3. 在“功能视图”中,双击“FTP 日志记录”图标

  4. 在“每个日志文件”菜单中,选择“站点”或“服务器”

  5. 在“日志文件”下,单击“选择 W3C 字段”,然后选择要记录的信息

  6. 在“目录”下,键入要存储 FTP 日志文件的基础文件夹的路径,或者单击“浏览”以浏览到的基础文件夹

  7. 在“编码”下,选择“UTF8”(单字节和多字节字符)或“ANSI”(仅单字节字符)

  8. 在“日志文件滚动更新”下,从以下列表中选择希望 FTP 创建新日志文件的方式

    1. 计划:选择“每小时”、“每天”、“每周”或“每月”,按固定时间间隔创建新的日志文件
    2. 最大文件大小(字节):输入一个正整数以在文件大小超出该字节数时创建新的日志文件。
    3. 不创建新的日志文件
  9. 如果希望日志文件基于本地时区而不是协调世界时 (UTC) 进行命名和滚动更新,则请选中“使用本地时间进行文件命名和滚动更新”复选框

  10. 在“操作”窗格中,单击“应用”

步骤 10:配置 FTP 消息

使用“FTP 消息”功能可以修改当用户连接到你的 FTP 站点时所发送消息的设置

配置 FTP 消息

  1. 在“连接”窗格中,选择服务器级别或站点级别

  2. 在“功能视图”中,双击“FTP 消息”

  3. 在“FTP 消息”页面上的“消息行为”下,选择所需的 FTP 消息的行为方式。 可以选择以下任一选项:

    • 禁止显示默认横幅:指定是否显示 FTP 服务器的默认标识横幅。

    • 支持消息中的用户变量:指定是否在 FTP 消息中显示一组特定的用户变量。 支持以下用户变量:

      • %BytesReceived% - 当前会话中从服务器发送到客户端的字节数。
      • %BytesSent% - 当前会话中从客户端发送到服务器的字节数。
      • %SessionID% - 当前会话的唯一标识符。
      • %SiteName% - 托管当前会话的 FTP 站点的名称。
      • %UserName% - 当前登录用户的帐户名。
    • 显示本地请求的详细消息:指定当 FTP 客户端连接到服务器本身(本地主机)上的 FTP 服务器时是否显示详细的错误消息。

  4. 在“消息文本”下,在以下框中键入消息:

    • 横幅:指定当 FTP 客户端首次连接到 FTP 服务器时,FTP 服务器所显示的消息。
    • 欢迎使用:指定当 FTP 客户端已登录到 FTP 服务器时,FTP 服务器所显示的消息。
    • 退出:指定当 FTP 客户端从 FTP 服务器注销时,FTP 服务器所显示的消息。
    • 最大连接数:指定当客户端尝试连接,但由于 FTP 服务已达到所允许的最大客户端连接数而无法连接时,FTP 服务器所显示的消息。
  5. 在“操作”窗格中,单击“应用”

另请参阅