Недавно я приобрел материнскую плату SuperMicro X8DTU-F, которая имеет встроенный BMC, который в основном запускает систему IPMI. Оказывается, это небольшая система Linux, работающая на процессоре ARM.
К сожалению, на нем установлено множество программного обеспечения, большая часть которого мне не нужна, и у меня нет возможности установить его за брандмауэром. Однако мне нужна функциональность IPMI. Есть ли у кого-нибудь, кто пользовался одним из них, какие-нибудь конкретные предложения, как обезопасить вещь? Он загружается из того, что по сути является файловой системой ПЗУ, и, похоже, даже нет никаких ловушек для отключения любого из различных серверов, которые он запускает ...
Мне также было бы интересно узнать, как я могу проверить список имен и паролей, которые можно использовать для доступа к системе через все различные службы. По умолчанию ADMIN
/ ADMIN
, но ни в одном из файлов в / conf или / etc нет ADMIN, что меня очень беспокоит. Есть /conf/shadow
и /conf/webshadow
файлы с загадочными «тестовыми» идентификаторами в них, что мне тоже не очень удобно.
В идеале ваша сеть управления должна быть другой сетью, чем другая сеть, или, по крайней мере, другим vlan с ограниченным маршрутизированным доступом.
Однако в этих системах на самом деле не так много сервисов:
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 набор разработчика для BMC и создать новый образ с помощью специального сценария iptables.
ОБНОВИТЬ
Здесь я еще раз посмотрел на наши системы, и файловая система / conf смонтирована как rw. Ни один из сценариев инициализации ничего не вызывал непосредственно в / conf (что я мог видеть), но есть файл crontab. Итак, я думаю, вы можете скопировать скрипт iptables и отредактировать / conf / crontab, чтобы вызывать его через некоторый подходящий интервал. Вы бы хотели, чтобы он запускался как можно скорее на BMC init, но не обязательно, чтобы он запускался каждую минуту. Или, может быть, тебе все равно.
С помощью /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 - это версия падение который выглядит довольно сильно измененным. Он считывает имена пользователей и пароли в виде открытого текста из /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, чтобы, по крайней мере, он с меньшей вероятностью появился при сканировании портов.
Последний компонент - это порты управления сетью IPMI; Я не вижу, как их выключить.
Одна вещь, которую следует учитывать при защите Supermicro IPMI, - это ssh-сервер. Старые версии кода IPMI X8SIL-F принимали ssh-соединения независимо от того, какой пароль был указан. Затем программа проверяла пароль и отклоняла или принимала соединение, но было короткое окно для создания переадресации порта ssh. Из-за этого люди получали жалобы на спам / злоупотребления в отношении IP-адресов IPMI.. Для материнской платы X8SIL-F проблема была устранена в версии микропрограммы IPMI 2.60 (возможно, она была исправлена ранее, запись в журнале изменений 2.54 выглядит так, как будто это могло быть именно так).
Вторая проблема - это анонимный пользователь с паролем по умолчанию. Анонимный пользователь вроде бы исправлен в версии прошивки 2.22.
Есть небольшая хитрость, чтобы включить HTTPS для веб-интерфейса IPMI.
Если ваша прошивка IPMI поддерживает это (моя прошивка 2.04 для X8DTH-iF поддерживает), вы можете сначала включить доступ HTTPS, перейдя в Configuration -> SSL, загрузив два файла PEM (сертификат и закрытый ключ), а во-вторых, вручную. перезагрузите модуль IPMI.
Наконец, вы можете получить доступ к веб-интерфейсу IPMI с помощью https: // bmc-ip-or-hostname /. Не могу сказать, что HTTPS работает медленнее, чем HTTP.
Кто-нибудь из вас пытался защитить это с помощью iptables? Кажется, что iptables установлен, и я хочу создать набор правил, который запрещает все приемы с нескольких доверенных IP-адресов, чтобы сделать его немного более безопасным ... Но, как я читал выше, скрипты не читаются из / config. Crontab - единственный вариант? А если вы напортачили с iptables?
Как вы смотрели на файловую систему? Если я подключу telnet к порту 22, я вижу, что dropbear работает, но если я попытаюсь подключиться к SSH с разными именами пользователей, он не запросит пароль. Я добавил нового пользователя с правами администратора, но SSH тоже не отвечает за этого пользователя. Я использую материнскую плату Supermicro X7SPA-HF с микросхемой Winbond Hermon IPMI 2.0, версия микропрограммы 01.29, время сборки 31 декабря 2009 г.