Определение простыми словами
Обычный 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 — это рекомендуемый подход.