Все знают или должны знать что работа через протокол FTP увеличивает риски по перехвату передаваемых аутентификационных данных, т. к. отсутствуют какие-либо средства его защиты, т. е. Имеется реальная возможность перехвата логина и пароля на подключение. Чтобы защитить Ваш FTP сервер я бы порекомендовал настроить работу FTP через SSL или использовать связку FTP через SSH (SFTP). Ладно, ранее я показал и сам использую развернутый FTP сервис, как на Windows серверных системах, таких как Server 2008 R2 & Server 2012 R2 & Ubuntu Server. В самом последней системе я использую защиту, а вот как это сделать до сегодняшней заметки я не знал применительно к Windows системам, но задокумментировав все шаги по этому исправлению текущей ситуации я покажу Вам как это сделать.

В данной заметке все действия будут ориентированы на серверную систему Windows Server 2012 R2

Устанавливаем роль IIS (это будет версия: 8.5.9600.16384) с компонентами FTP см. предыдущую заметку, за исключение что для роли IIS потребуется поставить компоненты — я бы поставил все, дабы потом не искать чего не хватает. Но это мое мнение.

Win + X — Control Panel — Administrative Tools — Internet Information Service (IIS) Manager — SRV-HOST (SRV-HOST\Administrator) — Server Certificates, далее запускаю действия по созданию самоподписанного сертификата: Create Self-Signed Certificate

  • Specify a friendly name for the certificate: FTP over SSL
  • Select a certificate store for the new certificate: выбираю Web Hosting

Такими вот простыми действиями создается Ваш первый самоподписанный сертификат сроком на один год, как это проверить, он появился в элементе настройки Server Certificates

Для FTP сервиса создан самоподписанный сертификат на 1 годТеперь если вспомнить, когда создавали Ваш первый FTP ресурс не важно на базе Windows Server 2008 R2 или Server 2012 R2 в мастере присутствовала настройка выбора, как будет осуществляться защита ресурса, но т. к. у меня не было сертификата (я тогда даже не знал насколько просто создать свой собственный самоподписанный), я выбирал: SSL: No SSL, но теперь я смело указываю, что в роли защиты использовать:

Если FTP ресурс имеется: Sites — srv-host — FTP SSL Settings –

  • SSL Certificate: выбираю FTP over SSL
  • SSL Policy: Require SSL Connections

и нажимаю Apply

Если FTP ресурса нет, то на этапе настройки безопасности все шаги выше идентичны.

Когда настройки применены должна быть надпись: The changes have been successfully saved.

Теперь проверяю, когда кто-либо подключается к FTP ресурсу, то при обычном вводе параметров подключения: ftp:\\IP&DNS в ответ получает лишь:

C:\Users\Admin>ftp IP&DNS

Связь с IP&DNS.

220 Microsoft FTP Service

Пользователь (IP&DNS:(none)): ftpuser1

534 Policy requires SSL.

Сбой входа.

Ftp>

или через утилиту telnet пробуем подключиться к FTP сервису с Windows 7 рабочей станции:

C:\Users\Admin>telnet 10.7.8.177 21

220 Microsoft FTP Service

user ftpuser1

534 Policy requires SSL.

С текущей серверной части где развернут сервис FTP:

C:\Users\Administrator>ftp 10.7.8.177

Connected to 10.7.8.177.

220 Microsoft FTP Service

User (10.7.8.177:(none)): ftpuser1

534-Policy requires SSL.

Win32 error: Access is denied.

Error details: SSL policy requires SSL for control channel.

534 End

Login failed.

Если с помощью программы FileZilla (версия: 3.25.1) происходит подключение, параметры нового соединения следующие с рабочей станции под управлением Windows 7 Pro SP1:

Пуск — Все программы — FileZilla FTP Client — FileZilla — Файл — Менеджер сайтов — Новый сайт:

  • Хост: 10.7.8.177
  • Порт: ничего не указываем
  • Протокол: FTP — Протокол передачи файлов
  • Шифрование: Требовать FTP через TLS (явный)
  • Тип входа: нормальный
  • Пользователь: ftpuser1
  • Пароль: Aa1234567@!
  • После нажимаю Соединиться

Но мой клиент FileZilla отказывается подключаться, в ответ пишет:

