Ipmi версия 1. Квантор - системный интегратор. Управление сервером через утилиту IPMICFG от SuperMicro

Часто задаваемые вопросы о IPMI в материнских платах Supermicro: зачем он нужен, особенности, наглядная демонстрация, подводные камни.

1) Самый популярный миф о KVM-over-LAN - это то, что он "не нужен" . Почему-то многие путают его с обычным удаленным доступом к текстовой/графической консоли ОС, т.е. "зачем нам KVM-over-LAN, если есть SSH, VNC, RDP и Radmin?"
Разница принципиальная: KVM-over-LAN - это не просто доступ к консоли ОС, он никак от ОС не зависит, это доступ к консоли непосредственно самого сервера (и не только к консоли, подробности будут ниже), т.е. мы можем, например: зайти в BIOS системной платы или доп. контроллера, установить ОС, настроить мониторинг сенсоров (что, опять-таки, очень важно - независимый от ОС) через SNMP и т.д.
2) Как это работает? Работает достаточно просто, вот структурная схема (Supermicro последнее время использует, как правило Winbond или Nuvoton WPCM450:

Всю работу выполняет процессор BMC (Baseboard management controller) - он имеет собственную память и специализированную ОС (обычно на базе Linux). BMC использует USB шину для подключения виртуальных клавиатуры, мыши и приводов CD/DVD/FDD. Через другие шины осуществляется сбор показаний датчиков вращения вентиляторов, температуры, управление питанием, доступ к COM-порту (для удаленного доступа к последовательной консоли). BMC также занимается захватом и перенаправлением содержимого видеобуфера - в современных BMC уже интегрировано видеоядро, когда-то, в первых реализациях, BMC занимался оцифровкой аналогового сигнала с отдельного VGA-контроллера. Обмен данными с "внешним миром" происходит через ethernet (выделенный порт или один из портов размещенного на системной плате контроллера ethernet).
Собственно, WPCM450 в продуктах Supermicro представляет собой систему на базе процессора ARM 926EJ-S, работающей под управлением ОС Linux на ядре 2.6.

В целях диагностики можно зайти через SSH, где вас будет ждать busybox.

3) Сколько это стоит?
В настоящее время Supermicro интегрирует IPMI BMC непосредственно на системные платы. Раньше использовались дополнительные модули (например - AOC-SIMSO+). Наличие IPMI BMC на плате Supermicro обозначает буквой F, например: X8DTi и X8DTi-F, и разница в цене не превышает $50, что уже является очевидным ответом на вопрос "нужно или нет", ведь внешний IP-KVM обойдется вам гораздо дороже. Ставить обычный KVM и каждый раз при необходимости что-нибудь переустановить или перепрошить идти в серверную - тоже не выход, это потеря времени, ведь ваш сервер может находится за десятки и сотни километров, да и, в конце концов - это просто неудобно.
4) Как это выглядит на практике?
Доступ к IPMI можно получить либо через IPMIView (специализированная утилита на Java, есть сборки под Windows и Linux) или через обычный браузер (при подключении к графической консоли запустится дополнительное java-приложение).
Рассмотрим IPMIView. Для начала в BIOS можно настроить ethernet-порт IPMI: по умолчанию стоит DHCP, но можно вручную выставить нужные IP/маску/шлюз, тэг VLAN (весь ужаленный менеджмент лучше выделить в отдельную подсеть из соображений безопасности и удобства).
Запускаем IPMIView и находим нужный сервер (можно просканировать диапазон адресов на предмет наличия IPMI), логин/пароль по умолчанию - ADMIN/ADMIN.

  • Graceful shutdown - имитируется быстрое нажатие кнопки Power, для того чтобы ОС могла корректно выключить питание самостоятельно.
  • Power Cycle - это Graceful shutdown с последующим включением питания
  • Reset и Power Up говорят сами за себя
  • Power Down - жесткое выключение, с длительным нажатием кнопки Power
За здоровьем сервера можно наблюдать на вкладке Sensors (показания температурных и вентиляторных датчиков вы увидите только при включенном сервере):

Сетевые настройки можно поменять при необходимости на вкладке BMC Setting (помните, что можно по ошибке потерять удаленный доступ к серверу). Кстати, об удаленном доступе: используются следующие порты (их нужно будет пробросить через NAT или обеспечить способ доступа в менеджмент-сеть, например, через VPN):
TCP:

  • HTTP: 80
  • HTTPS: 443
  • 5901 - нужен для графической консоли
  • 5900 - HID, трафик виртуальной клавиатуры/мыши
  • 5120 - трафик виртуального привода CD/DVD
  • 5123 - трафик виртуального FDD
UDP:
  • IPMI: 623

На вкладке KVM Console можно увидеть самую полезную вещь - графическую консоль сервера. Там же находятся кнопки снятия скриншота, управления виртуальными носителями (Virtual Media), перехода в полноэкранный режим и дополнительная софт-клавиатура. Зачем она нужна, если есть аппаратная? Для различных комбинаций клавиш, которые по каким-то причинам не удается отправить на сервер с аппаратной клавиатуры, например классический Ctrl+Alt+Delete.


