sonyps4.ru

FTP - это что такое и как с ним работать? Примеры сетевых файловых служб: FTP и NFS.

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

Что такое FTP?

Как вы, наверное, знаете, существуют различные протоколы для передачи данных через интернет и другие сети. Каждый раз, когда вы набираете адрес сайта в адресной строке браузера, к нему автоматически добавляется спереди «http://». Это обозначение протокола HTTP (HyperText Transfer Protocol – протокол передачи гипертекста). Этот протокол используется для передачи пользователю от сервера HTML-страниц и связанных с ними элементов (графики, флэш-роликов, скриптов и т.д. и т.п.). По нему же часто передаются и файлы, которые пользователь скачивает на свой компьютер.

Но сейчас речь не о нём, а о другом протоколе – он, как вы можете увидеть из заголовка, называется FTP. Расшифровывается эта аббревиатура как File Transfer Protocol – протокол передачи файлов. Возникает вполне логичный вопрос: если мы только что говорили, что с помощью HTTP пользователь может скачать файл с сервера себе на компьютер, зачем понадобился ещё один протокол для передачи файлов?

Дело в том, что HTTP изначально предназначался только для передачи гипертекста, и загрузка файлов со стороны пользователя на сервер требует дополнительных телодвижений со стороны создателя Web-страниц. FTP же изначально позволяет передавать файлы в обоих направлениях, поддерживает передачу непосредственно между двумя серверами, а также даёт пользователю возможность работать с файлами, расположенными на сервере, почти точно так же, как и с теми, которые находятся на его собственном компьютере.

Несмотря на то, что название этой программы похоже на слово Mozilla, разработчики популярного браузера и почтового клиента не имеют к ней никакого отношения. Тем не менее, набор возможностей пользователям предлагается ничуть не хуже, чем если бы этот программный продукт разрабатывался специалистами из Mozilla.

Во-первых, FileZilla поддерживает защищённое соединение через безопасные шифруемые протоколы SSL и SFTP, что весьма немаловажно в наше время. При этом имеется поддержка скачки и закачки файлов, имеющих размер более 4 Гб, а также встроенный менеджер сайтов. Программа умеет работать под разными операционными системами и имеет специальную портативную версию, которую можно носить с собой на «флэшке» и запускать без установки. Дополняет картину многоязычный интерфейс программы , причём среди языков есть и русский.

Итого

Что ж, как видите, в работе с протоколом FTP никаких особых сложностей не наблюдается. Большинство пользователей вполне могут обойтись «Проводником» Windows или своим любимым браузером, ну а те, кто хочет чего-то большего, смогут не тратить деньги на дорогие специализированные программы и не заниматься их взломом, а воспользоваться бесплатными решениями, ничем не уступающим в качестве коммерческим. Успехов вам в «общении» с FTP-серверами!

FTP (File Transfer Protocol протокол передачи файлов) — стандартный протокол, предназначенный для передачи файлов по TCP-сетям, построенный на архитектуре «клиент-сервер» и использующий разные сетевые соединения для передачи команд и данных между клиентом и сервером.

Сервер предоставляет клиенту доступ к данным (обычно это файлы и каталоги) клиенту либо анонимно, либо после аутентификации, при которой логин и пароль передаются открытым текстом. Можно использовать протокол SSH для шифрования логина, пароля и передаваемых данных.

Протокол достаточно простой, для его работы используются различные TCP соединения для команд и для передаваемых данных. Обычно это 21 порт для управляющих команд и 20 для передачи данных (в прочем это может быть и по другому). После установки TCP соединения на 21 порт общение FTP клиента с сервером происходит по средствам достаточно простых текстовых команд .

В соответствии с RFC 959 Сервер по потоку управления (21 порт) отвечает трехзначными ASCII-кодами состояния с необязательным текстовым сообщением.

Существует 2 режима работы протокола FTP: активный и пассивный.

В активном режиме клиент создаёт управляющее TCP-соединение с сервером на 21 порту и отправляет серверу свой IP-адрес и произвольный номер клиентского порта, после чего ждёт, пока сервер не запустит TCP-соединение с этим адресом и номером порта.

