FTP-сайт с изоляцией пользователей на Windows Server 2012 R2 | Windows для системных администраторов

FTP-сайт с изоляцией пользователей на Windows Server 2012 R2

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

Благодаря возможности изоляции пользователи могут работать только со своими каталогами, и не могут  подняться выше по дереву каталогов FTP, т.к. каталог верхнего уровня пользователя отображается для него как корень службы FTP. Таким образом можно предотвратить доступ пользователей к чужим данным на FTP сервере. Изоляция FTP пользователей широко применяется ISP/ASP провайдерами, когда нужно предоставить индивидуальный доступ различным пользователям к одному файловому хранилищу.

Как и в предыдущих версиях Windows, служба FTP в Windows Server 2012  R2 основана и глубоко интегрирована в сервис IIS, и имеет единый административный интерфейс управления.

В этой статье мы покажем, как установить сервер FTP на базе IIS 8 в Windows Server 2012 R2 и настроить на нем изоляцию пользователей (инструкция также применима и к Windows 8).

Установка сервиса FTP в Windows Server 2012 R2


Установить сервис FTP можно через консоль Server Manager, отметив опции FTP Service и FTP Extensibility в разделе Web Server(IIS) -> FTServer. Установка ftp сервера на windows server 2012 r2

Также можно установить роль FTP сервера одной командой Powershell:

Install-WindowsFeature Web-FTP-Server

Install-WindowsFeature Web-FTP-Server

Создаем FTP сайт,  заводим пользователей, настраиваем права


Откроем консоль управления IIS (Internet Information Service Manager). Консоль управления IIS (Internet Information Service Manager)

И создадим новый FTP сайт (Sites ->Add FTP Site). Добавить новый FTP сайт

Имя FTP сайта: MyTestSite

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

Задаем имя и путь к каталогу ftp сайта

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

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

Настройка fpt-аутентификации

FTP сервис на Windows 2012 R2 может использовать два типа учетных записей: доменные или локальные. В зависимости от типа учетной записи есть различия в структуре каталогов FTP и настройках изоляции. С целью упрощения описания мы будем использовать локальные учетные записи Windows.

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

Создаем пользователей ftp

Или из командной строки:

net localgroup ftp_users /add

Создаем группу пользователей ftp

net user ftp_user1 /add *

Создаем пользователя ftp

net localgroup ftp_users ftp_user1 /add

Добавляем пользователя в группу

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

Предоставим созданной группе ftp_users права (RW) на каталог C:\inetpub\ftproot. NTFS разрешения на каталог 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%

Каталог ftproot\LocalUser

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

Настройка изоляции FTP пользователей в Windows Server 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 на windows server 2012 r2

Выберите нужный режим изоляции (вы выбрали второй вариант) и попробуйте подключиться к своему FTP сайту с помощью любого клиента FTP или непосредственно из Explorer (в адресной строке указав ftp://yourservername/.

Укажите имя и пароль пользователя Подключаемся к ftp сайту из проводника

И мы получим доступ к домашнему каталогу с данными пользователя (являющимся для пользователя корнем FTP сайта). Как мы видим, сессия пользователя является изолированной и пользователь видит только свои данные. Изолированная FTP сессия

Совет. При анонимном подключении к FTP сайту – сессия будет ограничена каталогом LocalUser\Public (естественно каталог Public должен быть создан предварительно).

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

Еще записи по теме: Windows Server 2012 R2
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:

Комментариев: 30

Оставить комментарий
  1. Alex | 25.02.2015

    Подскажите как такой ftp сервер опубликовать в интернете? что бы не только локальные пользователи могли пользоваться но и внешние. спасибо

    Ответить
    • itpro | 26.02.2015

      Все зависит от типа подключения к интернету и имеющийся сетевого оборудования. У вас есть белый IP адрес?

      Ответить
  2. Дмитрий | 01.04.2015

    “Внутри каталога C: \ inetpub \ ftproot создадим каталог с именем LocalUser (имя должно полностью соответствовать, это важно !!!).” — Обязательно должно быть имя «LocalUser» — это какая то привязка, к чему?

    Ответить
    • itpro | 06.04.2015

      LocalUser — означает, что будут использоваться домашние fTP каталоги локальных (не доменных) пользователей. Система при подключении по ftp локального пользователя ищет и подключает его папку из каталога LocalUser.

      Ответить
      • Дмитрий | 06.04.2015

        Просто я настраиваю FTP на Windows Server 2008 r2 и разделе Local Users and Groups нет, пользователей создавать в ACTIVE Direrory?

        Ответить
        • itpro | 06.04.2015

          Похоже вы разворачиваете FTP сервер на контроллере домена Active Directory — скажем, не самое удачное решение. Если же других серверов нет, то авторизации придется использовать доменные учетные записи AD, формат пути к каталогу пользователя должен быть такой: %FtpRoot%\%UserDomain%\%UserName%

          Ответить
          • Дмитрий | 08.04.2015

            Скажите пожалуйста, не самое хорошее решение это имеется виду когда сервер FTP и контроллер домена в одном месте или просто на серверных операционных системах лучше не разворачивать FTP? У нас на предприятии есть один Windows Server 2008R2 остальное 250 клиентских машин на которых установлены Windows 7 и Windows XP, лучше будет если развернуть FTP сервер на одной из клиентских машин? Да и еще одно, что означает «% FtpRoot% \% UserDomain% \% UserName%» это имеется виду маршрут С: \\ FtpRoot \ UserDomain \ UserName \ где в папке UserName создать папки для каждого пользователя который будет создан для FTP?

            Ответить
            • itpro | 09.04.2015

              Нежелательно совмещать роль FTP и контроллера домена Active Directory на одном сервере.
              Думаю, в вашем случае, все-таки разворачивать FTP-сервер на Windows Server 2008R2.
              По поводу пути. Например, для пользователя admin домена winitpro.ru путь к домашнему FTP каталогу может выглядеть так:
              C:\ftproot\winitpro\admin

            • Дмитрий | 16.04.2015

              А нельзя на втором диске сделать хранилище только на диске С? (а то как-то не хочется забывать этот диск, тем больше у меня 250 пользователей)

  3. itpro | 16.04.2015

    2Дмитрий
    Конечно можно, просто измените путь к домашнему каталогу в настройках FTP сайта на IIS

    Ответить
    • Дмитрий | 16.04.2015

      «Корневой каталог FTP сайта: C:\inetpub\ftproot» -то есть этот маршрут, при первоначальной настройке??

      Ответить
      • itpro | 21.04.2015

        Да, это и есть корневой каталог FTP сервера

        Ответить
  4. Oleg | 11.06.2015

    Подскажите пожалуйста, есть ли возможность как то автоматически (например из файла или каким либо другим образом) создать 20000 пользователей и создать для них изоляцию?
    У меня задача для 20000 контрагентов создать ftp ресурс с которого они могли бы забирать свои файлы. Ручками создавать все 20000 очень долго. Программно могу создать файловые папки, м.б этого достаточно будет, но не понимаю как задать им сгенерированные пароли.

    Ответить
    • itpro | 15.06.2015

      Учетные записи пользователей локальные или доменные?
      Технически самих пользователей и их каталоги можно создать несложным скриптом на Powershell, который на входе принимает csv файл с именем пользователя и его паролем. Скрипт должен создать учетку пользователя с указанным паролем и каталог с именем пользователя.

      Ответить
  5. fde(Дмитрий) | 14.10.2015

    Большое спасибо за ответы! При помощи вашей переписки понял почему после поднятия контроллера домена слетел доступ к ftp серверу.

    Ответить
  6. Sasha Odarchuk | 04.01.2016

    А sFTP можно поднять на Win 2012 R2 ??

    Ответить
    • itpro | 11.01.2016

      Насколько я помню, именно sFTP (FTP over SSH) штатными средствами не поддерживается. Но сам трафик FTP можно зашифровать с помощью FTPS (FTP over SSL).

      Ответить
  7. Pavel Glukhovtsev | 06.01.2016

    Здравствуйте.
    Прошу помочь разобраться с проблемой доступа к ftp-серверу.
    Поднял на хостовой системе windows server 2012 r2 ftp-сервер с изоляцией на уровне локальных пользователей. В брандмауэре автоматически создались соответствующие правила. Но доступа к ftp-серверу нет. Отключаю брандмауэр — все работает.
    Правила в брандмауэре созданы автоматически. На всякий случай посмотрел их. По моему разумению они правильные.
    При раскопках обнаружил что автоматически созданное правило брандмауэра блокирует 21 порт. Создал аналогичное правило в котором указал применение правила не к службе FTPSVC, а ко всем службам. После этого стал отвечать telnet на 21 порт. Но дальше не идет.
    220 Microsoft FTP Service
    user
    501 Invalid number of parameters.
    pass
    503 Login with USER first.
    USER
    501 Invalid number of parameters.
    quit
    221 Goodbye.

    Может проблема вызвана тем, что все поднята на хосте с активированной ролью Hyper-V?

    Ответить
    • itpro | 11.01.2016

      Маловероятно, что Hyper-V тут может как то мешать, если только есть какие-то правила перенаправления входящего FTP трафика внутрь какой-то ВМ на Hyper-V.
      Соединение проверяете руками или клиентом? Может следует настройки клиента перепроверить?

      Ответить
  8. Дмитрий | 01.04.2016

    Добрый день!

    Подскажите пожалуйста, вот есть корневой каталог FTP в котором имеются 2 каталога: LocalUser (каталог с папками пользователей) и Info (в нем хранятся разные файлы)

    Всё настроил по вашей статье, четко работает, каждый пользователь видит только свой каталог.

    Как сделать так, что бы каталог Info был доступен всем пользователям, помимо их личных каталогов?

    Ответить
    • itpro | 04.04.2016

      Нужно включить уровень изоляции User name physical directory (enable global virtual directories).
      Затем создать на корневом уровне FTP сервера виртуальный каталог Info и дать соответствующие NTFS права доступа пользователям.

      Ответить
  9. AlexAxel | 19.05.2016

    Доброе время суток. Есть сеть с поднятой AD, и FTP на отдельном сервере, входящем в домен. ПОльзователи используют ресурсы FTP вводя свои имя пользователя и пароль. Возможно ли настроить авторизацию на FTP так, чтобы подхватывались учетные данные залогинившегося пользователя, и автоматом осуществлялся вход на FTP?

    Ответить
    • itpro | 19.05.2016

      Приветствую!
      Как я помню, Windows IIS FTP сервер поддерживает Kerberos авторизацию. Могу, ошибаться. Попробуйте по аналогии со статьей настроить http://winitpro.ru/index.php/2016/05/18/nastrojka-kerberos-avtorizacii-na-sajte-iis/
      Если получится — поделитесь опытом

      Ответить
  10. Алексей | 09.06.2016

    Здравствуйте!
    Подскажите решение вопроса. Настроил всё по Вашей инструкции, всё работает идеально, но требуется иное решение изоляции, т.е. имеем три вида юзеров — 1 тип это админ «дороги» (права — чтение, запись, удаление на свою папку), 2 тип это юзер «дороги» (права — чтение, запись на свою папку), и третья учетка админ фтп (права — чтение, запись, удаление всего контента изолированных).
    Задача: Чтобы админ дороги и юзер дороги (всего админов и юзеров дорог 16) видели одну и туже папку (т.е. юзер1 при входе видит свою папку юзер1 с правами чтение, запись, и админ1 видит этуже папку юзер1 при входе, но права уже чтение, запись, удаление), а при входе под админ фтп видим все папки с правами чтение, запись, удаление.
    Прошу подсказать пути решения?

    Ответить
    • itpro | 10.06.2016

      Вам нужен режим User name physical directory (enable global virtual directories) , а разные права на каталоги нужно раздать нужным группам пользователей через разрешения NTFS

      Ответить
      • Алексей | 14.06.2016

        Спасибо за ответ, с правами понятно.
        Не понятно только, как изоляцию сделать
        т.е. …/LocalUser/User1
        …/LocalUser/User2

        …./LocalUser/User16
        Заходим под User1 видим свои папки с файлами, а вот заходим под Admin1 я тоже должен видеть только содержимое папки User1, и т.д. User2 видит своё и Admin2 видит только содержимое папки User2 и т.д.

        Ответить
        • itpro | 15.06.2016

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

          Ответить
  11. Михаил | 14.10.2016

    Добрый день настроил всё как у вас, но не могу менять права на папки через клиент filezilla

    Ответить
    • itpro | 17.10.2016

      У пользователя достаточно полномочий на сервере? Проверьте, подключившись по ftp под администратором.

      Ответить
Полные правила комментирования на сайте winitpro.ru. Вопросы, не связанные с содержимым статьи или ее обсуждением удаляются.

Сказать Спасибо! можно на этой странице или (еще лучше) поделиться с друзями ссылкой на понравившуюся статью в любимой социальной сети(специально для этого на сайте присуствуют кнопки популярных соц. сетей).

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

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



MAXCACHE: 0.3MB/0.00115 sec