FTPS — FTP over TLS, отличие от SFTP, настройка | Глоссарий | Глоссарий FREEHOSTING

FTPS

FTP over TLS
FTPS — Расширение классического FTP, добавляющее шифрование TLS/SSL. Поддерживает явный (Explicit, FTPES) и неявный (Implicit) режимы. Не путать с SFTP — это другой протокол на основе SSH.

Определение простыми словами

Обычный FTP передаёт логин, пароль и файлы открытым текстом — любой узел между клиентом и сервером (Wi-Fi-точка в кафе, провайдер, прокси) может перехватить учётные данные. FTPS решает проблему, оборачивая FTP-команды и данные в TLS — тот же стандарт, что используется в HTTPS. При этом архитектура классического FTP с двумя соединениями (управляющим на 21 порту и отдельным каналом для данных) сохраняется, что создаёт сложности с NAT и фаерволами.

Существуют два режима. Явный (FTPES) работает на стандартном 21 порту: клиент подключается без шифрования, шлёт команду AUTH TLS, и только после её принятия канал переходит в шифрованный режим. Неявный (Implicit) требует TLS с самого первого пакета, обычно на порту 990. Современные клиенты и серверы поддерживают оба режима, но Implicit считается устаревшим и не рекомендуется к использованию.

Сравнение (таблица)

Параметр FTPS SFTP FTP
Базовый протокол FTP + TLS SSH FTP
Порты 21 (Explicit), 990 (Implicit) + диапазон для данных 22 21 + диапазон
Шифрование TLS 1.2/1.3 SSH-шифры Нет
Авторизация Логин/пароль, клиентские сертификаты Пароль, ключи SSH Логин/пароль открытым текстом
Прохождение NAT Сложно (passive mode + диапазон портов) Просто, один порт Сложно
Поддержка в клиентах FileZilla, WinSCP, Cyberduck Везде, включая Putty/Termius Везде

Кейсы использования

  • Загрузка файлов на хостинг провайдера, который требует FTPS вместо открытого FTP — частый сценарий на shared-хостингах.
  • Передача отчётов в банковские и платёжные шлюзы по требованиям комплаенса.
  • Резервные копии сайтов с веб-сервера на отдельный FTPS-storage с retention.
  • Совместимость со старыми ERP, бухгалтерскими и медицинскими системами, где SFTP не поддерживается.
  • Негативный сценарий: использовать FTPS за NAT с маленьким диапазоном passive-портов или за корпоративным фаерволом, который инспектирует FTP-трафик. Активное соединение TLS не позволяет фаерволу видеть команды PORT/PASV, что ломает открытие data-канала. Если есть выбор — берите SFTP: один порт, без проблем с NAT.

Технические детали

# Установка vsftpd и настройка FTPS
sudo apt install vsftpd
sudo openssl req -x509 -nodes -days 730 -newkey rsa:2048 
  -keyout /etc/ssl/private/vsftpd.key 
  -out /etc/ssl/certs/vsftpd.crt

# Минимальный конфиг /etc/vsftpd.conf
cat <<EOF | sudo tee -a /etc/vsftpd.conf
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
EOF

sudo systemctl restart vsftpd

# Открыть порты в фаерволе
sudo ufw allow 21/tcp
sudo ufw allow 40000:40100/tcp

# Тест подключения через lftp в Explicit-режиме
lftp -u user,pass ftp://server.example.com
set ftp:ssl-force true
set ftp:ssl-protect-data true
ls

Открывайте только узкий диапазон passive-портов и пробрасывайте его в NAT — тогда работа за роутером становится предсказуемой. Используйте только TLS 1.2 и 1.3, отключайте SSLv2/SSLv3 и слабые шифры.

Частые вопросы

FTPS и SFTP — одно и то же?

Нет, это разные протоколы. FTPS — это FTP, обёрнутый в TLS, со всей наследственной проблемой двух соединений. SFTP — это файловый канал поверх SSH, использует один порт 22 и легко проходит через NAT и фаерволы.

Что выбрать для нового проекта — FTPS или SFTP?

SFTP в подавляющем большинстве случаев. Один порт, ключевая аутентификация, нет проблем с пассивным режимом. FTPS оправдан только при работе со старыми системами, которые SFTP не понимают.

Безопасен ли Implicit FTPS на порту 990?

Технически безопасен, но устарел и не упомянут в RFC 4217. Используйте Explicit FTPS на стандартном порту 21 — это рекомендуемый подход.