В пассивном режиме клиент использует поток управления (TCP порт 21), чтобы послать серверу команду PASV, и затем получает от сервера его IP-адрес и номер порта, которые затем используются клиентом для открытия потока данных с произвольного клиентского порта к полученному адресу и порту.

Знание режимов работы FTP помогает, если вам нужно подключаться к FTP серверу или поднимать его в сети, которая спрятана за NAT и\или защищена брендмауэром, что как можно догадаться не редкость. Если клиент не может принимать входящие соединения на произвольный порт, то необходимо настроить сервер в пассивном режиме, тогда входящие соединения к клиенту не потребуются, но сервер же должен быть готов принять входящее соединение на заранее установленные порты. Активный режим подойдет серверу, администратор которого не готов принимать входящие соединения на порты кроме 21, но в этом случае клиент сможет подключится только если сам примет входящие соединение. Так что в любом случае придется кому то открыть дополнительные порты.

При передачи могут быть использованы четыре представления данных:

    ASCII — используется для текста.

    Режим изображения (бинарный) — устройство-отправитель посылает каждый файл байт за байтом, а получатель сохраняет поток байтов при получении.

    EBCDIC — используется для передачи обычного текста между хостами в кодировке EBCDIC.

    Локальный режим — позволяет двум компьютерам с идентичными установками посылать данные в собственном формате без конвертации в ASCII.

Передача данных может осуществляться в любом из трёх режимов:

    Поточный режим — данные посылаются в виде непрерывного потока, освобождая FTP от выполнения какой бы то ни было обработки.

    Блочный режим — FTP разбивает данные на несколько блоков (блок заголовка, количество байт, поле данных) и затем передаёт их TCP.

    Режим сжатия — данные сжимаются единым алгоритмом.

FTP использует для аутентификации логин и пароль для предоставления доступа. Имя пользователя посылается серверу командой USER, а пароль — командой PASS. Если предоставленная клиентом информация принята сервером, то сервер отправит клиенту приглашение и начинается сессия. Логин и пароль передаются открытым текстом, так что безопасным этот способ назвать нельзя. Так же FTP сервер может предоставлять анонимный доступ к данным, то есть для всех желающих, не спрашивая логин и пароль.
Существуют расширения и способы для безопасной передачи данных и аутентификации, например: FTPS SFTP FTP через SSH.

Приведу пример FTP сессии со своими комментариями. Тут показан вывод команд (только в управляющем канале, естественно) которые FTP клиент передавал серверу и ответы сервера без сокращений (звездочками заменю некоторые параметры, например пароль из соображений безопасности):

Status: - это сообщение FTP клиента, при обмене командами с FTP "вручную" вы этих сообщений не увидите. Response: - это ответы FTP сервера Command: - это те команды которые клиент отправляет серверу (в ручном режиме вы будете вводить их с клавиатуры).

S tatus: Connecting to 37.140.*.* ...
Status: Connected with 37.140.*.*. Waiting for welcome message...
Response: 220 (vsFTPd 2.2.2) - итак, стучимся на 21 порт 37.140.*.* и нам говорят что там трудится vsFTPd
Command: USER ********* - посылаем имя пользователя
Response: 331 Please specify the password. - имя пользователя принято
Command: PASS ******** - посылаем пароль
Response: 230 Login successful. -пароль принят
Command: SYST - "и какая у вас ОС?" спросим мы
Response: 215 UNIX Type: L8 - "а вот такая" ответит сервер
Command: FEAT - что ты можешь, сервер?
Response: 211-Features: - а вот что:)
Response: EPRT
<... Не будем оглашать весь список...>
Response: UTF8
Response: 211 End - сервер закончил перечислять функции
Command: OPTS UTF8 ON - говори с нами в кодировке UTF-8
Response: 200 Always in UTF8 mode. - да не вопрос
Status: Connected - Это мы оживляем соединение
Command: PWD - покажи нам рабочий каталог
Response: 257 "/" - на! это название рабочего каталога (у нас /)
Command: TYPE A - но сначала зададим режим представления данных
- ок
Command: PASV - и попросимся в пассивный режим
Response: 227 Entering Passive Mode (37,140,192,202,249,140). - получили список портов
Command: LIST - отдай список содержимого каталога

