Особенностью протокола FTP является использование двух каналов — управляющего (command connection) и информационного (data transfer connectiot). Оба канала используют протокол TCP.
Сначала по запросу клиента формируется канал управления (управляющее соединение), который в дальнейшем используется для передачи команд от клиента и откликов от сервера. Сервер осуществляет пассивное открытие на заранее известный порт FTP (21) и ожидает запроса на соединение от клиента. Клиент осуществляет активное открытие на TCP порт 21, чтобы установить управляющее соединение. Со стороны клиента стандартным образом выбирается «клиентский» порт > 1024.
Информационный канал формируется сервером по команде клиента, он не должен существовать постоянно на протяжении всей FTP-сессии и может формироваться и ликвидироваться по мере необходимости. Канал управления может быть закрыт только после завершения информационного обмена, т. е. завершения FTP-сессии.
Сервер FTP имеет два режима работы, "активный" (обычный) и "пассивный". Эти слова характеризуют поведение сервера. Инициатором выбора режима является клиент.
В активном режиме клиент подключается к порту 21 на сервере и регистрируется. Когда требуется передача данных, клиент выделяет динамический порт с номером большим или равным 1024, информирует сервер о том, какой порт открыт, а затем сервер открывает новое подключение к этому порту. Это "активная" роль сервера: он активно устанавливает новые подключения к клиентам.
В пассивном режиме, подключение к порту 21 выполняется аналогично. Когда требуется передача данных, СЕРВЕР выделяет динамический порт с номером, начиная с 1024, информирует клиента о том, какой порт открыт, а затем КЛИЕНТ открывает новое подключение к этому порту. Это "пассивная" роль сервера: он ждет установки клиентом второго подключения (для передачи данных).
Схема работы FTP в двух режимах приведена на рисунках 2.a и 2.b

Рис. 2.а. Активный режим
· Клиент устанавливает связь и посылает запрос на 21 порт сервера с порта N (N>1024)
· Сервер посылает ответ на порт N (N>1024) клиента
· Сервер устанавливает связь для передачи данных по порту 20 на порт клиента N+1

