FTP (File Transfer Protocol) — протокол передачи файлов, разработанный в 1971 году. Позволяет загружать и скачивать файлы между клиентом и сервером. В хостинге используется для управления файлами сайта, хотя сегодня вытесняется SFTP (SSH File Transfer Protocol).
Как работает
FTP использует два TCP-соединения: управляющее (порт 21) для команд и данные-соединение для передачи файлов. В пассивном режиме (PASV) сервер открывает произвольный порт для данных, клиент подключается к нему — работает через NAT и файерволы. В активном режиме (PORT) сервер сам подключается к клиенту — часто блокируется файерволами.
FTPS (FTP Secure) добавляет TLS-шифрование к стандартному FTP. SFTP — принципиально другой протокол поверх SSH, несмотря на схожее название. На современных серверах предпочтителен SFTP: шифрование, единственный порт 22, аутентификация по ключу.
История
FTP разработан Аббаем Томлинсоном в 1971 году для ARPANET — один из старейших протоколов интернета. RFC 959 (1985) — актуальная спецификация, используемая до сих пор. В 1990-х FTP стал стандартом для веб-хостинга: каждый аккаунт получал FTP-доступ для загрузки файлов сайта. В 2000-х SFTP начал вытеснять FTP благодаря SSH-безопасности. В 2020-х большинство современных хостингов предлагают SFTP, а некоторые отказались от FTP полностью из соображений безопасности.
Настройка vsftpd на Linux
# Установка
apt install vsftpd
# /etc/vsftpd.conf
listen=YES
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
# Открыть порты в UFW
ufw allow 21/tcp
ufw allow 40000:50000/tcp
systemctl enable --now vsftpd
Популярные FTP-клиенты
- Cyberduck — macOS/Windows, поддерживает FTP, SFTP, S3, WebDAV.
- FileZilla — кроссплатформенный, наиболее популярный FTP-клиент.
- WinSCP — Windows, специализируется на SFTP и SCP.
- lftp — консольный клиент Linux с поддержкой параллельной загрузки и зеркалирования.
FTP vs SFTP
| Критерий | FTP | SFTP |
|---|---|---|
| Шифрование | Нет (данные в открытом виде) | SSH-шифрование |
| Порты | 21 + диапазон для данных | 22 (единственный) |
| Аутентификация | Логин/пароль | Логин/пароль или SSH-ключ |
| Файервол | Сложно (два соединения) | Просто (один порт) |
На что обращать внимание
FTP передаёт логин, пароль и данные в открытом виде — MITM-атака позволяет перехватить credentials. Используйте FTPS или, предпочтительно, SFTP. Если FTP необходим для совместимости (устаревшее ПО), изолируйте UFW-правилами по IP и используйте chroot для ограничения пользователя своей директорией. Пассивный режим требует открытия диапазона портов на VPS — уменьшайте диапазон до минимума.
Безопасная замена FTP
SFTP через SSH — предпочтительная замена на современных серверах. Настройка chroot для SFTP-пользователей в /etc/ssh/sshd_config:
Match Group sftp-users
ChrootDirectory /var/www/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
Пользователи группы sftp-users видят только свою директорию /var/www/username и не имеют shell-доступа. Cyberduck, FileZilla и WinSCP поддерживают SFTP с аутентификацией по SSH-ключу — безопаснее пароля. Мониторинг SFTP-соединений: journalctl -u sshd логирует все сессии.