10.1.1. Команды FTP-протокола
10.1.1. Команды FTP-протокола
Давайте рассмотрим листинг 10.1. В нем приведен пример, в котором клиентская программа обменивается командами с FTP-сервером. Если в начале строки стоит знак ">", то текст из нее был отправлен серверу, иначе — это ответ FTP-сервера на нашу команду.
Листинг 10.1. Пример работы протокола FTP
< 220 Flenov Mikhail FTP Server
> USER Anonymous
< 331 Anonymous access allowed, send identity (e-mail name) as password.
> PASS your@mail.com
< 230 Anonymous user logged in.
> PWD
< 257 "/" is current directory.
> TYPE A
< 200 Type set to A.
> PASV
< 227 Entering Passive Mode (127,0,0,1,13,20).
> LIST
< 125 Data connection already open; Transfer starting.
< 226 Transfer complete.
Самой первой строкой идет приглашение сервера FTP. Его мы получаем сразу же, в ответ на соединение с 21 портом. В этой строке чаще всего находится текстовое описание сервера, с которым произошло соединение, и его версия. В данном случае здесь вместо конкретного названия мое имя, но в реальном сервере при настройках по умолчанию будет видна примерно следующая строка:
220 flenovm.ru FTP server (Version wu-2.6.2-5) ready.
Для чего я изменил строку приветствия? Все очень просто, в ней по умолчанию показывается имя домена, имя и версия FTP-сервера и сообщение о приветствии. Ничего страшного не видите? А я вижу — хакеру достаточно подключиться на 21 порт, чтобы знать, с каким FTP-сервером он имеет дело.
Дальнейшие действия взломщика легко предсказываются. Я бы запустил поиск по всем базам уязвимостей на предмет наличия в них информации о дырах в данной версии сервиса wu-ftpd. Пусть администратор помолится, чтобы я не нашел нужных сплоитов для использования бреши, или дыра была незначительной и не позволила мне ничего сделать с его системой.
После чтения строки сообщения можно посылать команды FTP-серверу. Но ничего особого выполнить не удастся, пока вы не представитесь серверу. Для этого нужно выполнить FTP-команды: user с параметром имя пользователя, а затем PASS, указав пароль.
Серверы FTP позволяют работать с тремя типами авторизации: действительная, гостевая и анонимная. В первом случае вы должны передать серверу реальное имя и пароль пользователя, которому разрешен доступ к серверу. Тогда после выполнения команды USER вы увидите сообщение о необходимости ввести правильный пароль для указанного пользователя:
331 Password required for flenov
В случае с анонимным доступом в качестве имени нужно указать Anonymous (команда USER Anonymous). В ответ на это сервер вернет нам сообщение:
331 Anonymous access allowed, send identity (e-mail name) as password.
Здесь говорится, что анонимный доступ разрешен, и вы должны передать в качестве пароля E-mail-адрес. Честно говоря, можно ввести и чужой E-mail, например, соседа или кого-нибудь другого. Это сервер проконтролировать не сможет. Некоторые серверы вообще не проверяют корректность адреса даже по простым шаблонам, и можно передавать что угодно.
На практике анонимный доступ обладает минимальными возможностями чтения файлов и директорий и используется только в открытых файловых архивах. Имя Anonymous, чаще всего, используют для публикации открытых документов для всеобщего доступа через FTP. Например, разработчики программ создают анонимные FTP-серверы для того, чтобы пользователи могли скачать с сервера последние версии программ или обновления уже существующих.
Реальный пользователь может путешествовать по всей файловой системе, и возможности ограничены только правами доступа используемой учетной записи.
Гостевой доступ по своим правам является чем-то промежуточным между анонимным и действительным. По сравнению с анонимным пользователем гость обладает большими правами, и ему может выдаваться разрешение на загрузку файлов, но, в отличие от действительного, он работает только в своей директории. Например, если гостю назначен каталог /home/robert, то он сможет безнаказанно здесь работать с файлами и подкаталогами, но выше этой директории подняться невозможно. Вы можете определить любое имя в качестве гостевого.
Обратите внимание, что пароль в команде pass передается абсолютно в открытом виде. Это серьезная проблема. В каждой главе, где мы рассматриваем какой-либо сервис, доводится сталкиваться с открытой передачей данных. Ну что поделаешь, если на заре рождения Интернета никто не думал о хакерах. Теперь приходится изобретать разные методы, чтобы спрятать пароль.
Если ваш сервер обслуживает только анонимные соединения, то пароли могут передаваться как угодно. При такой аутентификации любой пользователь итак может подключиться к серверу, указав произвольный E-mail-адрес в качестве пароля. Но подобные серверы используются только с общедоступными ресурсами/файлами. При наличии важной информации доступ происходит по паролю, и необходимо сделать так, чтобы он шифровался. Для этого можно использовать stunnel или уже готовый протокол SFTP, который мы рассматривали в разд. 5.3.8.
Отличное решение я видел на одном из публичных Web-серверов около 10 лет назад. Для того чтобы закачать данные на сервер, необходимо было зарегистрироваться, заполнив Web-форму с личными данными. Затем вам выдается пароль на доступ, который действует только в течение одной сессии. После этого пароль уничтожается, и повторное подключение становится невозможным. Файлы закачиваются в специальную директорию, в которую разрешена лишь запись. Самим файлам устанавливаются права только для чтения и записи, а выполнение остается недоступным. Таким образом, пароли можно передавать в открытом виде. Даже если хакер увидит его, подключиться не сможет.
Реализовать одноразовые пароли достаточно просто, если ваш сервер использует подключаемые модули аутентификации РАМ (см. разд. 3.3.3).
После того как вы авторизовались на сервере, можно выполнять любые другие команды FTP-сервера. Но тут есть одна проблема — список директив зависит от сервера. Конечно же, есть определенные требования, которых придерживаются все производители, это основные команды, которые описаны в RFC (Requests for Comments, рабочие предложения). Так как возможности, предоставляемые стандартом, уже устарели, то разработчики Web-серверов начали добавлять свои функции, которые могут отличаться в разных версиях программ. Так что, если клиентская программа в каких-то ситуациях ведет себя не совсем корректно, то это еще не значит, что она плохая, просто она может быть несовместима с данным сервером.
Основные команды FTP-протокола вы можете увидеть в табл. 10.1. При работе через Telnet и для тестирования сервера они вам могут пригодиться.
Таблица 10.1. Команды FTP-протокола
Команда Описание USER имя Используется при авторизации для указания имени пользователя PASS пароль Предназначена для указания пароля при авторизации SYST Вернуть тип системы HELP Предоставить список доступных для выполнения команд LIST Вывести список файлов и каталогов текущей директории PWD Возвратить текущую директорию CWD директория Сменить текущую директорию TYPE тип Указать тип передачи данных: A для ASCII, I — для бинарных файлов RETR параметр Скачать с сервера файл, указанный в качестве параметра STOR параметр Загрузить на сервер файл, указанный в качестве параметра ABOR Прервать последнюю FTP-команду или передачу данных QUIT Выйти из системыБолее 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
1.3. Независимость от протокола
1.3. Независимость от протокола Наша программа, представленная в листинге 1.1, является зависимой от протокола (protocol dependent) IPv4. Мы выделяем и инициализируем структуру sockaddr_in, определяем адрес как относящийся к семейству AF_INET и устанавливаем первый аргумент функции socket равным
24.2. Внеполосные данные протокола TCP
24.2. Внеполосные данные протокола TCP В протоколе TCP нет настоящих внеполосных данных. Вместо этого в TCP предусмотрен так называемый срочный режим[4] (urgent mode), к рассмотрению которого мы сейчас и приступим. Предположим, процесс записал N байт данных в сокет протокола TCP, и эти
10.1. Работа FTP-протокола
10.1. Работа FTP-протокола Как мы уже говорили в гл. 6, для использования FTP-протокола требуется две составляющие: клиент и сервер. Для работы с FTP-сервером можно использовать любой Telnet-клиент, и подключившись к 21 порту сервера, вручную передавать команды. Но во времена
Приложение 1 Команды FTP-протокола
Приложение 1 Команды FTP-протокола Когда вы подключаетесь к FTP-серверу с помощью клиента, работающего из командной строки (например, sftp, рассмотренный в разд. 5.3), то для работы с сервером вам понадобятся следующие команды:? cd путь — изменить текущую директорию на указанную.
Выбор протокола
Выбор протокола Выбор протокола получения почты зависит от имеющихся в наличии ресурсов и от того, какие клиентские программы применяют пользователи. Не секрет, что на решение вопроса большое влияние оказывают вкусы и привычки самого системного администратора. При
Принцип работы протокола NNTP
Принцип работы протокола NNTP Современные серверы новостей используют для обмена между собой и для взаимодействия с клиентами протокол NNTP (Network News Transfer Protocol — протокол передачи сетевых новостей). Как правило, серверы NNTP используют порт 119. Следует заметить, что
Формат файла протокола Apache
Формат файла протокола Apache Данные могут записываться в файл протокола Apache в различных форматах; конкретный формат задается с помощью директивы CustomLog. В данном разделе описывается формат combined, который объединяет в одном файле различные данные. Запись в формате combined
Подключение к сети и настройка протокола
Подключение к сети и настройка протокола Стоит сказать, что, как только вы подсоединяете к компьютеру сетевой кабель и включаете компьютер, Vista сразу же обнаруживает сеть и сохраняет о ней информацию. Однако подключиться к ней сразу она не захочет и предложит пройти некий
5.20 Необходимость следующего поколения протокола IP
5.20 Необходимость следующего поколения протокола IP Внедрение бесклассовых адресов суперсетей и бесклассовой маршрутизации стало последней точкой в совершенствовании и использовании текущей схемы адресации протокола IP.В начале разработки адресов IP никто не мог
6.13 Механизмы протокола IP
6.13 Механизмы протокола IP Рассмотрим более детально характеристики протокола IP версии 4, в том числе элементы формата этого протокола — формат заголовка IP и правила управления датаграммой, пересылаемой по сети. Протокол IP версии 6 рассмотрен в главе 22 (IP версии 5 не
8.12.3 Механизм протокола IGRP
8.12.3 Механизм протокола IGRP Как и в RIP, маршрутизатор IGRP периодически посылает своим соседям сведения об изменениях. К ним относится полное содержимое текущей таблицы маршрутизации со всеми метриками.Промежуток хранения предотвращает воссоздание разорванного маршрута
9.4 Механизмы протокола UDP
9.4 Механизмы протокола UDP Какой механизм необходим для запуска протокола User Datagram Protocol? Прежде всего, UDP должен быть присвоен уникальный идентификатор протокола (17). Это значение будет помещаться в поле протокола IP с названием Protocol во всех исходящих сообщениях UDP. Входящие
11.2 Требования протокола BOOTP
11.2 Требования протокола BOOTP Некоторым компьютерам для запуска требуется небольшое число конфигурационных параметров, другим — длинный подробный список значений множества таких параметров. Некоторым операционным системам, например настольным сетевым станциям, хостам
14.9.2 Элементы данных протокола TFTP
14.9.2 Элементы данных протокола TFTP В TFTP существуют пять типов элементов данных:? Read Request (RRQ, запрос чтения)? Write Request (WRQ, запрос записи)? Data (DATA, данные)? Acknowledgment (ACK, подтверждение)? Error (ERROR, ошибка)Сообщение об ошибке указывает на события, подобные таким: "файл не найден" или "для
24.5 Элементы протокола безопасности
24.5 Элементы протокола безопасности Рассмотрим реализацию безопасности более
Настройка IP-протокола
Настройка IP-протокола Как только вы подсоединяете сетевой кабель и включаете компьютер, Windows Vista обнаруживает сеть и сохраняет информацию о ней. Однако подключение нужно настроить.Откройте Панель управления. Найдите Сеть и Интернет и выберите Просмотр состояния сети и