Рис. 2.b. Пассивный режим
· Клиент устанавливает связь и посылает запрос (сообщает, что надо работать в пассивном режиме) на 21 порт сервера с порта N (N>1024)
· Сервер посылает ответ и сообщает номер порта для канала данных P (P>1024) на порт N (N>1024) клиента
· Клиент устанавливает связь для передачи данных по порту N+1 на порт сервера P (P>1024)
С точки зрения фильтрации с использованием пакетного МЭ, FTP протокол является весьма неудобным, так как в этом случае нужно решить четыре проблемы:
1. Поддержка FTP-сервера в активном режиме
Необходимо разрешить серверу открывать новые подключения во внешний мир через порты с номерами от 1024 и выше.
2. Поддержка FTP-сервера в пассивном режиме
Необходимо разрешить подключения извне к портам с номерами от 1024 и выше на вашем сервере. Явно нежелательно с точки зрения безопасности.
3. Поддержка FTP-клиентов в активном режиме
Необходимо разрешить подключения извне к портам с номерами от 1024 и выше на клиентских машинах. Явно нежелательно с точки зрения безопасности.
4. Поддержка FTP-клиентов в пассивном режиме
Необходимо разрешить клиентам открывать новые подключения во внешний мир через порты с номерами от 1024 и выше.
Было бы желательно, что бы МЭ «понимал» протокол FTP, определял режим его работы и открывал бы только необходимые порты, а не весь диапазон.
Анализ FTP на межсетевом экране не представляет особых трудностей, так как все команды и данные передаются в открытом виде.
Команды состоят из заглавных ASCII символов, некоторые с необязательными аргументами. Команды управления, которыми обмениваются клиент и сервер отличаются от команд, доступных пользователю.
Они делятся на три группы:
· Команды управления доступом к системе.
· Команды управления потоком данных.
· Команды FTP-сервиса.
Рассмотрим несколько наиболее характерных команд из каждой группы
Среди команд управления доступом к системе следует отметить следующие:
USER. Как правило, эта команда открывает сессию FTP между клиентом и сервером. Аргументом команды является имя (идентификатор) пользователя для работы с файловой системой. Эта команда может подаваться не только в начале, но и в середине сессии, если, например, пользователь желает изменить идентификатор, от имени которого будут проводиться действия. При этом все переменные, относящиеся к старому идентификатору, освобождаются. Если во время изменения идентификатора происходит обмен данными, обмен завершается со старым идентификатором пользователя.
PASS. Данная команда подается после ввода идентификатора пользователя и, в качестве аргумента содержит пароль пользователя. Напомним, что данные аутентификации FTP передаются по сети открытым текстом, поэтому для обеспечения защищенности канала пользователю необходимо предпринимать дополнительные меры.
CWD. Команда позволяет пользователям работать с различными каталогами удаленной файловой системы. Аргументом команды является строка, указывающая путь каталога удаленной файловой системы, в котором желает работать пользователь.
REIN. Команда реинициализации. Эта команда очищает все переменные текущего пользователя, сбрасывает параметры соединения. Если в момент подачи команды происходит передача данных, передача продолжается и завершается с прежними параметрами.
QUIT. Команда закрывает управляющий канал. Если в момент подачи команды происходит передача данных, канал закрывается после окончания передачи данных.
Команды управления потоком устанавливают параметры передачи данных. Все параметры, описываемые этими командами имеют значение по умолчанию, поэтому команды управления потоком используются только тогда, когда необходимо изменить значение параметров передачи, используемых по умолчанию. Команды управления потоком могут подаваться в любом порядке, но все они должны предшествовать командам FTP-сервиса. Из команд управления потоком данных следует выделить следующие:
PORT. Команда назначает адрес и порт хоста, который будет использоваться как активный участник соединения по каналу передачи данных. Аргументами команды являются 32-битный IP адрес и 16-битный номер порта соединения. Эти значения разбиты на шесть 8-битных полей и представлены в десятичном виде: h1, h2, h3, h4, p1, p2, где hN - байты адреса (от старшего к младшему), а pN - байты порта (от старшего к младшему).
PASV. Эта команда отправляется модулю, который будет играть пассивную роль в передаче данных (“слушать” соединение). Ответом на данную команду должна быть строка, содержащая адрес и порт хоста, находящиеся в режиме ожидания соединения в формате команды PORT — “h1, h2, h3, h4, p1, p2”.
Команды TYPE, STRU, MODE определяют, соответственно, тип передаваемых данных (ASCII, Image и другие), структуру или формат передачи данных (File, Record, Page), способ передачи (Stream, Block и другие). Использование этих команд очень важно при построении взаимодействия в гетерогенных средах и весьма отличающихся операционных и файловых систем взаимодействующих хостов.
Команды FTP-сервиса определяют действия, которые необходимо произвести с указанными файлами. Как правило, аргументом команд этой группы является путь к файлу. Синтаксис указанного пути должен удовлетворять требованиям формата файловой системы обработчика команды. Из команд FTP-сервиса можно выделить следующие:
RETR. Эта команда указывает модулю “Программа передачи данных сервера” передать копию файла, заданного параметром этой команды, модулю передачи данных на другом конце соединения.
STOR. Команда указывает модулю “Программа передачи данных сервера” принять данные по каналу передачи данных и сохранить их как файл, имя которого задано параметром этой команды. Если такой файл уже существует, он будет замещен новым, если нет, будет создан новый.
Команды RNFR и RNTO должны следовать одна за другой. Первая команда содержит в качестве аргумента старое имя файла, вторая – новое. Последовательное применение этих команд переименовывает файл.
ABOR. Команда предписывает серверу прервать выполнение предшествующей сервисной команды (например, передачу файла) и закрыть канал передачи данных.
Команда DELE удаляет указанный файл.
Команды MKD и RMD, соответственно, создают и удаляют указанный в аргументе каталог.
При помощи команд LIST и NLST можно получить список файлов в указанном каталоге.
Все команды FTP-протокола отправляются “Интерпретатором протокола пользователя” в текстовом виде - по одной команде в строке. Каждая строка команды – идентификатор и аргументы – заканчиваются символами <CRLF>. Имя команды отделяется от аргумента символом пробела – <SP>.
Эти команды могут использоваться для «тонкой» фильтрации трафика протокола FTP.
1.2.1.3 SMTP (и электронная почта)
SMTP (Simple mail transfer protocol) – простой протокол передачи почты. Протокол прикладного уровня стека TCP/IP. Он является одним из старейших протоколов (RFC-821 — 1982 год, основные дополнения — RFC 2821) как и использующая его система обмена сообщениями – электронная почта (email).
Несмотря на очевидные проблемы, связанные со SPAM (не затребованная, мусорная массовая реклама, часто содержащая вирусы), доля которого в общем объёме почты составляет около 80%, электронная почта в Интернет продолжает оставаться достаточно популярным и востребованным сервисом.
Рассмотрим основные принципы работы электронной почты.
Адрес электронной почты выглядит так:
почтовый_ящик@почтовый. домен,
где почтовый. домен – некое доменное имя, а почтовый_ящик – имя-идентификатор корреспондента. Почтовый ящик может соответствовать одному человеку, группе людей, официальному почтовому адресу, автомату-обработчику и т. д. – форма адреса от этого не зависит, зависит только обработка. Для простоты будем считать, что почтовые ящики соответствуют конкретному человеку, то есть являются персональными. Почтовый домен – это доменное имя, для которого в системе DNS существует запись типа MX, либо запись типа A, если MX отсутствует.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 |


