Рассказываем про FTP-протокол и работу с ним в разных операционных системах.
Эта инструкция — часть курса «Как работают сетевые протоколы».
Смотреть весь курс
File Transfer Protocol, или протокол передачи файлов, — это протокол, относящийся к прикладному уровню и отвечающий за передачу данных между двумя системами. Как и протокол HTTP, он работает поверх протокола TCP. При передаче файлов FTP использует одновременно два TCP-канала: один из них отвечает за управление передачей данных, а второй — передает их.
Первоначально протокол FTP использовался как способ связи и обмена информацией между двумя физическими устройствами. Его могут использовать как компании, так и обычные пользователи для переноса данных с одной компьютерной системы на другую. Также протокол полезен в работе с веб-сайтами — для загрузки или выгрузки файлов с серверов.
Передача файлов FTP-протоколом между клиентом и сервером
FTP-соединение создается между клиентом и сервером, после чего они общаются друг с другом при помощи сети. Для этого пользователь может получить разрешение, предоставив учетные данные FTP-серверу, или использовать анонимный FTP.
Что такое протокол FTP и зачем он нужен.
При установлении FTP-соединения создаются два типа каналов связи, которые называются канал команд и канал данных.
Командный канал требуется для:
- передачи сообщений о тех или иных действиях
- ответов между клиентом и сервером (и наоборот).
Протокол FTP применяет тот же подход, что TELNET и SMTP, для связи посредством управляющего соединения. Для этого используется набор символов NVT ASCII. Общение осуществляется через порт 21.
Канал данных используется непосредственно для передачи информации и работает через порт 20.
FTP-клиент, применяя URL в качестве адреса (как и протоколы передачи гипертекста HTTP/S), посылает команду FTP и адрес клиента. После установки соединения пользователь выполняет авторизацию, вводя логин и пароль.
В зависимости от настроек сервера пользователь может получить к нему доступ без логина и пароля. Данная форма авторизации называется «Анонимный FTP». В таком случае на сервере заранее создана специальная учетная запись, которая разрешает авторизацию при любых данных, внесенных в поле пароля. После этого со стороны сервера выполняется проверка введенных данных и выдается разрешение/запрет на действия с данными. Клиент/Сервер обмениваются нужными файлами, после чего происходит выход из соединения.
Как выглядит FTP в графическом интерфейсе ОС
Для взаимодействия с удаленным сервером можно использовать либо командную строку (терминал), либо специализированные приложения. В Windows интерфейс выглядит следующим образом:
При работе через приложение взаимодействие с файлами становится гораздо проще благодаря понятности и удобства интерфейса. На скриншоте ниже — пример интерфейса приложения FileZilla:
Что такое FTP и как им пользоваться [FileZilla] Клиент!
Описание команд FTP для командной строки Windows и Linux
Эти команды помогут использовать протокол FTP через консольную строку без сторонних приложений.
! | Эта команда переключает вас между операционной системой и FTP. Вернувшись в операционную систему и набрав exit, вы вернетесь в командную строку FTP |
? | Открывает экран справки |
append | Добавляет текст в локальный файл |
cd | Изменяет удаленный рабочий каталог |
delete | Удаляет файл |
disconnect | Выход из FTP |
get | Получение файла с удаленного компьютера |
mdelete | Множественное удаление |
mdir | Перечисляет содержимое нескольких удаленных каталогов |
mget | Получение нескольких файлов |
mkdir | Создание каталога |
mls | Списки содержимого нескольких удаленных каталогов |
mput | Отправка нескольких файлов |
open | Открывает адрес |
put | Отправить один файл |
pwd | Печатает рабочий каталог |
quit | Выход из FTP |
recv | Получение файла |
Больше — по ссылке. Те же команды актуальны для работы в ОС Linux.
Какие сервисы лучше использовать для FTP-протокола
- FileZilla — это бесплатная FTP-утилита с открытым исходным кодом, которая дает пользователю возможность передавать файлы с локального компьютера на удаленный. FileZilla доступна в виде клиентской и серверной версий. Работает под ОС Windows, MacOS и Linux.
- WinSCP — это бесплатный SFTP-, WebDAV-, S3-, SCP- и FTP-клиент для Windows с открытым исходным кодом. Работает только на ОС Windows.
- Cyberduck — это FTP-клиент с бесплатными облачными возможностями и поддержкой систем Windows и Mac OS X. Cyberduck использует графический интерфейс пользователя (GUI) для предоставления доступа к файлам с серверов и для иного управления данными в различных местах, включая их редактирование и хранение.
- Transmit — это приложение для MacOS, позволяющее работать с FTP, SFTP и множеством других протоколов. Отличается удобным дизайном и высокой скоростью работы.
- CrossFTP — это приложение для ОС Windows, MacOS и Linux, поддерживающее множество протоколов, включая WebDav, SFTP, Amazon S3 и прочие.
- Nautilus — это менеджер файлов для ОС Linux, работающих на основе окружения Gnome. Основным его плюсом является то, что он уже встроен в систему. Позволяет работать с протоколами FTP(S), SMB, NFS, SSH и прочими.
- AndFTP — популярный FTP-клиент для ОС Android. Обладает несколько нагруженным интерфейсом, однако он дает пользователю те же функции, что и полноценные десктопные приложения.
- X-plore File Manager — это FTP-клиент для ОС Android, аналог AndFTP.
- FTP-manager — это FTP-клиент для iOS, позволяющий копировать, перемещать и удалять файлы между устройством и сервером. Плюсами данного приложения является возможность использовать многооконность на iPad, просматривать различные типы файлов на устройстве, а также вносить изменения в код через специальный редактор.
В чем назначение безопасного FTP-протокола
Изначально FTP не создавался с учетом требований безопасности. Считается, что это небезопасный протокол, поскольку для аутентификации он полагается на имя пользователя и пароль в открытом виде и не использует шифрование. А значит, отправляемые по FTP данные уязвимы для перехвата.
Однако существует несколько общих принципов, позволяющие обеспечить безопасное использование протокола, — FTPS и SFTP.
FTPS
FTPS, или FTP с использование Secure Socket Layer, — это метод, который позволяет выполнять шифрование соединения по требованию пользователя. FTPS был предложен в качестве альтернативы в RFC 2228.
FTPS был введен на серверах Windows, начиная с IIS 7.0. IIS, или Internet Information Services, — набор инструментов Windows, позволяющих развертывать web-сервер.
В IIS 7.0 FTPS-протокол был автономным дополнительным элементом и требовал отдельной загрузки. IIS 7.5 и каждая последующая версия имеют функциональность FTPS из «коробки». Следовательно, чтобы настроить безопасное FTP-соединение, необходимо установить только IIS Manager и/или FTP-сервис, который входит в пакет IIS.
Как работает FTPS
Как и FTP, FTPS работает по модели клиент-сервер, используя канал управления и канал передачи данных для обмена командами FTP и данными во время клиентского сеанса FTPS.
Сессия FTPS аутентифицируется при помощи логина, пароля и сертификата открытого ключа (аналогично тому, как работает HTTPS). Инструменты, такие как OpenSSL, позволяют запрашивать и создавать сертификат ключа. При соединении с сервером FTPS клиент сначала проверяет надежность сертификата сервера, после чего осуществляет подключение. Когда доверенный центр сертификации (CA) подписывает эти сертификаты, он гарантирует, что клиент подключен к надежному и безопасному серверу. Это помогает защититься от ряда атак, в том числе от атак посредника.
Сертификаты, не подписанные СА, которые известны как самозаверяющие сертификаты, могут побудить клиента FTPS создать уведомление о том, что сертификат не является подлинным. После этого пользователь может либо подтвердить действие и осуществить подключение или отклонить его.
FTPS (через SSL) использует сертификаты X.509 для аутентификации. Эти цифровые сертификаты содержат в себе открытый ключ шифрования и информацию о том, кто является его владельцем. Открытый ключ выполняет две основные функции: проверку подлинности и шифрование данных. Открытый ключ имеет связанный с ним закрытый ключ. Он находится отдельно от открытого ключа, и его главное предназначение — расшифровка сообщений, зашифрованных при помощи открытого ключа.
SFTP
Также для обеспечения безопасности соединения существует SFTP, или SSH (Secure Shell) FTP, — это протокол прикладного уровня модели OSI. Он является частью SSH и не относится к протоколу FTP напрямую. При его работе происходит шифрование данных при помощи SSH, установка соединения осуществляется через порт 22. Это отличает его от FTPS, который осуществляет открытие порта каждый раз при взаимодействии с файлом. Аутентификация может происходить как при помощи логина и пароля, так и при помощи SSH-ключа.
Как создать сетевой FTP-протокол для Windows
Шаг 1. Активация встроенного в ОС FTP-протокола
Для создания FTP-сервера на Windows потребуется выполнить несколько действий.
5. Программа пересылки файлов Ftp.
Перемещает копии файлов с одного узла Интернет на другой в соответствии с протоколом FTP (File Transfer Protocol — «протокол передачи файлов»). При этом не имеет значения, где эти узлы расположены и как соединены между собой. Компьютеры, на которых есть файлы для общего пользования, называются FTP-серверами. В Интернет имеется более 10 Терабайт бесплатных файлов и программ.
6. Программа удалённого доступа Telnet.
Позволяет входить в другую вычислительную систему, работающую в Интернет, с помощью протокола TELNET. Эта программа состоит из двух компонент: программы-клиента, которая выполняется на компьютере-клиенте, и программы-сервера, которая выполняется на компьютере-сервере.
Функции программы-клиента:
- установление соединения с сервером;
- приём от абонента входных данных, преобразование их к стандартному формату и отсылка серверу;
- приём от сервера результатов запроса в стандартном формате и переформатирование их в вид, удобный клиенту.
- ожидание запроса в стандартной форме;
- обслуживание этого запроса;
- отсылка результатов программе-клиенту.
Источник: studfile.net
Что такое FTP и зачем оно нужно
Когда интернет только зарождался, но уже были компьютерные сети, возникла потребность передавать файлы от одного компьютера к другому. В 1971 году каналы передачи данных были не такие надёжные (и не такие быстрые), как сейчас, поэтому нужен был инструмент, который поможет обмениваться документами друг с другом на расстоянии.
Основные требования были такие: простота работы и надёжность при отправке и получении. Таким инструментом стал FTP-протокол.
Принцип работы
FTP расшифровывается как File Transfer Protocol — протокол передачи файлов. Он отличается от других протоколов тем, что если в процессе передачи возникает какая-то ошибка, то процесс останавливается и выводится сообщение для пользователя. Если ошибок не было, значит, пользователь получил именно тот файл, который нужен, в целости и без недостающих элементов.
По FTP-протоколу можно скачивать что угодно: фильмы, музыку, документы, программы, драйверы и картинки. Сейчас многие производители железа выкладывают драйверы от устройств на FTP-серверы, чтобы их могли скачать все желающие.
В корпоративной среде FTP используется для организации локального хранилища внутренних документов и файлов для работы. Например, там могут храниться видеолекции или архивные сканы документов. Ещё FTP позволяет загружать свои файлы на сервер, чтобы их мог скачать любой желающий.
Программисты иногда используют такие серверы для обмена файлами и для бэкапов кода, хотя многие для этого предпочитают GIT. Про него ещё поговорим отдельно.
Клиент и сервер
Для работы по FTP нужны двое: FTP-сервер и FTP-клиент. Что делает сервер:
- обеспечивает доступ по логину и паролю к нужным файлам;
- показывает пользователю только те файлы и папки, которые он может просматривать или загружать в них;
- следит за качеством передачи и смотрит, чтобы не было ошибок;
- управляет параметрами соединения в пассивном режиме.
Так как FTP пришёл к нам из времён UNIX-систем, то любое соединение требует логина и пароля. Если у пользователя его нет, сервер его не пропустит. Но чтобы сделать файлы доступными для всех, используют анонимный режим. В нём логином будет слово anonymous, а паролем — любой адрес электронной почты. Современные браузеры умеют сами заходить на анонимные FTP-серверы и подставлять почту.
Со стороны это выглядит так, как будто никакого логина и пароля нет, но они есть.
Когда запускается FTP-сервер, ему говорят: «Уважаемый сервер, вот список файлов и папок, которые нужно показывать на сервере. Если к тебе постучится пользователь с таким-то логином и паролем, то покажи ему всё, а если с вот таким логином — то дай ему одну только эту папку. Анонимов не пускать». Ещё один обязательный параметр — адрес сервера и порт, по которому будет идти передача файлов.
Чтобы подключиться к серверу, нужна специальная программа, их ещё называют FTP-клиентами. Для каждой операционной системы есть много своих клиентов, например, FileZilla или CuteFTP. Те, кто работает в Linux-подобных системах, часто используют командную строку.
Такая схема работы часто используется в виртуальных хостингах, когда нужно получить доступ к содержимому сайта или изменить конфигурационные файлы.
В чем смысл вообще
Ну и казалось бы — что мешает передавать файлы, как обычно, через сайты по протоколу HTTP? Полно же сайтов и форумов, на которых лежат файлы, и их можно спокойно скачать.
А разница вот в чем:
- Для FTP не нужен сайт, то есть веб-интерфейс. Не нужно запускать веб-сервер, настраивать шаблоны вывода списка файлов и поднимать отдельную программу, которая будет нам отдавать эти файлы (типа Вордпресса). FTP — это как доступ к удаленной папке: ты сразу видишь файлы и можешь их качать, без посредников. А в вебе нужна какая-то программа, которая «нарисует» тебе файловую систему и поставит ссылки на файлы.
- В FTP уже реализованы вопросы авторизации и прав. А в вебе их нужно создавать: например, ставить тот же Вордпресс и к нему прикручивать плагины с системой доступа. Или настраивать Apache, генерировать ключи доступа, раскладывать конфигурационные файлы по папкам — это гораздо менее элегантно, чем настройка FTP.
- В FTP можно разрешить или запретить отдельным пользователям загружать файлы на FTP-сервер. В вебе загрузка файлов от пользователя на сервер — это на порядок более сложная задача.
Уязвимости и надёжность
Сам по себе FTP-протокол надёжен и гарантированно доставляет пользователю нужные файлы, если с соединением всё в порядке.
Проблема в том, что протокол изначально был незащищённый, и предполагалось, что канал передачи данных всегда надёжен. Поэтому в FTP всё передаётся в открытом виде: файлы, пароли, имена пользователей и любые данные.
Сейчас по умолчанию предполагается, что каждый канал — ненадёжный, и что данные нужно дополнительно шифровать. FTP этого не поддерживает. Если кто-то будет перехватывать ваш Wi-Fi-трафик или подключится к вашей локальной сети, то он сможет перехватить все эти данные и скачать их себе, параллельно с вами.
Ещё есть вопрос безопасности входа: по умолчанию у FTP-протокола нет защиты от подбора пароля и попыток входа, поэтому кто-то может просто перебрать доступные пароли, чтобы получить доступ к папкам. Если вы видели в фильмах про хакеров, как они там перебирают пароли при входе — это вполне вероятная ситуация для FTP.
С точки зрения современной безопасности правильным решением будет использовать одну из реализаций шифрованного FTP (FTPS, SFTP) или пользоваться FTP через VPN.
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Источник: thecode.media