- в этом месте мы получили оглавление по каналу данных
Command: TYPE A
Response: 200 Switching to ASCII mode.
Status: Retrieving directory listing...
Command: CWD www - меняем рабочий каталог на www
Response: 250 Directory successfully changed. -ответ "ок"
Command: PWD - снова запрашиваем рабочий каталог
Response: 257 "/www" - теперь он /www
Command: TYPE A - и выбрав режим представления данных
Response: 200 Switching to ASCII mode.
Command: PASV - опять в пассивном режиме
Response: 227 Entering Passive Mode (37,140,192,202,252,174).
Command: LIST - запрашиваем оглавление каталога
Response: 150 Here comes the directory listing.
Response: 226 Directory send OK.
Status: Directory listing successful -оглавление мы получили и теперь
Status: Starting download of /www/google8f2c0456e362dfaa.html - хотим скачать файл
Command: TYPE A - для этого опять выберем тип
Response: 200 Switching to ASCII mode.
Command: PASV - и режим передачи данных
Response: 227 Entering Passive Mode (37,140,192,202,254,190).
Command: RETR google8f2c0456e362dfaa.html - и скажем: "Отдай на файл"
Response: 150 Opening BINARY mode data connection for google8f2c0456e362dfaa.html (53 bytes).
Response: 226 Transfer complete. - и вот файл был получен по каналу данных
Status: Download successful
Status: Retrieving directory listing...
<... Пропустим некоторые повторяющиеся действия...>
Command: MKD fff - а вот тут мы создали папку
Response: 257 "/www/moop-nz.ru/02-uslugi/fff" created
Command: RNFR /www/moop-nz.ru/02-uslugi/fff - и хотим переименовать папку fff
Response: 350 Ready for RNTO.
Command: RNTO /www/moop-nz.ru/02-uslugi/eee - в папку eee
Response: 250 Rename successful. - операция прошла успешно
<... Пропустим некоторые повторяющиеся действия...>
Command: RMD /www/moop-nz.ru/02-uslugi/eee/ - удаляем ранее созданную папку
Response: 250 Remove directory operation successful. - всё получилось
Status: Connected
Status: Starting upload of C:\12345\12345 001.jpg - начинаем загружать файл на сервер
<... Пропустим некоторые повторяющиеся действия...>
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PASV
Response: 227 Entering Passive Mode (37,140,192,202,243,234).
Command: STOR 12345 001.jpg - на этот раз отправляем файл на сервер
Response: 150 Ok to send data.
Response: 226 Transfer complete.
Status: Upload successful
Status: Retrieving directory listing...
Command: TYPE A
Response: 200 Switching to ASCII mode.
Command: PASV
Response: 227 Entering Passive Mode (37,140,192,202,251,25).
Command: LIST
Response: 150 Here comes the directory listing.
Response: 226 Directory send OK.
Status: Directory listing successful
Command: DELE /www/moop-nz.ru/02-uslugi/12345 001.jpg - и удаляем его напоследок
Response: 250 Delete operation successful.

Много создали люди FTP серверов и клиентов (как никак с 1971 живет протокол).

Есть специальные программы работающие в качестве FTP клиента, такие как: FileZilla, gFTP, cURL, lftp и многие другие, но сейчас в качестве FTP клиента может работать почти любой браузер (Mozilla Firefox, Konqueror, Opera, Яндекс.Браузер, Google Chrome, Internet Explorer и т.д.) или файловый менеджер (Midnight Commander, Krusader, GNOME Commander, Konqueror, Nautilus, Dolphin, FAR Manager, Total Commander, Проводник Windows и т. д.), так что в использовании специальных программ нет необходимости (хотя я пользуюсь иногда gFTP).

Для того чтобы поднять свой FTP сервер с преферансом и аутентификацией понадобится специальная программа, которая будет исполнять роль сервера. Таких программ тоже много, в том числе: vsftpd, ProFTPD, Pure-FTPd, glFTPd, oftpd, Serv-U File Server и многие другие.

