Hetzner - DokuWiki

IPMI/ru

Inhaltsverzeichnis

Информация о IPMI

IPMI (Intelligent Platform Management Interface) — это интерфейс управления и администрирования серверов. Он реализован с помощью BMC (Baseboard Management Controller) на материнской плате. Доступ к немо возможен при помощи утилит командной строки (например, IPMItool) или через web-интерфейс, позволяющий легко администрировать сервер. Доступны возможности перезагрузки сервера, запуска KVM и считывания показаний датчиков материнской платы.

Обзор моделей

  • PX60(-SSD)/PX70(-SSD) — BMC с IPMI (функция KVM активируется оплачиваемым дополнительно KVM-модулем)
  • PX90(-SSD)/PX120(-SSD) — BMC с IPMI и KVM
  • PX91(-SSD)/PX121(-SSD) — оплачиваемый дополнительно BMC-модуль с IPMI и KVM

Активация сетевого интерфейса

Некоторые модели серверов PX содержат встроенный BMC, в то время как для других его можно добавить при помощи KVM-модуля. На моделях со встроенным BMC по умолчанию отключены сетевые настройки. Для использования IPMI и Serial over LAN и/или функции KVM потребуется заказать дополнительный IP-адрес (он недорогой) через Robot.

'Важно: При заказе дополнительного IP-адреса следует указать MAC-адрес.

Узнать MAC-адрес можно при помощи IPMItool (смотри Сеть). После того как мы выделим IP-адрес вы сможете статически настроить его в BMC или использовать DHCP.

Добавление KVM-модуля / Разблокирование функциональности KVM

Для добавления BMC-модуля (с IPMI и KVM) на серверы PX91 и PX121 или для активации возможности KVM с поддержкой Virtual media на серверах PX60 и PX70 потребуется заказать KVM-модуль через Hetzner Robot. Для установки модуля сервер надо будет выключить. Сервер будет недоступен несколько минут.

Инструкции по безопасности

