Одним из основных недостатков протокола FTP для передачи файлов – отсутствие средств защиты и шифрования передаваемых данных. Имя и пароль пользователя при подключении к FTP серверу также передаются в открытом виде. Для передачи данных (особенно по публичным каналам связи) рекомендуется использовать более безопасные протоколы, такие как FTPS или SFTP. Рассмотрим, как настроить FTPS сервер на базе Windows Server 2012 R2.
Протокол FTPS (FTP over SSL/TLS, FTP+SSL) – является расширением стандартного протокола FTP, но соединение между клиентом и сервером защищается (шифруется) с помощью протоколов SSL /TLS. Как правило, для подключения используется тот же самый порт 21.
Поддержка FTP over SSL появилась в IIS 7.0 (Windows Server 2008). Для работы сервера FTPS, на веб сервере IIS понадобится установить SSL сертификат.
Установка роли FTP сервера
Установка роли FTP сервера на Windows Server 2012 проблем не вызывает и уже не раз описана.
Генерация и установка на IIS SSL сертификата
Затем открываем консоль IIS Manager, выбираем сервер и переходим в раздел Server Certificates.
Этот раздел позволяет импортировать сертификат, создать запрос на получение сертификата, обновить сертификат или создать самоподписанный сертификат. В целях демонстрации мы остановимся на самоподписанном сертфикате (его также можно создать с помощью командлета New-SelfSifgnedCertificate). При обращении к сервису будет появляться предупреждение о том, что сертификат выдан недоверенным CA, чтобы отключить это предупреждение для данного сертификата, его можно добавить в доверенные через GPO.
Выбираем Create Self-Signed Certificate.
В мастере создания сертификата указываем его имя и выбираем тип сертификата Web Hosting.
Самоподписанный сертификат должен появиться в списке доступных сертификатов. Срок действия сертификата – 1 год.
Создаём FTP сайт с поддержкой SSL
Далее нужно создать FTP сайт. В консоли IIS щелкаем ПКМ по узлу Sites и создаем новый FTP сайт (Add FTP).
Указываем имя и путь к корневому каталогу FTP сайта (у нас каталог по-умолчанию C:\inetpub\ftproot).
На следующем шаге мастера в разделе SSL сертификатов выбираем созданный нами сертификат.
Осталось выбрать тип аутентификации и права доступа пользователей.
На этом завершаем работу мастера. По умолчанию SSL защита является обязательной и используется для шифрования как команд управления так и и передаваемых данных.
FTPS и межсетевые экраны
При использовании протокола FTP используется 2 разных TCP соединения, по одному передаются команды, по другому данные. Для каждого канала данных открывается свой TCP порт, номер которого выбирается сервером или клиентом. Большинство файерволов позволяют инспектировать FTP трафик и, анализируя его, автоматически открывать нужные порты. При использовании защищенного FTPS передаваемые данные закрыты и не поддаются анализу, в результате межсетевой экран не может определить какой порт нужно открыть для передачи данных.
Чтобы не открывать снаружи к FTPS серверу весь диапазон TCP портов 1024-65535, можно принудительно указать FTP серверу диапазон используемых адресов. Диапазон указывается в настройках сайта IIS в разделе FTP Firewall Support.
После изменения диапазона портов нужно перезапустить сервис (iisreset).
Во встроенном файерволе Windows за входящий трафик будут отвечать правила:
- FTP Server (FTP Traffic-In)
- FTP Server Passive (FTP Passive Traffic-In)
- FTP Server Secure (FTP SSL Traffic-In)
Соответственно на внешнем межсетевом экране придется открыть порты 21, 990 и 50000-50100 (выбранный нами диапазон портов).
Тестирование подключения FTP over SSL
Для тестирования подключения по FTPS воспользуемся клиентом Filezilla.
- Запустите FileZilla (или любой другой клиент с поддержкой FTPS).
- Нажмите File > Site Manager, и создайте новое подключение (New Site).
- Укажите адрес FTPS сервера (Host), тип протокола (Require explicit FTP over TLS), имя пользователя (поле User) и требование требовать ввод пароля для авторизации (Ask for password)
- Нажимаем кнопку Connect и вводим пароль пользователя.
- Должно появиться предупреждение о недоверенном сертификате (при использовании самоподписанного сертификата). Подтверждаем соединение.
- Соединение должно установиться, а в журнале должны появиться строки:
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established. - Это означает, что безопасное соединение установлено, и вы можете передавать файлы по протоколу FTPS