Кажется в общих чертах понятно, что такое FTP и для чего оно нужно.

  • Назад
  • Вперёд
  • Телеметрия в Windows 10. Отключай, не отключай, всё равно получишь лучшее решение
  • Го. Компьютер смог обыграть чемпиона трехкратного чемпиона Европы по игре го
  • Новые "подарки" от Microsoft - "стабильность" и "приватность"

    Всемирно известная корпароция вновь порадовала нас новостями: После выхода очередного патча, встроенный инструмент для шифрования Bitlocker перестал работать, а Microsoft не в силах...

FTP (англ. File Transfer Protocol - протокол передачи файлов) - стандартный протокол, предназначенный для передачи файлов по TCP-сетям (например, Интернет). FTP часто используется для загрузки сетевых страниц и других документов с частного устройства разработки на открытые сервера хостинга.

Протокол построен на архитектуре "клиент-сервер" и использует разные сетевые соединения для передачи команд и данных между клиентом и сервером. Пользователи FTP могут пройти аутентификацию, передавая логин и пароль открытым текстом, или же, если это разрешено на сервере, они могут подключиться анонимно. Можно использовать протокол SSH для безопасной передачи, скрывающей (шифрующей) логин и пароль, а также шифрующей содержимое.

Достаточно яркая особенность протокола FTP в том, что он использует множественное (как минимум - двойное) подключение. При этом один канал является управляющим, через который поступают команды серверу и возвращаются его ответы (обычно через TCP-порт 21), а через остальные происходит собственно передача данных, по одному каналу на каждую передачу. Поэтому в рамках одной сессии по протоколу FTP можно передавать одновременно несколько файлов, причём в обоих направлениях. Для каждого канала данных открывается свой TCP порт, номер которого выбирается либо сервером, либо клиентом, в зависимости от режима передачи.

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

Начиная работу через протокол FTP, клиент входит в сессию, и все операции проводятся в рамках этой сессии (проще говоря, сервер помнит текущее состояние). Протокол HTTP ничего не "помнит" - его задача - отдать данные и забыть, поэтому запоминание состояния при использовании HTTP осуществляется внешними по отношению к протоколу методами.

FTP работает на прикладном уровне модели OSI и используется для передачи файлов с помощью TCP/IP. Для этого должен быть запущен FTP-сервер, ожидающий входящих запросов. Компьютер-клиент может связаться с сервером по порту 21. Это соединение (поток управления) остаётся открытым на время сессии. Второе соединение (поток данных), может быть открыт как сервером из порта 20 к порту соответствующего клиента (активный режим), или же клиентом из любого порта к порту соответствующего сервера (пассивный режим), что необходимо для передачи файла данных. Поток управления используется для работы с сессией - например, обмен между клиентом и сервером командами и паролями с помощью telnet-подобного протокола. Например, "RETR имя файла" передаст указанный файл от сервера клиенту. Вследствие этой двухпортовой структуры, FTP считается внешнеполосным протоколом, в отличие от внутриполосного HTTP.

Соединение и передача данных

Протокол определен в RFC 959. Сервер отвечает по потоку управления трехзначными ASCII-кодами состояния с необязательным текстовым сообщением. Например, "200" (или "200 ОК") означает, что последняя команда была успешно выполнена. Цифры представляют код ответа, а текст - разъяснение или запрос. Текущая передача по потоку данных может быть прервана с помощью прерывающего сообщения, посылаемого по потоку управления.

FTP может работать в активном или пассивном режиме, от выбора которого зависит способ установки соединения. В активном режиме клиент создаёт управляющее TCP-соединение с сервером и отправляет серверу свой IP-адрес и произвольный номер клиентского порта, после чего ждёт, пока сервер не запустит TCP-соединение с этим адресом и номером порта. В случае, если клиент находится за брандмауэром и не может принять входящее TCP-соединение, может быть использован пассивный режим. В этом режиме клиент использует поток управления, чтобы послать серверу команду PASV, и затем получает от сервера его IP-адрес и номер порта, которые затем используются клиентом для открытия потока данных с произвольного клиентского порта к полученному адресу и порту. Оба режима были обновлены в сентябре 1998 г. для поддержки IPv6. В это время были проведены дальнейшие изменения пассивного режима, обновившие его до расширенного пассивного режима.

