Когда возникает необходимость обеспечить обмен данными с пользователями, не принадлежащими к вашей корпоративной сети, самым очевидным вариантом решения этой задачи является создание сервера FTP. Реализация FTP в предыдущих версиях Microsoft IIS не обеспечивала защиту учетных данных пользователя и передаваемой информации, что создавало значительный риск в отношении информационной безопасности при передаче по ненадежной сети. Служба FTP Publishing Service для IIS 7.0 содержит усовершенствованные функции, позволяющие снизить риск, связанный с использованием FTP. В частности, реализованы инкапсуляция (туннелирование) протокола FTP через SSL (протокол FTPS), независимость пользователей FTP и паролей от Windows и Active Directory (AD), что упрощает управление доступом к сайту, и регистрация в журналах более подробной информации о соединениях. В этой статье рассматривается применение FTP Publishing Service для IIS 7.0 для защиты сайтов FTP, а также настройка функции изоляции пользователей, которая ограничивает доступ пользователей на данном сайте FTP за пределы их домашних каталогов.

При подготовке выпуска Windows Server 2008 в сервер IIS было запланировано так много усовершенствований, в том числе и для FTP, что программисты Microsoft не смогли реализовать все функции к сроку выпуска производственной версии Server 2008. Поэтому включенная в Server 2008 версия FTP основана на FTP версии IIS 6.0. Однако теперь служба FTP Publishing Service для IIS 7.0 доступна в качестве дополнительного продукта, и ее можно загрузить по адресу http://www.iis.net/downloads/default.aspx? tabid=34&g=6&i=1619.

Приведенные в статье инструкции следует выполнять на автономном сервере Server 2008, не включенном в AD. Обратите внимание, что настройки по умолчанию для роли сервера IIS необходимо выполнить до установки FTP Publishing Service for IIS 7.0, причем устанавливать FTP с дистрибутивного диска Server 2008 не требуется. Если же FTP уже установлен с этого диска, то его надо удалить до запуска обновленной версии сервера FTP. Дополнительно для проверки, что все работает правильно, понадобится клиент FTP, поддерживающий протокол FTPS. Одним из лучших я считаю CuteFTP.

Настройка сайта FTP с поддержкой SSL

Поддержка протокола FTPS является главным усовершенствованием сервера FTP в IIS 7.0. Этот протокол позволяет обеспечить безопасность передачи учетных данных пользователей и/или информации через ненадежную сеть. При настройке протокола FTPS можно требовать обязательного использования SSL или же разрешить клиенту выбрать шифрование учетных данных и/или информации. Начнем с создания домашнего каталога и сертификата с собственной подписью нового сайта FTP.

В рабочей среде надо применить сертификат, выданный Server 2008, или независимым удостоверяющим центром сертификации Certification Authority (CA), так как самоподписанные сертификаты предназначены только для использования в тестовой среде. Чтобы создать сертификат, сначала следует зарегистрироваться на сервере в качестве администратора. После этого откройте Server Manager в меню Start и перейдите в контейнер Configuration, Local Users and Groups. Затем щелкните правой кнопкой на Groups и выберите New Group из контекстного меню. Назовите группу FTP Users и добавьте новую пользовательскую учетную запись (например, user1) к группе. Нажмите кнопку Create и закройте Server Manager.

Затем создайте новую папку ftpsite1 в c:inetpub. Щелкните по ней правой кнопкой мыши и выберите Properties («Свойства») из контекстного меню. Потом выделите вкладку Security и нажмите Edit. Нажмите Add, введите FTP Users в диалоговом окне Select Users or Groups и щелкните OK. Затем установите разрешения Allow, чтобы включить разрешение Modify, и нажмите OK.

Далее в меню Start выберите пункт Administrative Tools и запустите IIS Manager. В Microsoft Management Console (MMC) в левой панели Connections выделите ваш сервер, после чего в центральной панели в разделе IIS дважды нажмите Server Certificates, как показано на экране 1. В Actions нужно нажать Create Self-Signed Certificate. Дайте имя сертификату (например, FTP Cert) и нажмите Next. Под Server Certificates появится новый сертификат в центральной панели. В Connections разверните узел соединения для своего сервера, щелкните правой кнопкой на Sites и выделите Add FTP Site. Введите FTPSITE1 в качестве имени сайта и c:inetpubftpsite1 как путь к папке, которую создали, под Content Directory и нажмите Next. Теперь выделите ранее созданный сертификат FTP Cert из раскрывающегося меню внизу диалогового окна Binding and SSL Settings и нажмите Next. Потом выделите Basic в разделе Authentication в диалоговом окне Authentication and Authorization Information, выделите Specified roles or user groups из Allow access to. В пустой области под Allow access to введите имя созданной группы (ftp users). Отметьте параметры Read и Write, как показано на экране 2, и нажмите Finish.

Теперь раскройте папку Sites, расположенную под Connections. На экране будет отображен только что созданный сайт FTPSITE1. Выделите FTPSITE1 и дважды щелкните по FTP Settings в центральной панели. Под SSL Policy выделите Custom и нажмите Advanced. Диалоговое окно Advanced SSL Policy позволяет настроить, может ли клиент FTP управлять кодированием для каналов управления и информационных каналов. Канал управления отвечает за передачу пользовательских учетных данных. Для этого примера оставьте настройки по умолчанию и нажмите OK. Затем выделите FTPSITE1 в Sites и дважды щелкните по FTP Authentication. Далее выделите Basic Authentication в центральной панели и нажмите Enable в панели Actions справа.

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

Настройки CuteFTP при подключении к серверу по протоколу FTPS

На экране 3 показаны настройки в CuteFTP при  подключении к серверу по протоколу FTPS. CuteFTP можно загрузить с сайта http://www.cuteftp.com.

Настройка аутентификации для пользователей IIS

Часто возникает ситуация, когда пользователю требуется предоставить доступ к сайту FTP, но при этом нежелательно создавать для данного пользователя локальную учетную запись или учетную запись AD. Например, необходимо обеспечить доступ FTP деловому партнеру, которому не разрешен доступ к другим вашим системам. IIS 7.0 содержит новую функцию, позволяющую службе IIS Management Service создавать собственные учетные записи пользователей, которые не будут зависеть от Windows, но смогут авторизоваться на сайтах IIS и/или FTP.

Для этого необходимо, чтобы на сервере была заранее установлена служба IIS Management Service. Так что, если она еще не установлена, ее нужно добавить из Server Manager. Для этого зарегистрируйтесь с правами администратора и из меню Start откройте Server Manager. Потом нажмите Roles в Server Manager в левой панели и прокрутите список до Role Services. Если службы управления Management Service перечисляются как Not installed, нажмите Add Role Services. В диалоговом окне Role Services выделите Management Service в Management Tools. В появившемся диалоговом окне нужно нажать Add Required Features, щелкнуть Next в диалоговом окне Select Role Services и в последнем окне выбрать Install.

Список пользователей IIS Manager users применяется в основном для удаленного подключения к службе управления Management Service для администрирования IIS и FTP. Аутентификация пользователей IIS Manager на сайте FTP является вторичной функцией списка пользователей. Для настройки IIS Manager откройте IIS Manager из Administrative Tools в меню Start. Потом выделите свой сервер в Connections. В центральной панели поставьте галочку, чтобы включить параметр Enable remote connections, и выберите переключатель между параметрами Windows credentials или IIS Manager, как показано на экране 4. В разделе Connections из раскрывающегося меню SSL certificate нужно выбрать созданный ранее сертификат FTP Cert. Нажмите Apply в панели Actions и потом щелкните Start для запуска службы управления сервера IIS Management Service.

Теперь настроим сервер FTP на прием запросов пользователей IIS Manager. Для этого нужно развернуть узел Sites (он находится в разделе Connections окна IIS Manager) своего сервера и выделить FTPSITE1. Дважды нажмите FTP Authentication в центральной панели и потом Custom Providers («Настройка провайдеров») в разделе Actions. В диалоговом окне Custom Providers отметьте IisManagerAuth и нажмите OK. В результате IisManagerAuth теперь показывает в центральной панели статус Enabled («Разрешено»).

После настройки свойств соединения можно заняться правами и ролями пользователей в IIS Manager. Сначала выделите свой сервер в Connections, опуститесь до Management в центральной панели и дважды щелкните IIS Manager Users. Нажмите Add User в Actions. Введите имя пользователя (например, remoteuser) и пароль, и нажмите OK. Выделите FTPSITE1 в Connections и дважды нажмите IIS Manager Permissions в центральной панели. Нажмите Allow User в Actions. В диалоговом окне Allow User выделите IIS Manager и нажмите Select. Выберите remoteuser из списка и нажмите два раза OK. Выделите FTPSITE1 в Connections снова, но на этот раз дважды нажмите FTP Authorization Rules (FTP). Потом добавьте разрешающее правило Add Allow Rule в Actions. Выделите Specified Users в диалоговом окне Add Allow Authorization Rule и введите remoteuser в пустое окно. Под Permissions выделите Read and Write и нажмите OK. В центральной панели под FTP Authorization Rules появится созданное правило.

Далее установим разрешения файловой системы NTFS для папки FTPSITE1. Проводник IIS Manager работает с правами встроенной учетной записи Network Service для аутентификации пользователей IIS Manager на ресурсах. Поэтому требуется дать разрешение NTFS Modify для службы Network Service на папку FTPSITE1 и разрешение Read для файлов настройки IIS. Для выдачи этих разрешений NTFS откройте окно командной строки с правами администратора и выполните следующие четыре команды CACLS для добавления в ACL службы Network Service:

cacls "%systemdrive%windows system32inetsrvconfig"/g
"networkservice": r/e cacls "%systemdrive%windows system32inetsrvconfig redirection.config"/g
"networkservice": r/e cacls "%systemdrive%windows system32inetsrvconfig administration.config"/g
"networkservice": r/e cacls "%systemdrive%inetpubftpsite1" /g "network service": c/e