Вот несколько особенностей:
  1. Если у вас есть контроллер от LSI, то вам знаком ориентированный на использование мыши интерфейс LSI Webbios. Так вот: мышь в Webbios через IPMI в современных платах Supermicro не работает, связано это с тем, что Webbios расчитан на мышь PS/2, а IPMI эмулирует мышь USB. В FAQ разделе технической поддержки Supermicro этот вопрос рассматривается , но рекомендации не помогают. Приходится пользоваться исключительно клавиатурой, что не совсем удобно, т.к. не через все пункты можно перемещаться при помощи Tab - нужны комбинации с Alt, которые отрабатываются только через Soft Keyboard.

  2. Переключение раскладки в WinPE 3.0 не работает. Так что собирайте WinPE с английской раскладкой, для этого нужно добавить в скрипт сборки после монтирования Wim-образа следующую команду:
    Dism /image:C:\winpe64\mount /Set-InputLocale:1033:00000409 "C:\winpe64\mount" - точка монтирования образа.
    При желании можно заодно сменить локаль и язык интерфейса - смотрите документацию к WinPE.
  3. Для не Windows ОС измените режим синхронизации курсора с абсолютного на относительный.
И заключительный абзац - использование виртуальных носителей.

Можно либо перенаправить локальный привод, либо подключить образ, что гораздо удобнее. Для появления соответствующего устройства в загрузочном меню BIOS может потребоваться перезагрузка.
P.S. Как сбросить пароль IPMI? Только при помощи консольной утилиты ipmicfg . Существует в версиях под DOS, Windows и Linux. Запуск ipmicfg -fd обнуляет все настройки и устанавливает логин/пароль пользователя с администраторскими правами в стандартные ADMIN/ADMIN.
Обновление от 18.04.2010 . В какой-то момент, после очередного обновления Java, попытка смонтировать iso образ в IPMIView начала приводить к его падению (Windows 7 64бит с последними обновлениями).Вышел новый релиз IPMIView (build 110412 от 12 апреля). Пока еще не проверял, исправлен ли там этот баг, так как можно пользоваться запуском консоли через web-интерфейс.

Переходим на вкладку Remote Control , жмем Launch Console и получаем в отдельном окне Redirection Viewer , аналогичный по функционалу консоли в IPMIView. Стоит добавить, что web-интерфейс не облегчает задачу доступа к консоли из внешней сети - Redirection Viewer - это не Java-апплет, а отдельное Java приложение и использует те же порты для трафика видео, HID и виртуальных приводов: 5900, 5901, 5120, 5123.
P.S. от 01.12.2011 . Дополнительная статья: FreeIPMI .
P.S. от 06.10.2013. Похожая .
P.S. от 10.11.2013.
P.S. от 20.06.2014. Опять .

Не так давно, мне удалось поработать с новыми для меня серверами Supermicro удаленное управление которыми осуществляется с помощью интерфейса IPMI . В данной статье я постараюсь раскрыть основные моменты в настройки IPMI на серверах Supermciro, покажу основные пункты меню интерфейса IPMI, а также расскажу о дополнительных утилитах, командах и способах мониторинга сервера с помощью ipmi.


IPMI (Intelligent Platform Management Interface) — интеллектуальный интерфейс управления платформой, предназначенный для автономного мониторинга и управления функциями, встроенными непосредственно в аппаратное и микропрограммное обеспечения серверных платформ. (информация взята с официального источника). IPMI реализуется в виде отдельного контроллера сервера, который не зависит от операционной системы, BIOS, CPU севера и позволяет удаленно управлять физическим оборудованием.

Первичная настройка IPMI консоли и знакомство с интерфейсом

Настройка IPMI начинается с настройки IP адреса интерфейса, который нужно указать в BIOS. Если сервер установлен в офисе, это может быть серый IP-адрес, если же ваше оборудование размещается в ДатаЦентре, то наверняка вы используете белый статический IP-адрес.

На серверах Supermicro в BIOS можно попасть, нажав кнопку “Del ” при загрузке сервера, я не буду заострять на этом внимание и сразу перейду к интерфейсу самого BIOS.

Как видите на скриншоте, я вошел в пункт меню IPMI и активировал возможность конфигурации Lan для интерфейса (Update IPMI Lan Configuration=Yes, Configuration Address Source = Static), указал IP-адрес, маску подсети и основной шлюз.

Применить настройки можно нажав кнопку F4 , после чего произойдет перезагрузка сервера.

Если вы все сделали правильно, то введя в браузере, указанный для интерфейса IPMI IP, у вас откроется авторизация:

Теперь пройдем по основным моментам.

При покупке нового сервера, в IPMI уже создан пользователь ADMIN с паролем ADMIN , именно с этими данными мы и авторизуемся. Я всегда рекомендую создавать нового пользователя, а стандартного удалять или менять у него пароль, так оставлять такой логин и пароль, крайне небезопасно. Создать нового пользователя или поменять пароли/привилегии у текущих, можно в меню Configuration -> Users .

Рестарт интерфейса IPMI можно сделать из меню Maintenance -> Unit Reset .

Монтирование iso образа ОС для установки на сервер выполняется в меню Virtual Media -> CD-ROM Image .

У меня iso образы ОС хранятся на сервере Samba в той же подсети что и интерфейсы IPMI серверов. Я указываю адрес сервера Samba, путь к образу установочному ISO с ОС, после чего монтирую ISO образ и приступаю к установке операционной системы.

Удаленную графическую Java консоль сервера (KVM-over-IP ) можно открыть через Remote Control -> Console Redirection .

Консоль в целом удобная, но после установки ОС, для работы с сервером я обычно использую ssh клиенты. Иногда есть моменты когда, это невозможно, например если у вас не работает или еще не настроена сеть на сервере или же имеются какие-то проблемы с доступом. Именно тогда на помощь и приходит Remote Console.

