当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

作者:精品下载站 日期:2024-12-14 20:01:25 浏览:17 分类:玩电脑

在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器


FTP 协议是最古老的协议之一(已有 40 多年的历史),但在需要简单文件传输协议的地方仍然广泛使用。可以在任何版本的 Microsoft 操作系统上安装 FTP 服务器。 ftp服务的最后一次深度现代化是在Windows 7/Server 2008 R2中进行的(实际上服务代码几乎是从头开始编写的)。服务的安全性显着提高,并出现了许多新功能。特别是,Windows 上的 FTP 服务器允许您配置FTP 用户隔离。它允许限制许多用户对单个 FTP 服务器上自己的文件夹的访问。

由于隔离,用户只能使用自己的文件夹,而无法进入 FTP 目录树(用户的顶级 ftp 级别目录显示为 FTP 服务器的根目录)。这样就可以防止其他用户访问FTP服务器上的数据。当需要为不同用户提供对单个文件存储的单独访问时,ISP/托管提供商广泛使用 FTP 用户隔离。

与以前的 Windows 版本一样,Windows Server 2016/2012 R2 中的 FTP 服务(不要与 sFTP 和 TFTP 混淆)基于并深度集成到 IIS 服务中,并具有单一的管理界面。

在本文中,我们将展示如何在 Windows Server 2016/2012 R2 上安装基于 IIS 的 FTP 服务器并配置 FTP 用户隔离(本手册也适用于 Windows 10 和 8.1)。

如何在Windows Server 2016/2012 R2上安装FTP服务器角色?

您可以使用服务器管理器控制台安装 FTP 服务,方法是选中网络服务器 (IIS) -> FTP 服务器部分中的FTP 服务FTP 扩展性选项。

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

您还可以使用单个 PowerShell 命令安装 FTP 服务器角色:

Install-WindowsFeature Web-FTP-Server

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

要安装FTP服务器管理控制台,请运行以下命令:

Install-WindowsFeature -Name "Web-Mgmt-Console"

创建FTP站点、管理FTP用户权限

启动服务器管理器并打开 IIS 管理控制台(Internet 信息服务管理器)。

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

创建新的 FTP 站点(站点 -> 添加 FTP 站点)。

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

FTP 站点的名称:MyTestSite

FTP站点的根目录:C:\inetpub tproot

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

为了保护通过网络传输的FTP数据,可以为FTP配置FTPS/SSL(在这种情况下,ftp用户在会话期间发送的所有数据和密码/帐户都将被加密),但在我们的演示中这不是必需的。所有其他设置均保留默认值。

您可以使用 PowerShell 模块WebAdministration 管理您的 FTP 站点。例如,要创建一个新的 FTP 站点,只需运行以下命令:

Import-Module WebAdministration
# Set the FTP site name
$FTPSiteName = 'CORP_FTP'
#FTP folder
$FTPRoot = 'D:\www\FTPRoot'
#FTP port
$FTPPort = 21
New-WebFtpSite -Name $FTPSiteName -PhysicalPath $FTPRoot -Port $FTPPort

选择一个新的 FTP 站点并在 FTP 身份验证部分中禁用匿名身份验证基本身份验证必须启用

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

Windows Server 2016/2012 R2 上的 FTP 服务可以使用两种帐户类型:域帐户类型和本地帐户类型。根据帐户类型的不同,FTP 目录结构和用户隔离设置存在一些差异。为了更容易描述,我们将使用本地 Windows 帐户。

创建一些 FTP 用户,假设是 ftp_user1ftp_user2ftp_user3。还要创建一个包含这些用户的组ftp_users。您可以在计算机管理控制台的本地用户和组部分创建本地用户。

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

您还可以从命令提示符(或使用 PowerShell)创建本地用户和组。创建本地组:

net localgroup ftp_users /add

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

创建一个新的本地用户:

net user ftp_user1 /add *

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

将用户添加到组:

net localgroup ftp_users ftp_user1 /add

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

以同样的方式创建其他两个用户。

为 ftp_users 组分配目录 C:\inetpub tproot 的读写权限。

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

在文件夹 C:\inetpub tproot 中创建一个名为 LocalUser 的目录(名称必须相同,这很重要!!!)。然后在文件夹 C:\inetpub tproot\LocalUser 下创建三个名为 ftp_user1、ftp_user2、ftp_user3 的目录。

注意根据帐户类型,您必须创建以下目录结构(在 %FtpRoot%\ 下,我们指的是 FTP 站点的根目录;在我们的示例中为 C:\inetpub tproot\):

Account TypeSyntax of Home Directory NamingAnonymous users%FtpRoot%\LocalUser\PublicLocal Windows account%FtpRoot%\LocalUser\%UserName%Domain Windows account%FtpRoot%\%UserDomain%\%UserName%Special IIS Manager or ASP.NET accounts%FtpRoot%\LocalUser\%UserName%

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

返回 IIS 控制台并在站点的 FTP 授权规则 部分创建新规则 (添加允许规则)。指定ftp_users组必须具有读写权限。

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

如何在Windows Server 2016/2012 R2上配置FTP用户隔离?

