<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Публичное облако на базе VMware с управлением через vCloud Director
Вход / Регистрация

Что такое FTP?

Александр Бархатов
Александр Бархатов
Технический писатель
25 февраля 2025 г.
179
14 минут чтения
Средний рейтинг статьи: 1

В сфере информационных технологий существует множество способов передачи файлов. Одним из них является FTP — специальный протокол, созданный для обмена данными между устройствами. В этой статье мы разберем, как работает FTP, его основные особенности и альтернативные методы передачи файлов. 

Назначение и основные принципы

FTP относится к сетевым протоколам прикладного уровня и предназначен для обмена файлами через интернет или локальную сеть.

Протокол функционирует по модели «клиент-сервер», где обмен данными осуществляется с помощью специальных запросов.

Одна из ключевых особенностей FTP — многоканальность соединений. Обычно одно соединение служит для передачи управляющих команд, а другое — для пересылки файлов.

Ещё одна важная черта — отсутствие шифрования: все данные, включая учётные данные пользователей, передаются в открытом виде.

FTP является одним из старейших прикладных протоколов — его разработали еще в 1971 году. Официальное описание протокола можно найти в RFC 959.

Протокол применяется в таких ситуациях, как:

  • Передача файлов. Можно использовать для загрузки или скачивания больших файлов (изображений, видеозаписей, программ и прочего).

  • Управление файлами на сервере. Позволяет удаленно управлять файлами на сервере, перемещать их, переименовывать, удалять и т. д.

Обычно FTP используется в сочетании с программами-клиентами, такими как FileZilla или WinSCP, которые упрощают работу с протоколом.

Принцип работы

Для работы необходимо наличие FTP-сервера, который обрабатывает входящие запросы.

Основные этапы работы:

  1. Установка управляющего соединения. Клиент подключается к серверу и проходит аутентификацию (логин, пароль, либо анонимный доступ).

  2. Передача команд. Клиент отправляет запросы, например, на просмотр списка файлов или загрузку данных.

FTP работает в двух режимах — активный режим (Active Mode) и пассивный режим (Passive Mode).

Достоинства и недостатки FTP

Как и любой другой прикладной протокол, FTP обладает преимуществами и недостатками. Рассмотрим их.

Преимущества

  • Простота использования. FTP легко настраивается и не требует сложных конфигураций. Для работы со стороны клиента достаточно ввести IP-адрес сервера, логин и пароль.
  • Поддержка больших файлов. FTP позволяет передавать файлы любого размера. Также присутствует возможность возобновления загрузки после обрыва соединения.
  • Гибкость при работе с файлами и директориями. FTP позволяет создавать, удалять, переименовывать файлы и директории прямо на сервере прямо в процессе установления сессии, если у пользователя есть соответствующие права.
  • Поддержка безопасных расширений (FTPS, SFTP). Хотя классическая версия протокола не является безопасной, существуют расширения, которые обеспечивают шифрование данных.

Недостатки

  • Проблемы безопасности. Классическая версия протокола не шифрует данные. FTP также восприимчив к атакам типа Brute-force, MITM, DDoS. Для решения первой проблемы можно использовать FTPS или SFTP, а для второй — дополнительную защиту при помощи использования брандмауэров, программ наподобие fail2ban, а также встроенных функций FTP-сервера.
  • Отсутствие встроенной проверки целостности файлов. В классической версии протокола FTP не предусмотрен встроенный механизм для проверки файла на целостность. Это означает, что при передаче данных через FTP нет гарантии, что файл не был поврежден или изменен в процессе передачи.
  • Ограниченная поддержка современных технологий. FTP не поддерживает сжатие данных во время передачи, что может замедлить процесс загрузки и выгрузки файлов. Кроме того, в протоколе отсутствует встроенный функционал для работы с символическими ссылками.

Что такое FTP-сервер

FTP-сервер — это программное обеспечение, работающее на физическом или виртуальном сервере и обеспечивающее возможность хранения и передачи файлов. Он предоставляет клиентам доступ к файлам и позволяет управлять ими.

Основные функции FTP-сервера:

  • Передача файлов
  • Управление файлами
  • Управление доступом и безопасностью

Подключиться к FTP-серверу можно при помощи консольного клиента FTP (по умолчанию предустановлен в актуальных версиях Windows и Windows Server, а также в большинстве дистрибутивов Linux) или сторонней утилиты. Среди последних можно выделить lftp — консольный FTP-клиент с поддержкой множества протоколов (FTPS, HTTP, HTTPS, FISH SFTP) и расширенного функционала.