Ошибка GnuTLS -48: Key usage vilation in certificate has been detected.

Невозможно подключиться к серверу

А чтобы подключить с Ubuntu Trusty Server через консоль командной строки:

ekzorchik@srv-mail:~$ ftp 10.7.8.177 21

Connected to 10.7.8.177.

220 Microsoft FTP Service

Name (10.7.8.177:ekzorchik): ftpuser1

331 Password required

Password:

230 User logged in.

Remote system type is Windows_NT.

ftp> ls

200 PORT command successful.

125 Data connection already open; Transfer starting.

03-24-17 04:44PM <DIR> dfdf

226 Transfer complete.

ftp> quit

221 Goodbye.

Как видно подключение происходит без проблем, это если в настройках FTP ресурса стоит политика SSL Policy в значении: Allow SSL Connections, а если выставить в Require SSL Connections, то как раз происходит уведомление, что требуется подтверждение использования сертификата:

ekzorchik@srv-mail:~$ ftp 10.7.8.177 21

Connected to 10.7.8.177.

220 Microsoft FTP Service

Name (10.7.8.177:ekzorchik): ftpuser1

534 Policy requires SSL.

Login failed.

Remote system type is Windows_NT.

Раз так, то значит мне нужен клиент ftp для работы с сертификатами, ставлю его:

ekzorchik@srv-mail:~$ sudo apt-get install ftp-ssl -y

На заметку: устанавливая пакет ftp-ssl удаляется пакет ftp, т. е. Если это обычный ftp то подключиться уже к нему будет нельзя.

ekzorchik@srv-mail:~$ ftp-ssl 10.7.8.177

Connected to 10.7.8.177.

220 Microsoft FTP Service

Name (10.7.8.177:ekzorchik): ftpuser1

234 AUTH command ok. Expecting TLS Negotiation.

[SSL Cipher ECDHE-RSA-AES256-SHA384]

331 Password required

Password:

230 User logged in.

Remote system type is Windows_NT.

ftp> ls

200 PORT command successful.

534 Policy requires SSL.

ftp> ls

200 PORT command successful.

534 Policy requires SSL.

ftp> mkdir 1

257 "1" directory created.

ftp> quit

221 Goodbye.

Подключение с Ubuntu системы прошло успешно.

Итого делаю вывод, что сервис настроенный на Windows с поддержкой самоподписанного сертификата работает, но вот подключиться к нему можно только с Linux системы, с рабочей станции при использовании пакета FileZilla не представляется возможным, почему-то пишет ошибку:

Ошибка GnuTLS -48: Key usage vilation in certificate has been detected.

Невозможно подключиться к серверу

Повторил еще раз данную заметку, если отключаю профили брандмауэера на Server 2012 R2 то могу подключиться с Ubuntu системы через утилиту ftp-ssl, а с Windows систем подключиться не могу. Бред. Нет не бред, это косяк клиента FileZilla самой последней версии (3.25.1) по другому я бы не сказал. Если поставить раннюю версию, к примеру: 3.2.7, то при подключении: File — Site Manager — New Site

вкладка: General

  • Host: 10.7.8.177
  • Servertype: FTPES — FTP over explicit TLS/SSL
  • Logontype: Normal
  • User: ftpuser1
  • Password: Aa1234567@!

нажимаю «Connect» и вот то окно которое должно сопровождать подключение свидетельствующее что FTP сервис защищен самоподписанным сертификатом и без него к нему нельзя будет подключиться.

Подключение к FTP только с помощью самоподписанного сертификатаНа этой информации по сертификату видна дата окончания (через 1 год) и тип шифрования. Для следующего подключения дабы данное окно о сертификате не показывалось следует отметить галочкой настройку: Always trust certificate in future sessions и нажать кнопку Ok

Вот теперь работает. А все проблемы были из-за клиента под Windows, в частности самого последнего клиента утилиты FileZilla, только почему так. А потому я бы все же развернул FTP сервер на Ubuntu системе проблем бы с подключением было бы на порядок меньше. Но не важно, мне же главное иметь представление, как и что нужно сделать дабы защитить подключение клиента и сервера от перехвата и посягательств. На этом я прощаюсь, заметка выполнена, с уважением автор блога Олло Александр aka ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru