确保SuperMicro IPMI BMC的安全

我最近购买了一块SuperMicro X8DTU-F主板,它有一个内置的BMC,基本上可以运行IPMI系统。 事实certificate,这是一个在ARM处理器上运行的小型Linux系统。

不幸的是,它运行着大量的软件,其中大部分我不需要,我也没有能力把它放在防火墙之后。 但是,我确实需要IPMIfunction。 有谁使用过其中之一,就如何保护这个东西有一些具体的build议? 它从本质上是一个ROM文件系统,甚至似乎没有任何挂钩closures任何它运行的各种服务器….

我也会对如何validation可用于通过所有各种服务访问系统的名称和密码列表感兴趣。 默认值是ADMIN / ADMIN ,但是/ conf或/ etc中的文件都没有“ADMIN”,这让我很担心。 有/conf/shadow/conf/webshadow文件,里面有神秘的' /conf/webshadow ,这并不会让我感觉特别舒服。

理想情况下,您的pipe理networking将是与其他networking不同的networking,或者至less具有有限路由访问的不同vlan。

尽pipe这些系统并没有真正运行那么多的服务:

 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)

如果您想进行任何types的远程pipe理,大部分都是需要的。 如果您不想进行远程pipe理,则应该考虑不启用IPMI控制器,或者改为购买X9DTU板(-F表示“内置BMC”)

如果你想做完全的远程pipe理,不能在不同的networking上运行你的IPMI控制器,而仍想禁用某些访问,那么你总是可以让IPMI控制器执行iptables命令。 您可以编写一个sshlogin脚本来执行这些命令,或者向Supermicro询问BMC的开发包,并使用一个自定义的iptables脚本构build一个新的映像。

UPDATE

我再看看我们的系统,而/ conf文件系统是rw。 init脚本没有直接在/ conf中调用任何东西(我可以看到),但是有一个crontab文件。 所以,我想你可以复制一个iptables脚本,并编辑/ conf / crontab以适当的时间间隔调用它。 您希望在BMC初始化时尽快运行它,但您并不希望它每分钟都运行一次。 或者,也许你不在乎。

正如dlawson指出的,使用/conf/crontab对我来说听起来是一个很好的主意。 这允许我每分钟运行一次脚本来确保一切,但是closureshttp和ssh:

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

这仍然让我有一个基于密码的访问控制的Web服务器(我可以看到没有办法validation客户端证书),谁知道什么是远程漏洞。 当我不使用它(这是大多数时间)关掉似乎是一个合理的解决scheme; 添加一个crontab条目,每五或十分钟closures一次,就会发现有人忘记closures它。

ssh守护进程是一个似乎被大量修改的dropbear版本。 它从/conf/PMConfig.dat (它也被Web服务器使用)读取用户名和明文密码,以root用户身份login任何有效的名称和密码,并忽略~/.ssh/authorized_keys文件。 最后一个问题是烦人的; 它强制你允许密码login,并打开后门的可能性取决于从哪里得到它的名字和密码。

所以这就是你所面临的困境:你真的相信这个修改后的ssh守护进程安装在一个相当明显由安全开发者devise的系统上吗? 考虑到我在他们的shell脚本中看到的cruft碎片的数量,一点也不多。 有不同寻常的命名约定(/etc/rc?.d/sshd是/etc/init.d/ssh的一个符号链接),大量代码看起来没有被使用,并且只有ssh启动脚本的特性,比如/conf/portcfg_ssh文件甚至是restart命令都被完全破坏了。 (不要尝试使用这些; sshd不会重新启动,除非您有现有的login名,否则您将被locking。我们重新启动了BMC,最后重新刷新了它。)

我能想到的最好的select是,如果要使用这个东西的话,就是使用cron作业在备用端口上启动ssh,所以至less它不太可能出现在portscan中。

最后的组件是IPMInetworkingpipe理端口; 我看不出如何把这些关掉。

保护Supermicro IPMI时要考虑的一件事是ssh服务器。 老版本的X8SIL-F IPMI代码接受了ssh连接,不pipe给出了什么密码。 然后软件将检查密码并拒绝或接受连接,但有一个简短的窗口来创buildssh端口转发。 正因为如此,人们正在为其IPMI IP获取垃圾邮件/滥用投诉 。 对于X8SIL-F主板,2.60 IPMI固件版本解决了这个问题(它可能已经被更早的修复了,2.54的更新logging看起来就像是它)。

第二个问题是具有默认密码的匿名用户。 匿名用户似乎在固件版本2.22中被修复。

启用IPMI的Web界面的HTTPS有一个小技巧。

如果您的IPMI固件支持(用于X8DTH-iF支持的我的2.04固件),您可以首先启用HTTPS访问,方法是进入configuration – > SSL,上传两个PEM文件(证书和私钥),然后手动重新启动您的IPMI模块。

最后,您可以通过https:// bmc-ip-or-hostname /访问IPMI的Web界面。 我不能说HTTPS比HTTP更慢。

有没有人试图用iptables来保护这个东西? 看来iptables已经安装好了,我想制定一个拒绝一些可信IP地址的规则,让它更加安全一些……但是,正如我上面所看到的,没有任何脚本正在从/ config读取。 crontab是唯一的select吗? 而如果你搞砸了iptables呢?

你是如何看待文件系统的? 如果我telnet到端口22,我可以看到dropbear正在运行,但是如果我尝试SSH与各种用户名,它不会提示input密码。 我已经添加了一个具有pipe理员权限的新用户,但是SSH不会响应该用户。 我正在使用带有Winbond Hermon IPMI 2.0芯片的Supermicro X7SPA-HF主板,固件版本为01.29,生成时间为2009-12-31。