ФАК по
CISCO
Вернуться обратно
Защита маршрутизатора средствами CISCO
IOS
Содержание.
Введение
Программное обеспечение маршрутизаторов
Cisco
Основные
интерфейсы
Консольные
интерфейсы
Решения Cisco Systems
для обеспечения сетевой безопасности
Пользовательский и привилегированный
уровни доступа
Парольная
защита
Ограничение доступа к маршрутизатору
Введение.
Компания Cisco Systems является абсолютным лидером на рынке
маршрутизаторов
(занимает около 70% рынка; на втором месте Juniper c 21%).
Cisco предлагает
модели от простейших маршрутизаторов для малого офиса (серия
800) до
мультигигабитных устройств, размещаемых в ядре Интернета (серия
12000).
Кроме маршрутизаторов Cisco известна коммутаторами ЛВС марки
Catalyst,
межсетевыми экранами марки PIX, продуктами для IP-телефонии,
продуктами
марки Aironet для организации беспроводных сетей и др. С учетом
всей
номенклатуры выпускаемой продукции Cisco Systems является лидером
мирового
рынка оборудования связи (14%; на втором месте Siemens с
11,7%).
Все модели, кроме серии 800, обладают той или иной степенью
модульности, то
есть, позволяют устанавливать сменные интерфейсные модули
и
специализированные вычислительные модули (для шифрования или
обработки
голоса). Соответственно, цена устройства сильно зависит от
комплектации.
Широко распространены также устройства серий 2500 и 4000, но в
настоящее
время они сняты с производства (за исключением моделей 2509 и
2511). На
смену 2500 пришли маршрутизаторы серий 1700 и 2600, а на смену 4000
- 3600.
Программное обеспечение маршрутизаторов Cisco.
IOS
Все маршрутизаторы Cisco работают под управлением операционной
системы
Cisco IOS. Для каждой модели
маршрутизатора предлагаются несколько
разновидностей IOS.
Образы IOS
различаются по версии. Cisco использует достаточно сложную
систему
идентификации версий, ознакомиться с которой можно по этой ссылке.
Для
студентов достаточно будет следующего понимания: номер версии Cisco
IOS
состоит из трех частей:
Номер основного релиза (major release; в
настоящее время обычно встречаются
основные релизы 11.3, 12.0, 12.1,
12.2).
Номер обновления (maintenance release), начиная с 1. Обновления
выпускаются
каждые 8 недель, в них включаются исправления ошибок. Набор
функциональных
возможностей релиза не изменяется.
Номер выпуска
(software rebuild), обозначается буквой, начиная с а. Выпуски
предназначены
для экстренного исправления ошибок, которое не может ждать до
следующего
обновления.
Таким образом, IOS 12.2(6с) - это основной релиз 12.2,
обновление 6, выпуск c.
Каждая версия характеризуется степенью зрелости,
как правило это LD
(Limited Deployment) или GD (General Deployment). LD
подразумевает меньший
объем тестирования и опыта эксплуатации по сравнению с
GD.
Кроме основного ряда IOS существует экспериментальный ряд, так
называемый T-
train (или, официально, Technology Releases). Именно в T-train
включаются
новые возможности и проходят "обкатку" до того, как будут введены
в
основной ряд. Нумерация версий ряда Т строится аналогично основному
ряду
(только выпуски нумеруются цифрами):
IOS 12.1(6)T2 - этот T-train
базируется на основном релизе 12.1. Это второй
выпуск шестого обновления
указанного T-train.
Со временем из T-train получается следующий основной
релиз (так например,
12.0(6)Т переходит в 12.1, и в тот же момент образуется
ряд 12.1Т для
добавления новых возможностей). Зрелость T-train
характеризуется как ED
(Early Deployment), что означает, что программное
обеспечение не
рекомендуется применять на ответственных участках, если
аналогичную
функциональность можно найти в версиях LD или GD.
Не
всякая версия может быть установлена на конкретный маршрутизатор в
конретной
конфигурации; предварительно следует проконсультироваться у
специалиста
компании-реселлера.
Кроме версий, образы IOS различаются по заложенной в
них функциональности.
Функциональные возможности группируются в наборы,
называемые feature sets.
Минимальная функциональность содержится в IP only
feature set (или просто
"IP"); она включает в себя, в частности, поддержку
IP-интерфейсов,
статическую и динамическую IP-маршрутизацию, поддержку
мониторинга и
управления по SNMP. IP Plus feature set включает дополнительные
возможности
(например, поддержку технологии VoIP для передачи голоса). Также
имеются
feature sets с функциями межсетевого экрана (FW, Firewall),
системы
обнаружения атак (IDS), криптозащиты трафика (IPSEC) и др., в том
числе
имеются и комбинированные образы, например IP Plus FW IPSEC. Бесплатно
с
маршрутизатором поставляется только IP only feature set, остальные
образы
необходимо покупать. Для определения того, в каком feature set
имеется
требуемая вам возможность, следует обратиться к специалисту
компании-
реселлера.
Таким образом, конкретный образ IOS
идентифицируется тремя параметрами:
аппаратная платформа, для которой он
предназначен,
feature set,
версия.
Пример имени файла с образом
IOS: c3620-is-mz.122-13a.bin. Это IOS IP Plus
12.2(13a) для Cisco 3620.
Feature set (IP Plus) идентифицируется символами
"is", следующими за
обозначением платформы. Другие примеры feature sets:
"i" - IP, "js" -
Enterprise Plus, "io" - IP FW. Подобная кодировка
справедлива для серий 2600,
3600; для других платформ коды feature set
могут отличаться.
Буквы "mz" означают, что IOS при запуске загружается в оперативную
память
(m) и что в файле образ хранится в сжатом виде (z).
Основные интерфейсы.
В каждом маршрутизаторе имеется
некоторое число физических интерфейсов.
Наиболее распространенными типами
интерфейсов являются:
Ethernet/FastEthernet и последовательные интерфейсы
(Serial).
Последовательные интерфейсы по своему аппаратному исполнению
бывают
синхронные, синхронно-асинхронные (режим выбирается командой
конфигурации)
и асинхронные (Async). Протоколы физического уровня
последовательных
интерфейсов: V.35 (чаще всего используется на синхронных
линиях), RS-232
(чаще всего используется на асинхронных линиях) и
другие.
Каждому интерфейсу соответствует разъем на корпусе
маршрутизатора.
Интерфейсы Ethernet на витой паре обычно имеют разъем RJ-45,
но на
некоторых моделях (серия 2500) встречаются разъемы AUI (DB-15),
которые
требуют подключения внешнего трансивера, реализующего тот или
иной
интерфейс физического уровня Ethernet.
Последовательные
интерфейсы чаще всего снабжаются фирменными разъемами DB-
60 F или
SmartSerial F (последний более компактен). Для того, чтобы
подключить
интерфейс к внешнему оборудованию, необходимо использовать
фирменный кабель -
свой для каждого протокола физического уровня. Фирменный
кабель имеет с одной
стороны разъем DB-60 M, а с другой стороны - разъем
выбранного стандарта
физического уровня для устройства DTE или DCE. Таким
образом, кабель
выполняет следующие задачи:
путем замыкания специальных контактов в
разъеме DB-60 сигнализирует
маршрутизатору, какой выбран протокол физического
уровня, и каким типом
устройства является маршрутизатор: DTE или
DCE;
является переходником с универсального разъема DB-60 на
стандартный разъем
выбранного протокола физического
уровня.
Примечание. В терминологии Cisco кабель DTE подключается к
устройству DCE,
а кабель DCE - к устройству DTE; то есть тип кабеля
указывает, какого вида
устройством является сам маршрутизатор, а не тот
прибор, с которым его
соединяет кабель.
Обычно кабели DTE
используются для подключения к маршрутизатору модемов, а
связка двух кабелей
DTE-DCE используется для соединения двух
маршрутизаторов напрямую
(back-to-back), при этом, естественно, один из
маршрутизаторов будет в роли
DCE. На рисунке 2.2 приведен пример
сипользования кабедей для соединения
устройств через интерфейс V.35
(стандартный разъем M.34).
Кроме
универсальных последовательных интерфейсов, рассматривавшихся
выше,
существуют специализированные последовательные интерфейсы,
реализованные
вместе с каналообразующим оборудованием: контроллеры E1, модули
ISDN BRI,
модули DSL, встроенные аналоговые или ISDN-модемы. В этом
случае
последовательный интерфейс находится внутри маршрутизатора,
"между"
каналообразующим оборудованием и ядром маршрутизатора. Для
подключения
линий связи к вышеуказанному каналообразующему оборудованию
обычно
используется разъем RJ-45 (для подключения линий к аналоговым модемам
- RJ-11).
Консольные интерфейсы.
Два
специальных последовательных интерефейса - CON и AUX - предназначены
для
доступа с терминала администратора к маршрутизатору для настройки
и
управления. Интерфейс CON подключается напосредственно к
COM-порту
компьютера администратора. К интерфейсу AUX подключается модем, что
дает
возможность удаленного управления маршрутизатором путем дозвона на
модем.
Интерфейс AUX может быть использован и как обычный
последовательный
интерфейс, через который производится маршрутизация
дейтаграмм, но обрабока
пакетов на этом интерфейсе требует большой доли
процессорного времени
(каждый полученный байт вызывает прерывание), а
скорость ограничена 115
кбит/с. Интерфейс CON используется только для
терминального доступа к
маршрутизатору, параметры COM-порта должны быть
9600-8-N-1.
Обычно разъемы CON и AUX выполнены в формате RJ-45.
Подключение к ним
производится с помощью специального кабеля RJ45-RJ45,
прилагаемого к
маршрутизатору. Одним концом кабель включается в CON или AUX,
а на другой
надевается переходник. Для подключения порта CON к компьютеру на
кабель
надевается переходник, помеченный как "TERMINAL", а для подключения
порта
AUX к модему со стороны модема используется переходник
"MODEM".
Виртуальные
интерфейсы.
Наряду с физическими интерфейсами в маршрутизаторе
могут быть организованы
виртуальные интерфейсы: Loopback, Null, Dialer,
Virtual-Template,
Multilink, BVI и др.
Loopback и Null вообще никак не
связаны с физическими интерфейсами.
Loopback - это интерфейс обратной связи, ему можно назначать IP-адрес
и
указывать некоторые другие параметры, используемые при
настройках
интерфейсов. Loopback имеет следующие свойства:
интерфейс
всегда активен (в отличие от физических интерфейсов, где,
например, обрыв
кабеля переводит интерфейс в отключенное состояние);
как и в случае
физических интерфейсов, пакеты, адресованные на этот
интерфейс, считаются
адресованными маршрутизатору, а воображаемая IP-сеть,
к которой он
"подсоединен" (согласно своим адресу и маске), считается
непосредственно
подсоединенной к маршрутизатору;
пакеты, маршрутизированные через такой
интерфейс (то есть, направленные к
узлам воображаемой сети, к которой
подсоединен Loopback), уничтожаются.
Применения интерфейсов Loopback
будут рассмотрены по ходу лабораторного
практикума.
Интерфейс Null не
имеет IP-адреса и прочих настроек. Пакеты,
маршрутизированные через интерфейс
типа Null, уничтожаются. Null
применяется при фильтрации дейтаграмм, а также
для создания защитных
маршрутов при суммировании маршрутов.
Другие
виртуальные интерфейсы фактически получают и отправляют данные
через
физические интерфейсы, однако в данном случае IP-интерфейс больше
не
ассоциируется непосредственно с физическим портом маршрутизатора.
Порт
(порты), находящиеся "под" виртуальным интерфейсом, функционируют
теперь
только на уровнях 1 и 2 и им не присваиваются
IP-адреса.
Решения Cisco Systems для обеспечения
сетевой безопасности.
Компания Cisco Systems, являясь одним из
ведущих производителей сетевого
оборудования, предлагает полный спектр
решений для обеспечения сетевой
безопасности. Ниже приведен краткий перечень
новых продуктов и решений,
предлагаемых в данной области.
Для
обеспечения защиты сетевых соеднений: Network based IPSec VPN solution
for
Service Providers, VPN AIM Module for Cisco 2600XM, VAM2 Card for
7200s, VPN
SM for Cat6500/7600, VPN 3000 Concentrator v4.0, AES Module for
VPN 3000, VPN
Client v.4.0.
Для управления системой безопасности: Cisco IOS AutoSecure,
Cisco Security
Device Manager v1.0 , Cisco ISC v3.0, CiscoWorks VMS v2.2,
CiscoWorks
Security Information Management Solution (SIMS) v3.1.
Для
обнаружения и предотвращения сетевых атак и вторжений: IDS 4215 Sensor,
IDS
Network Module for Cisco 2600XM, 3660, 3700 series, Cisco Security
Agents
v4.0, Cisco CSS 11501S and WebNS v7.2 SSL s/w ,Cisco ACNS Software
version
5.0.3 with Websense Content Filtering On-Box.
Для достоверной
идентификации сторон, участвующих в защищенном обмене
информацией: Cisco IOS
software Identity Enhancements.
Network based IPSec VPN solution for
Service Providers позволяет
поставщикам услуг доступа управлять
распределенными сетями на базе MPLS-
VPN, IP-VPN и FR/ATM-VPN при помощи
одного интегрированного пакета
управления.
VPN AIM Module for Cisco
2600XM (AIM-VPN/BPII) предоставляет маршрутизатору
функции аппаратной
шифрации с поддержкой алгоритмов DES, 3DES и AES и
обеспечивает в два раза
более высокую производительность по сравнению с
предыдущим модулем ускорения
шифрации (AIM-VPN/BP) - до 22 Мбит/сек.
VAM2 Card for Cisco 7200 - модуль
аппаратного ускорения шифрации для
маршрутизаторов серии Cisco 7200. Один
модуль обеспечивает
производительность шифрации до 260 Мбит/сек, два модуля -
до 460 Мбит/сек.
VPN SM for Cat6500/7600 - сервисный модуль аппаратной
шифрации для
коммутаторов Catalyst 6500/7600. Обеспечивая производительность
до 14
Гбит/сек он также поддерживает расширенную функциональность - поддержку
и
ускорение GRE-туннелей, полнофункциональне резервирование
IPSec-соединений
(stateful failover), IPSec Remote Access и возможность
подключения WAN-
интерфейсов.
VPN 3000 Concentrator v4.0 - новое ПО
для концентратора VPN-соединений.
Появились новые диагностические функции,
поддержка авторизации
пользователей через Kerberos/Active Directory,
LAN-to-LAN backup для
резервирования межсетевых соединений. Также появилась
поддержка нового
модуля шифрации AES - SEP-E, поддерживающего до 10000
одновременных
соединений DES/3DES/AES.
VPN Client v.4.0 - новая версия
ПО для клиентских рабочих станций,
работающих через VPN. Интеграция с Cisco
Security Agent предоставляет
пользователю функции firewall, удобный и простой
графический интерфейс
облегчает настройку и управление, поддержка приложений,
работающих с
протоколом H.323 позволяет дистанционно общаться, не беспокоясь
о
защищенности соединения.
Cisco IOS AutoSecure - функция интерфейса
IOS, позволяющая быстро
произвести настройку функций безопасности, отключить
редко используемые
сетевые сервисы и разрешить доступ и управление только для
авторизованных
пользователей.
Cisco Security Device Manager v1.0 - ПО
управления сетевой безопасностью,
доступное на всех моделях маршрутизаторов
доступа, от Cisco 830 до Cisco
3700, позволяющее в графическом режиме,
удаленно с любой раюбочей станции
(через веб-браузер) изменять любые
настройки безопасности на
маршрутизаторе. Встроенный алгоритм аудита
предупредит пользователя о
потенциально опасных настройках и предложит
варианты решения.
Cisco ISC v3.0 - Cisco IP Solution Center позволяет
определять политики
безопасности для всей сети, скрывая подробности
реализации политик на
конкретных устройствах. Политики позволяют учитывать
схемы реализации
механизмов LAN-to-LAN VPN, Remote Access VPN, EZ VPN и
DMVPN, Firewall, NAT
и QoS, а ISC реализует их на всех сетевых устройствах,
работающих с
механизмами безопасности (IOS, PIX, VPN3K Concentrator и
т.п.).
CiscoWorks VPN/Security management Solution 2.2 централизует
функции
управления, мониторинга, учета, диагностики и обновления для ПО
всех
сетевых устройств Cisco, реализующих функции сетевой
безопасности.
CiscoWorks Security Information Management Solution (SIMS) v3.1
позволяет
управлять безопасностью в сетях, использующих оборудование и ПО
различных
производителей.
IDS 4215 Sensor - отдельное устройство в
стоечном исполнении, высотой 1 RU,
позволяет организовывать до 5 сенсоров с
общей пропускной способностью до
80 Мбит/сек, которые способны прослушивать
сетевой трафик, отслеживать
потенциально опасную активность, предпринимать
действия по предотвращению и
остановке сетевых атак.
IDS Network
Module for Cisco 2600XM, 3660, 3700 series - аналогичное
устройство, но
предназначенное для слежения за трафиком на самом периметре
сети - на
маршрутизаторе доступа. Обеспечивая производительность до 45
Мбит/сек, модуль
использует то же ПО, что и IDS sensor, что позволяет
строить гомогенную
инфраструктуру безопасности, с единым централизованным
интерфейсом
управления.
Cisco Security Agents v4.0 - "последняя линия" сетевой
обороны, ПО,
устанавливаемое на рабочие станции и серверы. Они отслеживают
попытки
несанкционированного доступа к операционной системе, а также следят
за
активностью приложений, в случае некорректных действий или
нестабильной
работы они могут остановить или перезапустить приложение или
сервис.
Оповещения о подозрительных событиях пересылаются и накапливаются
на
центральной консоли управления.
Cisco CSS 11500 Series Content
Services Switch - платформа управления
трафиком на уровнях 4-7, позволяющая
определять правила распределения
трафика, его балансировки и
резервирования.
Cisco ACNS Software version 5.0.3 with Websense Content
Filtering On-Box -
версия 4 этого продукта работала как двухуровневая
система, где модуль
фильтрации размещался на устройствах Cisco Content
Engine, а набор шаблонов
WebSense для фильтрации - на внешнем сервере. Новая
версия совмещает оба
элемента на одной платформе (Content
Engine).
Cisco IOS software Identity Enhancements - новые функции IOS
обеспечивают
надежную идентификацию устройств и пользователей, участвующих в
обмене
информацией по защищенным каналам. Поддержка инфраструктуры PKI
и
интеграция с функциями AAA на серверах, маршрутизаторах и
концентраторах
доступа облегчают идентификацию в распределенной сети с
использованием
цифровых сертификатов и подписей. Secure RSA private key
предотвращает
использование украденных маршрутизаторов - в случае попытки
вскрытия пароля
приватные ключи маршрутизатора уничтожаются. N-tier CA
Chaining позволяет
отследить цепочку доверенных сертификатов, начиная с
ближайшего и
заканчивая центральным (root) certificate authority.
Authentication Proxy
проверяет права пользователя перед тем как выпустить
пользователя за
пределы сети. Secure ARP - связывает MAC и IP-адреса
устройств, не позволяя
подменить одно из устройств в процессе передачи
данных. Поддержка 802.1X
требует авторизации пользователя перед тем как
пустить его трафик в сеть.
Пользовательский и
привилегированный уровни доступа.
Cisco IOS для
конфигурации маршрутизатора поддерживает интерфейс командной
строки, работать
с которым можно с терминала, подключенного к
маршрутизатору через консольный
порт (Console port) или с помощью
удаленного доступа по модему и telnet -
соединения по сети. Сеанс командной
строки называется
EXEC-сессией.
В целях безопасности Cisco IOS обеспечивает два уровня
доступа к интерфейсу
командной строки: пользовательский и привилегированный.
Пользовательский
уровень называется user EXEC режим, а привилегированный
privileged EXEC
режим.
Предусмотрено 16 уровней привилегий: от 0 до
15. На нулевом уровне доступно
всего пять команд: disable, enable, exit,
help, logout. На уровне 15
доступны все возможные команды.
Пользовательский режим
Вид командной строки имеет вид
Router>
Этот режим позволяет временно изменить настройки терминала,
выполнить
основные тесты, просмотреть системную информацию и подключиться
к
удаленному устройству. Пользовательский режим по умолчанию имеет
первый
уровень привилегии. Набор команд существенно ограничен. Для перехода
на
другой уровень привилегий необходимо ввести команду enable [номер
уровня],
например
Router>enable 7
Команды enable и
enable 15 являются аналогичными и приводят пользователя на
привилегированный
уровень.
Привилегированный режим
Вид
командной строки в имеет вид Router#
Набор привилегированных команд
устанавливает параметры работы системы.
Пользователь имеет доступ к командам
глобального конфигурирования и
специальным конфигурационным
режимам.
Возможности пользовательского режима с первым уровнем
привилегий достаточно
широкие. Из этого режима возможно выполнение "опасных"
команд, таких как
telnet, connect, tunnel, login и совсем не нужных для
некоторых
пользователей команд traceroute, enable, mstat, mrinfo, а также
команд
группы show: show hosts, show versions, show users, show flash: и
многие
другие.
Права пользователей можно тонко настраивать: любому
пользователю можно
назначить определенный уровень при входе в маршрутизатор,
любую команду
можно перевести на уровень, отличный от стандартного. В свое
время у нас
возникла задача создания пользователя с минимальными
возможностями: запрет
команды enable, всех команд группы show и единственной
разрешенной командой
telnet. Это возможно реализовать следующим
образом:
1. Создадим пользователя cook с нулевым уровнем
привилегий
Router(config)#username cook privilege 0 password 7
044D0908
2. Работать это будет только тогда, когда прописать
следующее
Router(config)#aaa new-model
Router(config)#aaa
authorization exec default local none
После регистрации пользователь
с именем cook по команде ? (список доступных
команд) увидит
перечень:
Router>?
Exec
commands:
<1-99> Session
number to resume
disable Turn off
privileged commands
enable Turn
on privileged commands
exit Exit from the
EXEC
help
Description of the interactive help system
logout Exit from the
EXEC
Router>
Команду enable переведем на уровень
выше (на уровень 1), а выполнение
команды telnet разрешим для нулевого
уровня
Router(config)#privilege exec level 1
enable
Router(config)#privilege exec level 0 telnet
К данным
командам действует некоторое исключение - их действие нельзя
отменить при
помощи стандартной команды no. Этот вариант здесь не
проходит.
Router(config)#no privilege exec level 1
enable
Router(config)#no privilege exec level 0 telnet
Для
отмены действия этих команд необходимо ввести следующие
команды:
Router(config)#privilege exec reset
enable
Router(config)#privilege exec reset telnet
Сейчас после
регистрации пользователь cook по команде ? увидит
следующее:
Router>?
Exec
commands:
<1-99> Session
number to resume
disable Turn off
privileged commands
exit Exit from the
EXEC
help
Description of the interactive help system
logout Exit from the EXEC
telnet Open a telnet
connection
Router>
Проделав все операции, получили
пользователя с заранее заданными
возможностями.
Существует такой
тип пользователей, для которых необходимо
зарегистрироваться на
маршрутизаторе и выполнить одну единственную команду
(например, show users).
Для этого можно завести на маршрутизаторе
пользователя с входом без пароля и
с выполнением автокоманды.
Router(config)#username dream nopassword
autocommand show users
После ввода имени пользователя dream на экран
выдается информация о
присутствующих в данный момент на маршрутизаторе
пользователях.
Парольная
защита.
В соответствии с имеющимися пользовательским и
привилегированным уровнями
доступа существует два вида паролей: username
password и enable secret (или
enable password). Оба типа этих паролей могут
иметь длину до 25 символов,
содержать в себе различные знаки препинания и
пробелы.
Пароль типа username password устанавливается с
соответствующим ему именем
пользователя. Задается это в режиме конфигурации
следующей командой
(пользователь cook с паролем
queen):
Router(config)#username cook password queen
При
выводе конфигурации (при помощи команды show running-config) на экране
мы
увидим следующую информацию:
username cook password 0
queen
Из этой строки видим, что пароль находится в "открытом виде",
тип "0"
означает "незашифрованный пароль". Если внимательно посмотреть самое
начало
конфигурации, то можно заметить следующую строку:
no
service password-encryption
Это сервис шифрования видимой части
пароля. По умолчанию он отключен.
Правильным считается (для обеспечения
безопасности - от простейшего
подглядывания) включать этот
сервис.
Router(config)#service password-encryption
Тогда
строка конфигурации об имени и пароле пользователя будет иметь
несколько
другой вид, где мы уже не видим текст пароля в явном виде (тип
"7" -
зашифрованный пароль):
username cook password 7
03154E0E0301
Для входа в privileg EXEC level (привилегированный
уровень) пользователь
должен ввести пароль. При выключенном сервисе
шифрования пароля
соответствующая строка в конфигурации будет иметь
вид:
enable password queen
При включенном же сервисе
шифрования:
enable password 7 071E34494B07
Следует отметить, что данный метод
шифрования пароля достаточно тривиален,
существуют скрипты, которые за
секунду декодируют его обратно в нормально
читаемое состояние. Поэтому одним
из важных элементов безопасности является
вещь, с одной стороны очень далекая
от телекоммуникаций и маршрутизаторов -
порядок на собственном рабочем месте.
Чтобы не были легко доступными
бумажки с записями пароля в открытом виде, а
также распечаток конфигураций
роутеров, пусть даже пароль и будет
зашифрован.
Лучшая возможность имеется для шифрования пароля к
привилегированному
уровню - использование не enable password, а enable
secret, в котором для
кодирования пароля применяется алгоритм MD5 (тип
"5"):
Router(config)#enable secret queen
Строка
конфигурации:
enable secret 5
$1$EuWt$SxHM5UPH3AIL8U9tq9a2E0
Преимущество такого шифрования пароля
в том, что его кодирование
производится даже при отключенном сервисе
шифрования (забыли включить или
не знали про такой сервис). Скриптов по
расшифровке таких паролей я не
встречал, но их существование вполне
вероятно.
Ограничение доступа к
маршрутизатору.
Управлять маршрутизаторами можно удаленно через
telnet или локально через
консольный порт или порт AUX. Отсюда следует два
вида ограничения доступа к
маршрутизатору: локальное и
удаленное.
Доступ к маршрутизатору для его конфигурирования и
мониторинга может
производиться 6 способами:
с терминала, компьютера
администратора (COM-порт), или терминального
сервера через консольный порт
маршрутизатора
с терминала, компьютера администратора (COM-порт), или
терминального
сервера путем дозвона на модем, подсоединенный к порту
AUX
через Telnet
посредством Unix-команды rsh
по
протоколу SNMP (community с правом записи - RW)
через WWW-интерфейс
(встроенный в маршрутизатор HTTP-сервер)
Терминальным сервером называется
хост, имеющий несколько последовательных
асинхронных портов стандарта RS-232
(COM-порты), к которым подключаются
консольные кабели маршрутизаторов.
Поскольку обычный компьютер имеет 2 COM-
порта, то для организации
многопортового терминального сервера на базе ПК
требуется установка карты
расширения с дополнительными COM-портами
(например, RocketPort). Из
обрудования Cisco в качестве терминальных
серверов обычно используются
маршрутизаторы Cisco 2509 (8 асинхронных
интерфейсов) и 2511 (16 асинхронных
интерфейсов); при этом режим
маршрутизации обычно отключается (no ip
routing).
В целях безопасности все способы доступа, кроме консольного,
следует по
возможности ограничить, а лучше - полностью отключить. По
умолчанию rsh и
SNMP отключены, а доступ по Telnet, наоборот, разрешен,
причем без пароля.
Статус HTTP-сервера зависит от версии IOS и модели
оборудования.
Консольный доступ уже сам по себе физически ограничен
подключением
консольного кабеля к терминальному серверу. Если администратор
получает
доступ к терминальному серверу удаленно, то встаёт задача
защищенного
доступа на терминальный сервер. Наиболее правильный способ
организации
удаленного доступа к терминальному серверу - протокол
SSH.
Локальное ограничение доступа к
маршрутизатору
Во-первых, необходимо специальное помещение с
ограничением доступа для
персонала, в котором бы находилось оборудование. Это
рекомендуется для
того, чтобы посторонний человек не имел физический доступ к
маршрутизатору,
т.к. при работе с маршрутизатором через консольный порт или
порт AUX мы
работаем в EXEC сессии без пароля на уровне обычного
пользователя. И для
получения доступа к привилегированному режиму посторонний
человек может
воспользоваться самым простым методом восстановление паролей -
перезагрузка
маршрутизатора, вход в режим ROM-монитора, изменение значения
регистра
конфигурации, снова перезагрузка маршрутизатора и элементарный вход
в
привилегированный режим без всякого пароля (вообще-то, это
стандартный
метод восстановления забытого пароля для доступа в privileg EXEC
mode, но
вот может использоваться и для совершенно противоположной
цели).
Если физический доступ к маршрутизатору не может быть достаточно
ограничен,
то необходимо установить пароль на работу в EXEC режиме по
консольному
порту и порту AUX. Вообще это лучше делать всегда, даже когда
маршрутизатор
находится в закрытом помещении под десятью замками (а вы
уверены в своих
коллегах?). Делается это достаточно просто и существует
минимум два
оптимальных варианта: совсем запретить вход в привилегированный
режим или
разрешить вход с нормальной авторизацией через
пароль.
Пример конфигурации, в которой для консольного порта разрешен
вход через
пароль с временем работы на порту в течении 1,5 минут, а для порта
AUX
запрещен вход EXEC режим:
aaa new-model
aaa authentication
login default local
line con 0
exec-timeout 1 30
line
aux
no exec
В этой конфигурации при подсоединении к консольному
порту мы не сразу
попадем в user EXEC режим как это происходит обычно, а
только после ввода
пользовательского имени и пароля. Хочу заметить, что в
параметрах команды
exec-timeout время задается в минутах и секундах (через
пробел), но если мы
захотим указать 0 минут и 0 секунд (exec-timeout 0 0), то
это не означает,
что совсем нельзя будет попасть на данный порт. А как раз
наоборот -
пользователь будет находиться в EXEC режиме бесконечно долго. Это
нужно
обязательно учитывать администраторам при конфигурации
маршрутизатора.
Самое минимальное время - 1 секунда (exec-timeout 0
1).
Удаленное ограничение доступа к
маршрутизатору
Обычно рекомендуется совсем запрещать удаленный
доступ к маршрутизатору по
telnet или же жестко ограничивать его. Достичь
этого можно благодаря
применению списков доступа.
1. Полное запрещение
доступа по telnet к маршрутизатору
access-list 1 deny any
line vty 0 4
access-class 1 in
2. Доступ к маршрутизатору по telnet разрешен только
с определенного хоста
(создадим расширенный список доступа и применим его к
интерфейсу Ethernet
0/0)
access-list 101 permit tcp host 140.11.12.73
host 140.11.12.236 eq telnet
interface Ethernet0/0
ip address
140.11.12.236 255.255.255.0
ip access-group 101 in
Необходимо
заметить, что в списке доступа в структуре "от кого - кому" в
качестве "кому"
прописан IP адрес интерфейса Ethernet 0/0. А так же то, что
при данной
конфигурации через Ethernet 0/0 больше никто никуда не попадет,
отсекаемый
неявным оператором deny any. Поэтому нужно будет дополнить
список доступа
необходимыми "разрешениями".
Если необходимо конфигурировать
маршрутизатор с удаленного хоста и
терминальный сервер при маршрутизаторе
отсутствует (например, одиночный
маршрутизатор в удаленном филиале), то
вместо Telnet следует использовать
SSH. IPSEC Feature set операционной
системы Cisco IOS поддерживает работу
SSH-сервера непосредственно на
маршрутизаторе. IPSEC Feature set имеет
высокую стоимость, требует довольно
зачительных ресурсов процессора и
памяти и реализует относительно слабый
алгоритм (DES с 40-битным ключом).
Поддержка сильного алгоритма (Triple DES с
256-битным ключом) связана с
преодолением экспортных ограничений США. Исходя
из вышесказанного,
организовывать административный доступ к маршрутизатору с
помощью IPSEC
Feature set следует только при невозможности подключения
терминального
сервера (или если IPSEC Feature set уже используется для
организации VPN).
При доступе к маршрутизатору через WWW-интерфейс
аутентификация
пользователя HTTP-сервером проводится по ненадежной
технологии. Отключение
HTTP-сервера:
router(config)# no ip http
server
Протокол SNMP (по крайней мере, версий 1 и 2) вообще не
предоставляет
адекватных средств обеспечения безопасности, поэтому разрешать
запись через
SNMP категорически не рекомендуется. Чтение следует разрешить
только для
административной станции - для этого надо сформировать
соответствующий
список доступа и указать его в команде активизации
SNMP-агента:
router(config)#snmp-server community public RO
номер_списка_доступа
Заключение.
Защита паролем, ограничение
локального доступа, шифрованные пароли,
расширенные списки доступа, учет и
запись событий на маршрутизаторах
обеспечивают защиту от несанкционированных
попыток доступа и протоколируют
информацию о таких попытках, всё это можно
реализовать средствами
CISCO
IOS.
Список использованных источников.
http://cisco.com/ http://www.mark-itt.ru/CISCO/ITO/
http://telecom.opennet.ru/cisco/security.shtml#part_3
http://athena.vvsu.ru/net/labs/lab02_cisco_2.html#2.12
Перепаковка Cisco IOS или
Исследования на тему юзабильности устаревшего оборудования Cisco
Статья была опубликована в журнале "Хакер" номер #124
за апрель 2009 года.Приветствую, дорогой читатель! Сегодня мы
будем давать вторую молодость, а может даже жизнь старым маршрутизаторам
Cisco.
Имеем исходные данные: старенькая кошка Cisco 2611 c двумя Ethernet(!)
портами, 64 Мб RAM и 16 MB на flash. Эти параметры являются максимально
возможными из поддерживаемых данной платформой (читай — увеличить объем DRAM
памяти и flash физически не представляется возможным из-за отсутствия в природе
комплектующих больших объемов). Исходя из данных Cisco IOS Feature Navigator
(
http://tools.cisco.com/ITDIT/CFN/jsp/index.jsp)
последней версией IOS для данного маршрутизатора является 12.3(26), что
естественного для столь старого продукта (End-of-Sale - апрель 2003, End-of-Life
– апрель 2008). Однако, иногда хочется получить только все самое последнее и
новое, а все самое новое и вкусное доступно только в версии 12.4 (точнее 12.4T).
Посыл номер два, или дополнительные исходные данные: если внимательно следить за
модельным рядом маршрутизаторов Cisco или просто хорошо ознакомиться с
информацией о продуктах на официальным сайте, то можно обнаружить что серия 2600
включает в себя, например, маршрутизаторы 2611XM. Отличается эта серия от своего
предшественника незначительно:
- Максимальный объем flash-памяти увеличен до
48 MB (в 2611 — 16 MB)
- Максимальный объем SDRAM-памяти увеличен до 128 MB
(в 2611 — 64 MB)
- Интегрированные 10/100 Fast Ethernet порты (в 2611 — 10
Мбит/c Ethernet)
Для такой кошки Cisco IOS Feature Navigator сообщит, что
последний IOS за версией 12.4(23).
Системные требования для IOS 12.4(21) с
набором Enterprise Base или Advanced Security составляют 128 MB DRAM и 32 MB
flash. Конечно, у нас нет 128 MB памяти, но попытка не пытка, да и пропускная
способность портов у нас невысокая, что позволяет сделать предположение о том,
что ОС возможно запустить на моем устройстве. Осталось предположения превратить
в практику.
Идея проста - загнать бинарный образ операционной системы Cisco
IOS 12.4(21) с набором фьючерсов Enterprise Base на старенький маршрутизатор
2611 c исходными данными, представленными выше и в последующем использовать его
как тестовый стенд, ибо 10-ти мегабитные интерфейсы ограничивают его применение
в дикой природе, или, как говорится, in production. Хотя с таким же успехом это
устройство может надежно служить файрволлом корпоративной сети взамен
какого-нибудь PIX, если, конечно, достаточно пропускной способности в 10 Мбит,
но тогда встает вопрос — а есть ли такой функционал, который может вам
потребоваться в IOS 12.4, но которого нет в 12.3? За подсказкой вновь отправляю
к Cisco IOS Feature Navigator (
http://tools.cisco.com/ITDIT/CFN/Dispatch).
Утилита сравнения образов вам в помощь, но ответ скорее всего будет - нет.
Отсюда вывод — не стоит меня корить в малой практичности данной статьи, так как
изначально она в большей степени исследовательская (jus for fun), чем
практическая.
Возвращаясь от лирических отступлений к делу, скажу, что у меня
не возникла бы потребность в написании статьи, если бы не одна, а точее две
небольших проблемы. О первой из них я уже упомянул — это объем DRAM памяти. К
сожалению, я не повелитель паяльника и вольтметра, так что здесь поделать ничего
не можем. Стоит только надеяться, что ОС не уйдет в core в самый ответственный
момент из-за недостатка пямяти. Вторая проблема, которая застигла меня врасплох
— это размер самого образа образа IOS 12.4 и тот факт, что он не помещается на
флеш объемом 16 МB. Этот образ принципиально туда не помещается из за своего
размера, точнее сам маршрутизатор глаголет, что данный образ не поместится, и
неудивительно. Файл образа — c2600-entbasek9-mz.124-9.T1.bin , который я взял
для эксперимента, занимает 16,4 MB, то есть 17 257 364 байт. Флеш же размером 16
MB ровно (show flash: сообщает, что всего 16777212 байт или 16384K). Даже если
стереть флеш с опцией no-squeeze-reserve-space:
router#erase
/no-squeeze-reserve-space flash:
это нам не поможет, хотя в свое время
для образа c2600-ik9o3s3-mz.123-13.bin являлось решением проблемы (этот образ
чуть меньше размера самой флеш и для его загрузки требуется отформатировать ее с
опцией, запрещающей резервировать свободное место).
Таким образом, решения
здесь может быть два - грузиться с tftp, например, что не всегда удобно, либо же
похекать образ так, чтобы его размер стал меньше, грубо говоря перепаковать
(что, собственно, и было отчасти сделано). Посылом номер три является эмулятор
Dynamips. Причем он здесь? А притом, что именно он натолкнул меня на мысль о
перепаковке образа. Если взглянуть на раздел «How to use?» на официальном сайте
проекта (
http://www.ipflow.utc.fr/index.php/Cisco_7200_Simulator),
то можно обнаружить, что эмулятор использует распакованные образы для ускорения
загрузки:
…
To boot quickly, the preferred method is to
decompress the IOS image with the "unzip" utility. It avoids to run the
self-decompressing process in the
emulator.
chris@portchris2:~/dynamips-0.2.5$ unzip -p
c7200-advipservicesk9-mz.124-9.T.bin > image.bin
warning
[c7200-advipservicesk9-mz.124-9.T.bin]: 27904 extra bytes at beginning or within
zipfile
(attempting to process anyway)
chris@portchris2:~/dynamips-0.2.5$
file image.bin
image.bin: ELF 32-bit MSB executable, cisco 7200, version 1
(SYSV), statically linked, stripped
You can ignore the warning, unzip has
just skipped the self-decompressing code at the beginning of the image.
Now,
you can boot the imagе
…
Значит, если есть запакованный
образ, то можно попытаться использовать более оптимальные параметры(!) сжатия,
которые позволят разместить образ на флеш. Обращаю внимание на одну важную
деталь — так как мы не собираемся переписывать самораспаковывающися код, то есть
заниматься дизассемблированием, да и ассемблер под 32х битные процессоры PowerPC
я не знаю (да и под 64х битные тоже), то сам алгоритм сжатия менять мы не
сможем. Самораспаковывающаяся часть просто не сможет распаковать архивы, сжатые
другими методами. По поводу используемого в образе алгоритма сжатия можно
взглянуть сюда: Cisco IOS Configuration Fundamentals Configuration Guide,
Release 12.4 - Loading and Managing System Images, пункт Image Naming
Conventions. Поле «тип» в имени образа как раз отвечает за его
характеристики:
f - The image runs from flash memory.
m - The image
runs from RAM.
r - The image runs from ROM.
l - The image is
relocatable.
z - The image is zip compressed.
x -The image is mzip
compressed.
В нашем случае образ имеет тип mz – работает в памяти и
запакован как раз в zip-архив. Убедиться в этом просто — большинство архиваторов
(WinZIP, WinRAR, 7zip) c легкостью открывают и распаковывают архив.
Не
мудрствуя лукаво, пытаемся перепаковать архив заново с максимально возможной
степенью сжатия. Сразу же отмечаем, что используемый метод — deflate и изменить
его не получится. Я использовал 4 архиватора, чтобы сравнить их и получил
следующий результат:
7-zip 4.65 со следующими параметрами:
Формат
архива — zip
Уровень сжатия — Ультра
Метод сжатия — Deflate
Размер
словаря — 32КB
Размер слова — 258
В результате был получен архив
следующих размеров: 15,7 MB (16 489 764 bytes)
WinZIP 11.2 при
использовании улучшенного метода Deflate выдал файл размером 16,0 MB (16 803 634
bytes)
WinRAR 3.80 формат архива — zip с наилучшими параметрами сжатия:
16,3 MB (17131 353 bytes)
PKZIP 9.00 от создателей формата совсем подвел,
и по методу Deflate с максимальным сжатием произвел файл, размером 16,3 MB (17
094 474 bytes).
Итогом моего небольшого сравнительного тестирования стал
выбор для экспериментов архива, как нетрудно догадаться, созданного 7zip. Далее
требуется этот архив поместить вместо оригинального образа. Чтобы проделать это,
нам понадобится шестнадцатеричный редактор типа WinHex, HT Editor или hview. Я
предпочитаю WinHex, но нам понадобится еще и HT, чуть позже объясню
почему.
Как вы можете видеть на скриншоте, скорее всего бинарный образ
IOS есть ничто иное, как исполняемый файл в формате ELF (Executable and Linkable
Formate). ELF-формат является основным исполняемым файлом в *nix-like системах,
неудивительно встретить его здесь. По ELF-формату существует четкая
спецификация, последняя версия которой 1.2, однако для наших целей будет
достаточно, например, заголовочного файла из состава libc - elf.h. Обычный
бинарный ELF файл представляет собой структуру следующего вида:
ELF
Header
Program Header Table (optional)
Section 1
Section
2
…
Section n
Section Header Table
Не углубляясь в описание,
дабы не повторяться, отправляю вас к спецификации.
Так как весь процесс
исследования я проводил в MS Windows, то пришлось искать замену утилите readelf
из состава binutils. Этой заменой и оказался шестнадцатеричный редактор HT
(http:///hte.sf.net),
который умеет читать и модифицировать структуры данных исполняемых файлов ELF.
При попытке открыть подопытный образ c2600-entbasek9-mz.124-9.T1.bin, HT сразу
меня обругал, что и привлекло мое внимание. Обратимся к elf.h, структура данных,
отвечающая за ELF-заголовок выглядит так:
typedef struct {
Elf_Char
e_ident[EI_NIDENT];
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word
e_version;
Elf32_Addr e_entry;
Elf32_Off e_phoff;
Elf32_Off
e_shoff;
Elf32_Word e_flags;
Elf32_Half e_ehsize;
Elf32_Half
e_phentsize;
Elf32_Half e_phnum;
Elf32_Half e_shentsize;
Elf32_Half
e_shnum;
Elf32_Half e_shstrndx;
} Elf32_Ehdr;
В нашем случае
поле e_machine имеет значение 0x002b или 43, что соответствует процессору SPARC
v9:
#define EM_SPARCV9 43 /* SPARC v9 64-bit */
Однако нам
известно, что маршрутизатор 2611 использует процессор Motorolla MPC860, значит
поле должно иметь значение 0x0014, что соответствует:
#define EM_PPC 20
/* PowerPC */
Скорее всего, это есть простейшая защита от
дизассемблирования образа, однако нам это не сильно помешает. С помощью F6
открываем режим просмотра elf/header. Из него нам становятся известны следующие
подробности:
- elf header size 0x34
- program header entry size
0x20
- program header count 1
- section header entry size 0x28
-
section header count 6
Что в сумме нам дает размер 52+32+6*40=324 или
0x144.
То есть в файле всего 6 секций (соответственно 6 заголовков секций) и
1 заголовок программы. Вероятнее всего одна из секций предназначена для хранения
архива с исполняемым образом IOS. Эту секцию можно вычислить либо по размеру
(логично, что ее размер должен быть максимальным), либо по типу секции.
Заголовок таблицы секций можно просмотреть, нажав F6 и выбрав elf/section
headers, но для начала обратимся к описанию секции:
typedef struct
{
Elf32_Word sh_name;
Elf32_Word sh_type;
Elf32_Word
sh_flags;
Elf32_Addr sh_addr;
Elf32_Off sh_offset;
Elf32_Word
sh_size;
Elf32_Word sh_link;
Elf32_Word sh_info;
Elf32_Word
sh_addralign;
Elf32_Word sh_entsize;
} Elf32_Shdr;
Поле sh_type и
будет отвечать за искомый тип. К сожалению здесь меня ждал облом, большинство из
секций имело тип SHT_PROGBITS, предназначенный для секций, значение которых
определяется самой программой. Однако 4-я секция, имела тип отличный от
предыдущих и имела значение 0x00000007, секция предназначена для каких-либо
программных заметок. Первая (нулевая) секция также имеет отличный от предыдущих
тип (SHT_NULL), исходя из этого становится ясно что она пустая и ни с чем не
ассоциирована. В итоге приходится искать секцию с максимальным размером (поле
sh_size), ее оказывается секция за номером пять, ее размер 0x1070e7c или
17239676 байт. Вернемся к hex-виду (F6 - hex) и перейдем по смещению (поле
sh_offset) с помощью кнопки F5:
И что же мы здесь видим? Где же наш
архив, который должен начинаться с сигнатуры PK, а точнее если следовать
спецификации PKZIP-формата (http://www.pkware.com/documents/casestudies/APPNOTE.TXT)
0x04034b50 в обратном порядке? Как не странно эта сигнатура обнаруживается на 22
байта позже. Однако, если хорошо присмотреться, то отказывается, что сразу за
значением 0xFEEDFACE идет размер распакованного образа 0x02AED904. Если
внимательно поискать в Сети, то можно наткнуться на информацию из книги Cisco
Networks Hacking Exposed издательства McGraw-Hill/Osborne. Наши русские парни
Andrew A. Vladimirov, Konstantin V. Gavrilenko, Janis N. Vizulis and Andrei A.
Mikhailovsky еще в 2006 году занимались разработкой бинарного патчинга IOS
12.3(6). Им удалось выяснить что после магического значения 0xFEEDFACE идут
последовательно uncompressed image size, compressed image size, compressed image
checksum, uncompressed image checksum. Помимо этого, им стало известно, что
алгоритм вычисления контрольной суммы представляет собой модифицированный
алгоритм контрольной суммы в Интернет, однако нам, к счастью, не придется их
вычислять — как проверено позже на практике,маршрутизатор сам скажет нам какое
значение должно иметь это поле, если конечно подсчитанная контрольная сумма и
записанная в соответствующем поле не совпадут:
Error : compressed image
checksum is incorrect 0xB99D8823
Expected a checksum of 0xF6F69877
***
System received a Software forced crash ***
signal= 0x17, code= 0x5, context=
0x800805f0
PC = 0x0, Vector = 0x0, SP = 0x0
Итак, перейдем к активным
действиям. Для начала вырезаем из файла старую 4ю секцию, содержащую zip архив
за исключением 20 байт, начиная с магического значения 0xFEEDFACE до сигнатуры
zip не включая, то есть со смещения 0x44F8 по смещение 0x1075360 + 0x44F8. Затем
по смещению 0x44F8 вставляем новый архив.
Соединим всю известную нам
информацию воедино. Размер старой секции (№5), содержащей архив с образом IOS,
загружаемым в память 0x1070e7c или 17239676 (включая 20 байт с 0xFEEDFACE по
0x504B0304 не включая). Размер новой секции, содержащей архив 0xFB9D38 или
16489784 (опять же включая те 20 байт). Разница между старым и новым значением
составит 0xB7158 — 749912. То есть смещение 4й секции, физически расположенной в
файле после 5й секции, требуется изменить с 0x1075360 на 0xFBE208.
Старые
значения после магической записи 0xFEEDFACE:
unpacked image size: 0x02AED904
45013252
packed image size: 0x01070E66 17239654 (разница с размером 5й секции
- на 22 байта меньше)
packed image checksum: 0xB58BE139
unpacked image
checksum: 0xA29D4F6E
затем идет сигнатура: 0x504B0304
Новые значения
после магической записи 0xFEEDFACE:
unpacked image size: 0x02AED904 (остался
тот же)
packed image size: 0x00FB9D22 16489762 (разница с размером 5й секции
- на 22 байта меньше)
packed image checksum: нам неизвестна, можно заменить
на что-нибудь приметное, типа 0x48000000
unpacked image checksum: 0xA29D4F6E
(остался тот же)
Новую контрольную сумму, как я уже говорил, сообщит сам
маршрутизатор.
После всех манипуляций конечный образ был получен, однако
размер его меня не впечатлил. К сожалению, по сравнению с изначальным размером
16,4 MB (17257364 bytes) я получил всего лишь 15,7 MB (16507472 bytes), то есть
разница, которую я уже посчитал выше, составила 749912 байт. Конечно, это
позволит загрузить образ на flash, но скорее всего придется применять опцию
/no-squeeze-reserve-space. Однако, когда при копировании маршрутизатор запросит
повторное стирание flash, подтверждать действие не нужно:
router#erase
/no-squeeze-reserve-space flash:
Erasing the flash filesystem will remove all
files! Continue? [confirm]
Erasing device...
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee eeeeeeeeeeeeee
...erased
Erase of flash: complete
router#copy
tftp://172.22.1.17/c2600-entbasek9-mz.124-9.T1-shad-pk.bin flash:
Destination
filename [c2600-entbasek9-mz.124-9.T1-shad-pk.bin]?
Accessing
tftp://172.22.1.17/c2600-entbasek9-mz.124-9.T1-shad-pk.bin...
Erase flash:
before copying? [confirm]n
Loading c2600-entbasek9-mz.124-9.T1-shad-pk.bin
from 172.22.1.17 (via Ethernet0/0):
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!![OK -
16507472 bytes]
Verifying checksum... CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC OK
(0xE6ED)
16507472 bytes copied in 178.188 secs (92641
bytes/sec)
router#reload
Proceed with reload?
[confirm]
Естественно, такая ситуация была бы только в том случае, если
образ был бы сформирован правильно. Поэтому я не стал спешить, и для загрузки
образа защел в режим rommon по Ctrl+Break, затем со своего компьютера загрузил
образ по tftp напрямую в RAM:
rommon 1>tftpdnld -r
После
загрузки маршрутизатор сказал:
TFTP flash copy: Error, image size
(16507470) mismatches netsize (16507472).
Оказалось, что при
редактировании размера 5й секции я ошибся на 2 байта (те самые 20 байт с
0xFEEDFACE + 2).
После второй попытки загрузки выяснилось, что
контрольная сумма запакованного образа — 0xB0257B0D:
Error : compressed
image checksum is incorrect 0xB99D8823
Expected a checksum of
0x48000000
*** System received a Software forced crash ***
signal=
0x17, code= 0x5, context= 0x800805f0
PC = 0x0, Vector = 0x0, SP =
0x0
Корректируем соответствующее поле после 0xFEEDFACE (Загружаем файл в
HT по F3, переходим по смещению с помощью F5 и редактируем по F4, не забывая
сохраняться по F2), затем снова грузимся.
rommon 4>reset
-s
Дальше соответственно все ок, однако затем IOS вываливается, и
отказывается работать по причине недостатка памяти:
System Bootstrap,
Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)
Copyright (c) 1999 by cisco
Systems, Inc.
TAC:Home:SW:IOS:Specials for info
PC = 0xfff0a530, Vector =
0x500, SP = 0x680127c8
PC = 0xfff0a530, Vector = 0x500, SP =
0x680127b0
C2600 platform with 65536 Kbytes of main memory
PC =
0xfff0a530, Vector = 0x500, SP = 0x80004684
monitor: command "boot"
aborted due to user interrupt
rommon 1 > tftpdnld -r
IP_ADDRESS:
172.22.1.199
IP_SUBNET_MASK: 255.255.255.0
DEFAULT_GATEWAY:
172.22.1.1
TFTP_SERVER: 172.22.1.17
TFTP_FILE:
c2600-entbasek9-mz.124-9.T1-shad-pk.bin
Receiving
c2600-entbasek9-mz.124-9.T1-shad-pk.bin from 172.22.1.17
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!
File reception
completed.
program load complete, entry point: 0x80008000, size:
0xfbe0d8
Self decompressing the image :
##################################################
##################################################
################################################## ## [OK]
Smart Init is
enabled
smart init is sizing iomem
ID MEMORY_REQ TYPE
000092 0X000B3280
C2600 Dual Ethernet
0X00098670 public buffer pools
0X00211000 public
particle pools
TOTAL: 0X0035C8F0
If any of the above Memory
Requirements are
"UNKNOWN", you may be using an unsupported
configuration
or there is a software problem and
system operation may be
compromised.
Rounded IOMEM up to: 3Mb.
Using 5 percent iomem.
[3Mb/64Mb]
Cisco IOS Software, C2600 Software
(C2600-ENTBASEK9-M), Version 12.4(9)T1, RELEASE SOFTWARE (fc2)
Technical
Support: http://www.cisco.com/techsupport
Copyright
(c) 1986-2006 by Cisco Systems, Inc.
Compiled Wed 30-Aug-06 15:43 by
prod_rel_team
Image text-base: 0x800080E4, data-base:
0x81B46C00
SYSTEM INIT: INSUFFICIENT MEMORY TO BOOT THE
IMAGE!
%Software-forced reload
00:00:16 UTC Fri Mar 1 2002:
Unexpected exception to CPUvector 700, PC = 0x8069DE48, LR =
0x8069DD88
-Traceback= 0x8069DE48 0x8069DD88 0x80014B10 0x81B3BAA4
0x8170812C 0x817082A4 0x816E3D68 0x816E3DF4 0x816E3ED4 0x816E3E38 0x816E3ED4
0x816E3E38 0x816E3ED4 0x816E4A1C 0x8171AB4C 0x81729008
CPU Register
Context:
MSR = 0x00029032 CR = 0x33000095 CTR = 0x806A2518 XER =
0x8000FE00
R0 = 0x00000000 R1 = 0x82EDD858 R2 = 0x82AF0000 R3 =
0x00000003
R4 = 0xFFFFFFFE R5 = 0x00000000 R6 = 0x00000003 R7 =
0x00009032
R8 = 0x82AF0000 R9 = 0x82820000 R10 = 0x82BBCC50 R11 =
0x00000000
R12 = 0x00004117 R13 = 0xFFF48A24 R14 = 0x80A82090 R15 =
0x00000000
R16 = 0x00000000 R17 = 0x00000000 R18 = 0x00000000 R19 =
0x00000000
R20 = 0x00000000 R21 = 0x00000000 R22 = 0x81B47998 R23 =
0x00000000
R24 = 0x81B47A48 R25 = 0x81708128 R26 = 0x81708128 R27 =
0x00002814
R28 = 0x00000000 R29 = 0x82C8F368 R30 = 0x00000000 R31 =
0x82AF0000
Writing crashinfo to
flash:crashinfo_20020301-000016
Однако, здесь я не расстроился, и решил
взяться за другой образ — c2600-advsecurityk9-mz.124-21.bin. После аналогичных
манипуляций с байтами, даже при использовании 128 битного слова в 7zip, размер
составил 15947076 (против изначального размера 16635336), что позволило
загрузить его во flash. Помимо прочего, этот образ уже не ругался на недостаток
памяти RAM и прекрасно чувствовал себя на этой платформе:
router#show
version
Cisco IOS Software, C2600 Software (C2600-ADVSECURITYK9-M), Version
12.4(21), RELEASE SOFTWARE (fc1)
router#show memory
summary
Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)
Processor
82A44240 20244772 8718640 11526132 10171028 10098348
I/O 3CA3400 3525632
1650536 1875096 1875096 1875068
router#show
flash:
System flash directory:
File Length Name/status
1 15947076
c2600-advsecurityk9-mz.124-21-shad-pk.bin
[15947140 bytes used, 830072
available, 16777212 total]
16384K bytes of processor board System flash
(Read/Write)
Однако, у нас остается еще одна небольшая проблема. Если
запустить проверку:
router#verify
flash:c2600-advsecurityk9-mz.124-21-shad-pk.bin
Маршрутизатор обругает
нас, сообщив, что Embedded hash и Calculated hash не совпадают. Исправить это
очень просто — 16 байт контрольной суммы находится в самом конце бинарного файла
образа. Обнаружить это можно даже с помощью простого
поиска:
После исправления маршрутизатор сообщает, что
контрольная сумма успешно подсчитана и совпадает:
Embedded Hash MD5 :
3DD2C6591FF4F033425147DE4540F9CD
Computed Hash MD5 :
3DD2C6591FF4F033425147DE4540F9CD
CCO Hash MD5 :
79020945BDFE2A354E012C8303136360
Embedded hash verification
successful.
File system hash verification successful.
Вот и все, новый
образ готов и правильно сформирован. На этом мои изыскания успешно
заканчиваются, а все вопросы, пожелания и в особенности идеи, мой дорогой
читатель, я готов получить по электронной почте. С радостью отвечу на них и
помогу по мере сил. Удачи в бинарном патчинге и не
только.
Память, поддерживаемая различными маршрутизаторами Cisco Systems
Типы и объемы памяти – справочная информация.
Все значения в Таблице 1 приведены для встроенной Flash/DRAM памяти. Данные
для внешней памяти приведены в Таблице 5. В поле «Е?» указано наличие слотов для
установки внешней памяти (см. также Таблицу 5). Объем памяти, указанный для
маршрутизатора как стандартный, как правило, поставляется в оптимальной
конфигурации – например, Маршрутизатор Cisco 3660 поставляется по умолчанию с 32
Мб DRAM, причем память будет установлена одним модулем объемом 32 Мб, а не 2х16
Мб. Исключения возможны только при недостатке на заводе производителе
компонентов памяти.
Таблица 1. Маршрутизаторы класса SOHO/SMB (решения для дома, малого и
среднего бизнеса).
Маршрутизатор |
Память |
Флэш-память |
Встр. |
Слоты |
Стд. |
Макс. |
Встр. |
Слоты |
Стд. |
Макс. |
Е? |
SOHO7x |
16 |
0 |
16 |
16 |
8 |
0 |
8 |
8 |
N |
SOHO9x |
32 |
0 |
32 |
32 |
8 |
0 |
8 |
8 |
N |
700 |
1,5 |
0 |
1,5 |
1,5 |
1 |
0 |
1 |
1 |
N |
801-804 |
4 |
1 |
8 |
12 |
4 |
1 |
8 |
12 |
N |
805 |
8 |
1 |
8 |
16 |
4 |
1 |
8 |
12 |
N |
806 |
16 |
1 |
321 |
32 |
0 |
1 |
8 |
16 |
N |
811-813 |
8 |
1 |
8 |
16 |
4 |
1 |
8 |
12 |
N |
827/828 |
16 |
1 |
32 |
32 |
8 |
1 |
8 |
16 |
N |
826/827H |
16 |
1 |
321 |
32 |
8 |
1 |
8 |
16 |
N |
827-4V |
16 |
1 |
48 |
48 |
8 |
1 |
12 |
16 |
N |
83x |
32 |
1 |
642 |
80 |
8 |
1 |
12 |
24 |
N |
1003/4/5 |
0 |
0 |
8 |
16 |
0 (только внешний PCMCIA) |
Y |
1400 |
8 |
1 |
16 |
24 |
0 (только внешний PCMCIA) |
Y |
16xx |
2 |
1 |
2 |
18 |
0 (только внешний PCMCIA) |
Y |
16xxR |
8 |
1 |
8 |
24 |
0 (только внешний PCMCIA) |
Y |
1701 |
64 |
1 |
64 |
128 |
32 |
0 |
32 |
32 |
N |
1710 |
32 |
1 |
64 |
96 |
16 |
0 |
16 |
16 |
N |
1711/1712 |
64 |
1 |
64 |
128 |
32 |
0 |
32 |
32 |
N |
1720 |
16 |
1 |
32 |
48 |
0 |
1 |
8 |
16 |
N |
1721 |
64 |
1 |
643 |
128 |
32 |
0 |
323 |
32 |
N |
1750 |
16 |
1 |
16 |
48 |
0 |
1 |
4 |
16 |
N |
1750-xV |
16 |
1 |
32 |
48 |
0 |
1 |
8 |
16 |
N |
1751 |
64 |
1 |
643 |
128 |
32 |
0 |
323 |
32 |
N |
1751-V |
64 |
1 |
963 |
128 |
32 |
0 |
323 |
32 |
N |
1760 |
64 |
1 |
643 |
128 |
32 |
1 |
323 |
64 |
N |
1760-V |
64 |
1 |
963 |
128 |
32 |
1 |
323 |
64 |
N |
1841 |
128 |
1 |
128 |
384 |
0 (только внешний CF) |
Y |
IAD2400 |
64 |
0 |
64 |
64 |
8 |
0 |
8 |
8 |
N |
2500 |
02 |
1 |
48 |
16 |
0 |
2 |
8 |
16 |
N |
Примечания:
- Маршрутизаторы 806/826, поставляемые до апреля 2002
г., по умолчанию имели меньше памяти DRAM (16 Мб), а не 32 Мб в качестве
объема по умолчанию/максимум.
- До мая 2003 г. серия 83x поставлялась с 8 Мб флэш по
умолчанию. С марта 2005 г. объем стандартной DRAM памяти увеличен до 64 Мб.
- 1721/51/60, поставляемые до 18 августа 2003, имели
16 Мб флэш и 32-64 Мб DRAM.
Таблица 2. Машрутизаторы среднего класса, серверы доступа.
Маршрутизатор |
Системная память (System memory) |
Пакетная память (Packet memory) |
Основная флэш-память (Main Flash) |
Загрузочный флэш (Boot Flash) |
Е? |
Слот |
Стд |
Макс |
Слот |
Стд |
Макс |
Встр |
Слоты |
Стд |
Макс |
Мин |
Макс |
2610-13 |
2 |
321 |
64 |
0 |
0 |
1 |
8 |
16 |
0 |
N |
262x |
2 |
321 |
64 |
0 |
0 |
1 |
8 |
322 |
0 |
N |
265x |
2 |
32 |
128 |
0 |
0 |
1 |
8 |
32 |
0 |
N |
261xXM/262xXM |
2 |
1285 |
2566 |
0 |
16 |
1 |
325 |
48 |
0 |
N |
265xXM |
2 |
2565 |
2566 |
0 |
16 |
1 |
325 |
48 |
0 |
N |
2691 |
2 |
2565 |
256 |
0 |
0 |
1 |
32 |
128 |
0 |
Y |
2801 |
1 |
1288 |
384 |
0 |
0 (только внешняя CF) |
4 |
4 |
Y |
2811 |
2 |
256 |
768 |
0 |
0 (только внешняя CF) |
2 |
2 |
Y |
2821/2851 |
2 |
256 |
1024 |
0 |
0 (только внешняя CF) |
2 |
2 |
Y |
3620 |
4 |
32 |
64 |
0 |
0 |
2 |
163 |
32 |
0 |
Y |
3640/3640A |
4 |
32 |
128 |
0 |
0 |
2 |
163 |
32 |
0 |
Y |
3660 (Ent) |
2 |
32 |
256 |
0 |
0 |
2 |
163 |
64 |
0 |
Y |
3660 (Telco) |
2 |
327 |
256 |
0 |
0 |
2 |
167 |
64 |
0 |
Y |
3631 |
2 |
64 |
256 |
0 |
0 |
1 |
32 |
128 |
0 |
N |
3725 |
2 |
2565 |
256 |
0 |
0 |
1 |
32 |
128 |
0 |
Y |
3745 |
2 |
2565 |
512 |
0 |
0 |
1 |
32 |
128 |
0 |
Y |
3825/3845 |
2 |
256 |
1024 |
0 |
0 (только внешняя CF) |
0 |
Y |
mc3810 |
1 |
32 |
64 |
0 |
0 |
1 |
16 |
32 |
0 |
N |
mc3810-V3 |
1 |
64 |
64 |
0 |
0 |
1 |
16 |
32 |
0 |
N |
4000M |
1 |
8 |
32 |
1 |
4 |
16 |
0 |
2 |
4 |
16 |
0 |
N |
4400M |
24 |
16 |
32 |
1 |
4 |
16 |
0 |
2 |
4 |
16 |
4 |
16 |
N |
4700M |
24 |
16 |
64 |
1 |
4 |
16 |
0 |
2 |
4 |
16 |
8 |
N |
AS5200 |
1 |
8 |
16 |
1 |
4 |
16 |
0 |
2 |
16 |
16 |
0 |
N |
AS5300 |
2 |
64 |
128 |
1 |
8 |
16 |
0 |
2 |
16 |
32 |
8 |
8 |
N |
AS5350 |
2 |
128 |
512 |
1 |
64 |
128 |
0 |
2 |
32 |
64 |
8 |
16 |
N |
AS5400(-HPX) |
2 |
256 |
512 |
1 |
64 |
128 |
0 |
2 |
32 |
64 |
8 |
16 |
N |
Примечания:
- Первоначально на маршрутизаторах 2610-21
устанавливалось 16 Мб DRAM, затем объем был увеличен до 24 Мб и, наконец,
перед снятием с продаж (EoS) увеличен по умолчанию до 32 Мб.
- Маршрутизаторы 262x, изготовленные до марта 2001 г.
имели загрузочный ROM, несовместимый с флэш-модулем в 32 Мб, инсталлируемым
на маршрутизаторах серии 265х, то есть они должны быть модернизированы для
работы с этим модулем.
- Маршрутизаторы серии 36хх, отгруженные до середины
мая 2002 г. по умолчанию оснащались 8 Мб флэш-памяти.
- В любой маршрутизатор серии 4х00М необходимо
инсталлировать память в с чипами одного размера.
- До 18 августа 2003 г. маршрутизаторы серии 26ххXM в
основном поставлялись с 32 Мб DRAM и 16 Мб флэш-памяти. С 14 июня 2004 г. в
маршрутизаторах 261х/2х XM объем памяти по умолчанию был увеличен с 96 до
128 Мб, а в маршрутизаторах 265х и 2691/37хх увеличен со 128 Мб до 256 Мб.
- В маршрутизаторах 26ххXM, поставляемых до апреля
2004 г. максимально возможный объем памяти составлял 128 Мб DRAM.
Посредством загрузочного ROM объем памяти может быть увеличен до 256 Мб для
старых версий 2600XM, для этого требуется IOS 12.3(11)T IOS.
- В маршрутизаторах 3660 (только Telco) объем памяти
по умолчанию с февраля 2004 г. был увеличен с 32 Мб до 128 Мб DRAM и с 16 до
32 Мб флэш.
- Маршрутизатор 2801 имеет 128 Мб памяти, встроенной
в материнскую плату.
Таблица 3. Маршрутизаторы серии 7ххх
Маршрутизатор |
Системная память (Route memory) |
Пакетная память (Packet memory) |
Загрузочный флэш (Boot Flash) |
Е? |
Слот |
Стд |
Макс |
Слот |
Стд |
Макс |
Слоты |
Стд |
Макс |
70x0(RP) |
4 |
16 |
64 |
0 |
1 |
4 |
4 |
Y |
70xO(RSP) |
4 |
16 |
128 |
0 |
1 |
8 |
8 |
Y |
71xx |
2 |
64 |
256 |
1 |
64 |
64 |
1 |
8 |
8 |
Y |
72xx (NPE-100) |
41 |
32 |
128 |
0 |
0 |
N |
72xx (NPE-150) |
41 |
64 |
128 |
1 (встроенный) |
0 |
N |
72xx (NPE-175) |
1 |
64 |
128 |
0 |
0 |
N |
72xx (NPE-200) |
41 |
64 |
128 |
4 (встроенный) |
0 |
N |
72xx (NPE-225) |
1 |
128 |
256 |
0 |
0 |
N |
72xx (NPE-300) |
2 |
128 |
256 |
2 |
32 |
32 |
0 |
N |
72xx (NPE-400) |
1 |
128 |
512 |
0 |
0 |
N |
72xx (NPE-G1) |
21 |
256 |
1024 |
16 (<=256) или 32 (>256) |
16 (встроенный) |
Y |
72xx (NSE-1) |
1 |
128 |
256 |
0 |
0 |
N |
72xx (I/O;-FE) |
0 |
0 или 1 |
4 |
4 |
Y |
72xx (I/O-GE;2FE) |
0 |
8 (встроенный) |
Y |
7301 |
21 |
256 |
1024 |
16 (<=256) или 32 (>256) |
32 (встроенный) |
Y |
7304 (NSE-100) |
1 |
512 |
512 |
0 |
1 |
32 |
32 |
Y |
7304 (NPE-G100) |
2 |
1024 |
1024 |
128 |
1 |
32 |
32 |
Y |
7401 |
1 |
128 |
512 |
0 |
8 (встроенный) |
Y |
75xx (RSP1) |
4 |
16 |
128 |
0 |
1 |
8 |
8 |
Y |
75xx (RSP2) |
4 |
32 |
128 |
0 |
1 |
8 |
8 |
Y |
75xx (RSP4/4+) |
2 |
64 |
256 |
2 (встроенный) |
1 |
8 |
16 |
Y |
75xx (RSP8) |
2 |
64 |
256 |
8 (встроенный) |
1 |
16 |
16 |
Y |
75xx (RSP16) |
2 |
128 |
1024 |
8 (встроенный) |
_ |
_ |
_ |
Y |
75xx (VIP2-10) |
21 |
16 |
64 |
1 |
0,512 |
2 |
0 |
N |
75xx (VIP2-15/20) |
21 |
16 |
64 |
1 |
1 |
2 |
0 |
N |
75xx (VIP2-40) |
21 |
32 |
64 |
1 |
2 |
2 |
0 |
N |
75xx (VIP2-50) |
1 |
32 |
128 |
1 |
4 |
8 |
0 |
N |
75xx (VIP4/VIP6) |
1 |
64 |
256 |
1 |
64 |
64 |
0 |
N |
Примечания:
- В маршрутизаторы NPE-100/150/200/G1, 7301 и
VIP2-10/15/20/40 следует устанавливать парные модули SIMM памяти.
Таблица 4. Маршрутизаторы ядра.
Маршрутизатор |
Системная память (Route memory) |
Пакетная память (Packet memory) |
Загрузочный флэш (Boot Flash) |
Е? |
Слот |
Стд |
Макс |
Слот |
Стд |
Макс |
Слоты |
Стд |
Макс |
10000 (PRE/PRE-1) |
2 |
512 |
512 |
0 |
128 |
128 |
0 |
32 |
32 |
Y |
10000 (PRE-2) |
2 |
1024 |
1024 |
0 |
256 |
256 |
0 |
64 |
64 |
Y |
12000 (GRP-B) |
2 |
128 |
512 |
0 |
1 |
8 |
8 |
Y |
12000 (PRP) |
2 |
512 |
2048 |
0 |
1 |
64 |
64 |
Y |
12000 (PRP-2) |
2 |
1024 |
4096 |
0 |
1 |
64 |
64 |
Y |
12000 (Engine 4) |
1 |
256 |
512 |
41 |
512 |
512 |
0 |
N |
12000 (Engine 3) |
2 |
256 |
512 |
41 |
512 |
512 |
0 |
N |
12000 (Engine 2) |
2 |
128 |
256 |
41 |
256 |
512 |
0 |
N |
12000 (Engine 1) |
2 |
128 |
256 |
41 |
256 |
256 |
0 |
N |
12000 (Engine 0) |
2 |
128 |
256 |
41 |
128 |
256 |
0 |
N |
CRS-1 RP |
2 |
2048 |
4096 |
0 |
1 40 Гб IDE диск |
Y |
CRS-1 LC |
1 |
2048 |
2048 |
2 |
2048 |
2048 |
0 |
N |
Примечания:
- В 12000 серию устанавливается парная пакетная
память в выделенные блоки (например, 2х64 Мб RX, 2x64 Мб TX (256 Мб
config)). PRE и PRE-1 используют разную PXF память – первая - 512 Мб, вторая
– 1 Гб. PRE-1 требуется для широкополосной сети.
Таблица 5. Внешняя флэш-память
Маршрутизатор |
Слоты |
Флэш-карта (FLC) |
Флэш-диск (FLD) |
Compact Flash |
4 |
8 |
16 |
20 |
32 |
48 |
64 |
128 |
1G |
32 |
64 |
128 |
256 |
1003/4/5 |
1 |
Y |
N |
N |
N |
N |
N |
N |
14xx |
1 |
Y1 |
Y |
Y |
N |
N |
N |
N |
16xx |
1 |
Y1 |
Y |
Y |
N |
N |
N |
N |
16xxR |
1 |
Y1 |
Y |
Y |
N |
N |
N |
N |
1841 |
1 |
N |
N |
Y |
Y |
Y |
N |
2691 |
1 |
N |
N |
Y |
Y |
Y |
N |
2691 |
1 |
N |
N |
Y |
Y |
Y |
N |
2801 |
1 |
N |
N |
N |
Y |
Y |
N |
2811/21/51 |
1 |
N |
N |
N |
Y |
Y |
N |
36xx |
2 |
Y |
Y |
Y |
Y |
N |
N |
N |
3725/45 |
1 |
N |
N |
Y |
Y |
Y |
N |
3825/45 |
1 |
N |
N |
N |
Y |
Y |
Y |
70x0 (RP) |
1 |
N |
Y1 |
Y |
N |
N |
N |
N |
70x0 (RSP) |
2 |
N |
Y1 |
Y |
Y |
Y |
N |
N |
71xx |
2 |
N |
N |
N |
Y |
N |
Y1 |
Y |
Y |
N |
N |
72xx (I/O) |
2 |
N |
N |
Y |
Y |
N |
Y1 |
Y |
Y |
N |
N |
72xx (NPE-G1) |
1 |
N |
N |
N |
Y |
Y |
Y |
7301 |
1 |
N |
N |
N |
Y |
Y |
Y |
7304 (NSE-100) |
1 |
N |
N |
N |
Y |
Y |
N |
7304 (NPE-G100) |
1 |
N |
N |
N |
N |
N |
Y |
7401 |
1 |
N |
N |
N |
Y |
Y |
N |
75xx (RSP1) |
2 |
N |
Y1 |
Y |
Y |
N |
N |
N |
75xx (RSP2) |
2 |
N |
Y |
Y1 |
Y |
Y |
N |
N |
75xx (RSP4) |
2 |
N |
N |
Y1 |
Y |
Y |
N |
N |
75xx (RSP8) |
2 |
N |
N |
Y |
Y1 |
Y |
Y |
Y |
Y |
N |
N |
75xx (RSP16) |
2 |
N |
Y |
Y1 |
Y |
N |
N |
10000 (PRE/PRE-1) |
2 |
N |
Y1 |
N |
Y |
N |
N |
10000 (PRE-2) |
2 |
N |
N |
Y1 |
Y |
N |
N |
12000 (GRP-B) |
2 |
N |
N |
N |
N |
Y1 |
Y |
Y |
Y |
Y |
N |
12000 (PRP) |
2 |
N |
Y |
Y1 |
Y |
Y |
N |
12000 (PRP-2) |
2 |
N |
N |
Y1 |
Y |
Y |
N |
CRS-1 RP |
2 |
N |
N |
N |
N |
Y1 |
N |
Примечания:
- Красным цветом выделена флэш-память, поставляемая
вместе с маршрутизаторами по умолчанию (если флэш вообще устанавливается в
умолчанию).
- Строго говоря, флэш-карты большинства размеров будут работать в
большинстве маршрутизаторов при условии, что они меньше максимально
поддерживаемого объема. В таблице приведены официальные данные,
подтверждаемые документацией Cisco. Таким образом, карты других размеров
могут функционировать в маршрутизаторе, но они не получают официальной
технической поддержки Cisco (TAC).
- Маршрутизатор 12000 PRP-2 позволяет инсталлировать следующие типы
флэш-памяти непосредственно на материнскую плату: 1) 1 Гб CompactFlash диск
2) 40 Гб жесткий диск.
В большинстве маршрутизаторов существующая конфигурация памяти определяется
достаточно просто, так как маршрутизатор имеет или только встроенную память, или
имеет только один слот для DRAM памяти. Тем не менее, иногда маршрутизаторы
оснащены несколькими слотами для памяти. В этом случае можно, как правило,
определить объем и конфигурацию памяти (например, установлено в моей 3640 64 Мб
DRAM как 2х32 Мб или 4х16 Мб) через программное обеспечение, не вскрывая шасси.
Команды и процедуры, позволяющие это сделать, перечислены ниже. Обратите
внимание, что данные команды не относятся ко всем без исключения мультислотовым
маршрутизаторам. К некоторым моделям маршрутизаторов программные методы
определения конфигурации памяти неприменимы. Возможно, в будущем такие методы
будут встроены в IOS.
Модель маршрутизатора |
Описание процедуры |
1841 |
Выполните команду “show platform” |
26xx (non-XM) |
Выполните команду “show c2600”. Команда
работает только в новых версиях IOS – 12.2(11)T обязателен (Cisco
Enhancement ID CSCdv58188) |
26xx (XM) |
Выполните команду “show c2600”. Команда
выполняется только в новых версиях IOS – 12.2(11)Т обязателен (Cisco
Enhancement ID CSCdv58188) |
2691 |
Выполните команду “show platform” |
2800 |
Выполните команду “show platform” |
3631 |
Выполните команду “show platform” |
3700 |
Выполните команду “show platform” |
3800 |
Выполните команду “show platform” |
AS5400 |
Выполните команду “show as5400”. Команда
выполняется только в новых версиях IOS – требуется 12.2(11)Т (Cisco
Enhancement ID XSXdv64625). |
Перепаковка Cisco IOS или Исследования на
тему юзабильности устаревшего оборудования Cisco
Статья была опубликована в журнале "Хакер"
номер #124 за апрель 2009 года.
Эта версия оригинальная и не исправленная редакторами.
Статья, которая была создана изначально в целях систематизации своих
изысканий, затем переросла в блогопост, ну и вот затем только в конечный
вариант. Just4Fun.
Приветствую, дорогой читатель! Сегодня мы будем давать вторую молодость, а
может даже жизнь старым маршрутизаторам Cisco.
Имеем исходные данные: старенькая кошка Cisco 2611 c двумя Ethernet(!)
портами, 64 Мб RAM и 16 MB на flash. Эти параметры являются максимально
возможными из поддерживаемых данной платформой (читай — увеличить объем DRAM
памяти и flash физически не представляется возможным из-за отсутствия в
природе комплектующих больших объемов). Исходя из данных Cisco IOS Feature
Navigator (
http://tools.cisco.com/ITDIT/CFN/jsp/index.jsp)
последней версией IOS для данного маршрутизатора является 12.3(26), что
естественного для столь старого продукта (End-of-Sale - апрель 2003,
End-of-Life – апрель 2008). Однако, иногда хочется получить только все самое
последнее и новое, а все самое новое и вкусное доступно только в версии 12.4
(точнее 12.4T). Посыл номер два, или дополнительные исходные данные: если
внимательно следить за модельным рядом маршрутизаторов Cisco или просто
хорошо ознакомиться с информацией о продуктах на официальным сайте, то можно
обнаружить что серия 2600 включает в себя, например, маршрутизаторы 2611XM.
Отличается эта серия от своего предшественника незначительно:
- Максимальный объем flash-памяти увеличен до 48 MB (в 2611 — 16 MB)
- Максимальный объем SDRAM-памяти увеличен до 128 MB (в 2611 — 64 MB)
- Интегрированные 10/100 Fast Ethernet порты (в 2611 — 10 Мбит/c Ethernet)
Для такой кошки Cisco IOS Feature Navigator сообщит, что последний IOS за
версией 12.4(23).
Системные требования для IOS 12.4(21) с набором Enterprise Base или Advanced
Security составляют 128 MB DRAM и 32 MB flash. Конечно, у нас нет 128 MB
памяти, но попытка не пытка, да и пропускная способность портов у нас
невысокая, что позволяет сделать предположение о том, что ОС возможно
запустить на моем устройстве. Осталось предположения превратить в практику.
Идея проста - загнать бинарный образ операционной системы Cisco IOS 12.4(21)
с набором фьючерсов Enterprise Base на старенький маршрутизатор 2611 c
исходными данными, представленными выше и в последующем использовать его как
тестовый стенд, ибо 10-ти мегабитные интерфейсы ограничивают его применение
в дикой природе, или, как говорится, in production. Хотя с таким же успехом
это устройство может надежно служить файрволлом корпоративной сети взамен
какого-нибудь PIX, если, конечно, достаточно пропускной способности в 10
Мбит, но тогда встает вопрос — а есть ли такой функционал, который может вам
потребоваться в IOS 12.4, но которого нет в 12.3? За подсказкой вновь
отправляю к Cisco IOS Feature Navigator (
http://tools.cisco.com/ITDIT/CFN/Dispatch).
Утилита сравнения образов вам в помощь, но ответ скорее всего будет - нет.
Отсюда вывод — не стоит меня корить в малой практичности данной статьи, так
как изначально она в большей степени исследовательская (jus for fun), чем
практическая.
Возвращаясь от лирических отступлений к делу, скажу, что у меня не возникла
бы потребность в написании статьи, если бы не одна, а точее две небольших
проблемы. О первой из них я уже упомянул — это объем DRAM памяти. К
сожалению, я не повелитель паяльника и вольтметра, так что здесь поделать
ничего не можем. Стоит только надеяться, что ОС не уйдет в core в самый
ответственный момент из-за недостатка пямяти. Вторая проблема, которая
застигла меня врасплох — это размер самого образа образа IOS 12.4 и тот
факт, что он не помещается на флеш объемом 16 МB. Этот образ принципиально
туда не помещается из за своего размера, точнее сам маршрутизатор глаголет,
что данный образ не поместится, и неудивительно. Файл образа —
c2600-entbasek9-mz.124-9.T1.bin , который я взял для эксперимента, занимает
16,4 MB, то есть 17 257 364 байт. Флеш же размером 16 MB ровно (show flash:
сообщает, что всего 16777212 байт или 16384K). Даже если стереть флеш с
опцией no-squeeze-reserve-space:
router#erase /no-squeeze-reserve-space flash:
это нам не поможет, хотя в свое время для образа c2600-ik9o3s3-mz.123-13.bin
являлось решением проблемы (этот образ чуть меньше размера самой флеш и для
его загрузки требуется отформатировать ее с опцией, запрещающей
резервировать свободное место).
Таким образом, решения здесь может быть два - грузиться с tftp, например,
что не всегда удобно, либо же похекать образ так, чтобы его размер стал
меньше, грубо говоря перепаковать (что, собственно, и было отчасти сделано).
Посылом номер три является эмулятор Dynamips. Причем он здесь? А притом, что
именно он натолкнул меня на мысль о перепаковке образа. Если взглянуть на
раздел «How to use?» на официальном сайте проекта (
http://www.ipflow.utc.fr/index.php/Cisco_7200_Simulator),
то можно обнаружить, что эмулятор использует распакованные образы для
ускорения загрузки:
…
To boot quickly, the preferred method is to decompress the IOS image with
the "unzip" utility. It avoids to run the self-decompressing process in the
emulator.
chris@portchris2:~/dynamips-0.2.5$ unzip -p
c7200-advipservicesk9-mz.124-9.T.bin > image.bin
warning [c7200-advipservicesk9-mz.124-9.T.bin]: 27904 extra bytes at
beginning or within zipfile
(attempting to process anyway)
chris@portchris2:~/dynamips-0.2.5$ file image.bin
image.bin: ELF 32-bit MSB executable, cisco 7200, version 1 (SYSV),
statically linked, stripped
You can ignore the warning, unzip has just skipped the self-decompressing
code at the beginning of the image.
Now, you can boot the imagе
…
Значит, если есть запакованный образ, то можно попытаться использовать более
оптимальные параметры(!) сжатия, которые позволят разместить образ на флеш.
Обращаю внимание на одну важную деталь — так как мы не собираемся
переписывать самораспаковывающися код, то есть заниматься
дизассемблированием, да и ассемблер под 32х битные процессоры PowerPC я не
знаю (да и под 64х битные тоже), то сам алгоритм сжатия менять мы не сможем.
Самораспаковывающаяся часть просто не сможет распаковать архивы, сжатые
другими методами. По поводу используемого в образе алгоритма сжатия можно
взглянуть сюда: Cisco IOS Configuration Fundamentals Configuration Guide,
Release 12.4 - Loading and Managing System Images, пункт Image Naming
Conventions. Поле «тип» в имени образа как раз отвечает за его
характеристики:
f - The image runs from flash memory.
m - The image runs from RAM.
r - The image runs from ROM.
l - The image is relocatable.
z - The image is zip compressed.
x -The image is mzip compressed.
В нашем случае образ имеет тип mz – работает в памяти и запакован как раз в
zip-архив. Убедиться в этом просто — большинство архиваторов (WinZIP, WinRAR,
7zip) c легкостью открывают и распаковывают архив.
Не мудрствуя лукаво, пытаемся перепаковать архив заново с максимально
возможной степенью сжатия. Сразу же отмечаем, что используемый метод —
deflate и изменить его не получится. Я использовал 4 архиватора, чтобы
сравнить их и получил следующий результат:
7-zip 4.65 со следующими параметрами:
Формат архива — zip
Уровень сжатия — Ультра
Метод сжатия — Deflate
Размер словаря — 32КB
Размер слова — 258
В результате был получен архив следующих размеров: 15,7 MB (16 489 764
bytes)
WinZIP 11.2 при использовании улучшенного метода Deflate выдал файл размером
16,0 MB (16 803 634 bytes)
WinRAR 3.80 формат архива — zip с наилучшими параметрами сжатия: 16,3 MB
(17131 353 bytes)
PKZIP 9.00 от создателей формата совсем подвел, и по методу Deflate с
максимальным сжатием произвел файл, размером 16,3 MB (17 094 474 bytes).
Итогом моего небольшого сравнительного тестирования стал выбор для
экспериментов архива, как нетрудно догадаться, созданного 7zip. Далее
требуется этот архив поместить вместо оригинального образа. Чтобы проделать
это, нам понадобится шестнадцатеричный редактор типа WinHex, HT Editor или
hview. Я предпочитаю WinHex, но нам понадобится еще и HT, чуть позже объясню
почему.
Как вы можете видеть на скриншоте, скорее всего бинарный образ IOS есть
ничто иное, как исполняемый файл в формате ELF (Executable and Linkable
Formate). ELF-формат является основным исполняемым файлом в *nix-like
системах, неудивительно встретить его здесь. По ELF-формату существует
четкая спецификация, последняя версия которой 1.2, однако для наших целей
будет достаточно, например, заголовочного файла из состава libc - elf.h.
Обычный бинарный ELF файл представляет собой структуру следующего вида:
ELF Header
Program Header Table (optional)
Section 1
Section 2
…
Section n
Section Header Table
Не углубляясь в описание, дабы не повторяться, отправляю вас к спецификации.
Так как весь процесс исследования я проводил в MS Windows, то пришлось
искать замену утилите readelf из состава binutils. Этой заменой и оказался
шестнадцатеричный редактор HT (http:///hte.sf.net),
который умеет читать и модифицировать структуры данных исполняемых файлов
ELF. При попытке открыть подопытный образ c2600-entbasek9-mz.124-9.T1.bin,
HT сразу меня обругал, что и привлекло мое внимание. Обратимся к elf.h,
структура данных, отвечающая за ELF-заголовок выглядит так:
typedef struct {
Elf_Char e_ident[EI_NIDENT];
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word e_version;
Elf32_Addr e_entry;
Elf32_Off e_phoff;
Elf32_Off e_shoff;
Elf32_Word e_flags;
Elf32_Half e_ehsize;
Elf32_Half e_phentsize;
Elf32_Half e_phnum;
Elf32_Half e_shentsize;
Elf32_Half e_shnum;
Elf32_Half e_shstrndx;
} Elf32_Ehdr;
В нашем случае поле e_machine имеет значение 0x002b или 43, что
соответствует процессору SPARC v9:
#define EM_SPARCV9 43 /* SPARC v9 64-bit */
Однако нам известно, что маршрутизатор 2611 использует процессор Motorolla
MPC860, значит поле должно иметь значение 0x0014, что соответствует:
#define EM_PPC 20 /* PowerPC */
Скорее всего, это есть простейшая защита от дизассемблирования образа,
однако нам это не сильно помешает. С помощью F6 открываем режим просмотра
elf/header. Из него нам становятся известны следующие подробности:
- elf header size 0x34
- program header entry size 0x20
- program header count 1
- section header entry size 0x28
- section header count 6
Что в сумме нам дает размер 52+32+6*40=324 или 0x144.
То есть в файле всего 6 секций (соответственно 6 заголовков секций) и 1
заголовок программы. Вероятнее всего одна из секций предназначена для
хранения архива с исполняемым образом IOS. Эту секцию можно вычислить либо
по размеру (логично, что ее размер должен быть максимальным), либо по типу
секции. Заголовок таблицы секций можно просмотреть, нажав F6 и выбрав
elf/section headers, но для начала обратимся к описанию секции:
typedef struct {
Elf32_Word sh_name;
Elf32_Word sh_type;
Elf32_Word sh_flags;
Elf32_Addr sh_addr;
Elf32_Off sh_offset;
Elf32_Word sh_size;
Elf32_Word sh_link;
Elf32_Word sh_info;
Elf32_Word sh_addralign;
Elf32_Word sh_entsize;
} Elf32_Shdr;
Поле sh_type и будет отвечать за искомый тип. К сожалению здесь меня ждал
облом, большинство из секций имело тип SHT_PROGBITS, предназначенный для
секций, значение которых определяется самой программой. Однако 4-я секция,
имела тип отличный от предыдущих и имела значение 0x00000007, секция
предназначена для каких-либо программных заметок. Первая (нулевая) секция
также имеет отличный от предыдущих тип (SHT_NULL), исходя из этого
становится ясно что она пустая и ни с чем не ассоциирована. В итоге
приходится искать секцию с максимальным размером (поле sh_size), ее
оказывается секция за номером пять, ее размер 0x1070e7c или 17239676 байт.
Вернемся к hex-виду (F6 - hex) и перейдем по смещению (поле sh_offset) с
помощью кнопки F5:
И что же мы здесь видим? Где же наш архив, который должен начинаться с
сигнатуры PK, а точнее если следовать спецификации PKZIP-формата (http://www.pkware.com/documents/casestudies/APPNOTE.TXT)
0x04034b50 в обратном порядке? Как не странно эта сигнатура обнаруживается
на 22 байта позже. Однако, если хорошо присмотреться, то отказывается, что
сразу за значением 0xFEEDFACE идет размер распакованного образа 0x02AED904.
Если внимательно поискать в Сети, то можно наткнуться на информацию из книги
Cisco Networks Hacking Exposed издательства McGraw-Hill/Osborne. Наши
русские парни Andrew A. Vladimirov, Konstantin V. Gavrilenko, Janis N.
Vizulis and Andrei A. Mikhailovsky еще в 2006 году занимались разработкой
бинарного патчинга IOS 12.3(6). Им удалось выяснить что после магического
значения 0xFEEDFACE идут последовательно uncompressed image size, compressed
image size, compressed image checksum, uncompressed image checksum. Помимо
этого, им стало известно, что алгоритм вычисления контрольной суммы
представляет собой модифицированный алгоритм контрольной суммы в Интернет,
однако нам, к счастью, не придется их вычислять — как проверено позже на
практике,маршрутизатор сам скажет нам какое значение должно иметь это поле,
если конечно подсчитанная контрольная сумма и записанная в соответствующем
поле не совпадут:
Error : compressed image checksum is incorrect 0xB99D8823
Expected a checksum of 0xF6F69877
*** System received a Software forced crash ***
signal= 0x17, code= 0x5, context= 0x800805f0
PC = 0x0, Vector = 0x0, SP = 0x0
Итак, перейдем к активным действиям. Для начала вырезаем из файла старую 4ю
секцию, содержащую zip архив за исключением 20 байт, начиная с магического
значения 0xFEEDFACE до сигнатуры zip не включая, то есть со смещения 0x44F8
по смещение 0x1075360 + 0x44F8. Затем по смещению 0x44F8 вставляем новый
архив.
Соединим всю известную нам информацию воедино. Размер старой секции (№5),
содержащей архив с образом IOS, загружаемым в память 0x1070e7c или 17239676
(включая 20 байт с 0xFEEDFACE по 0x504B0304 не включая). Размер новой
секции, содержащей архив 0xFB9D38 или 16489784 (опять же включая те 20
байт). Разница между старым и новым значением составит 0xB7158 — 749912. То
есть смещение 4й секции, физически расположенной в файле после 5й секции,
требуется изменить с 0x1075360 на 0xFBE208.
Старые значения после магической записи 0xFEEDFACE:
unpacked image size: 0x02AED904 45013252
packed image size: 0x01070E66 17239654 (разница с размером 5й секции - на 22
байта меньше)
packed image checksum: 0xB58BE139
unpacked image checksum: 0xA29D4F6E
затем идет сигнатура: 0x504B0304
Новые значения после магической записи 0xFEEDFACE:
unpacked image size: 0x02AED904 (остался тот же)
packed image size: 0x00FB9D22 16489762 (разница с размером 5й секции - на 22
байта меньше)
packed image checksum: нам неизвестна, можно заменить на что-нибудь
приметное, типа 0x48000000
unpacked image checksum: 0xA29D4F6E (остался тот же)
Новую контрольную сумму, как я уже говорил, сообщит сам маршрутизатор.
После всех манипуляций конечный образ был получен, однако размер его меня не
впечатлил. К сожалению, по сравнению с изначальным размером 16,4 MB
(17257364 bytes) я получил всего лишь 15,7 MB (16507472 bytes), то есть
разница, которую я уже посчитал выше, составила 749912 байт. Конечно, это
позволит загрузить образ на flash, но скорее всего придется применять опцию
/no-squeeze-reserve-space. Однако, когда при копировании маршрутизатор
запросит повторное стирание flash, подтверждать действие не нужно:
router#erase /no-squeeze-reserve-space flash:
Erasing the flash filesystem will remove all files! Continue? [confirm]
Erasing device... eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeee ...erased
Erase of flash: complete
router#copy tftp://172.22.1.17/c2600-entbasek9-mz.124-9.T1-shad-pk.bin
flash:
Destination filename [c2600-entbasek9-mz.124-9.T1-shad-pk.bin]?
Accessing tftp://172.22.1.17/c2600-entbasek9-mz.124-9.T1-shad-pk.bin...
Erase flash: before copying? [confirm]n
Loading c2600-entbasek9-mz.124-9.T1-shad-pk.bin from 172.22.1.17 (via
Ethernet0/0): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!![OK - 16507472 bytes]
Verifying checksum... CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC OK (0xE6ED)
16507472 bytes copied in 178.188 secs (92641 bytes/sec)
router#reload
Proceed with reload? [confirm]
Естественно, такая ситуация была бы только в том случае, если образ был бы
сформирован правильно. Поэтому я не стал спешить, и для загрузки образа
защел в режим rommon по Ctrl+Break, затем со своего компьютера загрузил
образ по tftp напрямую в RAM:
rommon 1>tftpdnld -r
После загрузки маршрутизатор сказал:
TFTP flash copy: Error, image size (16507470) mismatches netsize (16507472).
Оказалось, что при редактировании размера 5й секции я ошибся на 2 байта (те
самые 20 байт с 0xFEEDFACE + 2).
После второй попытки загрузки выяснилось, что контрольная сумма
запакованного образа — 0xB0257B0D:
Error : compressed image checksum is incorrect 0xB99D8823
Expected a checksum of 0x48000000
*** System received a Software forced crash ***
signal= 0x17, code= 0x5, context= 0x800805f0
PC = 0x0, Vector = 0x0, SP = 0x0
Корректируем соответствующее поле после 0xFEEDFACE (Загружаем файл в HT по
F3, переходим по смещению с помощью F5 и редактируем по F4, не забывая
сохраняться по F2), затем снова грузимся.
rommon 4>reset -s
Дальше соответственно все ок, однако затем IOS вываливается, и отказывается
работать по причине недостатка памяти:
System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)
Copyright (c) 1999 by cisco Systems, Inc.
TAC:Home:SW:IOS:Specials for info
PC = 0xfff0a530, Vector = 0x500, SP = 0x680127c8
PC = 0xfff0a530, Vector = 0x500, SP = 0x680127b0
C2600 platform with 65536 Kbytes of main memory
PC = 0xfff0a530, Vector = 0x500, SP = 0x80004684
monitor: command "boot" aborted due to user interrupt
rommon 1 > tftpdnld -r
IP_ADDRESS: 172.22.1.199
IP_SUBNET_MASK: 255.255.255.0
DEFAULT_GATEWAY: 172.22.1.1
TFTP_SERVER: 172.22.1.17
TFTP_FILE: c2600-entbasek9-mz.124-9.T1-shad-pk.bin
Receiving c2600-entbasek9-mz.124-9.T1-shad-pk.bin from 172.22.1.17
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!
File reception completed.
program load complete, entry point: 0x80008000, size: 0xfbe0d8
Self decompressing the image :
##################################################
##################################################
################################################## ## [OK]
Smart Init is enabled
smart init is sizing iomem
ID MEMORY_REQ TYPE
000092 0X000B3280 C2600 Dual Ethernet
0X00098670 public buffer pools
0X00211000 public particle pools
TOTAL: 0X0035C8F0
If any of the above Memory Requirements are
"UNKNOWN", you may be using an unsupported
configuration or there is a software problem and
system operation may be compromised.
Rounded IOMEM up to: 3Mb.
Using 5 percent iomem. [3Mb/64Mb]
Cisco IOS Software, C2600 Software (C2600-ENTBASEK9-M), Version 12.4(9)T1,
RELEASE SOFTWARE (fc2)
Technical Support:
http://www.cisco.com/techsupport
Copyright (c) 1986-2006 by Cisco Systems, Inc.
Compiled Wed 30-Aug-06 15:43 by prod_rel_team
Image text-base: 0x800080E4, data-base: 0x81B46C00
SYSTEM INIT: INSUFFICIENT MEMORY TO BOOT THE IMAGE!
%Software-forced reload
00:00:16 UTC Fri Mar 1 2002: Unexpected exception to CPUvector 700, PC =
0x8069DE48, LR = 0x8069DD88
-Traceback= 0x8069DE48 0x8069DD88 0x80014B10 0x81B3BAA4 0x8170812C
0x817082A4 0x816E3D68 0x816E3DF4 0x816E3ED4 0x816E3E38 0x816E3ED4 0x816E3E38
0x816E3ED4 0x816E4A1C 0x8171AB4C 0x81729008
CPU Register Context:
MSR = 0x00029032 CR = 0x33000095 CTR = 0x806A2518 XER = 0x8000FE00
R0 = 0x00000000 R1 = 0x82EDD858 R2 = 0x82AF0000 R3 = 0x00000003
R4 = 0xFFFFFFFE R5 = 0x00000000 R6 = 0x00000003 R7 = 0x00009032
R8 = 0x82AF0000 R9 = 0x82820000 R10 = 0x82BBCC50 R11 = 0x00000000
R12 = 0x00004117 R13 = 0xFFF48A24 R14 = 0x80A82090 R15 = 0x00000000
R16 = 0x00000000 R17 = 0x00000000 R18 = 0x00000000 R19 = 0x00000000
R20 = 0x00000000 R21 = 0x00000000 R22 = 0x81B47998 R23 = 0x00000000
R24 = 0x81B47A48 R25 = 0x81708128 R26 = 0x81708128 R27 = 0x00002814
R28 = 0x00000000 R29 = 0x82C8F368 R30 = 0x00000000 R31 = 0x82AF0000
Writing crashinfo to flash:crashinfo_20020301-000016
Однако, здесь я не расстроился, и решил взяться за другой образ —
c2600-advsecurityk9-mz.124-21.bin. После аналогичных манипуляций с байтами,
даже при использовании 128 битного слова в 7zip, размер составил 15947076
(против изначального размера 16635336), что позволило загрузить его во
flash. Помимо прочего, этот образ уже не ругался на недостаток памяти RAM и
прекрасно чувствовал себя на этой платформе:
router#show version
Cisco IOS Software, C2600 Software (C2600-ADVSECURITYK9-M), Version
12.4(21), RELEASE SOFTWARE (fc1)
router#show memory summary
Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)
Processor 82A44240 20244772 8718640 11526132 10171028 10098348
I/O 3CA3400 3525632 1650536 1875096 1875096 1875068
router#show flash:
System flash directory:
File Length Name/status
1 15947076 c2600-advsecurityk9-mz.124-21-shad-pk.bin
[15947140 bytes used, 830072 available, 16777212 total]
16384K bytes of processor board System flash (Read/Write)
Однако, у нас остается еще одна небольшая проблема. Если запустить проверку:
router#verify flash:c2600-advsecurityk9-mz.124-21-shad-pk.bin
Маршрутизатор обругает нас, сообщив, что Embedded hash и Calculated hash не
совпадают. Исправить это очень просто — 16 байт контрольной суммы находится
в самом конце бинарного файла образа. Обнаружить это можно даже с помощью
простого поиска:
После исправления маршрутизатор сообщает, что контрольная сумма успешно
подсчитана и совпадает:
Embedded Hash MD5 : 3DD2C6591FF4F033425147DE4540F9CD
Computed Hash MD5 : 3DD2C6591FF4F033425147DE4540F9CD
CCO Hash MD5 : 79020945BDFE2A354E012C8303136360
Embedded hash verification successful.
File system hash verification successful.
Вот и все, новый образ готов и правильно сформирован. На этом мои изыскания
успешно заканчиваются, а все вопросы, пожелания и в особенности идеи, мой
дорогой читатель, я готов получить по электронной почте. С радостью отвечу
на них и помогу по мере сил. Удачи в бинарном патчинге и не только.
Вернуться обратно
круто!!!
но похоже сисячники взяли ваш метод на вооружение, только про 7зип они недодумались
вот только ковырял имидж c3660-jk9o3s-mz.124-6.XT2.bin, размером в 34.284.608
размер флеша 33.554.432
при запаковке имидж стал 32,494,754
и сидит в файле по смещению 18dcc
или 101,836
итого выходит 32,596,590
а... вообщето влезет
основная проблема что комманды tftpdnld у меня нет, только xmodem - засада конкретная.
кстати метож deflate64 позволяет сжать ещё сильнее
ну что-же похакал последний имидж для 837 роутера по вашему методу. однако контрольную сумму выставлять просто так нельзя, - надо выставлять нули, как я понял контрольная сумма участвует в подсчёте. я сначало поставил 88888888 - поменял на ту что роутер сказал - он опять новую захотел
метод deflate64 к сожалению незаработал
ну шо, всё у меня получилось
c3660-jk9o3s-mz.124-6.XT2
теперь лезет в 32 метра, правда тольк с ключиком /no-squeeze-reserve-space
c837-k9o3sy6-mz.124-11.XJ4 тоже исправлена, она и так залазила в роутер, но там оставалось 20 кб месте, теперь остаётся полмега
спрашивайте на торрентс.ру
Возможно ли перепаковать IOS`ы 2800`ой/3800`ой/7600`ой серии?
Конечно возможно. Все делается абсолютно аналогично.
Недавно обнаружил вот этот пост: http://www.gossamer-threads.com/lists/cisco/nsp/113697?page=last
Хотелось бы ответить нашим зарубежным коллегам: Yes, it is possible to repack almost any IOS! Just always follow the instructions strictly.
у меня вопрос, есть cisco 7140 по сути это cisco7200 с npe300, возможно ли залить иос с 72 на 71 ? если возможно то нужна ваша консультация
albert, честно говоря, не пробовал, но попробовать стоит. Если это не production-маршрутизатор - почему бы нет?