Никаких отдельных настроек в самой консоли делать не нужно, хочу лишь добавить, что она имеет встроенную клавиатуру, которую можно вызывать из меню Virtual Media -> Virtual Keyboard .

Совет. После продолжительной работы с серверами SUpermicro, я обнаружил один неприятный баг. После установки операционной системы Centos 7 и установки KVM на нее, пропадает возможность использовать Remote Console. Пока сервер в процессе загрузки, консоль отвечает и можно пройти в Bios или увидеть загрузку ядра ОС. Но как только операционная система загрузилась, видео в консоли пропадает. Путем экспериментов мне удалось победить этот баг. Нужно в загрузки ядра добавить параметр загрузки nomodeset. Для этого после установки ОС нужно выполнить команду:

grubby --args "nomodeset" --update-kernel /boot/vmlinuz-`uname -r`

После этого, Remote Console работает исправно.

Управление сервером через утилиту IPMICFG от SuperMicro

Для управления серверами через IPMI компания SuperMicro разрабатывает собственную утилиту IPMICFG .

Скачать файл IPMICFG можно с помощью команды:

wget ftp://ftp.supermicro.com/utility/IPMICFG/IPMICFG_1.30.0_build.190710.zip

На момент публикации файл был с таким названием, я рекомендую заходить на репозиторий SuperMicro по ссылке ftp://ftp.supermicro.com/utility/IPMICFG/ и копировать url актуального файла.

Распакуем скачанный файл в директорию которой находимся:

ln -s /root/IPMI*/Linux/64bit/IPMICFG-Linux.x86_64 /usr/local/sbin/ipmicfg

Теперь мы можем запускать утилиту с помощью команды ipmicfg (символической ссылки). Рассмотрим базовые возможности утилиты ipmicfg.

Если выполнить команду ipmicfg -help мы получим список всех возможных параметров утилиты.

Разберем основные команды:

  • ipmicfg -help – полная справка по утилите;
  • ipmicfg -m – просмотр текущего IP и mac-адреса для IPMI;
  • ipmicfg -k - просмотр маски подсети;
  • ipmicfg -g – просмотр заданного шлюза;
  • ipmicfg -fd - сброс IPMI к заводским настройкам;
  • ipmicfg -user list – просмотр созданных пользователей и их привилегий.

Вы можете изменить IP адрес, маску и шлюз интерфейса IPMI:

  • ipmicfg -m 192.168.1.200
  • ipmicfg -k 255.255.255.0
  • ipmicfg -g 192.168.1.1

Создать нового пользователя IPMI и его пароль:

ipmicfg -user add

С помощью утилиты делаем следующее:

ipmicfg -user add 6 test 123456 4

Тем самым мы создали пользователя test с паролем 123456 и привилегиями администратора.

Список пользователей IPMI и их привилегии в системе можно вывести командами:

  • ipmicfg -user list
  • ipmicfg -user help

Как уже видите на скриншоте, пользователь test создан.

Чтобы изменит (сбросить) пароль пользователя IPMI, исползайте команду:

ipmicfg -user setpwd

И приведу еще пару примеров использование данной утилиты:

  • ipmicfg -hostname - задать hostname для ipmi интерфейса;

Мониторинг железа на сервере SuperMicro через IPMI и утилиту IPMICFG

Мониторинг сервера SuperMicro через IPMI

Через IPMI мониторить температуру и работу железа сервера SuperMicro довольно просто. Полная информация о железе сервера содержится в пункте System -> Hardware Information.

Информацию по состоянию процессора, оперативной памяти и вентиляторах, можно посмотреть перейдя во вкладку Server Health -> Sensor Readings.

Для удобства просмотра, можно менять категории отображения датчиков, например, температуры:

Или датчики напряжения:

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

Мониторинг с помощью утилиты ipmicfg

Проверка состояния блоков питания:

# ipmicfg -pminfo

Item | Value ---- | ----- Status | (00h) Input Voltage | 217.5 V Input Current | 1.06 A Main Output Voltage | 12.28 V Main Output Current | 17.93 A Temperature 1 | 23C/73F Temperature 2 | 21C/70F Fan 1 | 2064 RPM Fan 2 | 2032 RPM Main Output Power | 220 W Input Power | 228 W PMBus Revision | 0x22 PWS Serial Number | P2K4FCH02LT0125 PWS Module Number | PWS-2K04F-1R PWS Revision | REV1.0 Current Sharing Control | PEC error Item | Value ---- | ----- Status | (00h) Input Voltage | 217.5 V Input Current | 1.09 A Main Output Voltage | 12.30 V Main Output Current | 18.09 A Temperature 1 | 24C/75F Temperature 2 | 22C/72F Fan 1 | 2064 RPM Fan 2 | 2064 RPM Main Output Power | 223 W Input Power | 234 W PMBus Revision | 0x22 PWS Serial Number | P2K4FCH02LT0126 PWS Module Number | PWS-2K04F-1R PWS Revision | REV1.0 Current Sharing Control | PEC error

Посмотреть температуру процессора можно командой:

ipmicfg -nm oemgettemp

Так же можно проверить в каком режиме работают вентиляторы и изменить режим, если это необходимо.

Проверка состояния и конфигурации вентилятора

# ipmicfg -fan

Current Fan Speed Mode is [ PUE2 Optimal Mode ] Supported Fan modes: 0:Standard 1:Full 3:PUE2 Optimal 4:Heavy IO

Изменение режима работы кулера: ipmicfg -fan Например, ipmicfg -fan 3

Информация о версии и прошивке IPMI:

# ipmicfg -nm deviceid

Device ID = 50h Firmware Version = 4.1.4.54 IPMI Version = 2.000000 Manufacturer ID = 57 01 00 Product ID Minor Ver = Greenlow platform Implemented DCMI version = DCMI not implemented/enabled Firmware implemented version = NM Revision 4.0 Image Flag = operational image 1 raw = 50 01 04 14 02 21 57 01 00 09 0b 04 05 40 01

И посмотреть все сенсоры можно командой ipmicfg -sdr

При выводе мы видим, что есть дополнительные столбцы, в которых отображена информация о лимитах нижнего и верхнего пределов.

Так же существует еще не малое количество утилит, которые можно использовать для мониторинга и автоматизировать этот процесс, например, с nagios. В данный момент заострять на этом внимание мы не будем, так как цель статьи рассказать основные моменты в работе с IPMI. Если вас заинтересует тема мониторинга, вы можете оставить свои пожелания и возможно в дальнейшем мы осветим и эту тему. Надеюсь, данная статья окажется для вас полезной!

Все сервера, предлагаемые нами в аренду, оснащены контроллером IPMI (Intelligent Platform Management Interface), позволяющим осуществлять включение, выключение, удаленное подключение (KVM) с возможностью монтирования ISO-образов, а также обеспечивающим доступ к информации о текущем состоянии сервера.

При помощи IPMI после выдачи сервера вы сможете произвести установку операционной системы и первоначальную настройку сервера. Так как IPMI-контроллер подключён отдельным кабелем и имеет собственный IP-адрес, даже в случае потери доступа к ОС Вы всегда сможете управлять сервером удаленно без необходимости прямого физического доступа.

Как установить ОС?

Для установки операционной системы Вам потребуется подключиться к IPMI сервера одним из удобных для вас способов: через Web-интерфейс или при помощи программы IPMIView. В статье будут описаны оба варианта, однако мы рекомендуем использовать второй способ.

Web-интерфейс

Для подключения через web-интерфейс необходимо в адресной строке вашего браузера ввести адрес IPMI и авторизоваться. Адрес и реквизиты для авторизации вы можете найти в письме с доступом к серверу или в вашем личном кабинете. Далее потребуется перейти во вкладку Remote Control -> Console Redirection и нажать кнопку Launch Console .


В разделе Device 1 выберите ISO File в выпадающем списке Logical Drive Type и укажите путь до образа на вашем диске при помощи кнопки Open Image , после чего подключите образ кнопкой Plug In .


После подключения образа перезагрузите ваш сервер в разделе Power Control ->


Некоторые серверы позволяют подключить до трёх устройств при помощи вкладок Device 2 или Device 3 в разделе Virtual Media -> Virtual Storage . Это может быть полезно, если при установке потребуется установить дополнительные драйвера.

Если вы планируете установить на сервер ОС Windows, комбинацию клавиш Ctrl+Alt+Del можно передать в разделе Macro - Macro .

Инструкция по работе с web-интерфейсом в старых версиях прошивок IPMI

IPMIView

Для использования программы Supermicro IPMIView необходимо скачать её с официального сайта , указав свои данные, либо напрямую с ftp-сервера: https://www.supermicro.com/wftp/utility/IPMIView/

После установки и запуска программы необходимо добавить ваш сервер в разделе File - New - System .

В качестве System Name укажите имя вашего сервера, а в графу IP address впишите адрес IPMI , который вы можете найти в письме с доступом к серверу или в вашем личном кабинете. Убедитесь, что в графе адреса отсутствуют пробелы в конце строки и нажмите OK .

В списке слева дважды нажмите на имя добавленного сервера, после чего вы увидите окно авторизации. Заполните его при помощи реквизитов из письма или личного кабинета и нажмите Login . В случае успешного подключения вы увидите надпись Connected , а в самом низу окна появятся дополнительные вкладки для управления сервером.


Для удалённого управления сервером перейдите в разде KVM Console и нажмите кнопку Launch KVM Console .


Дальнейшие действия аналогичны работе через

При помощи программы IPMIView вы также можете перезагрузить, включить или выключить ваш сервер во вкладке IPMI Device .


Абсолютное большинство современных серверов имею IPMI/BMC интерфейс для управления сервером удаленно. Данный инструмент представляет собой доступ к виртуальной клавиатуре и экрану сервера посредством протокола TCP/IP. Сегодня мы коснемся истории исследования безопасности IPMI, рассмотрим векторы для проведения атак и их дальнейшего развития с использованием IPMI.

IPMI - это набор спецификаций, регламентирующих, как общаться и что предоставлять.
Все вендоры стараются придерживаться этих спецификаций.
ВМС - это обертка из железа для работы IPMI. Представляет собой одноплатный компьютер (system on а chip) с щупальцами в сенсорах основного. Каждый вендор сам выбирает, что за железо использовать и как его объединять, что естественно. Все наши примеры мы будем рассматривать на lntegrated Lights Out (iLO) от Hewlett-Packard (НР). НР iLO - это какраз связка BMC/IPMI. У других вендоров свои названия, реализации в железе и софте. Но, как правило, это одноплатный компьютер с процессором ARM и Linux на борту.
Основная функция подобных устройств - сделать жизнь админов более простой и удобной: пропадает необходимость бежать к серверу и жать кнопку Reset /ставить новую систему/ смотреть, почему он не грузится. Теперь можно подключиться к IPMl/BMC и сделать все это удаленно. К тому же появляется возможность получать информацию со всевозможных датчиков температуры,
напряжения и так далее, что также довольно удобно.


