Все знают или должны знать что работа через протокол 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 ресурс не важно на базе 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 сервис защищен самоподписанным сертификатом и без него к нему нельзя будет подключиться.
На этой информации по сертификату видна дата окончания (через 1 год) и тип шифрования. Для следующего подключения дабы данное окно о сертификате не показывалось следует отметить галочкой настройку: Always trust certificate in future sessions и нажать кнопку Ok
Вот теперь работает. А все проблемы были из-за клиента под Windows, в частности самого последнего клиента утилиты FileZilla, только почему так. А потому я бы все же развернул FTP сервер на Ubuntu системе проблем бы с подключением было бы на порядок меньше. Но не важно, мне же главное иметь представление, как и что нужно сделать дабы защитить подключение клиента и сервера от перехвата и посягательств. На этом я прощаюсь, заметка выполнена, с уважением автор блога Олло Александр aka ekzorchik.