最近买了一块SuperMicro X8DTU-F主板,内置BMC,基本运行IPMI系统。它原来是一个运行在 ARM 处理器上的小型 Linux 系统。
不幸的是,它运行了大量的软件,其中大部分是我不需要的,而且我没有能力将它放在防火墙后面。但是,我确实想要 IPMI 功能。使用过其中一种的人是否对如何保护该东西有一些具体的建议?它从本质上是一个 ROM 文件系统启动,甚至似乎没有任何挂钩可以关闭它运行的任何各种服务器......
我还对如何验证可用于通过所有各种服务访问系统的名称和密码列表感兴趣。默认值为ADMIN
/ ADMIN
,但 /conf 或 /etc 中的文件都没有“ADMIN”,这让我很担心。有文件/conf/shadow
,/conf/webshadow
里面有神秘的“测试”ID,这也让我感觉不太舒服。
理想情况下,您的管理网络将是与其他网络不同的网络,或者至少是具有有限路由访问权限的不同 VLAN。
但是,这些系统并没有真正运行那么多服务:
(以及 IPMI 本身的 UDP/623)
如果您想进行任何类型的远程管理,其中大部分都是必需的。如果您不想进行远程管理,那么您应该考虑完全不启用 IPMI 控制器,或者购买 X9DTU 板代替(-F 表示“内置 BMC”)
如果您想进行完整的远程管理,不能在不同的网络上运行您的 IPMI 控制器,并且仍然想禁用某些访问,那么您总是可以让 IPMI 控制器执行 iptables 命令。您可以编写 ssh 登录脚本来执行命令,或者向 Supermicro 索要 BMC 的 devkit 并使用自定义 iptables 脚本构建新映像。
更新
我在这里再次查看了我们的系统,并且 /conf 文件系统已安装为 rw。没有一个初始化脚本直接在 /conf 中调用任何东西(我可以看到),但是有一个 crontab 文件。所以,我想你可以复制一个 iptables 脚本,然后编辑 /conf/crontab 以在某个合适的时间间隔调用它。您希望它在 BMC init 上尽快运行,但您不一定希望它每分钟都运行。或者也许你不在乎。
正如 dlawson 指出的那样,使用
/conf/crontab
对我来说听起来是个好主意。这允许我每分钟运行一次脚本,以确保关闭除 http 和 ssh 之外的所有内容:这仍然给我留下了一个具有基于密码的访问控制的 Web 服务器(我看不出有什么办法让它验证客户端证书),而且谁知道有哪些远程漏洞。当我不使用它时(大部分时间)关闭它似乎是一个合理的解决方案;添加一个 crontab 条目以每五或十分钟将其关闭,这将捕捉到有人在完成后忘记关闭它的情况。
ssh 守护进程是dropbear的一个版本,似乎经过大量修改。
/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,所以至少它不太可能出现在 portscan 中。
最后一个组件是 IPMI 网络管理端口;我看不到如何关闭这些。
保护 Supermicro IPMI 时要考虑的一件事是 ssh 服务器。无论给出什么密码,旧版本的 X8SIL-F IPMI 代码都接受 ssh 连接。然后该软件将检查密码并拒绝或接受连接,但有一个简短的窗口来创建 ssh 端口转发。 因此,人们收到了针对 IPMI IP 的垃圾邮件/滥用投诉。对于 X8SIL-F 主板,2.60 IPMI 固件版本修复了这个问题(它可能更早被修复,2.54 的更新日志条目看起来可能就是它)。
第二个问题是具有默认密码的匿名用户。匿名用户似乎在固件版本 2.22 中得到修复。
为 IPMI 的 Web 界面启用HTTPS有一个小技巧。
如果您的 IPMI 固件支持(我的 X8DTH-iF 的 2.04 固件支持),您可以首先通过转到配置 -> SSL 启用 HTTPS 访问,上传两个 PEM 文件(证书和私钥),然后手动启用重新启动您的 IPMI 模块。
最后,您可以通过https://bmc-ip-or-hostname/访问 IPMI 的 Web 界面。我不能说 HTTPS 的运行速度比 HTTP 慢。
你们有没有人尝试过用 iptables 来保护这个东西?似乎 iptables 已安装,我想创建一个规则集,拒绝接受来自几个受信任 IP 的所有内容,以使其更加安全......但正如我在上面所读到的,没有从 /config 读取任何脚本。crontab 是唯一的选择吗?如果你搞砸了 iptables 怎么办?
您是如何查看文件系统的?如果我远程登录到端口 22,我可以看到 dropbear 正在运行,但如果我尝试使用各种用户名进行 SSH,它不会提示输入密码。我添加了一个具有管理员权限的新用户,但 SSH 也不会响应该用户。我正在使用具有 Winbond Hermon IPMI 2.0 芯片的 Supermicro X7SPA-HF 主板,固件版本 01.29,构建时间 2009-12-31。