Защита SuperMicro IPMI BMC

17

Недавно я приобрел материнскую плату SuperMicro X8DTU-F со встроенным BMC, который в основном работает под управлением системы IPMI. Оказывается, это небольшая система Linux, работающая на процессоре ARM.

К сожалению, на нем запущено большое количество программного обеспечения, большая часть которого мне не нужна, и у меня нет возможности разместить его за брандмауэром. Тем не менее, я хочу функциональность IPMI. У кого-нибудь, кто использовал один из них, есть какие-то конкретные предложения о том, как обезопасить вещь? Он загружается из файловой системы ПЗУ, и, похоже, нет никаких ловушек, чтобы отключить любой из различных серверов, которые он запускает ....

Мне также было бы интересно узнать, как я могу проверить список имен и паролей, которые могут использоваться для доступа к системе через все различные сервисы. По умолчанию используется ADMIN/ ADMIN, но ни один из файлов в / conf или / etc не содержит ADMIN, что меня беспокоит. Есть /conf/shadowи /conf/webshadowфайлы с таинственными «тестовыми» идентификаторами в них, что не дает мне чувствовать себя особенно комфортно.

Курт Дж. Сэмпсон
источник
Мне еще предстоит найти корреляцию между содержимым shadow, webshadow и тем, что на самом деле являются действительными пользователями. Новые пользователи, добавленные через управление BMC, не отображаются в этих файлах. Кроме того, у пользователей «anonymous», «test1», «test2» есть оболочка, которой нет в файловой системе.
Дэниел Лоусон
2
Также см. Руководство Дэна Фармера в разделе « Рекомендации по безопасности IPMI» . Он выпустил недавний документ, в котором подробно описываются некоторые существенные проблемы безопасности с IPMI под названием ipmi: грузовой поезд в ад .
Стефан Ласевский,
1
Спасибо за эту замечательную ссылку. Краткая сводка проблем безопасности находится по адресу fish2.com/ipmi/itrain-gz.html, а очень краткая сводка - «вы совершенно облажались». Вздох.
Курт Дж. Сэмпсон

Ответы:

6

Использование /conf/crontab, как указал Долсон, звучит для меня как отличная идея. Это позволяет мне запускать скрипт раз в минуту, который гарантирует все, кроме http и ssh:

/etc/init.d/cdserver stop
/etc/init.d/fdserver stop
/etc/init.d/cim_sfcb stop
/etc/init.d/webgo stop

Это все еще оставляет мне веб-сервер с контролем доступа на основе паролей (я не вижу способа проверить его на клиентских сертификатах) и кто знает, какие удаленные уязвимости. Выключение, когда я им не пользуюсь (что происходит чаще всего), кажется разумным решением; добавление записи в crontab для выключения каждые пять или десять минут может привести к тому, что кто-то забудет выключить его, когда закончит.

Ssh daemon - это версия dropbear, которая выглядит довольно сильно модифицированной. Он считывает имена пользователей и незашифрованные пароли /conf/PMConfig.dat(которые также используются веб-сервером), регистрирует любое действительное имя и пароль от имени пользователя root и игнорирует ~/.ssh/authorized_keysфайл. Эта последняя проблема раздражает; он вынуждает вас разрешить вход в систему с паролями и открывает возможность бэкдоров в зависимости от того, откуда он получает свои имена и пароли.

Итак, перед вами стоит дилемма: насколько вы действительно доверяете этому модифицированному демону ssh, установленному в системе, которая, очевидно, была разработана разработчиками-наивными разработчиками? Совсем немного, учитывая количество разбитых битков, которые я видел в их сценариях оболочки. Существуют необычные соглашения об именах (/etc/rc?.d/sshd - это символическая ссылка на /etc/init.d/ssh), огромный объем кода, который кажется неиспользуемым, и функции только в сценарии запуска ssh, такие как /conf/portcfg_sshфайл и даже restartкоманда полностью нарушены. (Не пытайтесь использовать их; sshd не будет перезагружаться, и вы будете испорчены, если у вас нет существующего имени пользователя. Мы перезагрузили BMC и в итоге пришлось его перепрошить.)

Наилучший вариант, который я могу придумать, если кто-то вообще собирается его использовать, - это запустить ssh на альтернативном порту, используя задание cron, так что, по крайней мере, он менее вероятен в portcancan.

Последний компонент - порты управления сетью IPMI; Я не вижу, как их отключить.

Курт Дж. Сэмпсон
источник
Большинство ваших опасений по поводу модификаций, вероятно, не проблема. Dropbear использует pam, который использует libpamipmi для аутентификации - я не видел никаких доказательств того, что он действительно читает пароли в виде открытого текста. Libpamipmi сделает ipmi-вызов в стек ipmi, и это вполне может быть чтение паролей в виде открытого текста, но я хочу сказать, что не похоже, что демон dropbear был испорчен. Мне было бы интересно услышать какое-либо окончательное доказательство того, что у вас есть обратное.
Дэниел Лоусон,
Что ж, мы знаем, что это было сломано, потому что нет способа а) использовать ключи, а не пароли, и б) отключить аутентификацию по паролю.
Курт Дж. Сэмпсон
6

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

Эти системы на самом деле не работают так много сервисов:

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https
555/tcp  open  dsf
5120/tcp open  unknown
5900/tcp open  vnc
5988/tcp open  unknown
MAC Address: 00:30:48:D9:3A:71 (Supermicro Computer)

(и UDP / 623 для самого IPMI)

Большинство из них необходимы, если вы хотите осуществлять какое-либо удаленное управление. Если вы не хотите выполнять удаленное управление, вам следует вообще не включать контроллер IPMI или покупать плату X9DTU (-F обозначает «встроенный BMC»)

Если вы хотите выполнить полное удаленное управление, не можете запустить свои контроллеры IPMI в другой сети и все же хотите отключить некоторый доступ, тогда вы всегда можете заставить контроллер IPMI выполнять команды iptables. Вы можете написать сценарий входа в систему по ssh для выполнения команд или попросить у Supermicro devkit для BMC и создать новый образ с помощью специального сценария iptables.

ОБНОВИТЬ

Я еще раз взглянул на наши системы, и файловая система / conf смонтирована rw. Ни один из сценариев инициализации не вызывал ничего напрямую в / conf (что я видел), но есть файл crontab. Итак, я думаю, вы могли бы скопировать в сценарий iptables и отредактировать / conf / crontab, чтобы вызвать его с некоторым подходящим интервалом. Вы бы хотели, чтобы он запускался как можно скорее на BMC init, но не обязательно, чтобы он запускался каждую минуту. Или, может быть, вам все равно.

Дэниел Лоусон
источник
Я хотел бы иметь отдельную сеть для управления, но, к сожалению, это входит в чужой центр обработки данных, и я не могу этого иметь. Что касается управления, все, что мне действительно нужно, это https и ssh.
Курт Дж. Сэмпсон
Вы никогда, никогда не захотите KVM по локальной сети?
Даниэль Лоусон
Вы могли бы иметь отдельный брандмауэр перед вашим хостом в DC. Это несколько решило бы проблему. Вы обращались в службу поддержки Supermicro за помощью? Я нашел их довольно отзывчивыми
Даниэль Лоусон,
Нет. Мне не нужен KVM по локальной сети, поскольку BIOS, Grub и ядро ​​Linux поддерживают последовательную консоль.
Курт Дж. Сэмпсон
4

При защите Supermicro IPMI нужно учитывать одну вещь - сервер ssh. Более старые версии кода IPMI X8SIL-F принимали ssh-соединения независимо от того, какой пароль был задан. Затем программа проверит пароль и отклонит или примет соединение, но было короткое окно для создания порта ssh. Из-за этого люди получали жалобы на спам / злоупотребление своими IP-адресами IPMI . Для материнской платы X8SIL-F, версия микропрограммы IPMI 2.60 устранила проблему (возможно, она была исправлена ​​ранее, запись в журнале изменений 2.54 выглядит так, как будто это может быть).

Вторая проблема - это анонимный пользователь с паролем по умолчанию. Анонимный пользователь, кажется, исправлен в версии прошивки 2.22.

ddrown
источник
2

Есть небольшая хитрость для включения HTTPS для веб-интерфейса IPMI.

Если ваша прошивка IPMI поддерживает это (моя прошивка 2.04 для X8DTH-iF поддерживает), вы можете, во-первых, включить доступ HTTPS, перейдя в «Конфигурация -> SSL», загрузив два файла PEM (сертификат и закрытый ключ) и, во-вторых, вручную перезагрузите ваш модуль IPMI.

Наконец, вы можете получить доступ к веб-интерфейсу IPMI по адресу https: // bmc-ip-or-hostname / . Я не могу сказать, что HTTPS работает медленнее, чем HTTP.

AntonioK
источник
0

Кто-нибудь из вас пытался обезопасить это с помощью iptables? Кажется, установлен iptables, и я хочу создать набор правил, который запрещает все принимать с нескольких доверенных IP-адресов, чтобы сделать его немного более безопасным ... Но, как я читал выше, никакие сценарии не читаются из / config. Является ли crontab единственным вариантом? А что если вы испортили iptables?


источник
1
Как я уже говорил ранее, гораздо лучше защитить ваш IPMI-контроллер снаружи: либо располагая его в совершенно отдельной виртуальной или виртуальной сети, либо защитив пограничный межсетевой экран. Эта конкретная модель контроллера IPMI / BMC запускает linux, который затем подсказывает вам, что вы можете защитить его с помощью iptables. Однако реальность такова, что подавляющее большинство BMC / IPMI / любых устройств, которые вы им называете, не имеют большого или вообще никакого способа межсетевого экрана, и поэтому вам не следует полагаться на него. Избавьте себя от хлопот и относитесь к своей сети IPMI как к частной, защищенной и не маршрутизированной.
Дэниел Лоусон,
1
Я не согласен с тем, что «лучше» защищать свой контроллер IPMI извне; межсетевые экраны и тому подобное более подвержены сбоям безопасности, чем хост, который в первую очередь должным образом защищен. Однако, если у вас есть возможность использовать отдельную сеть, это хорошо, а в случае устройств IPMI, подобных этому, это выглядит практически необходимым.
Курт Дж. Сэмпсон
0

Как вы смотрели файловую систему? Если я подключусь к порту 22, я вижу, что dropbear работает, но если я пытаюсь использовать SSH с разными именами пользователей, он не запрашивает пароль. Я добавил нового пользователя с правами администратора, но SSH также не будет отвечать за него. Я использую материнскую плату Supermicro X7SPA-HF с микросхемой Winbond Hermon IPMI 2.0, версия микропрограммы 01.29, время сборки 2009-12-31.


источник
2
Я выполнил команду ssh -v, чтобы увидеть, что происходит, и попытался установить подлинность с помощью открытого ключа. Я заставил это работать, отключив это.
Сейчас я нахожусь в ATEN SMASH-CLP System Management Shell, версия 1.00