В этом пошаговом руководстве мы рассмотрим, как установить и настроить FTP-сервер для удобной передачи файлов на Windows Server. Встроенный FTP-сервер доступен во всех версиях Windows Server (а также в настольных выпусках Windows 10/11) и основан на роли веб-сервера IIS.

Установите FTP-сервер в Windows и создайте FTP-сайт

Чтобы установить роль FTP-сервера в Windows Server, откройте Менеджер сервера консоли, запустите мастер добавления ролей и компонентов, разверните Веб-сервер (IIS) -> FTP-сервер, и проверьте варианты FTP-сервис и Расширяемость FTP.

Установите роль FTP-сервера в WindowsУстановите роль FTP-сервера в Windows

В Windows 10 и 11 вы можете установить компоненты FTP-сервера, используя Включение или выключение функций Windows диалог (запустите optionalfeatures команда). Разверните Службы IIS и выберите службы FTP-сервера для установки.

Установите FTP-сервер в Windows 10Установите FTP-сервер в Windows 10

После установки роли вы можете создать FTP-сайт. Используйте консоль управления IIS (inetmgr) для управления FTP-сервером в Windows.

Создайте новый FTP-сайт (Сайты -> Добавить FTP Сайт).

Создать FTP-сайтСоздать FTP-сайт

  • Имя FTP-сайта: МойТестСайт
  • Корневой каталог FTP-сайта: C:\inetpub\ftproot

Корневая папка FTP-сервераКорневая папка FTP-сервера

Следующий шаг позволяет выбрать сертификат для шифрования и защиты FTP-трафика (FTP через SSL/FTPS), который рекомендуется использовать при передаче FTP-данных по сетям общего пользования. В этом случае мы не используем шифрование (Нет SSL вариант).

Привязка FTP-сайтаПривязка FTP-сайта

На этапе Аутентификация и авторизация оставьте настройки по умолчанию (права доступа пользователей FTP мы настроим позже).

Настройки аутентификации и авторизации FTP-сервераНастройки аутентификации и авторизации FTP-сервера

Настройка прав доступа пользователя на FTP-сервере Windows

FTP-сервер Windows поддерживает два типа аутентификации пользователей:

  • Анонимная аутентификация – Любой может получить доступ к FTP-серверу (анонимный или гость указывается в качестве имени пользователя и любой адрес электронной почты в качестве пароля);
  • Базовая аутентификация – пользователь должен пройти аутентификацию под своей учетной записью Windows (локальной или доменной) для подключения к FTP-серверу.

В этом случае мы разрешим только Базовая аутентификация (в настройках сайта разверните раздел FTP-аутентификация и включите только этот режим).

FTP-сервер: базовая аутентификация FTP-сервер: базовая аутентификация

Чтобы упростить предоставление доступа к FTP-сайту, создайте локальную группу под названием ftp_users.

создать локальную группу пользователей FTPсоздать локальную группу пользователей FTP

Давайте создадим локального пользователя ftp_user1 и добавьте его в группу:

net user ftp_user1 /add *
net localgroup ftp_users ftp_user1 /add

Затем добавьте пользователя домена в эту группу:

net localgroup ftp_users woshub\m.korman /add

добавить пользователей в группу доступа ftpдобавить пользователей в группу доступа ftp

Предоставьте группе ftp_users, которую вы создали, разрешения NTFS RW в каталоге C:\inetpub\ftproot.

Предоставьте разрешения NTFS для корневой папки FTP.Предоставьте разрешения NTFS для корневой папки FTP.

