资讯动态

IPMI安全加固实战:从BMC强口令到网络隔离与漏洞修复

发布时间:2026/10/20 23:00:40 来源:尧图企业网站定制
干运维这些年半夜被机房告警吵醒是常有的事。系统起不来、远程登录不上但只要服务器上的BMC还活着我就能在带外把它拉起来。可正是这样一把“上帝钥匙”一旦配置不当就成了整个机房最危险的后门。有一年内部安全扫描我在业务网段里一口气扫出一堆开放623 UDP端口的服务器其中一个BMC还留着厂商默认口令等于谁都能远程开关机、挂载镜像、改启动项。从那以后我把IPMI安全加固直接写进物理机上线清单的第一条这件事比装系统、配RAID还要优先。这篇文章就是我整理出来的一份完整IPMI安全加固实战记录核心就三件事用ipmitool把BMC账号密码改成高复杂度强口令并禁用默认账号、把带外管理网络从业务网络中隔离出去、再把几类常见的IPMI漏洞修复掉。适合需要管理物理服务器、机房设备和私有化基础设施的运维、SRE、安全工程师参考。不管你是刚接手一批二手服务器还是准备批量上架新机器照着这个流程走一遍基本能把BMC这个面的风险压到可接受水平。动手之前先记住一句话带外管理通道的优先级永远高于操作系统内部任何防御措施。1. 加固前的思路IPMI到底暴露了什么1.1 先搞清楚自己的带外管理面IPMI全称Intelligent Platform Management Interface中文一般叫智能平台管理接口是硬件厂商联盟早年间提出的一套带外管理规范。之所以叫“带外”是因为它独立于操作系统运行主板上有一颗独立的BMC芯片自带CPU、内存、网口和供电就算主机断电宕机只要管理网线还有电、网络还通BMC照样能响应并执行远程命令。这里先区分三个容易混淆的概念BMC是物理芯片IPMI是跑在BMC上的协议标准ipmitool则是我们用来跟BMC对话的命令行客户端工具。日常运维里说的“连BMC”绝大多数时候就是通过ipmitool或者Web管理界面去访问这颗芯片。BMC能做的事远比想象中多远程开关机、查看电源和温度传感器、挂载ISO镜像、读取系统串口日志、管理用户权限甚至直接调整启动顺序。这些功能在设计上是为管理员提供便利的但攻击者拿到BMC权限后同样能用它们绕过操作系统层面的所有防护。所以加固前先要完整盘点这台机器上有几个管理通道。常见的暴露路径有这么几条IPMI over LAN走的是623 UDP端口对应RMCP/RMCP协议Web管理界面一般监听443或80端口部分型号还开了KVM远程控制台端口。如果这些端口直接暴露在业务网段甚至公网问题就大了。1.2 攻击者为什么盯着BMC打攻击者热衷于找BMC是因为它是硬件层面的“上帝模式”。传统思路里运维习惯把安全重心放在操作系统上装杀软、封端口、做基线检查但BMC完全绕开了这些。历史上关于IPMI的洞不少最出名的是CVE-2013-4786涉及IPMI 2.0 RAKP认证过程的实现缺陷攻击者在认证过程中截获数据包后可以离线还原密码哈希并暴力破解。除此之外这几年也有多款BMC的Web管理组件爆出过远程代码执行漏洞攻击链就是先找到一个管理口再通过漏洞直接打进芯片内部。在内网横向移动的场景里BMC是跳板价值极高的目标。攻击者从一台失陷主机出发扫描发现同网段开放623 UDP的IP先试默认账号再试弱口令一旦成功就拿到了物理机级别的控制权。相比之下慢慢打操作系统、提权、留后门效率和隐蔽性都差远了。我自己做过一次对比测试从拿到一个BMC弱口令到远程给服务器装上带外后门全程不到十分钟而正常压测OS要磨半天。所以别觉得“内网环境应该没事”BMC这种带外接口只要暴露就是一锤子买卖。1.3 制定一条可落地的加固路线BMC加固内容很多但优先级非常清晰。我建议按照下面的顺序来前两项属于P0级别不动就是裸奔优先级动作目的验证方法P0改默认口令、设置强密码防止默认账号被直接登录用错误密码尝试登录P0禁用匿名访问和多余账号减少可利用的认证面检查用户列表和通道权限P0管理口独立VLAN并做ACL网络隔离防止暴露从业务网段扫描623端口P1升级BMC固件修复已知协议和Web漏洞比对固件版本P1收敛cipher suite禁用弱认证算法lan print查看当前套件P2开启日志审计与监控发现异常登录和操作定期检查sel与系统日志先把上面这个表格打印出来贴在工位再开始动手。下文就是表格里每一项的具体落地方法。2. 环境准备与ipmitool基础操作2.1 安装与版本确认用到ipmitool的环境不同安装方式略有区别。Linux服务器上最常见# Debian / Ubuntu 系 apt update apt install -y ipmitool # RHEL / CentOS / Rocky 系 yum install -y ipmitoolmacOS上做临时管理可以用HomebrewWindows环境去官方GitHub的Release页面找Windows二进制即可。装完先确认版本版本太老的ipmitool在加密套件和兼容性上会有问题ipmitool -V如果要在服务器本机上通过/dev/ipmi0读取本地BMC还得保证内核模块加载正常。Intel平台上一般是ipmi_si和ipmi_devintf这两个模块加载后执行ls /dev/ipmi*能看到设备节点。某些云厂商的物理机托管场景下本地设备不存在也正常那就直接走远程模式。2.2 本地模式与远程模式的差异ipmitool有两种连接方式。本地模式不写-I lanplus直接在服务器上读取BMC受PLC芯片和设备节点限制权限要求高远程模式才是日常管理的主力ipmitool -I lanplus -H 10.30.20.11 -U ADMIN -P Old-Pass!23 mc info这里的lanplus指定走IPMI v2.0的RMCP协议通道带RAKP安全会话协商比老版本的v1.5明文认证安全得多。所有远程操作我都建议默认加-I lanplus别再用v1.5模式实在需要兼容老设备时单独说明。第一次连接不熟悉时可以先只跑mc info这种只读命令确认能通、能返回BMC厂商和固件版本再做变更。命令里暴露了明文密码终端的历史记录会被存下来所以下面马上会讲到怎么规避。2.3 操作前必须做的现场摸底改动任何配置之前先完成一次完整的“现场摸底”。这一步花不了两分钟但能避免很多灾难。我会按顺序跑这几条只读命令把输出保存到本地# 查看BMC厂商、固件版本号等基础信息 ipmitool mc info # 查看活动用户列表1是通道号 ipmitool user list 1 # 查看LAN通道的IP、VLAN、网关、cipher等配置 ipmitool lan print 1 # 查看最近的系统事件日志 ipmitool sel elist | tail -20尤其是lan print 1的输出务必完整保留。后面改静态IP、VLAN、ACL的时候万一改错了需要回滚这份原始配置就是救命稻草。我曾经因为没保存原IP直接改地址结果VLAN没放通被迫让机房现场插串口恢复那次以后再也不敢跳过摸底步骤。3. 用ipmitool设置复杂密码与账号策略3.1 分析用户列表确定要动的账号运行ipmitool user list 1之后输出大致是这个样子IDNameCallinLink AuthIPMI MsgChannel Priv Limit1ADMINtruetruetrueADMINISTRATOR2opadmintruetruetrueADMINISTRATOR3testuserfalsetruefalseUSER第一列ID是用户编号后面跟着用户名和权限位。Channel Priv Limit显示为ADMINISTRATOR的账号拥有最高权限。摸完底要做三件事把不认识的账号禁用掉把默认弱口令账号改掉多余的管理员账号降权限或删除。注意永远不要把所有管理员账号都禁用至少保留一个可用的管理入口不然就只能现场接串口了。还要关注Callin列它表示该用户是否允许通过LAN接口发起连接。如果某个账号只需要本机SOL登录就把Callin关掉缩小远程攻击面。这块用channel setaccess控制例如禁用某个用户从LAN口呼叫ipmitool channel setaccess 1 3 callinoff3.2 修改密码的正确姿势设置密码的命令本身很简单ipmitool -I lanplus -H 10.30.20.11 -U ADMIN -P Old-Pass!23 user set password 2 N3w-Pass#2025但有几个细节必须注意。第一不要直接在命令行里写新密码。ps、shell历史、终端日志都能把命令行里的明文密码翻出来等于白加固。我在脚本里习惯这样处理read -s -p 输入BMC新密码: NEW_PASS ipmitool -I lanplus -H 10.30.20.11 -U ADMIN -P Old-Pass!23 user set password 2 $NEW_PASS unset NEW_PASSread -s关闭了回显赋值后再传给ipmitool命令结束后马上unset避免变量残留在shell环境里。密码本身建议14位以上大小写字母、数字、特殊符号混合且绝对不要跟服务器root密码、业务系统管理员密码重复。老型号BMC对密码长度限制比较死有的只支持12位或16位改之前要么查厂商文档要么在测试机上先试探一下免得改完才发现超长密码被截断。3.3 改名、禁用默认用户与匿名账号默认账号名字是公开情报攻击者扫描到开放623端口后第一时间就会拿admin、root、ADMIN这类用户名去试。所以不管密码改得多强最好把用户名也一起换掉ipmitool user set name 2 infra-bmc-01改完名字再重新设定密码让用户名和口令都脱离默认值。至于那些用不上的账号直接禁用ipmitool user disable 3disable之后账号无法再登录但用户的审计记录会保留方便后续追查。有些BMC固件还带匿名访问开关一般在Web管理界面的“安全”或“Session”页面里找到就把它关掉。命令行层面部分厂商支持raw命令控制但raw操作很容易改错导致BMC变砖不建议非专业人士碰。3.4 用锁定与错误尝试策略补上最后一道防线密码再强也防不住暴力破解尤其是BMC这种暴露在管理网里的服务。较新的BMC固件都支持登录失败锁定策略比如连续5次认证失败后锁定该账号30分钟。这个参数在ipmitool里没有统一设置命令需要到Web管理界面或厂商专用工具里开启开启后建议把锁定阈值和锁定时间记录下来写入资产台账。这里的坑在于如果你正在用批量脚本加固几十台机器而脚本里某台机器的旧密码记错了连续输错几次就可能把管理员账号锁住导致这台机器后续操作全部失败。所以批量加固前先在测试机上把锁定策略验证一遍或者把锁定窗口设长一点给自己留出容错时间。我个人习惯是先不急着开锁定等所有机器密码都改完、确认旧密码不再使用之后再统一开启锁定策略。4. 网络隔离把带外管理口关进保险箱4.1 管理口为什么不建议和业务口混用市面上服务器有两种常见的BMC网络接法一种是独立管理网口物理上和业务网卡分开另一种是共用第一个网口通过failover或者共享模式把BMC流量和业务流量走到同一根网线上。第二种接法看起来省端口实际上把BMC的位置暴露到了业务网段里任何一台业务主机都能扫描到旁边的BMC这是设计上的重大隐患。我处理过的故障里有不少就是这个原因服务器明明没对外提供任何服务业务网段扫描却发现623端口开放一查管理口复用到了业务网络。除非硬件条件实在不允许否则一定要走独立管理网口并且只接到专门的带外管理交换机上。管理网的VLAN、IP段、三层路由全部独立跟办公网和业务网做到物理或逻辑隔离。4.2 静态IP与VLAN配置实操拿到一台新机器后先把BMC从DHCP改成静态IP并划入专用管理VLAN。命令如下ipmitool -I lanplus -H 10.30.20.11 -U ADMIN -P pass lan set 1 ipsrc static ipmitool -I lanplus -H 10.30.20.11 -U ADMIN -P pass lan set 1 ipaddr 10.20.30.11 ipmitool -I lanplus -H 10.30.20.11 -U ADMIN -P pass lan set 1 netmask 255.255.255.0 ipmitool -I lanplus -H 10.30.20.11 -U ADMIN -P pass lan set 1 defgw 10.20.30.1 ipmitool -I lanplus -H 10.30.20.11 -U ADMIN -P pass lan set 1 vlan id 200 ipmitool -I lanplus -H 10.30.20.11 -U ADMIN -P pass lan set 1 vlan enable这里的关键是一旦执行到ipset static和ipaddr后BMC会立刻使用新地址后续命令必须换成新IP来执行。更稳妥的做法是先把VLAN ID也设置好并且确认管理交换机上对应VLAN已经放通再一次性修改IP避免出现“VLAN没配好IP又改了”导致双重失联的窘境。改完马上用ping 10.20.30.11验证新地址通不通不通就赶紧回滚到摸底时保存的原始配置。注意BMC的默认网关千万别指向业务网核心而是指向管理网段的网关。如果管理网和业务网有重叠路由DNS和路由表会混乱极易发生BMC被业务网流量误扫到的情况。4.3 控制访问源ACL与防火墙网络隔离不只是把BMC放进管理VLAN还要在交换机和防火墙上限制谁能访问它。最理想的状态是管理网段内只有运维跳板机、堡垒机的IP能访问BMC的623和443端口其他任何来源一律拒绝。交换机侧针对管理VLAN写ACL例如只放行网管段10.20.30.0/24内的源地址访问BMC其余drop。核心防火墙或云安全组上也只放行跳板机IP到管理网段的UDP 623和TCP 443。如果企业有堡垒机更省心的做法是把BMC入口收敛到堡垒机运维先登录堡垒机再通过堡垒机的跳板能力访问BMC所有人的操作都能被审计。这时候BMC自身的密码策略依然要保持高强度因为堡垒机只是一个访问入口它不代表BMC本身防御已经到位。千万不能做的一件事是把BMC管理口直接接到办公网某个VLAN里图省事。办公网终端多、安全性参差不齐BMC暴露在办公网里和暴露在公网差别不大。4.4 关掉用不上的协议与服务BMC上一堆默认启动的服务但日常真正用到的不多。用不到的协议和服务越早关越好。第一条就是IPMI over LAN本身如果这台机器平时根本不需要通过ipmitool远程管理可以把它关掉ipmitool lan set 1 access off关掉之后远程-I lanplus方式就彻底连不上了只能在服务器本地或者通过SOL查询。很多运维不敢关是因为怕把自己锁死我的建议是评估一下这台机器是否有强制的远程管理需求如果没有就关如果必须有远程管理口那就靠前面的ACL来限制二选一。另一个要收敛的是cipher suite也就是BMC支持的认证和加密算法集合。老版本BMC默认可能支持匿名登录、无加密的弱认证套件这是大隐患。查看当前套件ipmitool lan print 1然后只保留必要的加密套件例如ipmitool lan set 1 cipher_suites 3这里的数字含义是套件编号3通常代表带RAKP-HMAC-SHA1的基本加密套件。不同厂商固件对编号定义可能不一致执行前先看lan print 1输出的可用列表确认3是不是你要的套件。收敛后老版本ipmitool或者手工构造的低安全客户端可能会连不上这是预期效果也算是一种变相加固。4.5 管理流量加密与传输边界既然提到传输顺便把加密说透。IPMI v2.0的RMCP协议在认证阶段使用RAKP协商会话密钥数据流在会话建立后有一定的完整性保护但如果你还需要更高安全性可以在管理链路上再做一层。比如运维跳板机与BMC之间用支持加密的终端工具建立连接避免网管段内被旁路抓包直接看到管理流量。BMC自身的Web界面有条件就只允许HTTPS访问HTTP明文页面尽量不要开。很多厂商的BMC Web界面里有“仅允许HTTPS”的开关记得把它打开。5. 常见漏洞修复与加固验证5.1 第一步永远是升级BMC固件密码改了、网络隔了但如果BMC固件本身存在已知漏洞一切加固都可能白费。修复历史漏洞最直接的手段就是升级到厂商发布的最新稳定版固件。先从ipmitool mc info拿到当前的Firmware Revision再去厂商官网的Support页面比对找到对应型号的最新固件包。这里务必注意三件事一是选对产品型号BMC固件版本与主板SKU强相关不同OEM版本的固件不能互刷二是下载前核对当前版本到目标版本之间是否有中间版本必须先装三是升级过程中绝对不能让BMC断电最好接在UPS后面机房环境有条件就让现场人员看着电源指示灯。我踩过的坑是某次升级时图省事从厂商页面的“通用区”下载了一个相近型号的固件包刷完Web界面直接起不来。后来查到这台机器是某OEM定制版固件路径和标准版完全不同最后只能找原厂镜像重新刷才恢复。升级前把当前版本、目标版本、升级日期记录到资产台账这一步很多人会漏。升级完成后再跑一遍ipmitool mc info确认版本号变化。部分厂商支持用带外工具远程刷固件但通用性较差最稳的还是通过Web界面上传固件包或者机房现场U盘升级。5.2 协议与认证漏洞的针对性修复上一节提到的CVE-2013-4786属于IPMI 2.0 RAKP认证实现漏洞这类问题没法靠配置彻底消除只能通过组合手段缓解强制使用强口令、禁用弱cipher、及时升级固件。口令复杂度越高离线破解的计算成本就越高这是和漏洞共存时的核心缓解措施。还要检查BMC上是否有不必要的特殊账号类型。比如某些固件内置了“匿名访问”或“主控账号”这类账号往往不走常规用户列表隐蔽性很强。在Web管理界面的用户和会话设置里把匿名访问、来宾账号、仅支持本地访问的账号全部清掉。认证方式上有条件就启用双因子现在不少厂商的BMC固件支持通过Radius或TACACS对接统一认证运维密码统一由认证中心管控真出问题也好追溯。5.3 会话与超时策略BMC的Web管理界面和远程会话默认超时时间差别很大有的型号默认半小时甚至更久管理员登录后忘了退出等于给路过的人留了个后门。把Web界面的会话超时时间设置到5到15分钟之间具体位置一般在“Security”或者“Session”配置项里。同时如果BMC支持限制并发会话数建议限制为1个防止攻击者抢占另一个会话也防止多个管理员同时操作造成状态混乱。此处的衡量标准很简单在保证日常管理便捷的前提下尽可能缩短合法会话的存续时间。超时短、并发少、日志全三个条件都满足之后被劫持会话的概率就低多了。5.4 日志与监控让异常暴露在视野里BMC的事件日志和登录日志一定要纳入监控。多数BMC支持Syslog转发在Web界面里配置日志服务器地址把认证成功、失败、配置变更、固件更新等事件实时送到日志中心。配合现代的日志告警平台对“连续多次认证失败”“管理员账号被修改”“创建新用户”这类事件设置实时告警一旦出现立刻通知值班运维。命令行层面日常巡检可以定时跑ipmitool -I lanplus -H 10.30.20.11 -U ADMIN -P $NEW_PASS sel elist | tail -50sel elist读的是System Event Log也就是BMC自己记录的系统事件日志包括温度、电源、非法入侵探测等。配合资产台账定期审查发现异常时间点的事件就能快速定位。5.5 加固完成后的验证清单做完以上所有步骤别急着收工。我习惯按下面这张清单逐项验证全绿才算完成验证项期望结果使用错误密码远程登录返回认证失败或无法建立会话从非管理VLAN访问BMC地址ping不通或623端口无响应从业务网段nmap扫描管理网段扫描不到开放623的主机固件版本已更新到目标版本并记录用户列表只剩必要账号默认账号已禁用或改名新密码符合复杂度要求已存入密码保险箱Web界面仅HTTPS可访问会话超时已设置其中从业务网段扫描这一步很好操作在业务网找一台测试机执行nmap -sU -p 623 --open 10.20.30.0/24看到输出里没有任何BMC地址出现就说明网络隔离达到了预期。这条路我每次做完都会跑一遍它暴露出的问题比任何配置检查都直观。6. 实战踩坑记录与常见问题排查6.1 我在加固过程中踩过的坑第一坑是特殊字符。设置密码时用了带、$、空格这类字符的密码结果在shell里被解释掉密码实际设置成了另外一个串。解决办法是密码里的符号尽量选Shell不敏感的类型比如#%^之类或者统一用read -s读变量再传给ipmitool并且用双引号包裹变量。第二坑是通道号。有的服务器BMC内部有两个通道管理口实际走的是通道2我在通道1上改了半天的IP和VLAN怎么测都不生效。排查方法很简单先跑ipmitool lan print 1和ipmitool lan print 2对比确认你正在操作的是不是BMC实际使用的那个通道。第三坑是过度加固把自己锁在门外。曾经为了追求极致安全把某台机器的lan access直接关了结果第二天在外地需要远程操作这台机器只能让机房现场同事去插串口。后来我的原则是先用ACL做隔离确认运维流程稳定后再考虑关闭LAN access凡事留退路。第四坑是固件版本差异。就是前面提过的OEM定制版和标准版固件不通用的问题。升级之前一定先看BMC的具体型号和当前固件版本再去厂商官网按产品SKU精确查找别点开一个类似版本就想当然刷进去。6.2 常见问题排查速查表现象大概率原因处理方法ping不通BMC地址管理网不通/ACL拦截检查管理交换机VLAN放通、防火墙ACL规则remote时报“unable to establish IPMI session”密码错误/账号锁定/cipher不匹配确认密码和账号状态尝试加-C 3指定套件升级ipmitool版本用户列表显示“Unknown”通道号不对或BMC隐藏内置账号切换通道查看配合Web界面确认改完IP后BMC失联VLAN未放通或网关配置错误现场接串口回滚原始配置重新按步骤操作密码包含中文或扩展符号后乱码老BMC固件字符集支持差密码尽量只用ASCII可打印字符这张表基本覆盖了我日常遇到的90%问题。如果还解决不了优先做的事是看BMC的系统日志sel elist事件记录往往比猜测靠谱得多。6.3 批量加固的思路几十上百台机器一个个手工改密码不现实。我一般会写一个简单的bash循环配合一个制表符分隔的资产清单文件#!/usr/bin/env bash set -euo pipefail # bmc_list.txt 每行: bmc_ip 用户名 旧密码 新密码 while IFS$\t read -r host user oldpw newpw; do echo 处理 $host timeout 15 ipmitool -I lanplus -H $host -U $user -P $oldpw user set password 2 $newpw || echo $host 改密失败 fail.log timeout 15 ipmitool -I lanplus -H $host -U $user -P $newpw user disable 3 || true echo $host 完成 done bmc_list.txt新密码可以直接用openssl rand -base64 18生成并自动写入密码保险箱这样每台机器密码各不相同即使某台被攻破也不会牵连其他机器。批量执行前一定要在测试机上先跑通生产环境先最少跑3台试点确认无问题再扩大范围。脚本里加timeout防止某台机器无响应时卡死整个循环。说实话IPMI加固这件事不像打补丁那样“一次性完成”。我现在的习惯是每个季度对管理网段做一次623端口扫描配合BMC账号登录日志的定期抽查新机器上架之前必须过一遍加固清单不然不允许交付。改密码和网络隔离只是第一步真正让这套体系长期有效的是把流程固化下来让每台物理机从上线第一天就带着强口令和隔离网络跑。每次折腾完一批机器我都会在资产台账上补几行备注把改了什么、为什么改、下次什么时候复查写清楚下次接手的人一看就明白。这篇实战记录里的每一个操作我都实测过照着走能少踩不少我已经踩过的坑但不同厂商固件的细节差异实在太多动手前永远要先摸清自己设备的具体情况。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