FTPS (FTP Secure, FTP-SSL) — протокол передачи файлов, расширяющий классический FTP поддержкой криптографического шифрования через TLS. Без шифрования FTP передаёт пароли и данные в открытом виде — FTPS решает эту проблему, оборачивая соединение в TLS-туннель. Стандартизован в RFC 4217 (октябрь 2005 года).
Как работает
FTPS использует два канала, как и обычный FTP: командный (control channel) и канал данных (data channel). Командный канал передаёт инструкции (список файлов, удаление, переименование), канал данных — содержимое файлов. FTPS шифрует оба канала через TLS независимо.
Существуют два режима работы:
- Explicit FTPS (FTPS-E) — клиент подключается к стандартному порту FTP (21), затем отправляет команду
AUTH TLSдля инициации TLS-рукопожатия. До команды AUTH данные идут в открытом виде. После успешного handshake соединение шифруется. Это рекомендуемый режим согласно RFC 4217. - Implicit FTPS (FTPS-I) — клиент подключается сразу на порт 990 и TLS-рукопожатие происходит немедленно при установке соединения. Режим не стандартизован RFC 4217, считается устаревшим, но поддерживается большинством серверов и клиентов.
Канал данных в Explicit FTPS шифруется отдельной командой PROT P (Protected). По умолчанию после AUTH TLS командный канал зашифрован, а канал данных — нет (PROT C, Clear). Без PROT P содержимое файлов передаётся в открытом виде, что сводит защиту на нет. Серверы FileZilla Server, ProFTPD и vsftpd настраиваются на принудительное использование PROT P.
История
FTP создан в 1971 году (RFC 114) и к середине 1990-х стал стандартом передачи файлов в вебе. С ростом угроз перехвата трафика в 1997 году вышел RFC 2228, добавив расширения безопасности FTP с командой AUTH. На его основе в 2005 году RFC 4217 закрепил стандарт Securing FTP with TLS. Параллельно в 1990-х появился SFTP (SSH File Transfer Protocol) — принципиально иной протокол на базе SSH, не связанный с FTP. Сегодня оба конкурируют; SFTP проще в настройке через брандмауэр, FTPS совместим с legacy-инфраструктурой.
Виды FTPS
| Режим | Порт | Инициация TLS | Статус |
|---|---|---|---|
| Explicit FTPS | 21 | После команды AUTH TLS | RFC 4217, рекомендован |
| Implicit FTPS | 990 | Немедленно при подключении | Устаревший, но распространён |
На что обращать внимание
Основная сложность FTPS — работа с NAT и файрволами. В пассивном режиме (Passive FTP) сервер открывает случайный порт для канала данных — файрвол должен пропускать диапазон портов (обычно 10000–50000). FTPS-серверы требуют валидный SSL-сертификат; клиенты типа FileZilla по умолчанию проверяют его. Самоподписанные сертификаты работают, но требуют ручного подтверждения клиентом. Альтернативы: SFTP проще для брандмауэра (один порт 22), RSYNC over SSH — для синхронизации директорий.
Отличия от похожих понятий
FTPS и SFTP — разные протоколы. FTPS = FTP + TLS (RFC 4217). SFTP = SSH File Transfer Protocol (подсистема SSH, RFC draft). FTPS наследует многоканальную архитектуру FTP (командный + данные), SFTP работает через один зашифрованный SSH-канал. FTPS лучше подходит для интеграций с legacy-системами, поддерживающими FTP; SFTP предпочтительнее для новых проектов.