Наконец, запускаем клиент FTP и подключаемся к FTPSITE1 с учетной записью пользователя из IIS Manager (remoteuser) и назначенным паролем.

User Isolation

Функция User Isolation впервые была введена вместе с IIS 6.0 в Windows Server 2003. Она позволяет настроить один сайт FTP таким образом, чтобы пользователи могли работать только со своими страницами (каталогами). Каждому пользователю предоставляется его собственный каталог в корневом каталоге FTP, что позволяет обеспечить защиту данных пользователя от просмотра и перезаписывания другими пользователями, которые находятся выше в иерархии каталогов. Когда функция User Isolation включена, пользователи автоматически перенаправляются к своей папке при обращении к корневому адресу сайта FTP, поэтому все данные, загружаемые пользователями на сервер, будут записываться в их домашние каталоги.

Прежде чем включить User Isolation, необходимо создать или физический или виртуальный каталог для каждого пользователя (виртуальные пользовательские каталоги — новая функция в этой версии FTP). Для простоты организуем физический каталог для одного пользователя (user1) на сервере. С помощью проводника Windows Explorer создадим новую папку LocalUser в c:inetpubftpsite1. В папке LocalUser создадим папку user1. Затем из Administrative Tools откроем IIS Manager и выберем FTPSITE1. Дважды щелкнем FTP User Isolation в центральной панели. Выделим параметр User name directory (disable global virtual directories) и в панели Actions щелкнем Apply.

Применение пользовательских каталогов из User name directory является режимом по умолчанию в FTP 7.0. Этот режим позволяет задавать или физические, или виртуальные каталоги для папок с домашними страницами пользователей. Если необходимо обеспечить коллективный доступ к физической папке для многих пользователей в дополнение к их папкам с домашними страницами, то надо создать виртуальный каталог для каждого пользователя. Второй вариант, User name physical directory (enable global virtual directories), поддерживает только физические каталоги. Однако пользователи будут иметь доступ к глобальным виртуальным каталогам. На практике это означает следующее: если создается виртуальный каталог (например, общий Public) в корневом каталоге FTPSITE1, пользователи смогут «вырваться» из своей домашней страницы и получить доступ к папке, указав/Public в своем клиенте FTP. Если вы включаете отображение виртуальных папок каталога, то пользователи увидят ваш каталог Public и все другие глобальные виртуальные папки, подключаемые при регистрации к корневой папке. Это позволяет им не утруждать себя вводом имени папки. Для разрешения просмотра списка виртуальных папок каталога в панели Connections выделите FTPSITE1 и дважды нажмите FTP Directory Browsing в центральной панели. Под Directory Listing Options выделите Virtual directories и нажмите Apply в разделе Actions.

Теперь подключимся к сайту FTP, используя учетные данные пользователя user1. Загрузим файл и убедимся, что файл добавился к c:inetpubftpsite1localuseruser1, а не к корневому каталогу сайта. На экране 5 показан глобальный виртуальный каталог Public, указанный в корневой папке при регистрации пользователя user1. Для дополнительной безопасности настроим разрешения NTFS для папки user1, чтобы обеспечить локальный доступ только для нее. Если надо настроить изоляцию для пользователей домена, следует подставить LocalUser для папки с именем домена.

Регистрация событий

Служба FTP Publishing Service для IIS 7.0 позволяет вести журнал с более подробной детализацией, чем прежние версии FTP. Например, с учетом всего трафика FTP за сеанс. Для пользователей, зарегистрированных на сервере локально, отображаются более информативные сообщения об ошибках, например с объяснением, почему пользователь не может быть зарегистрирован, что может помочь при устранении ошибок. Благодаря Event Tracing for Windows (ETW) все сведения о неудачных сеансах и другие сообщения со статусом ошибки записываются в системный журнал безопасности Windows Security Event Log.

Безопасная передача важных данных

FTPS избавляет от беспокойства, связанного с безопасностью информации и учетных данных пользователей, увеличивает гибкость и обеспечивает поддержку аутентификации, используя учетные записи IIS Manager. Внешний IP-адрес и диапазон портов можно настроить на подключения в пассивном режиме в случае, если пользователям нужен доступ к серверу, который находится за брандмауэром Network Address Translation (NAT) с использованием FTPS, поскольку брандмауэры и маршрутизаторы на основе протокола FTP не могут проверить защищенный канал управления. Необходимо отметить, что теперь FTP поддерживает протокол IPv6, а анонимные подключения к сайтам FTP блокируются по умолчанию. Кроме того, как и в прежних реализациях FTP, имеется возможность ограничить доступ по IP-адресу или имени домена.

Рассел Смит (rms@russell-smith.net) — независимый ИТ-консультант, специализируется на управлении системами


Создание сертификата сервера с помощью IIS

Назначение разрешений Read и Write в диалоговом окне Authentication and Authorization Information

Настройка IISManager

Глобальный виртуальный каталог Public в корневом каталоге у user1