О протоколе FTP

В этой статье расскажем о FTP: как работает протокол, в чем его особенности и почему всё больше компаний отказываются от него.

Что таоке FTP

FTP (File Transfer Protocol — протокол передачи файлов) — это стандартный сетевой протокол, используемый для передачи файлов между клиентом и сервером по сети TCP/IP. Если говорить проще — это способ перемещения файлов между двумя компьютерами через интернет. Из-за отстутствия шифрования от этого протокола всё чаще откзываются компании, но кто-то до сих пор его использует.

Как работет FTP

Зайдем с метафоры. Представим, что FTP — почтовый ящик, куда мы можем положить письмо (файл), и другой человек может его оттуда взять.

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

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

  1. Командный канал (Control Channel) → отправляет команды с клиента на сервер и получает ответы. Этот канал остаётся открытым на протяжении всей FTP-сессии.

  2. Канал данных (Data Channel) → фактическая передача файлов между клиентом и сервером. Канал открывается и закрывается для каждой отдельной передачи данных.

Как проходит FTP-сессия

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

Этап Описание этапа

Установление соединения

Клиент использует специальную программу (FTP-клиента) для подключения к серверу FTP. Ему нужно знать адрес сервера (например, имя домена или IP-адрес сервера FTP), а также иметь имя пользователя и пароль (если требуется).

Аутентификация

Клиент предоставляет своё имя пользователя и пароль серверу. Если у сервера есть анонимный доступ, логин и пароль могут быть не нужны — клиент может войти анонимно.

Обмен командами

Эти команды могут включать запросы на получение списка файлов в папке, перемещение между папками, загрузку файлов на сервер или скачивание файлов с сервера.

Передача данных

Если клиент хочет загрузить или скачать файлы, открывается отдельное соединение для данных. Файлы передаются через это соединение.

Завершение сессии

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

Режимы работы FTP

Активный режим → когда хотим соединиться с сервером для отправки или получения файлов, мы сначала устанавливаем с ним связь. После этого сервер пытается соединиться с нашим компьютером, чтобы начать передавать файлы.

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

Чем плох FTP-протокол?

  1. Нет шифрования. И содержимое передаваемых файлов, и учетные данные пользователя передаются в незашифрованном виде. Это делает протокол уязвимым для сниффинга, брутфорса и атак типа MITM.

  2. Нет проверки целостности. Из-за этого файлы могут быть повреждены или изменены в процессе передачи. И ты даже этого не обнаружишь.

  3. Проблемы с брандмауэрами и NAT. Для установления соединения FTP использует несколько портов, и в режиме активного FTP клиент должен открывать порты для соединения, что может вызывать проблемы при работе через брандмауэры и NAT.

  4. Нет управления версиями. FTP не имеет встроенных средств для управления версиями файлов или для отслеживания их изменений.

  5. Сложность. Настройка FTP-серверов может быть сложной, особенно с учётом необходимости настройки брандмауэров и NAT.

Last updated