====== FTPS ======
===== Немного теории =====
[[ftp:ftps|FTPS]] -- расширение протокола FTP, функционально аналогичное https (для http) и включает полную поддержку TLS. Клиент запрашивает защищенную передачу данных у сервера и согласовывает шифрование. Если клиент не запросит защищенную передачу, FTPS сервер вправе как сохранить, так и закрыть незащищенное соединение.
Наш FTP-сервер поддерживает как "простой" FTP, так и FTPS. Поэтому при настройке FTP-клиента необходимо убедиться, что он будет запрашивать защищенное соединение
Этот вид конфигурации FTPS иногда называют **Явный или** **Explicit FTPS** (или **FTPES**), в противоположность [[https://tools.ietf.org/html/draft-murray-auth-ftp-ssl-07#appendix-A|устаревшему]] (но еще поддерживаемому некоторыми серверами и клиентами **Implicit FTPS**)
Наш FTP-сервер поддерживает только **Explicit FTPS** и **TLS 1.2/1.3**. Учитывайте это при настройке FTP-клиента
===== Использование в FileZilla =====
Проверьте, что на вкладке //**Общие**// в //**Менеджере Сайтов**// выбрано шифрование //**использовать явный FTP через TLS если доступно**//. Для того, чтобы всегда использовалось только защищенное соединение, можно выбрать //**требовать FTP через TLS (явный)**//:
{{gallery> fz-ftpes.png?300x300&lightbox}} \\ \\ \\ \\ \\ \\ \\ \\
При первом подключении //FileZilla// попросит проверить и принять сертификат сервера. В отличие от браузеров, //FileZilla// не проверяет наличие корневого сертификата в системе, вместо этого используя модель TOFU (Trust On First Use). На этом этапе имеет смысл сверить серийный номер (//**Детали/serial**//) и/или контрольную сумму сертификата.
{{gallery> fz-tofu.png?300x300&lightbox}}
Актуальный серийный номер нашего сертификата: **#@FTPS_SERIAL@#**\\
Контрольная сумма SHA-1: #@FTPS_SHA1@#
Чтобы этот диалог более не появлялся, отметьте опцию //**Always trust this certificate in future sessions**// (//**Всегда доверять этому сертификату в дальнейшем**//) \\ \\ \\ \\ \\
===== Альтернативный способ проверки =====
Выполнить команду \\
''$ openssl s_client -starttls ftp -connect #@OUR_DOMAIN@#:21 /dev/null | openssl x509 -fingerprint -noout -in /dev/stdin'' \\
...и проверить контрольную сумму: \\
''SHA1 Fingerprint=#@FTPS_SHA1@#''
===== Использование в файловых менеджерах =====
Большинство современных файловых менеджеров, исключая //Проводник Windows// поддерживают FTPS "из коробки". Достаточно ввести в адресной строке ''ftps:%%//%%**$USERNAME**@#@OUR_DOMAIN@#'' (где ''**$USERNAME**'' -- имя пользователя) и ввести пароль. Далее можно будет работать с файлами через FTPS так же, как с локальными. Вот так это выглядит в [[wp>Nemo_(file_manager)|Nemo]] (файловом менеджере среды рабочего стола Cinnamon):
{{gallery> ftps-nemo.png?300x300&lightbox}}
Рекомендуем добавить этот адрес в закладки файлового менеджера
===== Использование в lftp =====
Для принудительного FTPS в [[https://lftp.yar.ru/|lftp]] необходимо использовать следующие команды: ''**set ftp:ssl-force true; set ftps:initial-prot %%'%%P%%'%%;**''.\\
(Здесь и далее ''**жирным**'' выделены вводимые команды)
''$ **lftp #@OUR_DOMAIN@#**\\
lftp #@OUR_DOMAIN@#:~> **set ftp:ssl-force true;**\\
lftp #@OUR_DOMAIN@#:~> **set ftps:initial-prot %%'%%P%%'%%**;\\
lftp #@OUR_DOMAIN@#:~> **user megaseed**\\
Password:\\
lftp megaseed@#@OUR_DOMAIN@#:~> **ls**\\
-rw-r--r-- 1 megaseed seedbox 0 Mar 15 09:32 charset test - кириллица.txt''
{{section>:includes#lftp-tip}}
===== Достоинства и недостатки =====
* Так же, как и https, FTPS использует сертификаты [[wpru>X.509]], что позволяет (при наличии сертификата, подписанного CA) избежать уязвимостей типа [[wpru>Атака_посредника|MITM]].
* Если FTPS-сервер использует самоподписанные сертификаты и не публикует контрольных сумм своих ключей, то прямого и надежного способа проверить аутентификацию просто не существует.
* Особенность протокола FTP, предусматривающая использование раздельных каналов для управляющего соединения и передачи данных, может потребовать дополнительной настройки файервола как на стороне сервера, так и на стороне клиента -- особенно в случае FTPS, когда фaйервол не может логически объединить физические сессии управления и передачи данных.
* Ввиду долгой истории протокола FTP и разнообразия серверных и клиентских реализаций вопрос с согласованием кодировок между клиентом и сервером иногда приходится решать пользователю.
Наш FTP-сервер использует порт //21// как для "простого" FTP, так и для FTPS. Это сделано для удобства настройки и для совместимости со старыми версиями FTP-клиентов
-----
[[:ftp:SFTP|Читать далее: SFTP]]
{{section>:includes#gethelp}}