Несколько вопросов. FTP, внутренняя сеть и т.п. Что они собой представляют? В чем суть технологии FTP

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

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

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

FTP использует два заданных порта: порт 21 для управления и порт 20 для передачи данных.


Рис. 13.5.

Тип файла

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

  • ASCII-файл . Это формат, используемый по умолчанию для трансляции текстовых файлов. Каждый символ закодирован с использованием NVT ASCII-символов. Передатчик преобразует файл из собственного представления в NVT ASCII, и приемник преобразует символы NVT ASCII в собственное представление.
  • EBCDIC-файл . Если оба конца соединения используют кодирование EBCDIC , файл может быть передан с использованием EBCDIC -кодирования.
  • Image-файл . Этот файл по умолчанию - формат для передачи двоичных файлов. Файл посылается как непрерывный поток бит без всякой интерпретации и кодирования. Он в большинстве случаев используется для передачи двоичных файлов, таких как компилированная программа.

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

  1. Запрещенный для печати. Это формат по умолчанию для передачи текстовых файлов. Файл не содержит "вертикальных" спецификаций для печати. Это означает, что файл не может быть напечатан без предварительной обработки, потому что он не содержит символов, интерпретируемых для вертикального передвижения печатающей головки . Этот формат используется для файлов, которые будут накоплены и обработаны позднее.
  2. TELNET. В этом формате файл содержит NVT ASCII вертикальные символы, такие, как CR (перевод каретки), LN (перевод строки), NL (новая строка) и VT (вертикальное табулирование). Эти файлы могут быть напечатаны после передачи

Структура данных

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

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

Режимы передачи

FTP может передавать файл по соединению для передачи данных, используя один из трех следующих режимов передачи:

  • Поточный режим . Это режим по умолчанию. Данные доставляются от FTP к TCP как непрерывный поток данных. TCP отвечает за разбиение данных на сегменты соответствующего размера. Если данные - просто поток байтов (файловая структура), то не нужно никакого признака окончания файла. Окончание файла в этом случае - это разъединение соединения данных отправителем. Если данные разделены на записи (структура по записи), каждая запись будет иметь однобайтный символ окончания записи ( EOR - end of record).
  • Блочный режим . Данные могут быть доставлены от FTP и TCP в блоках. В этом случае блоку предшествует трехбайтный заголовок. Первый байт называется дескриптор блока, следующие два байта определяют размер блока в байтах.
  • Сжатый режим . Если файл большой, данные могут быть сжаты. Метод сжатия использует нормальное кодирование длины. В этом методе последовательное повторное появление блока данных заменяется одним вхождением и числом повторений. В тексте файла это обычно пробел (пустоты). В двоичном файле нулевые символы обычно сжимаются.

FTP использует соединение управления для того, чтобы установить связь между процессом управления клиента. В течение этой связи команды посылаются от клиента к серверу, и отклики посылаются от сервера к клиенту ( рисунок 13.6).


Рис. 13.6.

Протокол FTP является разновидностью протокола для передачи данных, который используется с целью копирования и перемещения файлов в интернете и внутри TCP-сетей. FTP достаточно часто применяется с целью загрузки страниц и документов различного типа на хостинговые компьютеры. Протокол FTP использует архитектуру «клиент-сервер» и различные соединения внутри сети для того, чтобы передавать команды и информацию от клиента к серверу и наоборот. Пользователям FTP разрешается проходить процедуру аутентификации при помощи логина и пароля, либо же, если такая форма разрешена на сервере, пользователи могут получать доступ в анонимном режиме.
Кроме обычного протокола, также применяется FTPS, представляющий собой особое расширение стандартного FTP, которое дает возможность клиентам получать доступ к серверу и использовать зашифрованные сессии передачи информации. Такой подход реализуется при помощи отправки команды аутентификации «auth tls», при этом серверу разрешается принимать либо отклонять соединения, не запрашивающие TLS-соединений.

SFTP

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

Особенности стандарта FTP

Этот стандарт представляет собой один из старейших сетевых протоколов, который был создан 45 лет назад и достаточно широко применяется в интернете и сегодня. Одной из важнейших особенностей протокола выступает использование нескольких соединений: одного с целью передачи управляющих команд, а других - для непосредственного трансфера файлов. При этом можно открывать несколько параллельных соединений, каждое из которых может осуществлять передачу данных в оба направления.
Существуют два режима работы FTP, которые отличаются способом установления соединений: пассивный и активный. Во время активного режима сервер осуществляет установление соединения передачи информации к пользователю, а во время пассивного - наоборот.
Данный стандарт используется уже достаточно давно и на первый взгляд является предельно простым. Но такая простота бывает довольно обманчивой, так как большое количество пользователей могут испытывать проблемы во время получения доступа по данному стандарту, особенно если сервер, либо пользователь использует брандмауэр или NAT.

Особенности активного режима

Во время активного режима клиент инициирует управляющее соединение с серверным портом 21, передавая команду «port», при помощи которой указывается адрес и порт трансфера информации. После получения этой команды сервер запускает соединение собственного 20-го порта с указанным портом пользователя.
Основным недостатком данного метода является обязательное наличие у пользователя для работы выделенного IP-адреса в интернете. Кроме того, некоторые проблемы могут возникнуть, если клиент находится за брандмауэром либо NAT.

Особенности пассивного режима

Для того, чтобы установить пассивное соединение, пользователь должен передать серверу специальную команду «pasv». В качестве ответа на эту команду сервер передает информацию об адресе и порте, с которым клиент должен установить соединение. После получения этих данных, пользователь осуществляет подключение к серверному компьютеру и проводит передачу информации.
При использовании пассивного режима абсолютно все соединения инициируются клиентом, в связи с чем какие-либо требования к нему отсутствуют. Пользователю допускается пользоваться NAT и брандмауэром, а также не использовать выделенный IP-адрес. Поэтому сегодня в качестве основной разновидности доступа и передачи файлов по протоколу FTP в интернете используется именно пассивный режим.

Настройка в случае использования брандмауэра

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

Настройка в случае использования NAT

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


2. Не работают FTP хостингов

В офисе подключены к ИС + спутник на входящем. В банке две сетевых + карта для спутника. Одна сетевая для ИС, одна на внутреннюю локалку.

1. Внутренняя сеть не работает.
2. Не работают FTP хостингов

Косяки маршрутов. Иначе говоря:

a) Твоя локалка внутренняя имеет адреса вида 192.168.х.х (скорее всего)
б) Спутниковый впн имеет адреса вида 192.168.х.х
в) ИС имеет адреса вида 192.168.х.х
г) имеются 2 шлюза по умолчанию во внешние сети: ИС и спутник

У маршрутизатора едет крыша, когда он пытается понять куда ты хочешь сходить.

В офисе подключены к ИС + спутник на входящем. В банке две сетевых + карта для спутника. Одна сетевая для ИС, одна на внутреннюю локалку.

1. Внутренняя сеть не работает.
2. Не работают FTP хостингов
ipconfig/all и netstat -r
мож че-нить придумаем =)

ipconfig/all и netstat -r
мож че-нить придумаем =)

Настройка протокола IP для Windows

Имя компьютера. . . . . . . . . : MISHA
Основной DNS-суффикс. . . . . . :
Тип узла. . . . . . . . . . . . . : одноранговый
IP-маршрутизация включена. . . . : да
WINS-прокси включен. . . . . . . : нет
Порядок просмотра суффиксов DNS . : chelcom.ru

офис - Ethernet адаптер:


Описание. . . . . . . . . . . . : Realtek RTL8139 Family PCI Fast Ethe
rnet NIC
Физический адрес. . . . . . . . . : 00-40-F4-C1-BB-D4
IP-адрес. . . . . . . . . . . . : 192.168.0.1
Маска подсети. . . . . . . . . . : 255.255.255.0
Основной шлюз. . . . . . . . . . :

sat - Ethernet адаптер:

DNS-суффикс этого подключения. . :
Описание. . . . . . . . . . . . : TechniSat DVB-PC TV Star PCI
Физический адрес. . . . . . . . . : 00-D0-D7-13-2D-EF
Автонастройка включена. . . . . : нет
IP-адрес. . . . . . . . . . . . : 192.168.45.1
IP-адрес. . . . . . . . . . . . : 81.169.230.150
Маска подсети. . . . . . . . . . : 255.255.255.252
Основной шлюз. . . . . . . . . . : 81.169.230.149
DHCP-сервер. . . . . . . . . . . : 81.169.230.149
Аренда получена. . . . . . . . . : 16 апреля 2007 г. 16:56:54
Аренда истекает. . . . . . . . . : 19 апреля 2007 г. 16:56:54

интерсвязь - Ethernet адаптер:

DNS-суффикс этого подключения. . : chelcom.ru
Описание. . . . . . . . . . . . : NVIDIA nForce Networking Controller
Физический адрес. . . . . . . . . : 0******1-A9-0D-57
Dhcp включен. . . . . . . . . . . : да
Автонастройка включена. . . . . : да
IP-адрес. . . . . . . . . . . . : 192.168.56.201
Маска подсети. . . . . . . . . . : 255.255.252.0
Основной шлюз. . . . . . . . . . : 192.168.56.1
DHCP-сервер. . . . . . . . . . . : 192.168.56.1
83.142.161.19
Аренда получена. . . . . . . . . : 16 апреля 2007 г. 17:54:34
Аренда истекает. . . . . . . . . : 16 апреля 2007 г. 19:04:26

ИС инет - PPP адаптер:

DNS-суффикс этого подключения. . :
Описание. . . . . . . . . . . . : WAN (PPP/SLIP) Interface
Физический адрес. . . . . . . . . : 0******0
Dhcp включен. . . . . . . . . . . : нет
IP-адрес. . . . . . . . . . . . : 80.255.91.191
Маска подсети. . . . . . . . . . : 255.255.255.255
Основной шлюз. . . . . . . . . . : 80.255.91.191
DNS-серверы. . . . . . . . . . . : 83.142.161.17
83.142.161.19
NetBIOS через TCP/IP. . . . . . . : отключен

ipconfig/all и netstat -r
мож че-нить придумаем =)

C:\Documents and Settings\ъъъх>netstat -r

Таблица маршрутов

Список интерфейсов
0x1 ........................... MS TCP Loopback interface
0x2 ...00 40 f4 c1 bb d4 ...... Realtek RTL8139 Family PCI Fast Ethernet NIC - ╠
шэшяюЁЄ яырэшЁют∙шър яръхЄют
0x3 ...00 d0 d7 13 2d ef ...... TechniSat DVB-PC TV Star PCI - ╠шэшяюЁЄ яырэшЁют
∙шър яръхЄют
0x4 ...0******1 a9 0d 57 ...... NVIDIA nForce Networking Controller - ╠шэшяюЁЄ я
ырэшЁют∙шър яръхЄют
0x40006 ...0******0 ...... WAN (PPP/SLIP) Interface
============================== ============================== ===============
============================== ============================== ===============
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 80.255.91.191 80.255.91.191 2
0.0.0.0 0.0.0.0 81.169.230.149 81.169.230.150 1
0.0.0.0 0.0.0.0 192.168.56.1 192.168.56.201 22
62.153.159.134 255.255.255.255 80.255.91.191 80.255.91.191 1
64.236.167.41 255.255.255.255 80.255.91.191 80.255.91.191 1
80.255.91.191 255.255.255.255 127.0.0.1 127.0.0.1 50
80.255.255.255 255.255.255.255 80.255.91.191 80.255.91.191 50
81.169.147.10 255.255.255.255 80.255.91.191 80.255.91.191 1
81.169.147.16 255.255.255.255 80.255.91.191 80.255.91.191 1
81.169.147.25 255.255.255.255 80.255.91.191 80.255.91.191 1
81.169.147.27 255.255.255.255 80.255.91.191 80.255.91.191 1
81.169.147.32 255.255.255.255 80.255.91.191 80.255.91.191 1
81.169.147.43 255.255.255.255 80.255.91.191 80.255.91.191 1
81.169.230.148 255.255.255.252 81.169.230.150 81.169.230.150 20
81.169.230.150 255.255.255.255 127.0.0.1 127.0.0.1 20
81.255.255.255 255.255.255.255 81.169.230.150 81.169.230.150 20
83.142.160.155 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.161.9 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.161.17 255.255.255.255 80.255.91.191 80.255.91.191 1
83.142.161.19 255.255.255.255 80.255.91.191 80.255.91.191 1
83.142.161.20 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.161.29 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.161.35 255.255.255.255 192.168.56.21 192.168.56.201 1
83.142.161.40 255.255.255.255 192.168.56.1 192.168.56.201 20
83.142.161.44 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.161.50 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.161.62 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.161.68 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.161.224 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.161.226 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.161.241 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.161.242 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.162.174 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.163.114 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.163.122 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.163.158 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.163.178 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.163.194 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.163.202 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.163.246 255.255.255.255 192.168.56.1 192.168.56.201 1
83.142.163.254 255.255.255.255 192.168.56.1 192.168.56.201 1
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1