При передаче данных по сети могут быть использованы четыре представления данных:

    ASCII - используется для текста. Данные, если необходимо, до передачи конвертируются из символьного представления на хосте-отправителе в "восьмибитный ASCII", и (опять же, если необходимо) в символьное представление принимающего хоста. Как следствие, этот режим не подходит для файлов, содержащих не только обычный текст.

    Режим изображения (обычно именуемый бинарным) - устройство-отправитель посылает каждый файл байт за байтом, а получатель сохраняет поток байтов при получении. Поддержка данного режима была рекомендована для всех реализаций FTP.

    EBCDIC - используется для передачи обычного текста между хостами в кодировке EBCDIC. В остальном, этот режим аналогичен ASCII-режиму.

    Локальный режим - позволяет двум компьютерам с идентичными установками посылать данные в собственном формате без конвертации в ASCII.

Для текстовых файлов предоставлены различные форматы управления и настройки структуры записи. Эти особенности были разработаны для работы с файлами, содержащими Telnet или ASA-форматирование.

Передача данных может осуществляться в любом из трёх режимов:

    Поточный режим - данные посылаются в виде непрерывного потока, освобождая FTP от выполнения какой бы то ни было обработки. Вместо этого, вся обработка выполняется TCP. Индикатор конца файла не нужен, за исключением разделения данных на записи.

    Блочный режим - FTP разбивает данные на несколько блоков (блок заголовка, количество байт, поле данных) и затем передаёт их TCP.

    Режим сжатия - данные сжимаются единым алгоритмом (обыкновенно, кодированием длин серий).

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

FTP-аутентификация использует обычную схему имя пользователя/пароль для предоставления доступа. Имя пользователя посылается серверу командой USER, а пароль - командой PASS. Если предоставленная клиентом информация принята сервером, то сервер отправит клиенту приглашение и начинается сессия. Пользователи могут, если сервер поддерживает эту особенность, войти в систему без предоставления учётных данных, но сервер может предоставить только ограниченный доступ для таких сессий.

Анонимный FTP

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

NAT - PT

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

NAT и обход брандмауэров

FTP обычно передает данные при наличии соединения сервера с клиентом, после того как клиент отправил команду PORT. Это создает проблему как для NAT, так и для брандмауэров, которые не разрешают соединения из интернета к внутренним хостам. Для NAT дополнительной проблемой является то, что представление IP-адресов и номера порта в команде PORT относится к IP-адресу и порту внутреннего хоста, вместо публичного IP-адреса и NAT-порта. Существует два подхода к этой проблеме. Первый заключается в том, что FTP-клиент и FTP-сервер используют команду PASV, которая вызывает соединение для передачи данных, установленное от клиента к серверу. Второй подход - изменение для NAT значений команды PORT с помощью шлюза на прикладном уровне.

Поддержка веб-браузерами

Большая часть обычных веб-браузеров может извлекать файлы, расположенные на FTP-серверах, хотя они могут не поддерживать расширения протоколов вроде FTPS. Когда указан FTP-адрес, а не HTTP-адрес, доступный контент на удалённом сервере представляется аналогично остальному веб-контенту. Полностью функциональный FTP-клиент может быть запущен в Firefox как расширение FireFTP.

Безопасность

FTP не разрабатывался как защищённый (особенно по нынешним меркам) протокол и имеет многочисленные уязвимости в защите. В мае 1999 авторы RFC 2577 свели уязвимости в следующий список проблем:

    Скрытые атаки (bounce attacks)

    Спуф-атаки (spoof attacks)

    Атаки методом грубой силы (brute force attacks)

    Перехват пакетов, сниффинг (packet capture, sniffing)

    Защита имени пользователя

    Захват портов (port stealing)

FTP не может зашифровать свой трафик, все передачи - открытый текст, поэтому имена пользователей, пароли, команды и данные могут быть прочитаны кем угодно, способным перехватить пакет по сети. Эта проблема характерна для многих спецификаций Интернет-протокола (в их числе SMTP, Telnet, POP, IMAP), разработанных до создания таких механизмов шифрования, как TLS и SSL. Обычное решение этой проблемы - использовать "безопасные", TLS-защищенные версии уязвимых протоколов (FTPS для FTP, TelnetS для Telnet и т.д.) или же другой, более защищённый протокол, вроде SFTP/SCP, предоставляемого с большинством реализаций протокола Secure Shell.

Безопасный FTP

Существует несколько методов безопасной передачи файлов, в одно или другое время называемых "Безопасным FTP": FTPS, SFPS, FTP через SSH.

Явный FTPS - расширение стандарта FTP, позволяющее клиентам требовать того, чтобы FTP-сессия была зашифрована. Это реализуется отправкой команды "AUTH TLS". Сервер обладает возможностью позволить или отклонить соединения, которые не запрашивают TLS. Это расширение протокола определено в спецификации RFC 4217. Неявный FTPS - устаревший стандарт для FTP, требующий использования SSL- или TLS-соединения. Этот стандарт должен был использовать отличные от обычного FTP порты.

SFTP, или «SSH File Transfer Protocol», не связан с FTP, за исключением того, что он тоже передаёт файлы и имеет аналогичный набор команд для пользователей. SFTP, или безопасный FTP, - это программа, использующая SSH (Secure Shell) для передачи файлов. В отличие от стандартного FTP он шифрует и команды, и данные, предохраняя пароли и конфиденциальную информацию от открытой передачи через сеть. По функциональности SFTP похож на FTP, но так как он использует другой протокол, клиенты стандартного FTP не могут связаться с SFTP-сервером и наоборот.

FTP через SSH (не SFTP )

FTP через SSH (не SFTP) относится к практике туннелирования обычной FTP-сессии через SSH-соединение. Поскольку FTP использует несколько TCP-соединений, туннелирование через SSH особенно затруднительно. Когда много SSH-клиентов пытаются установить туннель для канала управления (изначальное "клиент-сервер" соединение по порту 21), защищён будет только этот канал; при передаче данных программное обеспечение FTP на любом конце установит новые TCP-соединения (каналы данных), которые обойдут SSH-соединение и, таким образом, лишатся целостной защиты.

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

FTP через SSH иногда относят к безопасным FTP; но не стоит путать его с другими методами, такими как SSL/TLS (FTPS). Другие методы передачи файлов с помощью SSH и не связанные с FTP - SFTP и SCP; в каждом из них и учётные и файловые данные всегда защищены протоколом SSH.

FXP (англ. File eXchange Protocol - протокол обмена файлами) - способ передачи файлов между двумя FTP-серверами напрямую, не закачивая их на свой компьютер. При FXP-сессии клиент открывает два FTP-соединения к двум разным серверам, запрашивая файл на первом сервере, указывая в команде PORT IP-адрес второго сервера.

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

FXP стал использоваться злоумышленниками для атак на другие серверы: в команде PORT указывается IP-адрес и порт атакуемого сервиса на компьютере жертвы, и командами RETR/STOR производится обращение на этот порт от лица FTP-сервера, а не атакующей машины, что позволяло устраивать масштабные DDoS-атаки с использованием сразу многих FTP-серверов, либо обходить систему безопасности компьютера жертвы, если он полагается только на проверку IP клиента и используемый для атаки FTP-сервер находится в доверенной сети или на шлюзе. В результате сейчас практически все серверы проверяют соответствие IP-адреса, указанного в команде PORT, IP-адресу FTP-клиента и по умолчанию запрещают использование там IP-адресов третьих сторон. Таким образом, использование FXP невозможно при работе с публичными FTP-серверами.

Основные команды

    ABOR - Прервать передачу файла

    CDUP - Сменить директорию на вышестоящую.

    CWD - Сменить директорию.

    DELE - Удалить файл (DELE filename).

    EPSV - Войти в расширенный пассивный режим. Применяется вместо PASV.

    HELP - Выводит список команд, принимаемых сервером.

    LIST - Возвращает список файлов директории. Список передаётся через соединение данных.

    MDTM - Возвращает время модификации файла.

    MKD - Создать директорию.

    NLST - Возвращает список файлов директории в более кратком формате, чем LIST. Список передаётся через соединение данных.

    NOOP - Пустая операция

    PASV - Войти в пассивный режим. Сервер вернёт адрес и порт, к которому нужно подключиться, чтобы забрать данные. Передача начнётся при введении следующих команд: RETR, LIST и т.д.

    PORT - Войти в активный режим. Например PORT 12,34,45,56,78,89. В отличие от пассивного режима для передачи данных сервер сам подключается к клиенту.

    PWD - Возвращает текущую директорию.

    QUIT - Отключиться

    REIN - Реинициализировать подключение

    RETR - Скачать файл. Перед RETR должна быть команда PASV или PORT.

    RMD - Удалить директорию

    RNFR и RNTO - Переименовать файл. RNFR - что переименовывать, RNTO - во что.

    SIZE - Возвращает размер файла

    STOR - Закачать файл. Перед STOR должна быть команда PASV или PORT.

    SYST - Возвращает тип системы (UNIX, WIN, …)

    TYPE - Установить тип передачи файла (бинарный, текстовый)

    USER - Имя пользователя для входа на сервер

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