УПРАВЛЕНИЕ

Интерфейсов управления несколько:
- веб - интерфейс (зависит от вендора) ;
- IPMI over LAN (UDP 623);
- из установленной системы на сервере (при условии, что установлены драйверы от производителя). Используемый софт: WMI под виндой, OpenlPMI, IPMltool под Linux.

С веб-интерфейсом все понятно. Каждый вендор сам решает, как он выглядит и как его реализовать. Второй и третий интерфейсы похожи, но различается среда передачи. В случае IPMI over LAN, как можно догадаться, команды передаются через сеть на порт UDP 623. Из установленной системы команды для IPMI передаются посредством файла устройства, обычно это /dev/ipm iO, которое появляется после установки драйвера. Стандартная утилита для взаимодействия с IPMI - это IPMltool под GNU/Linux, как наиболее простая в обращении.

ЧТО ПЕНТЕСТЕРУ IPMl/BMC

Несмотря на то что отчет об уязвимостях IPMl/BMC был опубликован еще летом 2013 года, в настоящее время остается очень много уязвимых систем. Очень часто IPMl/BMC любой масти можно найти через поисковик . Естественно, не стоит держать подобные системы снаружи. В основном они встречаются при проведении внутренних пентестов. Один из самых простых векторов развития атаки с использованием таких систем - «угон» сервера с помощью IPMI/BMC.

Заимев административный доступ к IPMl/BMC (как будет показано далее, это совсем несложно), можно подключиться через VirtualConsole (aka KVM) и, к примеру, сбросить пароль root’a или с помощью LiveCD сдампить хеш и локальных пользователей, если это Windows. При прокачанном скилле удачи можно даже поймать консоль, из которой root забыл разлогиниться (очень часто такое встречается на виртуальных машинах). В свою очередь, IPMI можно использовать и как возможность вернуть доступ к серверу после полной переустановки системы.
Доступ к IPMI/ВМС средствами операционной системы при наличии максимальных привилегий возможен без использования пароля, то есть авторизация вообще не нужна. В этом случае злоумышленник просто создает административный аккаунтов IPMl/BMC. При потере доступа к серверу он заходит на IPMl/BMC и возвращает честно заработанное добро. Вообще, связь IPMl/BMC с основным компьютером до сих пор досконально не изучена. Это непаханое поле для поиска багов и фич. Учитывая количество вендоров, которые реализуют это в своих серверах, можно говорить о «богатом внутреннем мире».

ПУБЛИЧНЫЕ ИССЛЕДОВАНИЯ

Впервые на безопасность IPMI и ВМС обратил внимание Дэн Фармер (DanFarmer). С его полным отчетом, носящим говорящее название «Грузовой поезд в ад» . Мы рассмотрим наиболее интересные с точки зрения взлома моменты.
Руководствуясь исследованием Дэна, уязвимости IPMl/BMC можно разделить на две большие категории:

· кастомные баги от производителей (например, уязвимости веб-интерфейса);
· уязвимости протокола IPMI.

На самом деле Дэн накопал много интересного, об этом ниже.

NULL authentication

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

Вендоры
- НР
- Dell
- Supermicro.

Условия
Открытый порт UDP 623, IPMI 1.5, логин существующего юзера.

Ipmtiool -А NONE -Н targetIP bmc guid

IPMI Authentication Bypass via Cipher 0

Описание
Уязвимость позволяет обойти аутентификацию. Бага появилась с IPM I верси ей
2.0. В этой ревизии решили добавить шифрования. Для эксплуатации надо
знать логин валидной учетной записи, а вот пароль знать не обязательно -
можно указать любой.

Вендоры
- НР
- Dell
- Supermicro.

Условия

Открытый порт UDP 623, IPMI 2.0, логин существующего юзера.

Metasploit - auxiliary/scanner/ipmi/ipmi_cipher_zero ipmitool -I lanplus -C 0 -Н targetIP -u Administrator -Р anypasswordhere user list

IPMI 2.0 RAKP Authentication Remote Password Hash Retrieval

Описание
Уязвимость позволяет неавторизированному юзеру получить захешированные пароли пользователей для последующего брута. Бага появилась в спецификации IPMI версии 2.0

Вендоры
- НР
- Dell;
- Supermicro.

УСЛОВИЯ

Открытый порт UDP 623, IPMI 2.0 и валидные user-logins.

Metasploit - auxiliary/scanner/ipmi/ipmi_dumphashes http://fish2.com/ipmi/tools/rak-the-ripper.pl

IPMI Anonymous Authentication / Null user

Описание
Кто-то называет это null user, кто-то - anonymous authentication. Кто-то разделяет эти две уязвимости, кто-то нет. По умолчанию существует null user / anonymous - «» (пустая строка). Если говорят null user, то пароль у него тоже пустой. Если говорят anonymous authentication, то пасс у него admin и во всем виновато IPMI Chips with ATEN-Software.
Дэн в своем исследовании считает это как две разные уязвимости. А в доке от Rapid7 об null user уже ни слова.

Вендоры:

НР
Dell
Supermicro (используют IPMI Chips with ATEN-Software).

Условия

Открытый порт UDP 623.

Metasploit - auxiliary/scanner/ipmi/ipmi_dumphashes ipmitool -I lanplus -Н targetIP -U "" -Р "" user list

Supermicro IPMI UPnP Vulnerabllity

Описание
В Supermicro присутствует сервис UPnP SSDP на порту UDP 1900. Он уязвим к переполнению буфера.

Вендоры
Supermicro.

Условия
Открытый порт 1900.

Metasploit exploit/multi/upnp/libupnp _ssdp_overflow metasploit auxiliary/scanner/upnp/ssdp_msearch

Supermicro IPMI Clear-text Passwords

Описание
Спецификация IPMI 2.0 подразумевает, что где-то должны храниться пароли в открытом виде. В Supermicro они находятся в файлах /nv/PSBlock или /nv/PSStore, в зависимости от firmware.
Помимо этого, в реализациях ВМС на Nuvoton WPCM450 на ТСР-порту 49152 висит сервис, который позволяет читать содержимое файлов в директории /nv, например PSBlock, server.pem и так далее.

Вендоры
· Supermicro.

Условия
Shell-дocтyп

Cat /nv/PSBlock echo (GET /PSBlock" 1 nc targetIP 49152

По поводу уязвимостей «NULL authentication / IPMI Authentication Bypass via Cipher О», «IPMI 2.0 RAKP Authentication Remote Password Hash Retrieval», «IPMI Anonymous Authentication» - обо всем этом написано в спецификации IPMI.
Исследователи досконально изучили ее, сделав при этом упор на механизмы аутентификации и шифрования. Уязвимость, связанная с произвольным выполнением кода в UРnР-сервисе в прошивке Supermicro (Supermicro IPMI UPnP Vulnerability), относится к CVE-2012-5958 (BoF в libupnp). Остальные же затронутые нами уязвимости найдены с помощью анализа прошивки Supermicro для материнских плат Supermicro Х9, причем упор делался именно на анализ кода, отвечающего за веб.

HANDS-ON LAB

Давай разберем стандартную схему эксплуатирования уязвимостей IPMI.
С помощью модуля ipmi_version, доступного в известном фреймворке Metasploit, можно просканировать периметр сети. Если ты уже находишься во внутреннем сегменте и устанавливать/использовать Metasploit нет возможности, то можно обойтись простенькой утилитой ipmiping или rmcpping.
Как только удалось обнаружить открытые IPMI, в первую очередь следует проверить их на уязвимость «Authentication Bypass via Cipher О» (смотри выше). Если она присутствует, то можно обойтись без дампа хешей пользо вателей и просто сбросить пароль администратору или добавить своего. Важно: для использования этой уязвимости необходимо знание логи на учетной записи, в нашем случае у учетной записи должны присутствовать административные привилегии. Для начала рассмотрим случай с дампом хеша пользователя и посл едующим его брутфорсом.

С помощью модуля Metasploit’a ipmi_dumphashes мы имеем возможность собрать хеши пользователей. Важно: без знания логина пользователя не получится добыть его хеш. В опциях ipmi_dumphashes можно указать путь до файла с логинами, например в том случае, если админы создали для себя учетные записи. Файл, который используется по умолчанию, содержит дефолтные логины всех вендоров. Брут хешей поддерживают как oclHashcat , так и John the Ripper с jumbо -патчами (community edition). Джона следует брать с гитхаба, так как на официальном сайте устаревшая версия без поддержки нужного нам формата. Последняя версия oclHashcat , на данный момент 1.30, поддерживает все из коробки.

Если у тебя в руках оказался хеш от НР ilO4, то тебе повезло. Дело в том, что при конфигурировании на заводе пароль по умолчанию для учетной записи Administrator устанавливают длиной восемь символов - uppercase + numeric. На моих скромных мощностях поиск подобного значения занимает около получаса.

В случае наличия уязвимости cipher О можно обойтись без брутфорса хешей и сбросить пароль. Для этого нам понадобится утили та IPMitool. Сборка под GNU/Linux не вызывает вопросов. А вот под Windows придется устроить пляски с бубном в Cygwin . Последовательност ь действий для добавленияадминистратора такая:

1. Смотрим, какие пользователи присутствуют, и используем следующий свободный ID.

Ipmitool -I lanplus -с 0 -H 1.1.1.1 -U Administrator -Р anypasswordhere user list

2. Устанавливаем логин нашего пользователя.

Ipmitool -I lanplus -С 0 -Н 1.1.1.1 -U Administrator -P anypasswordhere user set name hacкer

3. Задаем для него пароль.

Ipmitool -I lanplus -С 0 -Н 1.1.1.1 -U Administrator -P anypasswordhere user set password hackerpass

4. Делаем его администратором.

Ipmitool -I lanplus -С 0 -Н 1.1.1.1 -U Administrator -Р anypasswordhere user priv 4

5. Активируем толь ко что созданную учетную запись.

Ipmitool -I lanplus -C 0 -H 1.1.1.1 -U Administrator -Р anypasswordhere user еnаble

После того как хеши взломаны, пароли сброшены или же добавлен новый администратор, у тебя появляется возможность зайти через веб-интерфейс, по SSH на SMASH или подключиться к удаленному рабочему столу, а -ля KVM.
Особую ценность представляет переключатель KVM, так как реализует доступ непосредственно к самой консоли, тем самым позволяя получить доступ в BIOS, установить операционную систему и тому подобное. За реализацию переключателя KVM отвечает каждый вендор сам. Например, в НР
ilO4 для этого используются порты ТСР 17988 и 17990. У Dell iDRAC7 это порт ТСР 5900. Cisco ICM порт ТСР 2068.

Стоит упомянут ь такую вещь, как НР BladeSystem Onboard Administrator. НР BladeSystem представляет собой шасси, к которому подключаются блейд-серверы. Так вот, это шасси позволяет управлять централизованно блейд-серверами с помощью IPMI. При этом авторизация на «Подчиннные» IPMI происходит с помощью механизма SSO. Все, что тебе требуется, - это получить хеш пользователя с административными привилегиями и с помощью веб-интерфейса подключиться на интересующий тебя сервер.

Еще одна интересная особенность, найденная в НР il04, - это возможность подключиться к серверу по KVM прямо из SMASH (читай: SSH) с помощью команды TEXTCONS. Это весьма полезно, когда закрыты порты 80, 443, 17990. Для этого понадобятся права администратора, но какая разница?
Стать администратором не так сложно. Персонально для тебя, читатель, я подготовил программу ipmicd на С под Windows/Linux. Она позволяет сканировать диапазон адресов на наличие IPMl/BMC, а также дампит хеши (аналог ipmi_dumphashes из Metasploit’a). Программы созданы на тот случай, когда использовать Metasploit не самая удачная идея, например IPMl/BMC находятся где-то далеко, куда Metasploit не пробросишь.

Утилита доступна на GitHub. Очень проста в использовании:

1. Параметр -р используется, когда необходимо провести сканирование определенного диапазона.
2. Параметр -d указывает необходимость получить захешированный пароль.
3. Параметр -v N указывает степень логирования при работе 0..5. При N = 1 программа выдает фингерпринты.

Комбинируя различные параметры, можно влиять на поведение программы. Например, при использовании вместе опций -d и -р программа будет пробовать получить хеши только с тех систем, которые отвечают на IРМl- пинги. При использовании только опции -d будет пытаться получить хеши со всех адресов, что обычно происходит нереально медленно. Если что-то вызывает сомнения, то можно использовать опцию -v 5 - программа будет выводить в удобном формате получаемые сообщения. Для компилирования под Linux понадобится тол ько GCC - gcc ipmicd.c -static -о ipmicd . В случае использования на Windows компилировать следует с помощью MinGW gcc ipmicd.c -mno-ms-bitfields -lws2_32 -DMINGW .

ЗАКЛЮЧЕНИЕ

Пара слов о высоком: изучение возможностей и реализаций разными вендорами IPMl/BMC только начинается. Сюда можно включить не только веб -интерфейсили SMASH, но и драйверы для операционных систем, позволяющие взаимодействовать с технологиями удаленного управления сервером IPMI/ВМС из установленной системы. Внутренние сервисы, реализующие обмен информацией в IPMl/BMC. Под прицел может попасть даже «железная» реализация самого ВМС и как именно он управляет основным сервером. Администраторам же я рекомендую проверить все свои системы на наличие в них публичных уязвимостей и по возможности устранить эти уязвимости. Самая же главная рекомендация, которую я бы хотел дать читателем - уделяйте максимум внимания настройкам оборудования которым вы управляете.

Часто задаваемые вопросы о IPMI в материнских платах Supermicro: зачем он нужен, особенности, наглядная демонстрация, подводные камни.

1) Самый популярный миф о KVM-over-LAN - это то, что он "не нужен" . Почему-то многие путают его с обычным удаленным доступом к текстовой/графической консоли ОС, т.е. "зачем нам KVM-over-LAN, если есть SSH, VNC, RDP и Radmin?"
Разница принципиальная: KVM-over-LAN - это не просто доступ к консоли ОС, он никак от ОС не зависит, это доступ к консоли непосредственно самого сервера (и не только к консоли, подробности будут ниже), т.е. мы можем, например: зайти в BIOS системной платы или доп. контроллера, установить ОС, настроить мониторинг сенсоров (что, опять-таки, очень важно - независимый от ОС) через SNMP и т.д.
2) Как это работает? Работает достаточно просто, вот структурная схема (Supermicro последнее время использует, как правило Winbond или Nuvoton WPCM450:

Всю работу выполняет процессор BMC (Baseboard management controller) - он имеет собственную память и специализированную ОС (обычно на базе Linux). BMC использует USB шину для подключения виртуальных клавиатуры, мыши и приводов CD/DVD/FDD. Через другие шины осуществляется сбор показаний датчиков вращения вентиляторов, температуры, управление питанием, доступ к COM-порту (для удаленного доступа к последовательной консоли). BMC также занимается захватом и перенаправлением содержимого видеобуфера - в современных BMC уже интегрировано видеоядро, когда-то, в первых реализациях, BMC занимался оцифровкой аналогового сигнала с отдельного VGA-контроллера. Обмен данными с "внешним миром" происходит через ethernet (выделенный порт или один из портов размещенного на системной плате контроллера ethernet).
Собственно, WPCM450 в продуктах Supermicro представляет собой систему на базе процессора ARM 926EJ-S, работающей под управлением ОС Linux на ядре 2.6.

В целях диагностики можно зайти через SSH, где вас будет ждать busybox.

3) Сколько это стоит?
В настоящее время Supermicro интегрирует IPMI BMC непосредственно на системные платы. Раньше использовались дополнительные модули (например - AOC-SIMSO+). Наличие IPMI BMC на плате Supermicro обозначает буквой F, например: X8DTi и X8DTi-F, и разница в цене не превышает $50, что уже является очевидным ответом на вопрос "нужно или нет", ведь внешний IP-KVM обойдется вам гораздо дороже. Ставить обычный KVM и каждый раз при необходимости что-нибудь переустановить или перепрошить идти в серверную - тоже не выход, это потеря времени, ведь ваш сервер может находится за десятки и сотни километров, да и, в конце концов - это просто неудобно.
4) Как это выглядит на практике?
Доступ к IPMI можно получить либо через IPMIView (специализированная утилита на Java, есть сборки под Windows и Linux) или через обычный браузер (при подключении к графической консоли запустится дополнительное java-приложение).
Рассмотрим IPMIView. Для начала в BIOS можно настроить ethernet-порт IPMI: по умолчанию стоит DHCP, но можно вручную выставить нужные IP/маску/шлюз, тэг VLAN (весь ужаленный менеджмент лучше выделить в отдельную подсеть из соображений безопасности и удобства).
Запускаем IPMIView и находим нужный сервер (можно просканировать диапазон адресов на предмет наличия IPMI), логин/пароль по умолчанию - ADMIN/ADMIN.

  • Graceful shutdown - имитируется быстрое нажатие кнопки Power, для того чтобы ОС могла корректно выключить питание самостоятельно.
  • Power Cycle - это Graceful shutdown с последующим включением питания
  • Reset и Power Up говорят сами за себя
  • Power Down - жесткое выключение, с длительным нажатием кнопки Power