Если доступ к BMC предоставляется по публичному IP-адресу, то он может быть атакован и использован злоумышленниками, что может скомпрометировать сервер. По этой причине следует принять контрмеры против известных сценариев атак. Для получения подробной информации об атаках, прочитайте о наборе средств для проникновения Metasploit (https://community.rapid7.com/community/metasploit/blog/2013/07/02/a-penetration-testers-guide-to-ipmi).

Используемые в PX60 и PX70 материнские платы не подвержены уязвимостям, описанным по ссылке выше, так как содержат предустановленные механизмы защиты. Обычно следует изменить пароли по умолчанию и удалить или переименовать существующих пользователей. Анонимный доступ выключен по умолчанию на всех моделях. Другие векторы атак и способы противодействия описаны далее.

Текущие угрозы

Уязвимости

Так как BMC, предоставляющих возможности IPMI, это программное обеспечение, в нём могут быть уязвимости.

PX90/PX120

Для материнских плат серверов PX90/120 (Supermicro X9SRi-F) в firmware версии 2.14 найдена уязвимость, позволяющая прочитать имена и пароли. Если в вашем сервере установлена именно эта версия firmware, то перед активацией сетевого интерфейса её следует обновить.

Узнать версию firmware можно при помощи команды ipmitool:

# ipmitool mc info
...
Firmware Revision         : 3.39

Если сеть в IPMI уже активирована, то обновление можно произвести через web-интерфейс. Последнюю версию firmware можно найти на download.hetzner.de.

Альтернативно, если сеть не была активирована, обновление можно произвести под Linux:

wget http://mirror.hetzner.de/tools/Supermicro/tools/SMT_X9_339.tgz
tar -xzf SMT_X9_339.tgz
cd SMT_X9_339
./lUpdate -f SMT_X9_339.bin

Обратите внимание: это обновление применимо только к моделям PX90 и PX120.

PX91/PX121

Дополнительный KVM-модуль для серверов моделей PX91 и PX121 (Asus Z10PA-U8) использует небезопасные SSL-протоколы и устаревшие SSL-сертификаты в версиях до 1.11.

Из-за этого, в зависимости от используемого браузера, может быть недоступно безопасное соединение (HTTPS) пока вы не выполните обновление.

Обновление можно скачать через веб-интерфейс. Firmware доступны для скачивания на download.hetzner.de

Атака нулевого шифрования

Нулевое шифрование означает, что при аутентификации не используется шифрование. По умолчанию «Cipher 0» активен только для callback, то есть не позволяет зайти на BMC, но позволяет определить наличие BMC. Несмотря на то, что реальная атака невозможна, при подготовке сервера мы отключаем «Cipher 0» и он не может быть использован.

Передача хешей паролей

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

Вот несколько советов по составлению паролей:
Если требуется сделать удобный для запоминания пароль, можно объединить несколько не связанных друг с другом слов (http://correcthorsebatterystaple.net/). Такой пароль получается достаточно длинным и простым для запоминания.
Если планируется хранить пароль в базе данных и он не требует запоминания, то для обеспечения безопасности можно использовать достаточно случайные цифры и буквы в разумном количестве (> 30 символов).

SNMP Reflection

Некоторые IPMI модули (например, ASMB8-iKVM в моделях серверов PX91 и PX121) разрешают запросы через SNMP. Это позволяет подменив адрес отправителя при помощи маленького запроса инициировать отправку большого ответ. Если вы используете SNMP, убедитесь, что вы используете стойки пароль (что означает использование общей строки SNMP (SNMP Community String). Если вы не используете SNMP, заблокируйте порт ASMB8-iKVM модуля на серверах моделей PX91 и PX121 при помощи межсетевого экрана. Обе возможности доступны в веб-интерфейсе.

Пояснения по некоторым функциям

Веб-интерфейс

Веб-интерфейс можно использовать для простого и безопасного чтения данных с BMC. В нём отображаются информация со всех датчиков, можно добавлять и удалять пользователей, задавать настройки сети и, если есть KVM, запускать его.

System Information: На этой странице вы найдёте информацию о сервере (версию BIOS, текущее состояние, информацию о процессоре и об оперативной памяти), а также информацию о текущих залогиненных пользователях.

Server Health: Тут отображается информация с некоторых датчиков материнской платы и процессора. Если есть какие-то проблемы температурного характера, то их можно увидеть на этой странице. Также здесь есть лог событий. В нём вы можете увидеть системные события, такие как, критическая температура, перезагрузки и проблемы с процессором. Эта информация может помочь в диагностике потенциальных проблем. Страница «Power Statistics» не работает с данной моделью, так как источник питания не содержит интерфейса PMBUS.

Configuration: Здесь вы можете настроить различные параметры BMC. Сетевые настройки, обычно, не требуется изменять так как они получаются автоматически по DHCP. Вы можете вручную настроить IPv6, но использовать шлюз по умолчанию в Hetzner (fe80::1) будет возможно только в будущих версиях прошивки. Здесь вы также можете задать новых пользователей и удалить либо изменить существующих. А опция «Alerts» позволяет вам настроить отправку уведомлений при помощи SNMP или email. Это может быть полезно для мониторинга сервера.

Remote Control: Данная страница позволяем вам использовать функцию KVM. Стоит заметить, что опция «Console Redirection» доступна только если был активирован дополнительный модуль. Опция «Server Power Control» доступна всегда. Она позволяет отправлять на сервер команды перезагрузки (аппаратные и программные), а также выключать и включать сервер.

Настройка

В данном разделе приведены некоторые основные опции настройки. В большинстве случаев можно использовать веб-интерфейс BMC. Также рекомендуется установить «ipmitool», что можно сделать с помощью менеджера пакетов всех основных дистрибутивов. Это даёт доступ к дополнительным функциям, которые не могут быть настроены через веб-интерфейс.

Пример для Debian:

Установка с помощью менеджера пакетов:

apt-get install ipmitool

Для работы ipmitool необходимо с помощью «modprobe» загрузить следующие модули:

modprobe ipmi_devintf
modprobe ipmi_si

Проверить, что всё необходимое корректно загружено и установлено, можно с помощью команды в следующем примере, она отобразит данные со всех доступных датчиков:

ipmitool sensor list

Пользователи

На BMC можно создать несколько пользователей с различными правами. После создания нового пользователя с правами администратора через ipmitool, можно будет управлять другими пользователями через веб-интерфейс. Существует четыре различных уровня доступа:

  • Callback (1): Может только лишь инициировать callback
  • User (2): Может отправлять запросы с правами только на чтение, но не может редактировать никакие конфигурационные файлы
  • Operator (3): Может менять все настройки за исключением деактивации канала и изменения прав
  • Administrator (4): Может менять любые настройки

Обычно один или более пользователей уже существуют. Обзор существующих пользовательских ID и логинов можно получить с помощью:

ipmitool user list 1

В моделях PX90/PX120 уже существует активный пользователь с администраторскими правами:

ID  Name             Callin  Link Auth  IPMI Msg   Channel Priv Limit
2   ADMIN            false   false      true       ADMINISTRATOR

В моделях PX91/PX121 есть два активных пользователя с администраторскими правами:

ID  Name             Callin  Link Auth  IPMI Msg   Channel Priv Limit
1                    false   false      true       ADMINISTRATOR
2   admin            false   false      true       ADMINISTRATOR

В моделях PX60/PX70 есть 5 стандартных неактивных пользователей. Всех их, за исключением первого пользователя, можно менять.

ID  Name             Callin  Link Auth  IPMI Msg   Channel Priv Limit
1                    true    false      true       ADMINISTRATOR
2   root             false   true       true       ADMINISTRATOR
3   test1            true    false      true       ADMINISTRATOR
4   test2            true    false      true       ADMINISTRATOR
5   test3            true    false      true       ADMINISTRATOR

ID пользователя root (или ADMIN) должен быть отключён и, по возможности, переименован после создания нового пользователя, но до активации сети.

Изменение логина с помощью ipmitool:

ipmitool user set name 2 john-doe

Для создания нового пользователя, просто назначьте имя неиспользованному ранее ID. Здесь процедура идентична процедуре смены логина для ID. Удаление ID возможно только при сбросе настроек BMC.

Создайте нового пользователя:

ipmitool user set name 6 max+meier

Затем задайте ему пароль:

ipmitool user set password 6 Correct-Battery-Horse-Staple

Теперь следует активировать этому пользователю доступ:

ipmitool channel setaccess 1 6 link=on ipmi=on callin=on privilege=4

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

ipmitool user enable 6

Для смены пользовательского пароля, введите следующую команду:

ipmitool user set password 6 Battery+Staple-Horse$Correct

В конце можно деактивировать админа по умолчанию:

ipmitool user disable 2

Сеть

Для того чтобы иметь доступ к BMC через Интернет Вам потребуется заказать через панель Robot дополнительный одиночный IP-адрес. При помощи ipmitool возможна как ручная настройка IPv4 в BMC, так и использование DHCP. Изменить эти настройки Вы сможете через веб-интерфейс (Configuration / IPv4 Network). В настоящий момент использование IPv6 невозможно. Позднее такая настройка должна появиться при использовании веб-интерфейса.

Начальная настройка должна быть произведена при помощи ipmitool. Канал IPMI зависит от материнской платы и того, какой интерфейс настраивается.

На различных моделях серверов Shared LAN соответствует разным каналам

  • PX60/70/90/120 и SX131/291: канал 1
  • PX91/121: канал 8

Для получения MAC-адреса BMC используйте следующую команду:

  • PX60/70/90/120 и SX131/291:
ipmitool lan print 1
  • PX91/121:
ipmitool lan print 8

Как показано выше, вместо «set 1» следует использовать «set 8» здесь и в остальных командах для серверов PX91 и PX121.

Для получения IP-адреса при помощи DHCP используйте следующую команду:

ipmitool lan set 1 ipsrc dhcp

Если вы хотите задать IP-адрес вручную, то используйте следующую серию команд:

ipmitool lan set 1 ipsrc static

Для задания IP-адреса введите:

ipmitool lan set 1 ipaddr <IP-адрес>

Для задания маски сети введите:

ipmitool lan set 1 netmask <маска сети>

Для задания шлюза по умолчанию введите:

ipmitool lan set 1 defgw ipaddr <IP-адрес шлюза>

Serial over LAN

Для активации SOL (Serial over LAN) введите следующую команду:

ipmitool -C 3 -I lanplus -H <IP-адрес> -U <имя пользователя> -P <пароль> sol activate

Использования шифрования третьего вида обязательно, без него будет невозможно использование LANplus.

Если вы увидите следующее сообщение об ошибке, то вам надо активировать пользователя для SOL:

$ ipmitool -C 3 -I lanplus -H <IP-адрес> -U <имя пользователя> -P <пароль> sol activate
Info: SOL payload disabled
$ ipmitool -C 3 -I lanplus -H <IP-адрес> -U <имя пользователя> -P <пароль> sol payload enable <channel> <user-id>

После этого вы сможете видеть вывод BIOS. Доступ к загрузчику ОС и к консоли ОС требует дополнительной настройки.

GRUB2

Для GRUB2 вам нужно изменить несколько строк в файле /etc/default/grub и перегенерировать файл, используемый загрузчиком.

Для PX90/120 (Supermicro X9SRi-F) последовательному порту соответствует ttyS2/unit=2. Для PX91/121 (Asus Z10PA-U8) — ttyS1/unit=1. А для PX60/70 (Intel S1200V3RPL) — ttyS0/unit=0. Для серверов PX91/PX121 также важно установить скорость передачи в 57600.
 Для всех остальных серверов скорость передачи может быть равна 115200.

PX60/70

GRUB_CMDLINE_LINUX_DEFAULT="nomodeset console=tty0 console=ttyS0,115200n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

PX90/120, SX131/291

GRUB_CMDLINE_LINUX_DEFAULT="nomodeset console=tty0 console=ttyS2,115200n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=2 --word=8 --parity=no --stop=1"

PX91/121

GRUB_CMDLINE_LINUX_DEFAULT="nomodeset console=tty0 console=ttyS1,57600n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=57600 --unit=1 --word=8 --parity=no --stop=1"

GRUB (grub-legacy)

Для GRUB1 (grub-legacy), добавьте следующие строки в файл /boot/grub/menu.lst или /boot/grub/grub.conf (CentOS):

PX60/70

serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=5 serial console

PX90/120, SX131/291

serial --unit=2 --speed=57600 --word=8 --parity=no --stop=1
terminal --timeout=5 serial console

PX91/121

serial --unit=1 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=5 serial console

Соответствующий последовательной порт следует добавить в опции загрузки ядра. Это ttyS0 для PX60/70, ttyS1 для PX91/121 и ttyS2 для PX90/120.

console=tty0 console=ttyS0,115200n8

Эти опции говорят ядру выводить информацию на первый последовательный порт. Изменение GRUB_TERMINAL на serial означает перенаправление любого ввода/вывода на последовательный порт. При этом на локальном экране более не будет отображаться меню загрузчика, соответственно использование KVM консоль или KVM будет невозможным. После перезагрузки вывод будет направлен и на локальный экран и на последовательный порт.

После этого вам надо настроить вывод терминала установленной операционной системы на последовательный порт.

Debian 7.x (wheezy) / Debian 8 с Sys-V Init

Следующую строку следует добавить в файл «/etc/inittab». Здесь, опять же, ttyS0 и 115200 для PX60/70, ttyS2 и 115200 для PX90/120, ttyS1 и 57600 для PX91/121:

T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100

После этого, вы можете активировать терминал, введя 'init q'.

Ubuntu (до версии 14.10 с upstart)

Создайте файл /etc/init/ttyS0.conf следующего содержания (или, соответственно, ttyS2.conf с ttyS2 и 115200 для PX90/120, или ttyS1.conf с ttyS1 и 57600 для PX91/121):

# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -L ttyS0 115200 vt100

После этого, вы можете активировать терминал, введя 'start ttyS0'.

CentOS

В CentOS 6.x, настройка производится также как в Ubuntu. С тем лишь исключением, что автоматический запуск getty на последовательном порту настраивается в /etc/init/serial.conf, при этом порт добавляется в /etc/securetty. Также надо настроить последовательный порт в grub.conf и добавить соответствующие опции ядра.

Debian 8 / OpenSuSE / Fedora

Для Debian 8 (jessie) / OpenSuSE и других дистрибутивов, таких как Fedora, в которых используются systemd и GRUB2, просто отредактируйте соответствующим образом /etc/default/grub и перегенерируйте конфигурацию с помощью команды grub2-mkconfig. При следующей загрузке, systemd автоматически начнёт использовать серийный порт загрузчика GRUB2.

Терминал на последовательном порту

Теперь, вы увидите приглашение к логину, подключившись через ipmitool:

$ ipmitool -C 3 -I lanplus -H <IP-адрес> -U <имя пользователя> -P <пароль> sol activate
[SOL Session operational.  Use ~? for help]

Debian GNU/Linux 7 Debian-70-wheezy-64-minimal ttyS0

Debian-70-wheezy-64-minimal login:


© 2017. Hetzner Online GmbH. Alle Rechte vorbehalten.