Протокол FTP является старейшим сетевым протоколом (создан в 1971 году), но, тем не менее, широко используется по сей день. Важной особенностью протокола является то, что он использует несколько соединений: одно для управляющих команд, остальные для данных. Причем соединений для передачи данных может открываться несколько, в каждом из которых файлы могут передаваться в обоих направлениях. Именно с этой особенностью и связан ряд проблем.

В зависимости от способа установления соединения для передачи данных различают активный и пассивный режимы работы FTP. В активном режиме сервер сам устанавливает соединение передачи данных к клиенту, в пассивном наоборот. Рассмотрим эти режимы более подробно.

Активный режим

В большинстве случаев для нормальной работы FTP-сервера за NAT достаточно будет пробросить 21 порт для управляющей сессии, 20 - для активного режима (если используется), а также указать и пробросить диапазон динамических портов для передачи данных.

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

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

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

Зачем нужен FTP

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

  • в первом отображается все, что загружено на сервер;
  • во втором - все, что находится на компьютере.

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

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


Уязвимости

FTP - это очень старый протокол. Он появился намного раньше HTTP и не разрабатывался как защищенный. Поэтому у него много проблем с защитой. Вот самые основные:

  • спуф-атаки;
  • перехват пользовательских данных;
  • сниффинг;
  • захват портов.

При передаче через FTP файлы не шифруются. Соответственно, все команды, имена пользователей и пароли могут быть перехвачены злоумышленниками. Для этого используются безопасные версии, например для FTP - это FTPS.

Безопасная передача данных

Существуют следующие методы отсылки данных, защищенные от хакерских атак: FTPS, SFTP, а также передача FTP через SSH. С FTPS можно защитить сессию. FTP-server получает команду AUTH TLS, после чего отклоняет соединения, которые не зашифрованы.


У SFTP похожий список команд, как у FTP. Здесь используется протокол SSH, который шифрует весь трафик. Этим способом кодируются команды и данные. Соответственно, все пароли и другая информация, не предназначенная третьим лицам, не передается в открытом виде.

Другой способ передачи через протокол SSH тунеллирует сессию через SSH-соединение.

Подключение и обмен данных

Предусмотрено два возможных вида работы:

  • активный;
  • пассивный.

Они отличаются способом установки соединения. Активный способ предполагает, что в программе создается tcp-соединение с сервером и посылается нужный IP, порт. Пассивный же нужен, когда подобные соединения блокируются межсетевым экраном. Тогда сервер возвращает адрес и порт, затем юзер использует полученные данные для подключения.

В настройках FTP можно выбрать следующие режимы передачи:

  • поточный;
  • блочный;
  • сжатый.

При выборе первого режима данные отсылаются в виде непрерывного потока. Обработка выполняется по TCP. В обычном режиме данные сегментируются и, как правило, отправляются в таком виде: блок заголовка, количество байт, поле данных. В сжатом методе все данные сжимаются одним алгоритмом и передаются значительно быстрее из-за того, что объект меньше весит.

Авторизация

Для идентификации пользователя и последующего назначения прав для управления файлами используется схема - имя пользователя/пароль. Отправка имени осуществляется командой USER, а пароля - PASS.


Сервер принимает эти данные, если они сходятся с теми, что указаны в базе данных. Далее клиент получает приглашение, после чего начинается сессия. Иногда сервер поддерживает возможность входа без учетных данных. Как правило, предоставляется ограниченный доступ для таких связей, используется какое-то стандартное имя, например anonymous. Но чаще всего для авторизации нужно ввести адрес действующей почты, и в дальнейшем она используется, чтобы войти.

Отличие от http протокола

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


Сокращение расходов трафика и, соответственно, уменьшение времени для обмена данными осуществляется за счет двоичного режима передачи. Работа начинается после того, как клиент входит в сессию, и все дальнейшие операции проводятся в ее рамках. Это одна из отличительных особенностей, ведь протокол HTTP не запоминает информацию о зарегистрированных пользователях - эту функцию выполняют внешние методы.

Связь компьютер-клиент по умолчанию осуществляется на 21 порту и используется для управления. Второе соединение для передачи данных открывается на двадцатом порту или любом другом, который правильно настроен.

Как работать с файлами

Существует FTP клиентов для работы с протоколом, но работа с ними строится по одному и тому же принципу. Все, что нужно для передачи - перетащить документ с компьютера пользователя в папку сервера или проделать те же самые действия с помощью командной строки.

  1. После появления главного окна в соответствующих полях нужно ввести имя хоста, имя пользователя, пароль, порт.
  2. После успешной авторизации появляется список всего, что загружено на сервер.
  3. Вам следует выбирать объект, который нужно закачать на сервер с компьютера или с сервера на компьютер.
  4. Отметив соответствующий файл, вызывайте контекстное меню при помощи ПКМ, выбирайте нужное действие: скачать, добавить в задание, отредактировать, удалить, переименовать, скопировать адрес, настроить права доступа. Эти функции могут меняться в зависимости от используемой программы.

Существует способ обмена между двумя серверами напрямую без закачки на компьютере. Запрашиваются два соединения к разным серверам. На одном из них выбирается файл для передачи и указывается IP-адрес второго сервера. Для этого используется FXP - протокол прямого обмена.

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

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

Соединение по FTP через браузер

Для соединения, как и при использовании специализированных программ, пользователю необходимо обладать логином, паролем, IP-адресом. Само подключение происходит при использовании командной строки. Для этого нужно ввести адрес такого формата: ftp://логин для входа: пароль сервера@ip адрес. Например, ftp://myname:[email protected]. Если соединение прошло успешно, появляется список всех документов. Как правило, файлы сайта хранятся в папке public_html или www, в зависимости от типа хостинга.

Чтобы скопировать документ, его достаточно просто перетащить. Этот способ не позволяет переносить документы с одного сервера на другой. В браузере легко менять права для чтения/записи. Для этого нужно правой кнопкой мыши выделить файл, который уже есть на сервере. Появится окно с настройками. В нем следует отметить необходимое разрешение.

FileZilla

Это один из популярнейших FTP у Windows-клиентов. Работать с этой программой достаточно легко. Главное окно поделено на пять частей. Три из них отображают файловую структуру компьютера, а четыре - сервера. В нужных полях указывается логин, пароль, порт.


Если планируется частое использование какого-либо соединения, информация для входа указывается в "Менеджере сайтов". В настройках можно выбрать идентификацию, распределить данные для входа по папкам, добавить комментарий. Для переноса файл нужно выделить и перетащить в рабочее окно, где отображена файловая структура компьютера.

Total Commander

Для того чтобы загрузить и скачать файл с помощью "Тотал командера", необходимо выполнить следующую последовательность действий:

  1. Перейти во вкладку "Сеть".
  2. Выбрать пункт меню "Соединиться с сервером".
  3. В появившемся окне нажать кнопку "Добавить".
  4. Указать имя соединения, сервер, учетную запись, пароль.
  5. Установить флаг "Пассивный режим обмена", нажать OK.
  6. После этого следует отметить выбранное соединение, нажать кнопку "Соединиться".

Командная строка

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

  1. Подключение осуществляется командой Open. Использование должно выглядеть так: open ftp.server.com port.
  2. Параметр port можно не указывать, если предполагается использование стандартного 21.
  3. Вместо server.com указывается адрес сервера, на котором располагается сайт.

Для переименования используется rename, для смены текущего каталога стандартно используются cd, для выхода необходимо ввести close, а для удаления - delete или disconnect.



Загрузка...