Налаштування FTP-сервера з ізоляцією користувачів на Windows Server 2016/2012 R2

Незважаючи на те, що протоколу FTP, що є одним з найстаріших протоколів, вже виповнилося більше 40 років, він продовжує використовуватися повсюдно там, де потрібно простий протокол передачі файлів. Сервер FTP можна встановити на всіх операційних системах Microsoft. Остання глибока модернізація цієї служби була проведена в Windows 7 / Server 2008 R2 (по суті код сервісу був переписаний заново). Була істотно покращено безпеку служби, і з'явився ряд нових можливостей. Зокрема, в FTP сервері на Windows з'явилася можливість налаштувати ізоляцію FTP користувачів, що дозволяє розмежувати доступ безлічі користувачів до власних папках на одному FTP сервері.

Завдяки можливості ізоляції користувачі можуть працювати тільки зі своїми ftp каталогами, і не можуть піднятися вище по дереву каталогів, тому що каталог верхнього рівня користувача відображається для нього, як корінь служби FTP. Таким чином можна запобігти отриманню доступу користувачів до чужих файлів на FTP сервері. Ізоляція FTP користувачів широко застосовується хостинг-провайдерами, коли потрібно надати індивідуальний доступ різним користувачам до одного файлового сховища.

Як і в попередніх версіях Windows, служба FTP (не плутайте з sFTP і TFTP) в Windows Server 2016/2012 R2 заснована і глибоко інтегрована в сервіс IIS, і має єдиний адміністративний інтерфейс управління. У цій статті ми покажемо, як встановити сервер FTP на базі IIS в Windows Server 2016/2012 R2 і налаштувати на ньому ізоляцію користувачів (Інструкція також може бути застосована і до Windows 10 / 8.1).

зміст:

  • Установка ролі FTP сервера в Windows Server 2016/2012 R2
  • Налаштування FTP сайту в Windows Server, надання прав користувачам
  • Налаштування ізоляції FTP користувачів в Windows Server 2016/2012 R2
  • Налаштування правил брандмауера Windows для доступу до FTP-сервера
  • Перевірка підключення до FTP-сервера з Windows клієнта

Установка ролі FTP сервера в Windows Server 2016/2012 R2

Встановити сервіс FTP можна через консоль Server Manager, зазначивши в розділі Web Server (IIS) -> FTP Server опції FTP Service і FTP Extensibility.

Також можна встановити роль FTP сервера однією командою PowerShell:
Install-WindowsFeature Web-FTP-Server

Щоб встановити консоль управління FTP сервером виконайте команду:

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

Налаштування FTP сайту в Windows Server, надання прав користувачам

Запустіть Server Manager і відкрийте консоль управління IIS (Internet Information Service Manager).

Створіть новий FTP сайт (Sites -> Add FTP Site).

Ім'я FTP сайту: MyTestSite

Кореневої каталог FTP сайту: C: \ inetpub \ ftproot

Для захисту переданих по мережі ftp-даних можливо налаштувати SSL (в цьому випадку всі передані по мережі дані і паролі / учеткі ftp-користувачів будуть зашифровані), але в нашій демонстрації це не обов'язково. Всі інші настройки залишаємо стандартними.

Ви можете управляти FTP сайтом за допомогою модуля PowerShell WebAdministration. Напрімерм, щоб створити новий FTP сайт досить виконати команди:

Import-Module WebAdministration
# Задаємо ім'я FTP сайту
$ FTPSiteName = 'New FTP Site'
# Каталог FTP сайту
$ FTPRoot = 'E: \ www \ FTPRoot'
# Порт FTP сайту
$ FTPPort = 21
New-WebFtpSite -Name $ FTPSiteName -PhysicalPath $ FTPRoot -Port $ FTPPort

Виберіть новий FTP сайт і в секції FTP Authentication (Аутентифікація) відключіть анонімну аутентифікацію Anonymous Authentication. Basic Authentication повинна бути включена.

FTP служба на Windows Server 2016/2012 R2 може використовувати два типи облікових записів: доменні або локальні. Залежно від типу облікового запису є відмінності в структурі каталогів FTP і настройках ізоляції користувачів. Ми будемо використовувати локальні облікові записи Windows.

Створіть FTP користувачів, припустимо, це будуть облікові записи ftp_user1, ftp_user2 і ftp_user3. Також створіть групу ftp_users, в яку включимо цих користувачів. Створити користувачів можна в розділі Local Users and Groups консолі Computer Management.

Також можна створити користувачів і групи з командного рядка (або за допомогою PowerShell). Створіть локальну групу:
net localgroup ftp_users / add

Створіть нового локального користувача:

net user ftp_user1 / add *

Додайте користувача до групи:

net localgroup ftp_users ftp_user1 / add

Точно так же створіть ще двох пользователей.

Надайте створеній групі ftp_users права (RW) на каталог C: \ inetpub \ ftproot.

Усередині каталогу C: \ inetpub \ ftproot создадйте каталог з ім'ям LocalUser (Ім'я має повністю відповідати, це важливо!!!). Потім всередині C: \ inetpub \ ftproot \ LocalUser створіть три каталогу з іменами створених вами користувачів: ftp_user1, ftp_user2, ftp_user3.

Примітка. Залежно від типу облікових записів необхідно створити таку структуру каталогів (під% FtpRoot% \ мається на увазі корінь сайту FTP, в нашому випадку це C: \ inetpub \ ftproot \):

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


Поверніться в консоль IIS і в розділі сайту FTP Authorization Rules створіть нове правило (Add Allow Rule), В якому вкажіть, що група ftp_users повинна мати права на читання і запис (дозволу Read і Write).

Налаштування ізоляції FTP користувачів в Windows Server 2016/2012 R2

Перейдемо до налаштування ізоляції користувачів FTP. Ізоляція FTP користувачів налаштовується на рівні сайту FTP, а не всього сервера і дозволяє організувати власний домашній каталог для кожного користувача. В налаштуваннях FTP сайту відкрийте пункт FTP User Isolation.

У цьому розділі є кілька налаштувань. Перші дві не передбачають ізоляції користувачів:

  • FTP root directory (Ftp-сесія користувача починається з кореневого каталогу 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 сайту (при наявності відповідних NTFS прав доступу).

Виберіть потрібний режим ізоляції (я використовую другий варіант ізоляції ftp користувачів).

При будь-яких змінах налаштувань FTP сайту в IIS бажано перезапускати службу Microsoft FTP Service (FTPSVC).

Налаштування правил брандмауера Windows для доступу до FTP-сервера

Під час встановлення ролі FTP сервера в настройках Windows Firewall автоматично активуються всі необхідні правила, які потрібна для доступу користувачів до FTP.

Для коректної роботи FTP півночі в пасивному режимі FTP користувачам потрібно підключатися до RPC діапазону портів (1025-65535). Щоб не відкривати всі ці порти на зовнішньому файервол, ви можете обмежити діапазон динамічних TCP портів, використовуваних для передачі даних.

  1. Для цього в настройках FTP сайту в IIS відкрийте пункт FTP Firewall Support і в поле Data Channel Port Range вкажіть діапазон портів, який ви хочете використовувати для FTP підключень. Наприклад - 50000-50100;
  2. Збережіть зміни і запустіть IIS (iisreset);
  3. Відкрийте панель управління і перейдіть в Control Panel \ System and Security \ Windows Firewall \ Allowed apps;
  4. Переконайтеся, що в списку додатку, яким дозволений доступ через брандмауер присутні дозволу для FTP Server.

Потім в настройках Windows Firewall with Advanced Security перевірте, що включені наступні правила:

  • FTP Server (FTP Traffic-In) - протокол TCP, порт 21;
  • FTP Server Passive (FTP Passive Traffic-In) - адреса локального порту 1024-65535 (або 50000-50100 як в нашому прикладі);
  • FTP Server Secure (FTP SSL Traffic-In) - (при використанні FTP з SSL) порт 990;
  • FTP Server (FTP Traffic-Out) - порт 20;
  • FTP Server Secure (FTP SSL Traffic-Out) - (при використанні FTP з SSL) порт 989.

Відповідно ці порти потрібно відкрити на шлюзі (межсетевом екрані) для підключення зовнішніх FTP користувачів.

Перевірка підключення до FTP-сервера з Windows клієнта

Ви можете перевірити доступність портів на FTP сервері за допомогою командлета Test-NetConnection:

Test-NetConnection -ComputerName yourftpservername -Port 21

Або за допомогою команди ftp:

ftp yourftpservername

Спробуйте підключитися до свого FTP сайту за допомогою будь-якого клієнта FTP або безпосередньо з Explorer (в адресному рядку вказавши ftp: // yourservername /.

Вкажіть ім'я користувача та пароль.

В результаті у вас відкриється вміст домашнього каталогу з файлами користувача (що є для користувача коренем FTP сайту). Як ви бачите, сесія користувача є ізольованою і користувач бачить на ftp сервера тільки свої файли.

Порада. Якщо ви хочете використовувати анонімний доступ (All anonymous Users), підключатися до вашого FTP-сервера зможуть будь-які користувачі, використовуючи в якості імені anonymous або guest, а в якості пароля - email-адреса. При анонімному підключенні до FTP сайту - сесія буде обмежена каталогом LocalUser \ Public (природно каталог Public повинен бути створений попередньо).

Для перегляду інформації про доступ користувачів до FTP-сервера можна використовувати журнали FTP, які за замовчуванням зберігаються в каталозі c: \ inetpub \ logs \ logfiles в файлах формату u_exYYMMDD.log.

Для перегляду поточних підключень користувачів до вашого сервера можна користуватися значеннями лічильниками користувачів IIS через PowerShell або функцією "Поточні сеанси FTP" в консолі IIS. У цій консолі можна подивитися інформацію про ім'я та IP адресу FTP користувача і відключити сесію при необхідності.

Отже, ми розглянули, як налаштувати FTP сайт з ізоляцією користувачів на базі Windows Server 2016/2012 R2. У режимі ізоляції користувачі автентифіковані на FTP під своїми локальним або доменним обліковими записами, після чого вони отримують доступ до свого кореневого каталогу, відповідного імені користувача.