Затем разрешите указанным пользователям и группам доступ к FTP-сайту. В консоли IIS выберите Правила авторизации FTP -> Добавить разрешающее правило:

  • Указанные роли или группы пользователей: ftp_users (пользователи в этой группе могут получить доступ к FTP)
  • Разрешения: Читать + Писать (Разрешить чтение и запись в каталог FTP

Разрешить подключение FTP-сервера к определенной группе, установить разрешения на чтение и запись.Разрешить подключение FTP-сервера к определенной группе, установить разрешения на чтение и запись.

Теперь пользователи могут подключаться к FTP-серверу. Вы можете подключиться к FTP-серверу с помощью любого стороннего FTP-клиента или открыть FTP непосредственно из проводника Windows.

В адресной строке проводника введите адрес FTP-сервера в формате ftp://192.168.3.21/ и укажите учетную запись пользователя и пароль.

подключить ftp-сайт из проводника Windowsподключить ftp-сайт из проводника Windows

Пользователь должен увидеть список файлов и папок на FTP-сервере.

просмотреть содержимое ftp-сайтапросмотреть содержимое ftp-сайта

В этом случае все пользователи подключатся к корню FTP-сайта и увидят все файлы. FTP-сервер Windows поддерживает режим изоляции, который позволяет создать домашний каталог для каждого пользователя.

Настройка изоляции пользователей FTP в Windows

Если вам необходимо ограничить доступ пользователей FTP только к их папкам (домашним каталогам), вам необходимо включить режим изоляции FTP. В IIS откройте Изоляция пользователей FTP в настройках сайта.

Первые два варианта не предполагают изоляцию пользователя:

  • Корневой каталог FTP – пользователь подключается к корню FTP-сайта;
  • Каталог имен пользователей – Сеанс пользователя FTP начинается с %username% каталог. Сеанс начнется с корня ftp-сайта, если этот каталог не существует.

Различные режимы изоляции пользователей доступны в следующих трех вариантах:

    • Каталог имен пользователей (отключить глобальные виртуальные каталоги) – сеанс FTP пользователя изолируется каталогом, имя которого соответствует имени пользователя FTP. Пользователи видят только свой каталог (это их корневой FTP-каталог) и не могут выйти за его пределы (в верхний каталог дерева FTP). Любые глобальные виртуальные каталоги будут игнорироваться;
    • Физический каталог имени пользователя (включить глобальные виртуальные каталоги) – сеанс FTP пользователя ограничен (изолирован) физическим каталогом, имя которого совпадает с именем учетной записи пользователя FTP. Пользователь не может выйти за пределы своего каталога FTPHome. Пользователям доступны все глобальные виртуальные каталоги;
  • Домашний каталог FTP, настроенный в Active Directory – Пользователь FTP изолирован в домашнем каталоге, указанном в настройках его учетной записи Active Directory (атрибуты пользователя FTPRoot и FTPDir).

Настройки изоляции пользователей FTPНастройки изоляции пользователей FTP

Выберите режим изоляции, который вы хотите использовать (в этом примере я использую второй вариант для изоляции пользователей FTP).

Теперь вам нужно создать личные каталоги для пользователей в C:\inetpub\ftproot. В зависимости от типа учетной записи пользователя путь к домашнему каталогу FTP будет отличаться.

Тип учетной записи Синтаксис именования домашнего каталога FTP
Анонимные пользователи %FtpRoot%\LocalUser\Public
Локальная учетная запись Windows %FtpRoot%\LocalUser\%UserName%
Учетная запись Windows домена %FtpRoot%\%UserDomain%\%UserName%
Специальный диспетчер IIS или учетные записи ASP.NET. %FtpRoot%\LocalUser\%UserName%

В этом примере у меня есть два пользователя, для которых я создам следующие каталоги.

  • Локальный пользователь ftp_user1 ( C:\inetpub\ftproot\LocalUser\ftp_user1 )
  • Пользователь домена woshib\m.korman ( C:\inetpub\ftproot\woshub\m.korman )

Теперь пользователи будут видеть файлы только в своих домашних каталогах при подключении к FTP-серверу.

Установите и настройте FTP-сервер с помощью PowerShell

Вы можете быстро развернуть FTP-сервер в Windows с помощью сценария PowerShell.

Установите роль FTP-сервера и инструменты управления на Windows Server:

Install-WindowsFeature Web-FTP-Server -IncludeAllSubFeature -IncludeManagementTools

Установка функции FTP-сервера в Windows 10 или 11:Enable-WindowsOptionalFeature -Online -FeatureName IIS-FTPServer
Enable-WindowsOptionalFeature -Online -FeatureName IIS-FTPSvc
Enable-WindowsOptionalFeature -Online -FeatureName IIS-FTPExtensibility

Создайте локального пользователя и группу с помощью PowerShell:

$pass = ConvertTo-SecureString "myPassw0rd22!" -AsPlainText -Force
New-LocalUser -Name ftp_user1 -Password $pass
New-LocalGroup -Name ftp_users
Add-LocalGroupMember -Group ftp_users -Member ftp_user1

Создайте каталог FTP-сайта и предоставьте права доступа NTFS группе ftp_users:

$ftproot="C:\inetpub\ftproot\MyFTP"
mkdir $ftproot
New-WebFtpSite -Name MyFTP -IPAddress "*" -PhysicalPath $ftproot -Port 21
icacls $ftproot /grant "ftp_group:(OI)(CI)(F)"

Разрешить подключение без использования SSL:

$FtpSite="IIS:\Sites\MyFTP"
Set-ItemProperty $FtpSite -Name ftpServer.security.ssl.controlChannelPolicy -Value "SslAllow"
Set-ItemProperty $FtpSite -Name ftpServer.security.ssl.dataChannelPolicy -Value "SslAllow"

Разрешите базовую аутентификацию на FTP-сайте:

Set-ItemProperty $FtpSite -Name ftpServer.security.authentication.basicAuthentication.enabled -Value $true

Разрешить указанной группе доступ к FTP-сайту:

Add-WebConfiguration "/system.ftpServer/security/authorization" -Location MyFTP -PSPath IIS:\ -Value @{accessType="Allow";roles="ftp_users";permissions="Read,Write"}

Чтобы ограничить доступ к FTP-сайту по IP-адресу источника:

Set-ItemProperty $FtpSite -Name ftpServer.firewallSupport.externalIp4Address -Value "10.2.1.100"

Создайте правило брандмауэра Защитника Windows, чтобы разрешить доступ к FTP-серверу:

New-NetFirewallRule -Name "FTP 21" -DisplayName "FTP 21" -Profile All -Direction Inbound -Action Allow -Protocol TCP -LocalPort 21 -Program "%windir%\system32\svchost.exe"

Перезапустите FTP-сайт:

Restart-WebItem -PSPath $FtpSite

Используйте командлет Test-NetConnection, чтобы убедиться, что ваш FTP-сервер доступен:
Test-NetConnection -ComputerName yourftpservername -Port 21