Настройка FTP-сервера (Isolated Ftp Site) .
На этой страничке я рассажу о настройке микрософтовского FTP сервера, выступлю разоблачителем всякого рода горе-советчиков, которые пишут про LocalUser (микрософтовских саппортов, течнетов, многочисленных форумов и вопросов микрософтовской сертификации). А также я покажу как пользоваться общедоступными виндузовыми инструментами для решения распространенных виндузовых проблем, в том числе настройки FTP-сервера.
Конечно, вся настройка FTP заключается в изоляции пользователей друг от друга - в противном случае FTP-сервер (в котором одни юзера могут удалять файлы других юзеров) полностью теряет смысл. Поэтому первый вариант изоляции - это не использовать средства FTP-сервера для контроля доступа и разместить FTP-узел непосредственно в профиле пользователя:
Как возникает профиль пользователя например на Shared-хостинге - это отдельная тема. Я описал ее здесь - CreateUserProfile - создание профиля Win-пользователя. Для простейших домашних FTP-серверов проще всего просто залогинтся локально или терминалом в компьютер и положиться на то, что профиль создаст Winlogon. И он же распишет верно права на профиль, изолировав профиль от прочих пользователей.
Обычно настраивать FTP надо начинать самым простейшим образом - чтобы убедиться, что например на сервере и на фаерволе открыты все порты. Для диагностики проблем можно смотреть журнал C:\WINDOWS\system32\LogFiles и события в журнале системы. Для получения вот такой трассировки необходим WireShark.
Обратите внимание, что пароль в трассировке выше передается в открытом виде. Это происходит всегда, независимо от состояния верхней галки (вопреки предупреждению виндузни, которая ругается на нарушение безопасности только при снятии этой галки). Безопасной передачи пароля по FTP достичь нельзя вообще - пароль в открытом виде можно передавать даже в браузере (при отсутсвии FTP-клиента) - в формате FTP://login:password@ftpServer.ru. Безопасную передачу пароля возможно обеспечить только в протоколе WebDav. Однако сняв эту галку - вы сможете убедиться хотя бы, что логин и пароль в вашем клиенте введены правильно.
Еще один полезный отлажочный инструмент, в котором видны все настройки FTP, невидимые в стандартной оснастке - Metabase Explorer, который можно сгрузить в составе IIS 6.0 Resource Kit Tools:
Теперь рассмотрим режим изоляции пользователей средствами FTP-сервера. Для настройки этого режима хорошо бы убедиться сначала в том, что FTP работает нормально без изоляции - на сервере открыты порты, на клиенте введен правильный логин/пароль и т.д.
Для начала я введу в качестве каталога пользователя сервера с:\ftproot
В доступе к серверу будет отказано:
Для диагностики этой проблемы я применю тяжелую артилерию Windows - procmon. Для начала посмотрим номер процесса IIS - в моем случае это 1652:
Теперь установим фильтр - контролировать только процесс 1652:
И повторно тыкнемся в FTP. Невооруженным глазом видно - куда тыкается FTP и какого каталога ей не хватает. Помните, в начале странички я глумился над микрософтовскими "знатоками"? Они, пожалуй, даже не подозревают, что этот каталог не должен называться LocalUser - они просто копируют кем-то однажды распростаненную информацию. Опустив самое важное для настройки FTP - в каком случае этот каталог должен так называться.
Кстати, Наиболее любимый мною инструмент анализа - находится в этой утилите не на поверхности:
И на этом инструменте видно, что хотя некие паразитные тыкания InetInfo.exe и просиходят в папку localUser - но фактически FTP работает по каталоге ROS-MED (это мое локальное имя домена компьютера с FTP).
Эти запросы в папку LocalUser просиходят и из оснастки FTP - при входе в узел FTP она пустая.
При выборе здесь открыть - каталог выбирается правильно (ROS-MED\UT1), в вот при нажатии обзор - в узле FTP появляется несуществующая папка.
В таком виде это микрософтовское чудо (и наше горе) без изменения просуществовало более 10 лет. Пока недавно наконец-то у MS не появился новый FTP-сервер - Microsoft FTP Publishing Service 7.5 for IIS 7.0, ядро которого, впрочем, работает в той же логике. За исключением, пожалуй, того, что каждая учетная запись узла FTP изначально работает в отдельных доменах приложения.
Кроме того, не забудьте удалить наследование прав доступа с личного каталога пользователя.
И убрать ненужную галку - разрешить анонимные подключения:
И наконец, последний режим изоляции пользователей средствами FTP - изоляция ActiveDirectory
Это наиболее неудобный режим настройки. Достаточно сказать, что диалоговых окон вообще в виндузне не предусмотрено для настройки этого режима. Есть только утилита командной строки - IISFtp.VBS в C:\WINDOWS\system32. Что конкретно надо скормить этой утилите и в каком формате - догадаться невозможно даже после чтения всей микросовтовской чудо-документации. Поэтому и тут помогает только тяжелая артиллерия Windows:
Все дальнейшее тривиально - осталось только расписать NTFS-разрешения.
В следующей заметке я постараюсь найти время и описать как настроить WebDav-хостинг. А как поднять аналогичный FTP-сервер в Linux вы можете прочитать тут - Настройка HTTP и FTP-серверов в Linux (Apache/vsftpd)
|