Защищенность Cisco IOS часто недооценивают как критический аспект общей безопасности информации. Многие системные администраторы не осознают, что слабая защита маршрутизаторов и коммутаторов может привести к серьезной компрометации системы. В этой статье мы обсудим вопросы безопасности Cisco IOS и рассмотрим, как описываемая далее практика защиты способна помешать успешному проведению множества атак. Большая часть статьи посвящена уязвимости процедуры авторизации HTTP в Cisco IOS, посредством которой злоумышленники могут легко получить доступ с правами администратора к уязвимым устройствам Cisco. Как будет показано, среды, где реализованы строгие меры защиты для устройств Cisco, оказываются обычно устойчивы к таким атакам.

УЯЗВИМОСТЬ ПРОЦЕДУРЫ АВТОРИЗАЦИИ HTTP В CISCO IOS

Межсетевая операционная система (Internetworking Operating System, IOS) представляет собой программное обеспечение, используемое для конфигурации и мониторинга многих (но не всех) маршрутизаторов, коммутаторов и других устройств компании Cisco. Администраторы могут обратиться к таким устройствам Cisco с помощью различных методов наподобие telnet, по модемной линии или посредством локального доступа с консоли. Для этого обычно используется интерфейс командной строки Cisco. Альтернативу этим методам составляет сервер Cisco HTTP IOS, включенный в последние версии программного обеспечения Cisco IOS. Он устанавливается на выбранном администратором устройстве Cisco, и благодаря ему осуществляется мониторинг или реконфигурация устройства Cisco удаленным образом из браузера Web. Хотя многие из этих функций могут выполняться посредством интерфейса командной строки, некоторые пользователи предпочитают метод HTTP, находя его более удобным.

В середине 2001 г. Cisco выпустила комментарий по поводу уязвимости своего сервера НТТP IOS. Эта брешь была одинаковой для различных версий Cisco IOS с 11.3 по 12.2 для десятков моделей коммутаторов и маршрутизаторов Cisco. В комментарии утверждалось, что при включенном сервере HTTP и использовании локальной аутентификации для пользователей HTTP имена пользователей и пароли находились на локальном устройстве, а не в удаленной системе аутентификации, такой, как RADIUS. Воспользовавшись данной уязвимостью, атакующий мог получить полный доступ к устройству Cisco с возможностью выполнять удаленным образом команды на устройстве на уровне 15 (наивысший приоритет с правом внесения изменений в конфигурацию). В обычной ситуации для работы на этом уровне требуется ввести пароль, однако уязвимость позволяла атакующему выполнять команды на этом уровне без использования разрешающего пароля.

Эта уязвимость особенно опасна не только потому, что атакующий может получить полный административный доступ, но и в связи с чрезвычайно простым способом ее применения для взлома. Обычно обращение к серверу HTTP на устройстве Cisco осуществляется через URL наподобие:

http://10.1.2.3/level/15/exec/show/config

Формат этих URL задается в соответствии со следующим стандартом:

  • первая часть - IP-адрес устройства Cisco;
  • вторым элементом всегда должен быть level;
  • третья часть (число 15) в нашем примере соответствует уровню привилегий. Уровень 15 на самом деле 16-й по счету; 0, самый низкий уровень, предоставляет весьма ограниченную функциональность. Любое значение между 00 и 15 является значимым;
  • четвертый элемент всегда exec;
  • остальная часть URL может иметь произвольный вид. В случае команды она должна соответствовать ее формату. В нашем примере эквивалентом командной строки, отправляемой с данным URL, является show config.

Чтобы воспользоваться уязвимостью, атакующий предоставляет аналогичный URL устройству Cisco, с тем исключением, что уровень привилегий задается числом от 16 до 99, как это показано ниже:

http://10.1.2.3/level/16/exec/show/config

Не все значения между 16 и 99 подойдут, часто только одно число из этого диапазона позволяет воспользоваться уязвимостью. Какое именно число необходимо указать, зависит от конкретной версии IOS, а также типа и модели устройства. Поскольку атакующий может указать после exec все что угодно, он может выполнить любую из доступных команд IOS с помощью этого метода, после того как установит, какой уровень привилегий открывает доступ к маршрутизатору.

