IPMI安全风险全景
IPMI(Intelligent Platform Management Interface)是服务器带外管理的事实标准,通过BMC芯片实现独立于操作系统的远程管理。正是这种独立运行特性,使IPMI成为服务器安全防护中最容易被忽视、也最危险的一环。
默认密码:最致命的隐患
大量服务器出厂时BMC使用默认账户和密码。以下是主流厂商的默认凭据:
| 厂商 | 默认用户名 | 默认密码 | BMC品牌 |
|---|---|---|---|
| Dell | root | calvin | iDRAC |
| HP/新华三 | Administrator | 随机(标签贴纸) | iLO |
| Lenovo | USERID | PASSW0RD(数字0) | XCC |
| 浪潮 | admin | admin | ISBMC |
| 超聚变 | Administrator | Admin@9000 | iBMC |
| Supermicro | ADMIN | ADMIN | SuperBMC |
根据安全研究机构Rapid7的报告,互联网上暴露IPMI端口(UDP 623)的IP地址超过12万个,其中约45%仍使用默认密码。攻击者扫描到BMC IP后可直接登录获得服务器完整控制权,包括远程开关机、重装系统、读取硬盘数据。
明文传输与认证绕过
IPMI 1.5版本使用RAKP-HMAC-MD5认证协议,存在哈希泄露漏洞(CVE-2013-4786)。攻击者无需密码即可获取服务端哈希值进行离线爆破。IPMI 2.0引入了RAKP+协议和AES-CBC-128加密,但部分厂商实现仍存在认证绕过漏洞,如Supermc CVE-2022-26872允许远程执行任意代码。
0-day漏洞历史案例
2013年Supermicro IPMI漏洞允许通过Java小程序远程获取root权限。2017年Intel AMT漏洞(CVE-2017-5689)影响全球数百万台使用Intel AMT技术的服务器,攻击者发送空凭据即可获取管理员权限。2022年AMI MegaRAC BMC漏洞链(CVE-2022-26872/CVE-2022-40259)影响多家使用AMI固件的服务器品牌,可远程刷写恶意固件永久控制服务器。
IPMI安全加固六步法
以下六步安全加固流程覆盖了IPMI安全防护的主要层面,建议作为服务器上线前的标准检查项。
第1步:修改默认密码
修改BMC默认密码是最基础也是最重要的安全措施。密码应满足以下要求:长度至少16位,包含大小写字母、数字和特殊符号,不包含服务器型号或厂商名等可推测信息。
# 使用ipmitool修改BMC密码
# 连接到BMC并修改admin用户密码
ipmitool -I lanplus -H 192.168.1.100 -U admin -P admin \
user set password 2 "Kj8#mP2@nQ5xLw9!"
# 验证新密码是否生效
ipmitool -I lanplus -H 192.168.1.100 -U admin \
-P "Kj8#mP2@nQ5xLw9!" chassis status
# 批量修改多台服务器密码(Shell脚本)
#!/bin/bash
SERVERS="192.168.1.101 192.168.1.102 192.168.1.103"
OLD_PASS="admin"
NEW_PASS="Kj8#mP2@nQ5xLw9!"
for ip in $SERVERS; do
echo "正在修改 $ip 的BMC密码..."
ipmitool -I lanplus -H $ip -U admin -P $OLD_PASS \
user set password 2 "$NEW_PASS" 2>/dev/null
if [ $? -eq 0 ]; then
echo " [成功] $ip 密码已修改"
else
echo " [失败] $ip 密码修改失败,请手动检查"
fi
done
第2步:关闭默认账户和多余用户
很多BMC固件预置了多个用户账户,其中部分账户可能存在弱密码或后门风险。应仅保留一个管理员账户,禁用或删除其他所有账户。
# 查看当前所有BMC用户
ipmitool -I lanplus -H 192.168.1.100 -U admin -P "Kj8#mP2@nQ5xLw9!" \
user list
# 输出示例:
# ID Name Callin Link Auth IPMI Msg Channel
# 1 true false false 1
# 2 admin true true true 1
# 3 operator true true true 1
# 禁用ID为3的operator用户
ipmitool -I lanplus -H 192.168.1.100 -U admin -P "Kj8#mP2@nQ5xLw9!" \
user disable 3
# 创建新的管理员账户(不用默认admin名称)
ipmitool -I lanplus -H 192.168.1.100 -U admin -P "Kj8#mP2@nQ5xLw9!" \
user set name 4 "sec_admin"
ipmitool -I lanplus -H 192.168.1.100 -U admin -P "Kj8#mP2@nQ5xLw9!" \
user set password 4 "Rt3@vN7#kW2pQm8$"
ipmitool -I lanplus -H 192.168.1.100 -U admin -P "Kj8#mP2@nQ5xLw9!" \
user priv 4 4 1 # 设置为ADMINISTRATOR权限
# 禁用原始admin账户
ipmitool -I lanplus -H 192.168.1.100 -U admin -P "Kj8#mP2@nQ5xLw9!" \
user disable 2
第3步:VLAN网络隔离
BMC网络必须与业务网络物理或逻辑隔离。推荐采用独立VLAN方案:BMC端口连接到专用管理交换机,配置独立VLAN(如VLAN 100),不与业务VLAN互通。交换机ACL规则仅允许运维跳板机IP访问BMC VLAN。
# 交换机ACL配置示例(华为CE系列)
# 创建BMC管理VLAN
vlan 100
description BMC-Management-VLAN
quit
# 配置BMC端口
interface 10GE1/0/1
port link-type access
port default vlan 100
description Server-BMC-Port
quit
# 配置ACL限制访问来源
acl number 3000
rule permit ip source 10.10.50.100 0 # 跳板机IP
rule permit ip source 10.10.50.101 0 # 备用跳板机IP
rule deny ip destination 10.10.100.0 0.0.0.255 # 拒绝其他IP访问BMC网段
quit
# 应用ACL到BMC VLAN接口
interface Vlanif100
ip address 10.10.100.254 24
traffic-filter inbound acl 3000
quit
第4步:禁用多余服务
BMC固件默认开启多种服务,其中部分存在安全风险。应根据最小化原则关闭不必要的服务:
| 服务名称 | 端口 | 安全建议 | 风险说明 |
|---|---|---|---|
| IPMI over LAN | UDP 623 | 保留(核心功能) | 需加密和认证 |
| HTTP Web | TCP 80 | 关闭或重定向到HTTPS | 明文传输凭据 |
| HTTPS Web | TCP 443 | 保留(需有效证书) | 自签证书需替换 |
| SSH | TCP 22 | 关闭(用IPMI替代) | 暴力破解风险 |
| Telnet | TCP 23 | 必须关闭 | 明文传输 |
| SNMP | UDP 161 | 关闭或限制v3 | v1/v2c社区字符串明文 |
| Virtual Media | TCP 443 | 按需开启 | 挂载后可改启动项 |
| SOL(Serial over LAN) | UDP 623 | 按需开启 | 可截获控制台输出 |
第5步:固件更新
BMC固件更新是修复已知安全漏洞的关键手段。建议每季度检查厂商安全公告,及时更新BMC固件。固件更新前需备份当前配置,更新后验证所有安全设置是否保留(部分固件更新会重置配置)。
第6步:审计日志
开启BMC系统事件日志(SEL)和审计日志,定期导出和分析。监控异常登录、配置变更和电源操作等关键事件。
# 查看BMC系统事件日志(SEL)
ipmitool -I lanplus -H 192.168.1.100 -U sec_admin \
-P "Rt3@vN7#kW2pQm8$" sel list
# 输出示例:
# 1 | Pre-Init |Event Recording Disabled | Others
# 2 | 01/15/2026 | User Login | root | Login
# 3 | 01/15/2026 | Chassis Control | OEM | Power Cycle
# 4 | 01/16/2026 | User Login Failed | unknown | Login Failed
# 导出SEL到文件用于审计
ipmitool -I lanplus -H 192.168.1.100 -U sec_admin \
-P "Rt3@vN7#kW2pQm8$" sel list > /var/log/bmc_sel_$(date +%Y%m%d).log
# 清除已归档的SEL日志
ipmitool -I lanplus -H 192.168.1.100 -U sec_admin \
-P "Rt3@vN7#kW2pQm8$" sel clear
IPMI 2.0加密配置
IPMI 2.0引入了RAKP+认证协议和AES-CBC-128加密,但默认配置可能未启用最高安全级别。需要手动设置加密参数:
# 查看当前信道加密配置
ipmitool -I lanplus -H 192.168.1.100 -U sec_admin \
-P "Rt3@vN7#kW2pQm8$" channel getciphers 1
# 输出示例:
# Channel 1 cipher suites
# ID Type Auth Integrity Encry
# 0 none none none none
# 1 rakp-hmac-sha1 hmac-sha1-96 none
# 3 rakp-hmac-sha1 hmac-sha1-96 aes-cbc-128
# 17 rakp-hmac-md5 md5-128 none
# 设置仅允许使用最高加密级别(Suite 3: SHA1+AES-128)
ipmitool -I lanplus -H 192.168.1.100 -U sec_admin \
-P "Rt3@vN7#kW2pQm8$" lan set 1 cipher_privs XaaaXXaaaXaaX
# 验证配置:使用-lanplus选项自动协商最高加密级别
ipmitool -I lanplus -H 192.168.1.100 -U sec_admin \
-P "Rt3@vN7#kW2pQm8$" -C 3 chassis status
BMC网络架构设计
安全的BMC网络架构应遵循"独立、隔离、最小暴露"三大原则。推荐的三层架构:
第一层:物理隔离。使用专用交换机连接所有BMC端口,与业务网络物理分离。如果条件不允许物理隔离,使用VLAN逻辑隔离,并在三层交换机上配置ACL限制跨VLAN访问。
第二层:访问控制。所有BMC操作必须通过运维跳板机(Bastion Host)进行。跳板机部署堡垒机系统,记录所有操作命令和会话录像。BMC VLAN仅允许跳板机IP访问。
第三层:监控告警。BMC网络部署流量监控,检测异常连接和暴力破解行为。使用SIEM平台集中收集BMC日志,配置告警规则:同一IP连续3次登录失败即告警,非工作时间电源操作即告警。
等保合规要求
根据《信息安全技术 网络安全等级保护基本要求》(GB/T 22239-2019),服务器带外管理安全需要满足以下等保控制项:
| 等保控制项 | 要求内容 | IPMI对应措施 |
|---|---|---|
| 身份鉴别 | 采用密码技术保证身份鉴别信息安全性 | 16位强密码+IPMI 2.0加密 |
| 访问控制 | 对登录用户分配账户和权限 | 仅保留管理员账户,关闭默认账户 |
| 安全审计 | 记录用户行为和安全事件 | 开启SEL日志,定期导出归档 |
| 入侵防范 | 遵循最小安装原则 | 关闭Telnet/SNMP等不必要服务 |
| 边界防护 | 限制外部访问内部网络 | BMC VLAN隔离+ACL访问控制 |
| 恶意代码防范 | 及时更新安全补丁 | 定期更新BMC固件修复漏洞 |
IPMI安全自查脚本
以下脚本可快速检查BMC安全配置状态,建议每月执行一次:
#!/bin/bash
# IPMI安全自查脚本
BMC_IP=$1
BMC_USER=$2
BMC_PASS=$3
echo "========== IPMI安全检查报告 =========="
echo "检查目标: $BMC_IP"
echo "检查时间: $(date)"
echo ""
# 1. 检查用户列表
echo "[1] 用户账户检查:"
ipmitool -I lanplus -H $BMC_IP -U $BMC_USER -P $BMC_PASS user list 2>/dev/null
# 2. 检查网络配置
echo ""
echo "[2] 网络配置检查:"
ipmitool -I lanplus -H $BMC_IP -U $BMC_USER -P $BMC_PASS lan print 1 2>/dev/null
# 3. 检查加密配置
echo ""
echo "[3] 加密级别检查:"
ipmitool -I lanplus -H $BMC_IP -U $BMC_USER -P $BMC_PASS -C 3 \
chassis status 2>/dev/null && echo "AES-128加密可用" || echo "加密配置异常"
# 4. 检查SEL日志
echo ""
echo "[4] 近期安全事件:"
ipmitool -I lanplus -H $BMC_IP -U $BMC_USER -P $BMC_PASS sel list 2>/dev/null | tail -10
echo ""
echo "========== 检查完成 =========="
将此脚本配置为定时任务(crontab),每周自动扫描所有服务器BMC安全状态,输出报告发送给安全团队。发现异常配置或告警事件时,按照应急响应流程在24小时内处理。