让我们开始配置 FTP 用户隔离。 FTP 用户的隔离是在 FTP 站点级别配置的,而不是在整个服务器上配置的。 FTP 用户隔离允许您为每个用户组织 ftp-home 文件夹。

在 FTP 站点的设置中打开FTP 用户隔离

本节包含多项设置。其中前两个不建议用户隔离:

  1. FTP根目录(用户的FTP会话在FTP站点的根目录中启动);

  2. 用户名目录(用户从带有用户名的物理/虚拟目录开始。如果该目录丢失,会话将在站点的根 FTP 目录中启动)。

接下来的三个选项是不同的用户隔离模式:

  • 用户名目录(禁用全局虚拟目录)建议将用户的ftp会话隔离在与ftp用户同名的物理/虚拟目录中。用户只能看到他们自己的目录(这是他们的 ftp 根目录)并且不能超越它(到 FTP 树的上层目录)。任何全局虚拟目录都会被忽略;

  • 用户名物理目录(启用全局虚拟目录)表示用户的ftp会话被隔离在与ftp用户帐户名称相同的物理目录中。用户不能访问其目录之上。但是,所有创建的全局虚拟目录都可供用户使用;

  • 在 Active Directory 中配置的 FTP 主目录 - FTP 用户被隔离在其 Active Directory 帐户设置(FTPRoot 和 FTPDir 属性)中指定的主目录中。

重要。 如果全局虚拟目录处于活动状态,则所有用户都可以访问 FTP 站点根目录中设置的所有虚拟目录(如果他们具有适当的 NTFS 权限)。

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

选择需要的隔离模式(我使用第二个选项来隔离ftp用户)。

建议对 FTP 站点设置进行任何更改后重新启动 Microsoft FTP 服务 (FTPSVC)。

配置Windows防火墙访问FTP服务器的规则

安装 FTP 服务器角色时,用户访问 FTP 所需的所有必要规则都会在 Windows 防火墙设置中自动激活。

为了使 FTP 在被动 FTP 模式下正常工作,用户需要连接到 RPC 端口范围 (1025-65535)。为了不在外部防火墙上打开所有这些端口,您可以限制用于 FTP 数据传输的动态 TCP 端口的范围。

  1. 打开 FTP 站点设置中的FTP 防火墙支持部分,并在数据通道端口范围字段中指定要用于 FTP 连接的端口范围。例如 - 50000-50100;

    [玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

  2. 保存更改并重新启动 IIS (

    iisreset

    );

  3. 打开 Windows 控制面板并转到控制面板\系统和安全\Windows 防火墙\允许的应用程序;

  4. 确保允许通过防火墙访问的应用程序列表包含FTP 服务器角色的权限。

    [玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

然后检查高级安全 Windows 防火墙的设置中是否启用了以下规则:

  • FTP 服务器 (FTP Traffic-In) - TCP 协议,端口 21;

  • 被动 FTP 服务器(FTP 被动流量输入)- 本地端口地址 1024-65535(在我们的示例中为 50000-50100);

  • FTP 服务器安全(FTP SSL 流量输入)——端口 990(使用带有 SSL 的 FTP 时);

  • FTP 服务器(FTP 流量输出)- 端口 20;

  • FTP 服务器安全(FTP SSL 流量输出)- 端口 989(使用带有 SSL 的 FTP 时)。

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

因此,需要在您的路由器(网关、防火墙)上打开这些端口,以便外部 FTP 用户可以连接到您的站点。

从 Windows 测试 FTP 服务器连接

您可以使用 Test-NetConnection cmdlet 检查 FTP 服务器上端口的可用性:

Test-NetConnection -ComputerName yourftpservername -Port 21

或者使用ftp命令:

ftp yourftpservername

尝试使用任何 FTP 客户端或直接从文件资源管理器连接到您的 FTP 站点(在地址栏中指定 ftp://yourservername/)。

输入用户名和密码。

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

现在您可以访问包含用户文件的主目录(这是用户 FTP 站点的根目录)。正如我们所看到的,用户会话是隔离的,用户只能看到自己在 ftp 服务器上的文件。

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

提示。 如果您想使用匿名访问(所有匿名用户),任何用户都可以使用以下凭据连接到您的 FTP 服务器:anonymousguest 作为用户名,使用电子邮件地址作为密码。如果您匿名连接到FTP站点,会话将被限制在LocalUser\Public目录中(显然,Public目录必须提前创建)。

您可以通过FTP日志查看用户访问FTP服务器的信息。默认情况下,日志文件存储在 c:\inetpub\logs\logfiles 文件夹中的 u_exYYMMDD.log 文件中。

要查看 FTP 服务器的活动用户连接,您可以通过 PowerShell 或 IIS 控制台中的“当前 FTP 会话”部分使用 IIS 性能计数器的值。在此控制台中,您可以查看 FTP 用户的名称和 IP 地址,并在必要时断开 ftp 会话。

[玩转系统] 在 Windows Server 2016/2012 R2 上配置具有用户隔离的 FTP 服务器

因此,我们研究了如何基于 Windows Server 2016/2012 R2 配置具有用户隔离的 FTP 站点。在隔离模式下,用户使用本地或域凭据在 FTP 上进行身份验证,以访问与用户名相对应的根目录。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