Вступление
В этой статье представлен обзор, некоторые руководства и примеры для интерфейса IPMI.
IPMI (Intelligent Platform Management Interface) — это интерфейс для управления и администрирования серверов. Он реализован с помощью BMC (контроллера управления основной платой) материнской платы. Вы можете получить доступ к этому интерфейсу через программу командной строки (например, IPMItool) или через веб-интерфейс, с помощью которого вы можете администрировать сервер. Вы можете выполнить сброс, запустить KVM и прочитать выходные данные датчиков материнской платы.
Из-за множества проблем с безопасностью в прошлом, вызванных уязвимостями в прошивке производителей, а также из-за количества времени, которое производители потратили на исправление этих проблем, мы решили в 2019 году прекратить возможность получения дополнительных модулей IPMI или KVM. установлен на выделенных корневых серверах. Исключение составляют выделенные серверы DELL и серверы торгов DELL. Для этих серверов мы также оставляем запасные модули IPMI на случай отказа.
Обзор модели
Если вы не уверены, какая модель сервера является основой вашего серверного продукта, не стесняйтесь обращаться в службу поддержки.
- PX60 (-SSD) / PX70 (-SSD) — BMC включает IPMI (KVM-over-IP как дополнительный платный модуль)
- PX90 (-SSD) / PX120 (-SSD) — BMC включает IPMI и KVM
- PX91 (-SSD) / PX121 (-SSD) — платный дополнительный модуль BMC с IPMI / KVM
Активация сетевого интерфейса
Со встроенным BMC конфигурация сети по умолчанию отключена. Чтобы использовать функцию IPMI и последовательного интерфейса через LAN и / или KVM, вам необходимо заказать дополнительный IP-адрес (за небольшую плату) через Robot .
Важно: вам необходимо указать MAC-адрес BMC при заказе дополнительного IP-адреса.
Вы можете прочитать MAC-адрес с помощью IPMItool (см. Сеть ). После того, как мы предоставим вам IP-адрес, вы можете статически настроить или назначить его BMC через DHCP.
Правила техники безопасности
Если 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) в версии прошивки 2.14 была обнаружена уязвимость, позволяющая читать имена пользователей и пароли в виде обычного текста. Если на вашем сервере установлена эта прошивка, перед активацией сетевого интерфейса необходимо обновить прошивку.
Версию прошивки можно узнать с помощью impitool
:
ipmitool mc info
...
Firmware Revision : 3.50
Если вы уже активировали сеть IPMI, вы можете выполнить обновление через веб-интерфейс. Вы можете найти последнюю версию на download.hetzner.de (учетные данные для входа см. В подготовительной почте вашего сервера (ов)).
В качестве альтернативы также возможно обновление с Linux, если сеть IPMI не была активирована:
wget http://mirror.hetzner.de/tools/Supermicro/tools/SMT_X9_350.tgz
tar -xzf SMT_X9_350.tgz
cd SMT_X9_350
./lUpdate -f SMT_X9_350.bin
Обратите внимание, что это обновление применимо только к PX90 и PX120.
PX91 / PX121
Дополнительный модуль KVM для моделей PX91 и PX121 (Asus Z10PA-U8) использует небезопасные протоколы SSL и устаревший сертификат SSL в версиях до 1.11.
Таким образом, в зависимости от используемого вами браузера безопасные (HTTPS) соединения могут быть недоступны до тех пор, пока вы не выполните обновление.
Вы можете загрузить обновление через веб-интерфейс, а текущую прошивку можно найти на сайте download.hetzner.de (учетные данные для входа см. В сообщении электронной почты вашего сервера (ов)).
Cipher 0 Атаки
Шифр 0 означает, что шифрование не используется, и, таким образом, аутентификация не выполняется. По умолчанию Cipher 0 активирован только на материнской плате для обратного вызова, то есть вход в систему невозможен; вы можете получить только ответ, есть ли BMC или нет. Даже при этом, чтобы гарантировать отсутствие злоупотреблений, Cipher 0 по умолчанию отключен при доставке сервера и, следовательно, больше не может использоваться.
Передача хеша пароля
В спецификации IPMI аутентификация пользователя возможна только на стороне пользователя. Поэтому хеш пароля передается всем запрашивающим пользователям. Поскольку он точно указывает, что содержит этот хэш, можно найти пароль с помощью атаки грубой силы. Поскольку это часть спецификации IPMI, эта проблема встречается на всех BMC и может быть решена только путем изменения спецификации. Поэтому единственная текущая рекомендация по этой проблеме — использовать действительно длинный и надежный пароль для BMC, чтобы сделать его как можно более трудным для любых злоумышленников. Если для BMC используется короткий или легко угадываемый пароль, его можно взломать в течение нескольких часов или даже минут.
Вот несколько советов по созданию безопасного пароля:
Если вам нужно сделать пароль легко запоминающимся, имеет смысл объединить несколько слов, не связанных друг с другом ( http://correcthorsebatterystaple.net/ ). Это безопасно из-за длины, и все же легко запомнить.
Если вы планируете хранить пароль в базе данных и вам не нужно его запоминать, вы можете использовать достаточно случайные числа и буквы разумной длины (> 30 символов) для создания безопасного пароля.
Отражение SNMP
Несколько модулей IPMI (например, ASMB8-iKVM в моделях PX91 и PX121) разрешают запросы через SNMP. Следовательно, небольшой запрос может привести к потере большого количества данных, если запрос с исходного адреса будет неправильно использован в атаке. Если вы используете SNMP, вам необходимо обязательно использовать надежный пароль (что означает использование строки сообщества SNMP). Если вы не используете SNMP, вы можете использовать брандмауэр, чтобы заблокировать этот порт на модулях ASMB8-iKVM моделей PX91 и PX121. Вы можете использовать веб-интерфейс для выполнения обоих вариантов.
Объяснение отдельных функций
Веб интерфейс
Веб-интерфейс можно использовать для простого и безопасного чтения данных из BMC. Он отображает все датчики, пользователей можно добавлять и изменять, можно настроить конфигурацию сети, и, если у вас есть KVM, ее можно запустить.
Системная информация: на этой странице вы можете найти некоторую информацию о вашем сервере (версия BIOS, текущий статус, информация о ЦП и ОЗУ) и увидеть пользователей, которые в настоящее время вошли в систему.
Состояние сервера: здесь вы можете увидеть выходные данные отдельных датчиков на материнской плате и в процессоре. Если есть какие-либо тепловые проблемы, вы можете их обнаружить здесь. Кроме того, есть журнал событий. В журнале можно найти системные события, такие как критические температуры, перезагрузки и троттлинг процессора. Это может помочь вам диагностировать потенциальную проблему. Страница Power Statistics
не работает с этой моделью, потому что блок питания не имеет необходимого интерфейса PMBUS.
Конфигурация: здесь вы можете настроить многие параметры BMC. Параметры сети обычно не требуется изменять, поскольку конфигурация для IPv4 устанавливается автоматически через DHCP. Вы можете вручную настроить IPv6, но использование шлюза по умолчанию Hetzner fe80::1
будет возможно только в будущих версиях прошивки. Вы также можете добавлять сюда новых пользователей, а также изменять и удалять существующих. Кроме того, эта опция Alerts
позволяет вам получать уведомления по SNMP или по электронной почте, когда на сервере происходят определенные события. Это может быть полезно для мониторинга сервера.
Удаленное управление: на этой странице вы можете использовать KVM-функции BMC. Однако опция Console Redirection
доступна только в том случае, если вы активируете дополнительный модуль. Всегда можно использовать Server Power Control
. Это позволяет вам отправить на сервер аппаратный и программный сброс; вы также можете выключить его или запустить.
Конфигурация
В этом разделе показаны некоторые основные параметры конфигурации. Обычно вы можете использовать веб-интерфейс BMC. Также рекомендуется установить ipmitool
, который можно установить через диспетчер пакетов всех основных дистрибутивов. Это дает вам доступ к дополнительным функциям, которые нельзя настроить через веб-интерфейс.
Пример для Debian:
Установка через менеджер пакетов:
apt install ipmitool
Для ipmitool
нормальной работы вам необходимо загрузить следующие модули через modprobe
:
modprobe ipmi_devintf
modprobe ipmi_si
Чтобы проверить, все ли важное было правильно загружено и установлено, используйте следующий пример команды, которая покажет вам данные со всех доступных датчиков:
ipmitool sensor list
Пользователи
На BMC можно создать несколько пользователей с разными правами. После создания нового пользователя с правами администратора ipmitool
через веб-интерфейс вы можете управлять большим количеством пользователей. Существует 4 различных уровня прав / разрешений:
- Обратный вызов (1) : может только инициировать обратный вызов
- Пользователь (2) : может отправлять запросы только для чтения, но не может изменять файлы конфигурации.
- Оператор (3) : может изменять все конфигурации, кроме деактивации канала и изменения прав.
- Администратор (4) : может изменять все конфигурации
Обычно один или несколько пользователей уже существуют. Обзор существующих идентификаторов пользователей и логинов можно получить через:
ipmitool user list 1
В моделях PX90 / PX120 активный пользователь с правами администратора уже существует:
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
2 ADMIN false false true ADMINISTRATOR
В модулях BMC / KVM моделей 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. Удаление идентификаторов возможно только путем изменения настроек 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 доступным через Интернет, вам необходимо заказать для него дополнительный (платный) IP-адрес через Robot. Вы можете выполнить настройку IPv4 BMC вручную или через DHCP с помощью ipmitool. Вы можете внести изменения в эту конфигурацию с помощью веб-интерфейса, перейдя в Configuration / IPv4 Network
. В настоящее время вы не можете использовать IPv6. Конфигурация с IPv6 станет доступна позже в веб-интерфейсе.
Вы можете установить начальную конфигурацию, используя ipmitool
. Соответствующий канал IPMI зависит от материнской платы и интерфейса, который вы хотите настроить.
Общий порт LAN основного IP:
- 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 8
следует использовать, а не set 1
для этой и всех других команд для моделей PX91 и PX121.
Чтобы получить IP-адрес через DHCP, используйте следующую команду:
ipmitool lan set 1 ipsrc dhcp
Если вы хотите использовать статическую конфигурацию по умолчанию, введите:
ipmitool lan set 1 ipsrc static
Чтобы установить IP-адрес, введите:
ipmitool lan set 1 ipaddr <IP address>
Чтобы установить маску сети, введите:
ipmitool lan set 1 netmask <netmask>
Чтобы установить IP-адрес шлюза, введите:
ipmitool lan set 1 defgw ipaddr <gateway IP address>
Последовательный через LAN
Чтобы активировать SOL (Serial over LAN), введите следующую команду:
ipmitool -C 3 -I lanplus -H <ipaddr> -U <user> -P <pass> sol activate
Использование набора шифров 3 необходимо (если это не по умолчанию), потому что в LANplus
противном случае связь через посредство невозможна.
Если появляется следующее сообщение об ошибке, вам необходимо активировать SOL для пользователя:
ipmitool -C 3 -I lanplus -H <ipaddr> -U <user> -P <pass> sol activate
Info: SOL payload disabled
ipmitool -C 3 -I lanplus -H <ipaddr> -U <user> -P <pass> 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
. Также следует отметить, что скорость передачи данных должна быть установлена на 57600 для PX91 / 121 и 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-наследие)
Для GRUB1 (grub-legacy) добавьте следующие строки в /boot/grub/menu.lst
or /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 Console или KVM больше не возможен. После перезагрузки вывод будет отправлен параллельно как на локальный экран, так и на последовательный порт.
После этого вам необходимо настроить терминал для последовательного порта в вашей системе.
Ubuntu
Создайте файл /etc/init/ttyS0.conf
со следующим содержимым (или, альтернативно, ttyS2.conf
со ttyS2
скоростью и 115200 бод для моделей PX90 / PX120, или ttyS1.conf
со ttyS1
скоростью и 57600 бод для моделей PX91 / PX121):
# 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 конфигурация аналогична Ubuntu. Однако /etc/init/serial.conf
автоматически запускается getty для последовательного порта, который добавляет порт /etc/securetty
. Итак, вам просто нужно настроить последовательную консоль в grub.conf и подключить соответствующий параметр ядра.
Debian / OpenSuSE / Fedora
Для Debian, OpenSuSE и других дистрибутивов, таких как Fedora, которые используют systemd
и GRUB2, просто измените /etc/default/grub
соответствующим образом и обновите конфигурацию, используя grub2-mkconfig
. При следующей загрузке systemd
автоматически начнет использовать последовательный порт GRUB2.
Последовательная консоль
Теперь вы быстро увидите логин, если подключитесь через ipmitool
:
ipmitool -C 3 -I lanplus -H <ipaddr> -U <user> -P <pass> sol activate
[SOL Session operational. Use ~? for help]
Debian GNU/Linux 7 Debian-70-wheezy-64-minimal ttyS0
Debian-70-wheezy-64-minimal login: