В этом пошаговом руководстве мы рассмотрим, как установить и настроить FTP-сервер для удобной передачи файлов на Windows Server. Встроенный FTP-сервер доступен во всех версиях Windows Server (а также в настольных выпусках Windows 10/11) и основан на роли веб-сервера IIS.
Установите FTP-сервер в Windows и создайте FTP-сайт
Чтобы установить роль FTP-сервера в Windows Server, откройте Менеджер сервера консоли, запустите мастер добавления ролей и компонентов, разверните Веб-сервер (IIS) -> FTP-сервер, и проверьте варианты FTP-сервис и Расширяемость FTP.
В Windows 10 и 11 вы можете установить компоненты FTP-сервера, используя Включение или выключение функций Windows диалог (запустите optionalfeatures
команда). Разверните Службы IIS и выберите службы FTP-сервера для установки.
После установки роли вы можете создать FTP-сайт. Используйте консоль управления IIS (inetmgr
) для управления FTP-сервером в Windows.
Создайте новый FTP-сайт (Сайты -> Добавить FTP Сайт).
- Имя FTP-сайта: МойТестСайт
- Корневой каталог FTP-сайта: C:\inetpub\ftproot
Следующий шаг позволяет выбрать сертификат для шифрования и защиты FTP-трафика (FTP через SSL/FTPS), который рекомендуется использовать при передаче FTP-данных по сетям общего пользования. В этом случае мы не используем шифрование (Нет SSL вариант).
На этапе Аутентификация и авторизация оставьте настройки по умолчанию (права доступа пользователей FTP мы настроим позже).
Настройка прав доступа пользователя на FTP-сервере Windows
FTP-сервер Windows поддерживает два типа аутентификации пользователей:
- Анонимная аутентификация – Любой может получить доступ к FTP-серверу (анонимный или гость указывается в качестве имени пользователя и любой адрес электронной почты в качестве пароля);
- Базовая аутентификация – пользователь должен пройти аутентификацию под своей учетной записью Windows (локальной или доменной) для подключения к FTP-серверу.
В этом случае мы разрешим только Базовая аутентификация (в настройках сайта разверните раздел FTP-аутентификация и включите только этот режим).
Чтобы упростить предоставление доступа к FTP-сайту, создайте локальную группу под названием ftp_users.
Давайте создадим локального пользователя ftp_user1 и добавьте его в группу:
net user ftp_user1 /add *
net localgroup ftp_users ftp_user1 /add
Затем добавьте пользователя домена в эту группу:
net localgroup ftp_users woshub\m.korman /add
Предоставьте группе ftp_users, которую вы создали, разрешения NTFS RW в каталоге C:\inetpub\ftproot.
Затем разрешите указанным пользователям и группам доступ к FTP-сайту. В консоли IIS выберите Правила авторизации FTP -> Добавить разрешающее правило:
- Указанные роли или группы пользователей: ftp_users (пользователи в этой группе могут получить доступ к FTP)
- Разрешения: Читать + Писать (Разрешить чтение и запись в каталог FTP
Теперь пользователи могут подключаться к FTP-серверу. Вы можете подключиться к FTP-серверу с помощью любого стороннего FTP-клиента или открыть FTP непосредственно из проводника Windows.
В адресной строке проводника введите адрес FTP-сервера в формате ftp://192.168.3.21/
и укажите учетную запись пользователя и пароль.
Пользователь должен увидеть список файлов и папок на 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).
Теперь вам нужно создать личные каталоги для пользователей в 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
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