За здоровьем сервера можно наблюдать на вкладке Sensors (показания температурных и вентиляторных датчиков вы увидите только при включенном сервере):

Сетевые настройки можно поменять при необходимости на вкладке BMC Setting (помните, что можно по ошибке потерять удаленный доступ к серверу). Кстати, об удаленном доступе: используются следующие порты (их нужно будет пробросить через NAT или обеспечить способ доступа в менеджмент-сеть, например, через VPN):
TCP:

  • HTTP: 80
  • HTTPS: 443
  • 5901 - нужен для графической консоли
  • 5900 - HID, трафик виртуальной клавиатуры/мыши
  • 5120 - трафик виртуального привода CD/DVD
  • 5123 - трафик виртуального FDD
UDP:
  • IPMI: 623

На вкладке KVM Console можно увидеть самую полезную вещь - графическую консоль сервера. Там же находятся кнопки снятия скриншота, управления виртуальными носителями (Virtual Media), перехода в полноэкранный режим и дополнительная софт-клавиатура. Зачем она нужна, если есть аппаратная? Для различных комбинаций клавиш, которые по каким-то причинам не удается отправить на сервер с аппаратной клавиатуры, например классический Ctrl+Alt+Delete.


Вот несколько особенностей:
  1. Если у вас есть контроллер от LSI, то вам знаком ориентированный на использование мыши интерфейс LSI Webbios. Так вот: мышь в Webbios через IPMI в современных платах Supermicro не работает, связано это с тем, что Webbios расчитан на мышь PS/2, а IPMI эмулирует мышь USB. В FAQ разделе технической поддержки Supermicro этот вопрос рассматривается , но рекомендации не помогают. Приходится пользоваться исключительно клавиатурой, что не совсем удобно, т.к. не через все пункты можно перемещаться при помощи Tab - нужны комбинации с Alt, которые отрабатываются только через Soft Keyboard.

  2. Переключение раскладки в WinPE 3.0 не работает. Так что собирайте WinPE с английской раскладкой, для этого нужно добавить в скрипт сборки после монтирования Wim-образа следующую команду:
    Dism /image:C:\winpe64\mount /Set-InputLocale:1033:00000409 "C:\winpe64\mount" - точка монтирования образа.
    При желании можно заодно сменить локаль и язык интерфейса - смотрите документацию к WinPE.
  3. Для не Windows ОС измените режим синхронизации курсора с абсолютного на относительный.
