ИССЛЕДОВАНИЕ БЕЗОПАСНОСТИ ПРОТОКОЛА FTP
А.В. Иванов
Эта статья связана с протоколом FTP - протоколом передачи файлов. В ней рассматриваются схемы работы протокола, приводится классификация удаленных атак, а также меры противодействия уязвимо-стям протокола.
Введение
В статье рассматриваются аспекты безопасности протокола FTP. Актуальность данной проблемы связана с широким использованием данного протокола. В настоящее время протокол является одним из двух наиболее популярных средств обмена файлами.
Проблемы его безопасности обусловлены временем принятия данного стандарта (1985 год) и особенностями его работы. Со времени создания протокол ни разу не дорабатывался с учетом требований безопасности, хотя рекомендации по этому вопросу выпущены были.
В настоящее время протокол часто используется как один из этапов удаленной атаки, на котором либо происходит сбор информации о системе и сети, в которой находится атакуемая система, либо вредоносный код записывается на атакуемый узел с целью его локального выполнения.
В рамках статьи проводится обзор протокола FTP, описание его работы и особенностей, классификация удаленных атак. Далее рассматриваются атаки, относящиеся непосредственно к протоколу, и способы защиты от них. В заключение приводится описание комплексного подхода к противодействию уязвимостям протокола FTP.
Протокол FTP
FTP (File Transfer Protocol или «протокол передачи файлов») - один из старейших протоколов в Internet, входящий в его стандарты, известные как RFC (Request for Comments). Его начало было положено в 1971 году в стандарте RFC 114, который описывал первые механизмы передачи файлов между двумя узлами сети. После этого он претерпел множество изменений, а в 1985 году был принят стандарт RFC 959, который считается на данный момент основной версией.
Стандарт RFC 959 определяет 4 основных функции протокола FTP:
1. предоставление файлов для общего доступа;
2. упрощение обмена данными и непрямого использования удаленных компьютеров посредством программных средств;
3. устранение различий в представлении данных между узлами сети различных архитектур;
4. надежная и эффективная передача данных.
В общем случае сетевой протокол предполагает участие двух узлов сети, между которыми происходит обмен информацией, и наличие одного канала связи, по которому этот обмен происходит. В случае протокола FTP используется два канала связи: канал управления обменом и канал передачи данных.
Схема работы протокола FTP показана на рис. 1. Сначала по запросу клиента формируется канал управления, который в дальнейшем используется для передачи команд от клиента и откликов от сервера. Канал передачи данных формируется сервером по команде клиента. Этот канал не должен существовать постоянно на протяжении всей FTP-сессии и может формироваться и ликвидироваться по мере необходимости. Канал управления может быть закрыт только после завершения информационного обмена. Канал передачи данных может работать в двух режимах: активном и пассивном.
При использовании активного режима клиент указывает с помощью FTP-команды PORT адрес и порт узла, с которым сервер создает соединение с 20-го порта для обмена данными. Пассивный режим включается FTP-командой PASV. Ответ на эту команду содержит адрес и порт сервера, к которому должен подключиться клиент для начала обмена данными. Порт выбирается произвольно из верхнего диапазона номеров (больше 1024).
Рис.1. Схема работы протокола FTP
Использование раздельных каналов управления и данных позволяет ввести третьего участника обмена данными. Такая схема взаимодействия приведена на рис. 2.
Рис. 2. Соединение с двумя разными серверами и передача данных между ними
В этом случае пользователь организует канал управления с двумя серверами и прямой канал данных между ними. Команды управления идут через пользователя, а данные - напрямую между серверами. Один из серверов должен работать в пассивном
режиме, другой - в активном. Клиент, переведя какой-либо сервер в пассивный режим, получает адрес и порт, который потом используется для указания адреса узла, с которым должен соединиться другой сервер, работающий в активном режиме.
Уязвимости протокола FTP
Наиболее существенным недостатком протокола является передача всей информации, а также имен и паролей пользователей, в открытом виде. Это обусловливает невозможность использования данного протокола для передачи конфиденциальной информации без использования сторонних программных и аппаратных средств. Если злоумышленник имеет доступ к каналу связи, через который проходят эти данные, необходимо использовать шифрование. Это характерный случай пассивного воздействия атаки - состояние сервера не изменяется, политика безопасности не нарушается, но существует доступ к необходимой информации.
В протоколе не определены действия, противодействующие подбору паролей. После неправильного пароля клиенту предоставляется возможность ввести его повторно, а соединение не разрывается. Также не существует ограничений на количество повторов. В результате атака, направленная на подбор паролей, может продолжаться сколь угодно долго, а отсутствие задержек при ответах сервера повышает эффективность.
Стандарт протокола FTP определяет код ответа 530 на команду USER, когда имя пользователя не допускается. Если имя пользователя верно и необходимо ввести пароль, то возвращается код ответа 331. Это является уязвимостью с точки зрения защиты имен пользователей. По ответам сервера можно судить о существовании определенного имени в базе пользователей и продолжить подбор пароля.
Следующие две уязвимости связаны с пассивным режимом протокола и возможностью участия в соединении третьего узла.
При использовании пассивного режима передачи данных, при котором сервер указывает клиенту, на какой порт необходимо соединиться для начала передачи, возможна установка соединения с другого компьютера. Если реальный клиент уже выбрал необходимый для скачивания файл и имеет необходимый доступ, то возможна кража от его имени. Злоумышленник, зная особенности выбора портов FTP-сервером для организации пассивного режима, повышает вероятность успеха атаки. Для этого необходимо пытаться устанавливать соединения с портами, и в случае успеха файл будет украден. Точно также можно записать файл на сервер от имени зарегистрированного пользователя, установив соединение с портом сервера, ожидающим начало файла.
Атака «FTP-bounce» использует команду PORT для соединения с третьим компьютером. Схема атаки изображена на рис. 3. В команде указывается адрес и порт узла-жертвы, с которым сервер устанавливает ответное соединение.
Рис. 3. Схема атаки РТР-Воипее
Данную уязвимость можно использовать для: ■ скрытого сканирования другого узла, поскольку сканирование будет проходить от имени БТР-сервера, а не атакующего. В некоторых условиях это позволяет обойти
списки доступов, так как FTP-сервер может находиться в подсети жертвы или иметь с ним доверительные отношения; ■ обхода межсетевых экранов. Если некий порт внутреннего сервера закрыт межсетевым экраном, а доступ к FTP-серверу есть, то можно от его имени установить соединение с портом, который недоступен. Далее происходит посылка специально сформированного файла, содержащего инструкции протокола службы, с которой было установлено соединение. В результате имитируется прямое соединение с вводом необходимой последовательности команд.
В отличие от атак на протокол, использующих особенности или недоработки протокола, приведенные выше, существуют также атаки на приложения - серверы, реализующие этот протокол. В основном для этого используются некорректно сформированные команды. В общем виде целью данных атак является:
1. нарушение работоспособности системы, которое включает в себя аварийный останов или зацикливание программы-сервера, избыточное использование системных ресурсов (например, оперативной памяти или процессорного времени);
2. повышение привилегий доступа к системе;
3. выход за границу БТР-каталога%
4. выполнение команд ОС с привилегиями FTP-сервера.
Противодействие уязвимостям протокола FTP
Уязвимости протокола по большей части обусловлены его особенностями и отсутствием способов защиты передаваемой информации. Для повышения безопасности необходимо использовать сторонние средства, а также тщательно продумывать взаимодействие узлов сети посредством протокола FTP.
Проблема передача всей информации в открытом виде решается либо использованием средств шифрования, где это возможно, либо защитой каналов связи от несанкционированного доступа. Остальные проблемы можно решить с помощью фильтрации.
Для защиты имен пользователей от подбора фильтр должен подменять ответ 530 FTP-сервера, формируемый при получении команды USER с несуществующим именем, на ответ 331, который подтверждает существование имени пользователя. Для защиты паролей от перебора необходимо настроить FTP-сервер таким образом, чтобы соединения закрывались после некоторого количества попыток ввода пароля. В фильтр можно также заносить количество указанных USER-PASS команд с отрицательным ответом сервера и, при их недопустимом значении, закрывать порт для данного адреса на определенный промежуток времени, для чего необходимо взаимодействие с межсетевым экраном. Также необходимо обеспечить паузу перед ответом на каждый неправильный пароль, что позволит существенно затормозить их перебор. Однако при этом остается возможность перебора с использованием параллельных соединений с FTP-сервером. Для противодействия необходимо устанавливать ограничения на количество одновременно обслуживаемых подключений, что, в свою очередь, делает возможным атаки типа «Отказ в обслуживании».
Для предотвращения кражи файлов при пассивном режиме необходима фильтрация по IP-адресу. Адрес клиента, который инициировал пассивный режим, будет адресом назначения пакета с ответом на команду PASV. При использовании такой фильтрации становится невозможным обмен между двумя серверами, инициируемый клиентом, поскольку сервер, переведенный в активный режим, будет иметь адрес, отличный от адреса клиента, а пакеты от него будут фильтроваться. По этой причине необходимо определить, будет ли существовать такой обмен и можно ли его избежать, и только после этого осуществлять фильтрацию.
Возможность атаки «FTP-Bounce» также обусловливается особенностями протокола. Способ решения - такой же, как и для проблемы кражи файлов. Также возможна фильтрация пакетов или конфигурация FTP-сервера, чтобы при получении команды PORT с номером порта меньше 1024 выдавалась ошибка. Это нужно для того, чтобы предотвратить атаку на другие стандартные сервисы от имени FTP-сервера. Протокол FTP не должен использовать номера портов меньше 1024 для передачи данных
Наиболее значительная группа уязвимостей связана с атаками на приложения. Это связано с большим разнообразием программных средств, реализующих FTP-серверы, и их версий. Существует 2 способа обработки некорректных запросов.
1. Вести базу некорректных запросов и фильтровать пакеты в соответствии с ней. Этот вариант плох тем, что база уязвимостей растет, а быстродействие фильтра падает. Также необходимо отслеживать новые уязвимости и новые версии программного обеспечения для обновления этой базы.
2. Не фильтровать некорректные запросы вообще, а отслеживать состояние FTP-сервера. В этом случае должны быть обеспечены отказоустойчивость операционной системы к сбоям FTP-сервера и возможность корректного перезапуска приложений в ней.
Второй способ является комплексным и включает в себя, помимо фильтрации, следующее:
■ настройку FTP-сервера для работы под отдельной учетной записью с ограниченными привилегиями. В этом случае получение прав самого сервера в результате использования его уязвимости ничего не даст;
■ отслеживание состояния FTP-сервера, а в случае аномалий в его поведении - корректный перезапуск. Это должно осуществляться средствами ОС (контроль за выполнением процесса и используемых ресурсах) и сторонними средствами (контроль за возможностью соединения с FTP-сервером по сети);
■ запрет на исполнение программ, записанных клиентами на FTP-сервер. Это необходимо по причине частого использования протокола FTP как средства для записи злоумышленником вредоносного кода на сервер-жертву, который впоследствии запускается как локальный.
Заключение
В статье были рассмотрены аспекты безопасности протокола FTP, являющегося популярным средством передачи файлов по сети. Было выяснено, что протокол по своей природе не является безопасным, и необходимо использование комплексных средств защиты. Этими средствами являются: правильное построение модели файлового обмена, корректная настройка программного обеспечения, использование алгоритмов шифрования везде, где это доступно, применение фильтрации при взаимодействии с межсетевыми экранами и использование сторонних средств для контроля за состоянием программного обеспечения FTP-сервера. Применение этих средств позволит уменьшить риск атак с использованием этого протокола.
Литература
1. Postel J., Reynolds J., File Transfer Protocol (FTP), RFC 959, ISI, 1985.
2. Allman M., Ostermann S., FTP Security Considerations, Ohio University, 1999.
3. Леонов Д.Г., Лукацкий А.В., Медведовский И.Д., Семьянов П.В. Атака из Internet. М.: СОЛОН-Р, 2002.
4. Лукацкий А.В. Обнаружение атак. / 2-е изд., перераб. и доп. СПб.: БХВ-Петербург, 2003.