Быстрая настройка FTP-сервера на Windows Server и Windows 10/11

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

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

Чтобы установить роль FTP сервера в Windows Server, нужно открыть консоль Server Manager, запустите мастер Add Roles and Features, разверните роль Web Server (IIS) -> FTP Server и отметьте опции FTP Service и FTP Extensibility.

установка роли FTP Server в Windows

В Windows 10 и 11 установить компоненты FTP сервера можно через консоль Turn Windows features on or off (команда optionalfeatures ). Разверните компонент Internet Information Services и выберите для установки службы FTP.

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

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

Создайте новый FTP сайт (Sites -> Add FTP Site).

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

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

Путь к FTP каталогу

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

Порт FTP сервера и SSL сертификат

На этапе Authentication and Authorization оставьте настройки по умолчанию (мы настроим права доступа позже).

Аутентификация на FTP сервере

Настройка прав доступа на FTP сервере в Windows

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

  • Anonymous Authentication – к FTP серверу может подключиться кто угодно (в качестве имени указывается anonymous или guest, а в качестве пароля — произвольный email-адрес);
  • Basic Authentication – для подключения к FTP серверу пользователь должен аутентифицироваться с помощью своей учетной записи (доменной или локальной).

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

Включить Basic Authentication для FTP

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

Создать локальную группу ftp_users

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

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

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

net localgroup ftp_users winitpro\kbuldogov /add

локальный пользователь для FTP

Предоставьте созданной группе ftp_users права RW на каталог C:\inetpub\ftproot.

права доступа на FTP каталог в Windows

Затем нужно разрешить доступ к сайту в консоли управления FTP. Выберите раздел FTP Authorization Rules -> Add allow Rule. Создайте правило:

  • Specified roles or user groups: ftp_users (разрешить доступ к сайту для указанной группы)
  • Permissions: Read + Write (разрешить и чтение и запись в FTP каталог)

Разрешить FTP аутентификацию и назначить права доступа

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

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

Проверить доступа к FTP из проводника Windows

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

содержимое FTP папки

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

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

Если вам нужно ограничить доступ FTP пользователей только к своим папкам (домашним каталогам), нужно включить режим изоляции. Откройте пункт FTP User Isolation в настройка сервера.

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

  • FTP root directory – пользователь подключается в корневой каталога ftp-сайта;
  • User name directory – пользователь подключается в каталог с именем пользователя. Если каталог отсутствует, сессия начинается с корневого каталога ftp-сайта.

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

  • User name directory (disable global virtualdirectories) – ftp-сессия пользователя изолирована каталогом имя которого соответствует имени пользователя ftp. Пользователи видят только собственный каталог (для них он является корневым) и не могут выйти за его рамки (в вышестоящий каталог дерева FTP). Любые глобальные виртуальные каталоги игнорируются;
  • User name physical directory (enable global virtual directories) – FTP-сессия пользователя ограничена (изолирована) физическим каталогом с именем учетной записи пользователя FTP. Пользователь не может перейти выше своего каталога по структуре FTP. Однако пользователю доступны все созданные глобальные виртуальные каталоги;
  • FTP home directory configured in Active Directory – FTP-пользователь изолируется в рамках своего домашнего каталога, заданного в настройках его учетной записи Active Directory (свойства FTPRoot и FTPDir).

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

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

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

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

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

  • Локальный пользователь ftp_user1 ( C:\inetpub\ftproot\LocalUser\ftpuser1 )
  • Доменный пользователь resource\kbuldogov ( C:\inetpub\ftproot\resource\kbuldogov )

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

Быстрая установка и настройка FTP-сервера в Windows с помощью 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 "P@ssw0rd!" -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_group:

$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"

Включить basic аутентификацию:

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

Разрешить доступ к сайту для указанной группы:

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 "192.168.10.101"

Создайте правило в Windows Defender Firewall, которое разрешает доступ к 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

Проверьте доступность FTP сервера с помощью командлета Test-NetConnection:

Test-NetConnection -ComputerName yourftpservername -Port 21


Предыдущая статья Следующая статья


Комментариев: 51 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)