Получить доступ до FTP-сервера можно при помощи браузера. Однако часть браузеров (в частности Google Chrome, Microsoft Edge) полностью убрали поддержку FTP в связи с проблемами безопасности протокола. Но несмотря на существующие проблемы, Safari, Opera, Mozilla Firefox всё еще позволяют использовать протокол через браузер.

Также существуют программы с графическим интерфейсом. Среди таких программ можно выделить FileZilla, WinSCP и SmartFTP.

Популярные FTP-серверы

Чтобы организовать свой собственный FTP-сервер, можно воспользоваться одной из популярных программ: FileZilla Server, ProFTPD, vsftpd. Рассмотрим их более подробно.

FileZilla Server

FileZilla Server — это бесплатное программное обеспечение для организации FTP-сервера, разработанное в рамках проекта FileZilla.

Среди дополнительных функций можно выделить создание пользователей и групп, а также их гибкую настройку, включая настройку прав доступа к файлам и директориям. Все действия на сервере логируются, также присутствует встроенный мониторинг. Настройка и администрирование FileZilla Server осуществляется исключительно при помощи графического интерфейса, что отличает программу от других (преимущественно настраиваемых через интерфейс командной строки). Это делает ее удобной и доступной для широкого круга пользователей.

ProFTPD

ProFTPD (Professional FTP Daemon) — это мощный, гибкий и безопасный FTP-сервер для Linux-/Unix-систем. Он поддерживает протоколы FTP, FTPS и SFTP, а также предлагает гибкую настройку, интеграцию с MySQL/PostgreSQL и поддержку механизма Chroot для изоляции пользователей в их директориях. ProFTPD работает в нескольких режимах — Standalone и xinetd.

vsftpd

vsftpd — еще один популярный FTP-сервер для Linux/Unix. Он известен своей высокой производительностью, минимальным потреблением ресурсов и безопасностью. vsftpd использует строгие меры безопасности, такие как разделение привилегированных и непривилегированных процессов, поддержка Chroot, ограничение количества одновременных подключений и защита от брутфорс-атак.

Сравнительная таблица FTP-серверов

Для наглядного сравнения приведем характеристики рассмотренных решений в таблице:

 

FileZilla Server

ProFTPD

vsftpd

Стоимость

Бесплатно.
Существует платная версия FileZilla Server Pro с дополнительным функционалом

Бесплатно

Бесплатно

Поддерживаемые операционные системы

Windows, macOS, Linux

Linux/Unix

Linux/Unix

Наличие графического интерфейса (GUI)

Да

Нет

Нет

Поддерживаемые протоколы

FTP, FTPS (FTP over TLS), SFTP

FTP, FTPS (FTP over TLS), SFTP

FTP, FTPS

Настройка пользователей и групп

Присутствует

Присутствует

Присутствует

Шифрование и безопасность

Поддержка TLS для протокола FTPS.
Ограничение числа подключений.
Фильтрация IP-адресов.

Поддержка TLS для протокола FTPS.

Поддержка Chroot.

Поддержка TLS для протокола FTPS.

Поддержка Chroot.

Ограничение количества одновременных подключений.

Дополнительные возможности

Встроенный веб-интерфейс.

Поддержка облачных сервисов (только в платной версии): OneDrive, OneDrive for Business, SharePoint, OpenStack Swift and WebDAV.

Аутентификация пользователей с помощью СУБД (MySQL, PostgreSQL).

Встроенный мониторинг при помощи протоколов SNMPv1 и SNMPv2.

Поддержка многопоточной обработки.

Возможность создания виртуальных пользователей (без системных аккаунтов).

FTP-клиенты

Для подключения к FTP-серверу необходимо воспользоваться специальной программой — FTP-клиентом. Например, на скриншоте ниже представлен типичный сеанс использования стандартного ftp клиента в Ubuntu.

Image14

Однако для удобства использования существуют программы с графическим интерфейсом. FileZilla — одна из самых популярных программ, которая помимо стандартного протокола FTP также поддерживает FTPS и SFTP. FileZilla является кроссплатформенной программой.

Image26

Еще одной популярной программой с графическим интерфейсом для подключения к FTP является WinSCP. Особенностью WinSCP является поддержка протоколов SFTP и SCP поверх протоколов SSH-1 и SSH-2.

Image18

Создание FTP-сервера

