Настройка FTP-сервера в Windows Server 2016

Мне для работы на новом месте нужен FTP сервис на системе Windows Server 2016. Именно на эту систему мне предстоит с Windows Server 2008 R2Server 2012 переводить всю инфраструктуру. И в одном задаче которую кстати я себе сам придумал мне по аналогии, как я делал на Server 2012 R2 нужен защищенный FTP-сервис.

Система развернута из образа: SW_DVD9_Win_Server_STD_CORE_2016_64Bit_English_-4_DC_STD_MLF_X21-70526.ISO

Система не в домене.

Win + X → Control Panel — Administrative Tools — Server Manager, устанавливаю роль IIS, Add roles and features, отмечаю галочкой роль «Web Server (IIS)», на уведомление что в процесс будут установлены компоненты:

Web Server (IIS) → Management Tools → [Tools] IIS Managment Console соглашаюсь и нажимаю «Add Features», Next, Next, Next: теперь отмечаю галочками компоненты которые будут совместно с ролью IIS установлены:

Common HTTP Features, Default Document, Directory Browsing, HTTP Errors, Static Content, Health and Diagnostics, HTTP Logging, Performance, Static Content Compression, Security, Request Filtering, Basic Authentication, FTP Server, FTP Service, FTP Extensibility, Management Tools, IIS Management Console, IIS Management Scripts and Tools, Management Service

и нажимаю Next, Install

После установки приступаю к конфигурированию.

Шаг №1: Создаю каталог, отключаю наследование и оставляю права доступа к нему:

C:\storage

  • группа SYSTEM = Full Control
  • группа Administrators (srv-backup) = Full Control
  • группа Creator OWNER = Full Control
  • группа NETWORK SERVICE = Modify
Создаю каталог который будет корневым для FTP-сервиса

Шаг №2:

Создаю FTP ресурс (сайт)

Win + X — Control Panel — Administrative Tools — Internet Information Service (IIS) Manager и через правый клик мышью на Sites выбираю «Add FTP Site...»

  • FTP site name: FTP storage

(Content Directory)

  • Physical Path: C:\storage

и нажимаю Next

(Binding)

  • IP Address: 172.33.33.30
  • Port: 21
  • Start FTP site automatically: отмечаю галочкой
  • SSL: No SSL (пока)

и нажимаю Next

(Authentication)

  • Basic: отмечаю галочкой
  • Allow access to: Specified users

и указываю через запятую: ftpuser1, ftpuser2

  • Permissions: Write

а после нажимаю Install.

Шаг №3: Создаю логин и пароль в сервисе IIS

через оснастку Internet Information Service (IIS) Manager: SRV-BACKUP (SRV-BACKUP\Administrator) — (Management) IIS Manager Users

Создаю логин и пароль в сервисе IIS

(Actions) Add User…

  • Username: ftpuser1
  • Password: Aa1234567@!
  • Confirm password: Aa1234567@!
Добавляю еще одну связку login&password

Шаг №4: Указанные учетные записи будут не Windows аккаунты, а виртуальные обслуживаемые только сервисом IIS.

через оснастку Internet Information Service (IIS) Manager: Sites — FTP Storage — FTP Authentication — (Actions) Custom Providers…

  • Select one or more registered custom providers: IisManagerAuth

и нажимаю OK окна Custom Providers, вот что получится:

Предопределяю как будет вестись аутентификация

Шаг №5: Теперь назначаю права доступа

через оснастку Internet Information Service (IIS) Manager: Sites — FTP Storage — FTP Authorization Rules

Теперь назначаю права доступа

Шаг №6: Ограничиваем виртуальных пользователей каталогом FTP сервиса дабы они не вышли ни каким образом в систему:

через оснастку Internet Information Service (IIS) Manager: Sites — FTP Storage — FTP User Isolation

  • Do not isolate users. Start users in: FTP root directory

Шаг №7: Изменяю правила авторизации на FTP ресурсе

