Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GEK / ответы (1).docx
Скачиваний:
124
Добавлен:
18.05.2015
Размер:
1.14 Mб
Скачать

15. Протокол пересылки файлов ftp.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Аутентификация. 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 авторыRFC2577 свели уязвимости в следующий список проблем:

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

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

  • Атаки методом грубой силы (bruteforceattacks)

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

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

  • Захват портов (portstealing)

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

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

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

SFTP. SFTP, или «SSHFileTransferProtocol», не связан сFTP, за исключением того, что он тоже передаёт файлы и имеет аналогичный набор команд для пользователей.SFTP, или безопасныйFTP, — это программа, использующаяSSH(SecureShell) для передачи файлов. В отличие от стандартного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. FXP(англ.FileeXchangeProtocol— протокол обмена файлами) — способ передачи файлов между двумяFTP-серверами напрямую, не закачивая их на свой компьютер. ПриFXP-сессии клиент открывает дваFTP-соединения к двум разным серверам, запрашивая файл на первом сервере, указывая в командеPORTIP-адрес второго сервера.

Несомненным преимуществом поддержки стандарта 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— Войти в активный режим. НапримерPORT12,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— Имя пользователя для входа на сервер

Соседние файлы в папке GEK