Для создания своего FTP-сервера при помощи ProftPD или FileZilla Server нам понадобится следующее:

  • Один сервер или одна виртуальная машина с любым предустановленным дистрибутивом Linux. Мы будем использовать дистрибутив Ubuntu версии 22.04.

  • Один сервер или одна виртуальная машина с предустановленным дистрибутивом Windows. В данной статье мы будем использовать дистрибутив Windows Server 2022.

cloud

Создание облачного сервера

После того, как учетная запись была создана и активирована, можно арендовать облачный сервер

  1. Переходим на страницу авторизации и входим в аккаунт при помощи логина или адреса электронной почты и пароля или при помощи Passkey, ВКонтакте, GitHub, Google.
  2. После успешной авторизации отобразится панель управления текущего проекта. Переходим в раздел «Облачные серверы» и нажимаем «Создать» или «Добавить».
  3. Выбираем операционную систему, которая будет установлена на сервер. В нашем случае нам необходима Ubuntu версии 22.04.

Image16

  1. Выбираем регион, в котором будет находиться наш сервер. Выбирать рекомендуется тот регион, который ближе всего находится к вам физически. У каждого доступного региона справа вверху отображается ping, т.е. время, необходимое для передачи данных с вашего компьютера на сервер. Чем меньше указанное время, тем быстрее будет осуществляться передача данных.

Image27

  1. Далее выбираем необходимую конфигурацию для сервера. Так как в данной статье будет рассмотрена только установка и базовая настройка ProFTPD без реальной нагрузки, то для конфигурации сервера можно выбрать минимальную доступную конфигурацию, включающую в себя одноядерный процессор, 1 ГБ оперативной памяти и 15 ГБ места на NVMe-диске. В реальности вам необходимо выбирать именно ту конфигурацию, которая будет удовлетворять вашим потребностям при работе с FTP-сервером. Выбираем соответствующий тариф:

Image30

  1. Далее необходимо решить, будет ли сервер доступен из внешний сети или же только из приватной (частной) сети. Если не уверены в настройках, оставьте эти параметры без изменений.
  2. По желанию можно оформить дополнительные услуги, включая резервные копии и защиту от DDoS-атак (последняя доступна только в Санкт-Петербурге и в Москве).
  3. Также заранее можно загрузить SSH-ключ, чтобы не входить на север при помощи пароля.
  4. Можно задать необходимое имя для сервера которое будет отображаться в панели управления, а также выбрать проект.
  5. Для создания сервера необходимо нажать на кнопку «Заказать»:

Image1

Если на вашем аккаунте недостаточно средств, то будет выведено предупреждение о необходимости пополнить баланс. После оплаты и создания сервера откроется Дашборд сервера, где можно будет найти IP-адрес, логин и пароль для подключения.

FTP-сервер на Ubuntu на базе ProftPD

В этой главе мы развернем собственный FTP-сервер на Ubuntu при помощи программы ProFTPD.

Перед установкой и настройкой FTP-сервера создадим нового пользователя:

adduser alex

Переключаемся на него:

su alex

Далее в домашнем каталоге пользователя создадим тестовый файл и запишем в него фразу «This file was downloaded using FTP»:

echo "This file was downloaded using FTP" > file-from-ftp.txt
  1. Обновляем индекс репозиториев и устанавливаем пакет proftpd:
apt update && apt -y install proftpd
  1. Далее открываем на редактирование основной конфигурационный файл proftpd.conf при помощи любого текстового редактора:
nano /etc/proftpd/proftpd.conf

Нас интересуют следующие параметры:

  • ServerName — используется для задания имени FTP-сервера, которое будет отображаться клиентам при подключении.
  • DefaultRoot — ограничивает пользователей их домашними или указанными каталогами, запрещая им выходить за пределы этой директории (так называемый «chroot jail»).
  • UseIPv6 — включает или выключает использование протокола IPv6. В нашем случае мы отключим использование IPv6, так ка это ускоряет соединение к FTP-серверу.
  • UseReverseDNS — управляет использованием обратного DNS (reverse DNS lookup) для входящих подключений. При включенном UseReverseDNS, если DNS-сервер отвечает медленно или неправильно настроен, подключение может зависать на 10 секунд и более. Отключение ускоряет работу FTP-сервера.

Значения параметров будут следующими:

UseIPv6 off
ServerName "MyFTPServer!"
DefaultRoot ~
UseReverseDNS off

Image24

Сохраняем изменения и выходим из файла.

  1. Проверяем конфигурационный файл на наличие ошибок при помощи команды:
proftpd -t

Image9