Отметим, что данный метод работает только в случае локальной аутентификации. При ином методе аутентификации пользователей HTTP, например RADIUS и TACACS+, любая попытка воспользоваться этой уязвимостью потерпит неудачу, и от атакующего потребуют предъявить права.

ОПУБЛИКОВАННЫЕ ЭКСПЛОИТЫ

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

С помощью одного опубликованного эксплоита атакующий мог просканировать конкретный сетевой блок в поисках уязвимых устройств Cisco посредством проверки всех уровней привилегий между 16 и 99 для каждого IP-адреса и мониторинга кодов ответа HTTP. Возвращение устройством кода 200 подтверждало успешность выполнения команды, при этом IP-адрес устройства и уязвимый уровень привилегий записывались в файл. Другой опубликованный эксплоит был более дружелюбен к пользователю, он осуществлял аналогичное сканирование, но при обнаружении уязвимого устройства предлагал атакующему предпринять другие действия (изменение сообщения дня, отображение конфигурационной информации или выполнение любой заданной атакующим команды IOS).

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

УСТРАНЕНИЕ УЯЗВИМОСТИ

Данная уязвимость проявлялась при выполнении трех условий: наличие соответствующей версии IOS, активизация сервера HTTP на устройстве и локальная аутентификация для пользователей HTTP. При невыполнении любого из них все попытки воспользоваться брешью ни к чему не приводили (за исключением случая, когда установлена версия Cisco IOS 12.2(2)Т с активизированным IPv6, в этом случае сервер HTTP нельзя дезактивировать).

В соответствии с рекомендациями Cisco единственный способ устранить опасность несанкционированного доступа состоит в прекращении применения локальной аутентификации для пользователей HTTP, вместо которой рекомендуется TACACS+ или RADIUS. Информацию о том, как реализовать TACACS+, можно найти на http://www.cisco.com/warp/public/480/tacplus.shtml.

Альтернативный способ устранить уязвимость — это перейти на более новую версию IOS, в которой она отсутствует. Ее выбор зависит от того, какое устройство вы используете. Информацию об этом можно получить на сайте Cisco. Но прежде, чем браться за модернизацию, следует убедиться, что у соответствующего устройства достаточно ресурсов, прежде всего, для поддержки новой версии IOS.

Устранить неисправность возможно путем блокирования сервера HTTP с помощью команды no ip http server. Сервер HTTP — только один из нескольких методов для просмотра и модификации конфигурации Cisco IOS. Если никто из администраторов не обращается к нему, то, без всякого сомнения, его следует блокировать. Если вы используете уязвимую версию IOS и локальную аутентификацию для HTTP, необходимо немедленно блокировать сервер HTTP и обратиться к другим методам конфигурации устройства до модернизации версии IOS или изменения метода аутентификации.

УКРЕПЛЕНИЕ ЗАЩИТЫ УСТРОЙСТВА CISCO

Правильная практика обеспечения безопасности IOS во многом аналогична применяемой по отношению к серверам и рабочим станциям. Конкретные детали, конечно, отличаются, но базовые принципы те же самые — в конце концов, IOS тоже операционная система.

  1. Подпишитесь на списки рассылок по безопасности Cisco и немедленно изучите все, что относится к устройствам и моделям, работающим в вашей среде. Советы по безопасности можно прочитать на http://www.cisco.com/warp/ public/707/advisory.html.
  2. Помните, что многие пароли Cisco передаются между пользователями и устройством Cisco открытым текстом. Показательный пример - telnet, но многие не знают, что при активизации сервера HTTP (часто даже при наибольшем приоритете) пароль передается на каждый URL открытым текстом. (Он кодируется в соответствии с base64, а это далеко не то же самое, что шифрование, поскольку данный код легко декодировать.) Будьте осторожнее при использовании любых методов соединения, когда пароль передается по сети в открытом виде, поскольку он может быть перехвачен, особенно в общедоступной сети. Даже во внутренней сети велик риск того, что кто-то из пользователей применяет программное обеспечение для подслушивания или в сеть может быть внедрен "троянский конь" для мониторинга трафика и перехвата паролей.
  3. Используйте разные пароли для различных задач и устройств. Например, пароль для конфигурации должен отличаться от пароля HTTP, потому что последний передается в открытом виде. Кроме того, если на каждом маршрутизаторе задан один и тот же пароль, то, узнав его, атакующие получают права доступа ко всем маршрутизаторам. Наконец, пароли следует регулярно менять.
  4. Жизненно важно правильно организовать протоколирование на всех устройствах Cisco. Протоколирование AAA позволит записывать такие события и данные, как регистрация на устройстве, уровень привилегий и доступ по HTTP. Эта информация окажется чрезвычайно полезной для выяснения случившегося, если кто-то воспользуется уязвимостью, поскольку сохранятся свидетельства того, как было осуществлено проникновение.
  5. Ограничьте возможности соединения с устройствами Cisco. Например, у внешнего пользователя не должно быть никаких резонных причин для инициирования соединения telnet с одним из ваших внутренних маршрутизаторов. Сконфигурировав межсетевые экраны и списки доступа маршрутизаторов на запрет прямого соединения с этими устройствами, вы тем самым сможете воспрепятствовать использованию некоторых уязвимых мест. Помните, что эта мера не защищает маршрутизатор Internet. Возможно, вам следует обратиться к провайдеру Internet для блокирования подобных прямых соединений. Методы соединения не ограничиваются telnet, так что наиболее надежной мерой станет блокирование доступа к устройству с помощью любых служб IP, а не только конкретных сервисов наподобие telnet. Кроме того, ip access class позволяет указать, с каких IP-адресов можно устанавливать соединение с каждым VTY.
  6. Всякий метод доступа для соединения с устройствами Cisco следует защитить. Это подразумевает предотвращение физического доступа к маршрутизаторам и коммутаторам, а также ограничение доступа по модему, последовательному подключению и с помощью таких методов доступа по сети, как telnet, rlogin и ssh. Каждый VTY или TTY должен требовать аутентификации, либо их необходимо сконфигурировать на запрет регистрации. Кроме того, все VTY следует настроить с помощью transport input для задания допустимых методов доступа к ним.
  7. Блокируйте все ненужные службы. В зависимости от версии IOS и модели устройства, по умолчанию могут быть активизированы различные службы, о чем вы порой даже не догадываетесь. Малые службы (например, echo, chargen и discard) редко используются на практике, но ими может воспользоваться атакующий. Их можно блокировать с помощью команд no service tcp-small-servers и no service udp-small-servers. Кроме того, запретить следует также finger и такие сервисы, как CDP, HTTP, NTP и SNMP, если они не применяются в работе. В противном случае их надо сконфигурировать защищенным образом. Кроме того, когда служба должна быть доступна только на некоторых интерфейсах, на остальных она подлежит блокированию.

Соблюдение только одного или двух из перечисленных пунктов недостаточно — лучше реализовать их все (если это возможно в вашей среде). Фундаментальная концепция безопасности состоит в организации эшелонированной защиты. Если устройство защищено только одним оборонительным редутом, то его защита крайне слаба. Реализовав несколько механизмов защиты, вы увеличиваете степень защищенности и уменьшаете вероятность использования уязвимого места. Эшелонированная оборона предусматривает применение списков доступа на маршрутизаторах и правил на межсетевых экранах для блокирования доступа к устройству; следование правильной практике обеспечения безопасности IOS, которая включает удаление ненужных сервисов, установление всех выпущенных заплат и периодический аудит конфигурации. Хорошим источником информации по защите устройств может служить руководство «Укрепление защиты маршрутизаторов Cisco» на http://www.cisco.com/warp/public/707/21.html.

Кроме ограничения доступа к устройствам Cisco и их конфигурации для уменьшения уязвимости к проникновению, другой важной мерой защиты является применение средств обнаружения вторжений. Информированность о зондировании сети атакующим на предмет выявления уязвимых мест или использования обнаруженных будет весьма полезной. Предвидя серьезные последствия от уязвимости процедуры авторизации HTTP, некоторые поставщики систем выявления вторжений выпустили сигнатуры спустя несколько часов после появления сообщения Cisco, чтобы администраторы могли получить предупреждение, когда атакующий попытается воспользоваться этой возможностью. В некоторых случаях сигнатуры позволяли определить, была ли атака успешной. Поэтому в среде, где применяются постоянно обновляемые надежные технологии выявления вторжений, администратор может получить сообщение об успешной попытке атаки через несколько секунд после события. О других уязвимых местах можно прочитать во врезке «Другие уязвимые места Cisco IOS».

ЗАКЛЮЧЕНИЕ

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

Карен Кент Фредерик — старший инженер по безопасности в команде быстрого реагирования в NFR Security, специализирующаяся на разработке сигнатур для выявления атак. С ней можно связаться по адресу: kkent@bigfoot.com.


Другие уязвимые места Cisco IOS

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

Другие уязвимые места Cisco IOS

  • В одном только сообщении описывались три уязвимых места SSH. Наиболее серьезная ошибка позволяла дешифровать сеансы SSH. Единственной практической возможностью устранить ее был переход на другую версию IOS. Конечно, администратор всегда мог отказаться от применения SSH, но этим проблема обеспечения безопасности могла только усугубиться, так как пришлось бы использовать telnet или другой метод соединения с передачей информации открытым текстом. К этой мере следует прибегать только в крайнем случае, когда нельзя осуществить модернизацию IOS.
  • Атакующий может вызвать сбой на устройстве с активизированным протоколом PPTP путем отправки ему абнормального пакета PPTP. Аналогично уязвимости SSH вариантов здесь немного - блокировать PPTP или модернизировать IOS. Конечно, если на устройстве не требуется поддержка PPTP, то он уже должен быть блокирован.
  • Одна из уязвимостей IOS была преимущественно присуща Cisco 6400 Access Concentrator Node Router Processor 2 (NRP2). Если пароль для VTY не задан, то доступ к нему по telnet мог получить любой желающий. Как и в других случаях, необходим переход на версию IOS, где эта уязвимость отсутствует. Простое и быстрое решение состоит в задании пароля для каждого VTY. Как упоминалось ранее, аутентификация должна быть правильно сконфигурирована, в противном случае интерактивную регистрацию на VTY следует запретить.
  • Ряд версий IOS неправильно обрабатывает попытки соединения с некоторыми номерами портов TCP, после которых маршрутизатор производит перезагрузку во время следующей попытки доступа к конфигурационной информации. Имеющие отношения к этой уязвимости номера портов не используются IOS, так что любое обращение к ним является незаконным. Конечно, переход на другую версию IOS позволит ликвидировать данную проблему. Кроме того, реализация правил на межсетевом экране и задание списков доступа на маршрутизаторе позволят блокировать попытки установления таких соединений.

назад


Ресурсы Internet

Информация по безопасности Cisco IOS опубликована по следующим адресам:

«Как укрепить безопасность маршрутизаторов Cisco» см. на http://www.cisco.com/warp/public/707/21.html;

«Ответы на инциденты с безопасностью продуктов Cisco» см. на http://www.cisco.com/warp/ public/707/sec_incident_response.shtml;

«Защита HTTP» см. на http://www.cisco.com/univercd/cc/td/doc/ product/sofware/ios121/121cgcr/secur_c/scdoverv.htm;

«Повышение защищенности сетей IP» см. на http://www.cisco.com/ univercd/cc/td/doc/cisintwk/ics/cs003.htm.

Описание уязвимости процесса авторизации HTTP в Cisco IOS вы найдете здесь:

«Сообщения о безопасности Cisco: уязвимость авторизации HTTP в Cisco IOS» см. на http://www.cisco.com/warp/public/707/IOS-httplevel-pub.html;

«Кандидат CVE CAN-2001-0537» см. на http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2001-0537.

О других уязвимых местах Cisco IOS можно узнать, обратившись по указанным адресам:

«Сообщения о безопасности Cisco: несколько уязвимостей SSH» см. на http://www.cisco.com/warp/public/707/SSH-multiple-pub.html;

«Сообщения о безопасности Cisco: уязвимость PPTP в Cisco IOS» см. на http://www.cisco.com/warp/public/707/PPTP-vulnerability-pub.html;

«Сообщения о безопасности Cisco: уязвимость telnet в Cisco 6400 NRP2» см. на http://www.cisco.com/warp/public/707/6400-nrp2-telnet-vuln-pub.html;

«Сообщения о безопасности Cisco: перезагрузка IOS после сканирования уязвимости» см. на http://www.cisco.com/warp/public/707/ios-tcp-scanner-reload-pub.html.