我最近买了一块 SuperMicro X8DTU-F 主板,它内置了 BMC,基本上运行的是 IPMI 系统。它实际上是一个在 ARM 处理器上运行的小型 Linux 系统。
不幸的是,它运行着一大堆软件,其中很多我都不需要,而且我也没有能力把它放在防火墙后面。但是,我确实想要 IPMI 功能。有没有使用过这些软件的人对如何保护它有一些具体的建议?它从本质上是一个 ROM 文件系统启动,甚至似乎没有任何钩子可以关闭它运行的任何各种服务器……
我还想知道如何验证可用于通过各种服务访问系统的名称和密码列表。默认值为ADMIN
/ ADMIN
,但 /conf 或 /etc 中的任何文件都没有“ADMIN”,这让我很担心。还有/conf/shadow
和/conf/webshadow
文件,其中有神秘的“测试”ID,这也让我感到很不舒服。
答案1
正如 dlawson 指出的那样,使用/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
但我仍旧需要一台基于密码的访问控制的 Web 服务器(我看不出有什么办法让它验证客户端证书),而且谁知道会有什么远程漏洞。当我不使用它时(大多数时候都是这样)关闭它似乎是一个合理的解决方案;添加一个 crontab 条目以每五或十分钟关闭它,可以解决有人在使用完后忘记关闭它的情况。
ssh 守护进程是滴熊该文件似乎经过了相当大的修改。它从中读取用户名和明文密码/conf/PMConfig.dat
(Web 服务器也使用它),以 root 用户身份登录任何有效的名称和密码,然后忽略该~/.ssh/authorized_keys
文件。最后一个问题很烦人;它迫使您允许密码登录,并根据它从何处获取其名称和密码,打开后门的可能性。
所以这就是您面临的困境:您真的有多信任这个修改过的 ssh 守护程序,而这个守护程序安装在一个显然是由缺乏安全意识的开发人员设计的系统上?考虑到我在他们的 shell 脚本中看到的大量破损代码,您真的不怎么信任它。这里有不寻常的命名约定(/etc/rc?.d/sshd 是 /etc/init.d/ssh 的符号链接),大量代码似乎未被使用,而且 ssh 启动脚本中的功能(例如文件/conf/portcfg_ssh
甚至restart
命令)完全损坏。(不要尝试使用这些;除非您有现有登录名,否则 sshd 不会重新启动,您将陷入困境。我们重新启动了 BMC,最后不得不重新刷新它。)
我能想到的最好的选择,如果有人要使用它的话,就是使用 cron 作业在备用端口上启动 ssh,这样至少它不太可能出现在端口扫描中。
最后一个组件是 IPMI 网络管理端口;我不知道如何关闭它们。
答案2
理想情况下,您的管理网络应该与您的其他网络不同,或者至少是具有有限路由访问的不同 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)
(IPMI 本身使用 UDP/623)
如果您想进行任何类型的远程管理,则需要其中大部分。如果您不想进行远程管理,那么您应该考虑根本不启用 IPMI 控制器,或者购买 X9DTU 板(-F 表示“内置 BMC”)
如果您想要进行完全远程管理,无法在其他网络上运行 IPMI 控制器,并且仍想禁用某些访问,那么您可以随时让 IPMI 控制器执行 iptables 命令。您可以编写 ssh 登录脚本来执行命令,或者向 Supermicro 索取 BMC 的 devkit 并使用自定义 iptables 脚本构建新映像。
更新
我再次查看了我们的系统,发现 /conf 文件系统已挂载为可读写。没有任何 init 脚本直接在 /conf 中调用任何内容(据我所知),但有一个 crontab 文件。因此,我猜您可以复制一个 iptables 脚本,然后编辑 /conf/crontab 以在合适的时间间隔调用它。您希望它在 BMC init 上尽快运行,但您不一定希望它每分钟运行一次。或者也许您不在乎。
答案3
保护 Supermicro IPMI 时需要考虑的一件事是 ssh 服务器。旧版本的 X8SIL-F IPMI 代码无论输入什么密码都会接受 ssh 连接。然后软件会检查密码并拒绝或接受连接,但会有一个短暂的窗口来创建 ssh 端口转发。 由于这个原因,人们收到了有关其 IPMI IP 的垃圾邮件/滥用投诉对于 X8SIL-F 主板,2.60 IPMI 固件版本修复了该问题(可能早已修复,2.54 的更新日志条目看起来可能是它)。
第二个问题是匿名用户使用默认密码。固件版本 2.22 中似乎已修复匿名用户问题。
答案4
你们中有人尝试过使用 iptables 来保护它吗?似乎已经安装了 iptables,我想制定一个规则集,拒绝接受来自几个受信任 IP 的一切,以使其更安全一些……但正如我上面所读到的,没有从 /config 读取任何脚本。crontab 是唯一的选择吗?如果你搞砸了 iptables 怎么办?