Если ошибок нет, будет выведена фраза «Syntax check complete». При наличии ошибок вы увидите описание ошибки и номер строки. 

  1. Перезапускаем сервис proftpd и проверяем его статус:
systemctl restart proftpd.service && systemctl status proftpd.service

Image3

Если в статусе будет отображаться active (running), то proftpd успешно запущен и готов принимать соединения.

  1. Произведем подключение к FTP-серверу, например, с другого сервера или с клиентского компьютера. Воспользуемся вторым сервером с Ubuntu и стандартной клиентской утилитой ftp, введя в качестве FTP-адреса IP-адрес сервера:
ftp 147.45.254.179

Image13

Выведем список всех файлов, которые есть в домашнем каталоге пользователя alex:

Image21

Как можно увидеть на скриншоте выше, в домашнем каталоге пользователя находится только один файл file-from-ftp.txt, который был создан ранее.

  1. Скачаем файл себе на сервер:
get file-from-ftp.txt

Image31

Выводим содержимое файла при помощи команды cat:

Image22

  1. Теперь загрузим новый файл на FTP-сервер. Создаем файл:
touch uploaded-file.txt

Для загрузки файла подключаемся к FTP-серверу, проходим аутентификацию при помощи ранее созданного пользователя и используем команду put:

put uploaded-file.txt

Image2

При помощи команды ls на FTP-сервере проверяем, что файл был загружен:

Image29

Мы получили полноценный работающий FTP-сервер на Ubuntu.

FTP-сервер на Windows на базе FileZilla Server

Для развертывания FTP-сервера на ОС Windows воспользуемся FileZilla Server.

  1. Переходим на сайт проекта и скачиваем установочный файл для Windows:

Image25

Выбираем обычное издание:

Image6

  1. На этапе установочного процесса выбираем тип установки Full:

Image28

При желании можно выбрать тип запуска — вместе с загрузкой Windows (Install as service, started with Windows), используемый по умолчанию, или каждый раз запускать вручную (Install as service, start manually).

Также можно выбрать, из-под какой учетной записи будет запущен сервис FileZilla Server — под системной учетной записью (Run service under the SYSTEM Windows user account) или под другой, доступной в системе (Run service under a different Windows user account):

Image11

  1. Далее необходимо выбрать любой незанятой порт в диапазоне от 1025-65535 и задать пароль для администратора:

Image7

  1. После завершения установки откроется окно «Administration interface». Для подключения к FTP-серверу нажимаем на кнопку «Connect to Server»:

Image23

  1. Вводим IP-адрес хоста (127.0.0.1 или localhost), порт и пароль администратора, который был задан на этапе установки:

Image19

  1. Теперь создадим нового пользователя. В меню выбираем «Server»→ «Configure»:

Image4

  1. В открывшемся окне переходим в раздел «Rights management», далее в «Users». Создаем нового пользователя с именем newusr, нажав на кнопку «Add». Справа выбираем «Require a password to log in» и задаем пароль для пользователя:

Image10

  1. Также необходимо задать путь до директории пользователя, где будут располагаться файлы.

В FileZilla Server есть два понятия пути:

  • Virtual path (виртуальный путь) — это путь, который видит клиент FTP при подключении. Он абстрагирует реальное расположение файлов на сервере. Например, можно создать виртуальный путь /files, который будет ссылаться на реальную папку C:\FTP\Public, но клиент со своей стороны увидит только /files.
  • Native path (реальный путь) — это фактическое местоположение папки на сервере. Это путь в файловой системе, который соответствует виртуальному пути. Например, если виртуальный путь /backup указывает на D:\Backups, то D:\Backups — это и есть native path.

В качестве Virtual path зададим несуществующую директорию — /srv, а в Native path реальную — C:\newusr (предварительно ее необходимо создать):

Image15

  1. Также включим пассивный режим в разделе «Protocols settings» → «FTP and FTP over TLS (FTPs)» → «Passive mode»:

Image8

  1. В качестве теста создаем в ранее созданной директории файл с именем newusr-file:

Image20

  1. Подключаемся к FTP-серверу и видим наш файл:

Image5

Разверните FTP на собственном сервере

Заключение

Мы подробно рассмотрели протокол FTP и программы, которые можно использовать для организации собственного FTP-сервера. На сегодняшний день существуют более безопасные и функциональные альтернативы FTP, такие как FTPS и SFTP, которые решают основные недостатки оригинального протокола и могут быть использованы как в личных проектах, так и в коммерческой деятельности.

25 февраля 2025 г.
179
14 минут чтения
Средний рейтинг статьи: 1
Пока нет комментариев