И заключительный абзац - использование виртуальных носителей.

Можно либо перенаправить локальный привод, либо подключить образ, что гораздо удобнее. Для появления соответствующего устройства в загрузочном меню BIOS может потребоваться перезагрузка.
P.S. Как сбросить пароль IPMI? Только при помощи консольной утилиты ipmicfg . Существует в версиях под DOS, Windows и Linux. Запуск ipmicfg -fd обнуляет все настройки и устанавливает логин/пароль пользователя с администраторскими правами в стандартные ADMIN/ADMIN.
Обновление от 18.04.2010 . В какой-то момент, после очередного обновления Java, попытка смонтировать iso образ в IPMIView начала приводить к его падению (Windows 7 64бит с последними обновлениями).Вышел новый релиз IPMIView (build 110412 от 12 апреля). Пока еще не проверял, исправлен ли там этот баг, так как можно пользоваться запуском консоли через web-интерфейс.

Переходим на вкладку Remote Control , жмем Launch Console и получаем в отдельном окне Redirection Viewer , аналогичный по функционалу консоли в IPMIView. Стоит добавить, что web-интерфейс не облегчает задачу доступа к консоли из внешней сети - Redirection Viewer - это не Java-апплет, а отдельное Java приложение и использует те же порты для трафика видео, HID и виртуальных приводов: 5900, 5901, 5120, 5123.
P.S. от 01.12.2011 . Дополнительная статья: .
P.S. от 06.10.2013. Похожая .
P.S. от 10.11.2013. IPMI и безопасность.
P.S. от 20.06.2014. Опять