через оснастку Internet Information Service (IIS) Manager: SRV-BACKUP (SRV-BACKUP\Administrator)

  • (Management) Management Service
Изменяю правила авторизации на FTP ресурсе
  • Enable remote connections: отмечаю галочкой
  • (Identity Credentials) Windows credentials or IIS Manager credentials

(Actions) и нажимаю Apply, Start.

Шаг №8: Затем следует поправить права на каталог IIS сервера

Win + X — Command Prompt (Admin)

1234567891011C:\Windows\system32>CACLS “%SystemDrive%\Windows\System32\inetsrv\config” /G “NetworkService”:R /E C:\Windows\system32>CACLS “%SystemDrive%\Windows\System32\inetsrv\config\administration.config” /G “Network Service”:R /E C:\Windows\system32>CACLS “%SystemDrive%\Windows\System32\inetsrv\config\redirection.config”/G “Network Service”:R /E C:\Windows\system32>iisreset /stop C:\Windows\system32>iisreset /start

Шаг №9: Добавляю, что к моему ресурсе с FTP Root каталогом c:\storage могут иметь доступ созданные пользователи IIS через оснастку Internet Information Service (IIS) Manager: Sites — FTP Storage — (Management) IIS Manager Permissions — (Actions)

  • Allow User…
Предопределяю, что доступ к каталога только виртуальные пользователи IIS

указываю каких пользователей:

Select the type of user: IIS Manager

Select — и сперва ftpuser1, а потом через Allow User
другую учетную запись ftpuser2 и нажимаю
OK окна Allow User...

И указываю этих виртуальных пользоваталей

Итого сервис с изоляцией виртуальных пользователей FTP сервиса успешно поднят.
Проверяю, что система осуществляет прослушивание порта 21/TCP:

Win + X → Command Prompt (Admin)

12345C:\Windows\system32>netstat -a | findstr :21 TCP 0.0.0.0:21 srv-backup:0 LISTENING TCP [::]:21 srv-backup:0 LISTENING

Проверяю, что могу подключиться к нему:

Проверяю, как осуществляется подключение к FTP

Авторизуюсь:

  • User name: ftpuser1
  • Password: Aa1234567@!

И нажимаю Log On

и авторизация происходит успешно, строка в адресе: «The Internet 172.33.33.30»

Пробую создать каталог под именем 1 и каталог под именем 2 → Успешно.

Ниже скриншот что они действительно создались и что они действительно есть в файловой системе каталога c:\storage который является корневым для FTP сервиса.

Пробую создать каталог под именем 1 и каталог под именем 2 → Успешно.

Итого я адаптировал заметку которую разработал и практически применил когда работал руководителем отдела IT в сфере автобизнеса. Данная наработка очень необходима для нужд системного администрирования и наглядно показывает, как Windows сервисы, а не только Linux могут стать помощниками в решении поставленных задач.

Также если обратиться к данному FTP ресурсу из локальной сети, но с Ubuntu 18.04 Desktop amd64 коя система является моей рабочей с которой я администрирую инфраструктуру:

123456789101112131415161718192021222324252627282930313233343536373839ekzorchik@navy:~$ ftp ftp> open 172.33.33.30 Connected to 172.33.33.30. 220 Microsoft FTP Service Name (172.33.33.30:ekzorchik): ftpuser1 331 Password required Password: 230 User logged in. Remote system type is Windows_NT. ftp> ls 200 PORT command successful. 125 Data connection already open; Transfer starting. 04-05-19 09:40PM <DIR> 1 04-05-19 09:40PM <DIR> 2 226 Transfer complete. ftp> mkdir ubuntu_bionic_desktop 257 “ubuntu_bionic_desktop” directory created. ftp> quit 221 Goodbye. ekzorchik@navy:~$

А через проводник:

Проверка доступа к FTP из под Ubuntu 18.04 Dekstop
Авторизация прошла, доступ получен

Работает. На этом моя базовая практическая заметка по развертыванию FTP сервиса на Windows Server 2016 English завершена. С уважением, автор блога Олло Александр aka ekzorchik