192.168.0.1 255.255.255.255 127.0.0.1 127.0.0.1 30
192.168.0.255 255.255.255.255 192.168.0.1 192.168.0.1 30
192.168.45.0 255.255.255.252 192.168.45.1 81.169.230.150 20
192.168.45.1 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.45.255 255.255.255.255 81.169.230.150 81.169.230.150 20
192.168.56.0 255.255.252.0 192.168.56.201 192.168.56.201 20
192.168.56.201 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.56.255 255.255.255.255 192.168.56.201 192.168.56.201 20
194.25.134.24 255.255.255.255 80.255.91.191 80.255.91.191 1
194.25.134.25 255.255.255.255 80.255.91.191 80.255.91.191 1
194.25.134.26 255.255.255.255 80.255.91.191 80.255.91.191 1
194.25.134.27 255.255.255.255 80.255.91.191 80.255.91.191 1
194.25.134.32 255.255.255.255 80.255.91.191 80.255.91.191 1
194.25.134.33 255.255.255.255 80.255.91.191 80.255.91.191 1
194.25.134.88 255.255.255.255 80.255.91.191 80.255.91.191 1
194.25.134.89 255.255.255.255 80.255.91.191 80.255.91.191 1
194.25.134.90 255.255.255.255 80.255.91.191 80.255.91.191 1
194.25.134.91 255.255.255.255 80.255.91.191 80.255.91.191 1
194.25.134.96 255.255.255.255 80.255.91.191 80.255.91.191 1
194.25.134.97 255.255.255.255 80.255.91.191 80.255.91.191 1
224.0.0.0 240.0.0.0 81.169.230.150 81.169.230.150 20
224.0.0.0 240.0.0.0 192.168.0.1 192.168.0.1 30
224.0.0.0 240.0.0.0 192.168.56.201 192.168.56.201 20
224.0.0.0 240.0.0.0 80.255.91.191 80.255.91.191 1
255.255.255.255 255.255.255.255 80.255.91.191 80.255.91.191 1
255.255.255.255 255.255.255.255 81.169.230.150 81.169.230.150 1
255.255.255.255 255.255.255.255 192.168.0.1 192.168.0.1 1
255.255.255.255 255.255.255.255 192.168.56.201 192.168.56.201 1
Основной шлюз: 81.169.230.149

Хмм локалка вообще не работает? Пинги проходят между серваком и внутренними машинами? Если не проходят то что дает трейс ипов внутренних тачек с сервака? С маршрутизацией вроде косяков не наблюдаю, маршрут
192.168.0.0 255.255.255.0 192.168.0.1 192.168.0.1 30

192.168.0.0 255.255.0.0 192.168.56.1 192.168.56.201 1

Уточни про фтп, че за хостинги? Какие у них ip? Как у тебя вообще организован выход в инет, через прокси спутника? Попробуй на фтп ломиться в пассивном режиме.

Хмм локалка вообще не работает? Пинги проходят между серваком и внутренними машинами? Если не проходят то что дает трейс ипов внутренних тачек с сервака? С маршрутизацией вроде косяков не наблюдаю, маршрут
192.168.0.0 255.255.255.0 192.168.0.1 192.168.0.1 30
имеется, он должен по идее быть главнее роута
192.168.0.0 255.255.0.0 192.168.56.1 192.168.56.201 1
Ибо маска больше и в твою локалку он должен ломиться через внутреннюю сетевую.

Уточни про фтп, че за хостинги? Какие у них ip? Как у тебя вообще организован выход в инет, через прокси спутника? Попробуй на фтп ломиться в пассивном режиме. (192.168.97.253) > logged in anonymously with login/pass: anonymous/IEUser@
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > 230 User Anonymous logged in.
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > OPTS utf8 on
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > 500 Unknown command.
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > PWD
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > 257 "/" is current directory.
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > CWD /
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > asked to change directory: "L:\Films\ -> L:\Films\" --> Access allowed.
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > 250 CWD command successful. "/" is current directory.
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > TYPE A
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > 200 Type set to A.
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > PASV
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > 227 Entering Passive Mode (192,168,0,2,4,6)
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > 530 PASV command only accepts connection from client IP address (192.168.97.253!=error).
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > LIST
(0******1) 18.04.2******7:09:37 - anonymous (192.168.97.253) > 550 List failed. No port specified.

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

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

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

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

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

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

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

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 - Имя пользователя для входа на сервер



Понравилась статья? Поделиться с друзьями: