IPMI (Intelligent Platform Management Interface) es el estándar para gestionar un servidor físico fuera de banda. Lo implementa el BMC, un pequeño controlador de la placa base con su propia red y su propia alimentación, que funciona aunque el sistema operativo esté colgado o el servidor apagado. Los BMC de los fabricantes (iDRAC de Dell, iLO de HPE, el de Supermicro) añaden interfaces web propias, pero todos hablan IPMI 2.0. En este tutorial usarás ipmitool desde Ubuntu 24.04 para configurar la red y los usuarios del BMC, controlar la alimentación, leer sensores y eventos, abrir la consola Serial-over-LAN y reducir la superficie de ataque del BMC.
Requisitos previos
- Un servidor físico con un BMC compatible con IPMI 2.0 y Ubuntu 24.04 LTS instalado, para la configuración local de los pasos 1 a 3.
- Un usuario no root con privilegios
sudoen ese servidor. - Un equipo de administración con Ubuntu 24.04 (o cualquier Linux) con acceso de red al puerto UDP
623del BMC, para los pasos siguientes. Puede ser el mismo servidor u otro de la red de gestión. - Una red de gestión aislada para los BMC: una VLAN dedicada, accesible solo por VPN o desde un bastión.
Advertencianunca expongas un BMC a Internet. Los BMC tienen un historial largo de vulnerabilidades y el propio protocolo IPMI 2.0 permite a un atacante obtener el hash de la contraseña de cualquier usuario válido (RAKP). Trata el acceso al BMC como acceso físico al servidor.
Paso 1: Instalar ipmitool y acceder al BMC local
Instala ipmitool en el servidor:
sudo apt update
sudo apt install ipmitool
Para hablar con el BMC local, el sistema operativo usa la interfaz KCS a través de los módulos ipmi_si e ipmi_devintf. En hardware con BMC suelen cargarse solos; cárgalos por si acaso y haz que se carguen en cada arranque:
sudo modprobe ipmi_si
sudo modprobe ipmi_devintf
printf 'ipmi_si\nipmi_devintf\n' | sudo tee /etc/modules-load.d/ipmi.conf
Comprueba que existe el dispositivo y que el BMC responde:
ls /dev/ipmi0
sudo ipmitool mc info
Device ID : 32
Device Revision : 1
Firmware Revision : 3.10
IPMI Version : 2.0
Manufacturer ID : 10876
Manufacturer Name : Supermicro
...
Si /dev/ipmi0 no existe tras cargar los módulos, el servidor no tiene BMC o está desactivado en la BIOS. En una máquina virtual no hay BMC.
Paso 2: Configurar la red del BMC
El BMC tiene su propia configuración de red, independiente de la del sistema operativo. La mayoría de fabricantes usan el canal LAN 1; si el siguiente comando devuelve un error, prueba con 2, 3 u 8:
sudo ipmitool lan print 1
IP Address Source : DHCP Address
IP Address : 10.20.0.57
Subnet Mask : 255.255.255.0
MAC Address : 3c:ec:ef:12:34:56
Default Gateway IP : 10.20.0.1
802.1q VLAN ID : Disabled
Cipher Suite Priv Max : XaaaXXaaaXaaXXX
...
Asigna una IP estática en la red de gestión. Sustituye las direcciones por las de tu red:
sudo ipmitool lan set 1 ipsrc static
sudo ipmitool lan set 1 ipaddr 10.20.0.50
sudo ipmitool lan set 1 netmask 255.255.255.0
sudo ipmitool lan set 1 defgw ipaddr 10.20.0.1
Si la red de gestión llega al puerto del BMC con una VLAN etiquetada, configúrala también (en este ejemplo la VLAN 112):
sudo ipmitool lan set 1 vlan id 112
Importantesi estás conectado al servidor por la misma red del BMC (por ejemplo, un puerto compartido), un error en estos valores te deja sin acceso remoto al BMC hasta que lo corrijas desde el sistema operativo o físicamente.
Algunos BMC tardan unos segundos en aplicar los cambios. Vuelve a ejecutar sudo ipmitool lan print 1 y comprueba la dirección, la máscara y la puerta de enlace.
Paso 3: Crear un usuario con contraseña robusta
Los BMC traen usuarios por defecto (ADMIN, root, admin) con contraseñas conocidas o impresas en una etiqueta. Crea un usuario propio y deja el de fábrica deshabilitado o con una contraseña larga. Lista los usuarios del canal 1:
sudo ipmitool user list 1
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
1 true false false NO ACCESS
2 ADMIN false false true ADMINISTRATOR
3 true false false NO ACCESS
Usa un ID libre (aquí el 3) para crear el usuario opsadmin:
sudo ipmitool user set name 3 opsadmin
sudo ipmitool user set password 3
Si omites la contraseña, ipmitool la pide por teclado y no queda en el historial de la shell. IPMI 2.0 admite hasta 20 caracteres; usa una contraseña aleatoria de esa longitud.
Dale nivel de administrador en el canal 1 y habilítalo. Los niveles de privilegio son 1 (callback), 2 (user), 3 (operator) y 4 (administrator):
sudo ipmitool channel setaccess 1 3 link=on ipmi=on callin=on privilege=4
sudo ipmitool user enable 3
Si solo necesitas encender, apagar y leer sensores, usa privilege=3 (operator) en lugar de administrador.
Comprueba el resultado:
sudo ipmitool user list 1
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
2 ADMIN false false true ADMINISTRATOR
3 opsadmin true true true ADMINISTRATOR
Paso 4: Conectarse al BMC en remoto sin exponer la contraseña
Desde el equipo de administración, instala ipmitool y usa la interfaz lanplus (IPMI 2.0; la interfaz lan corresponde a IPMI 1.5, que no cifra). Evita la opción -P: la contraseña quedaría en el historial y visible en la lista de procesos. La opción -E la lee de la variable de entorno IPMI_PASSWORD:
read -rs IPMI_PASSWORD && export IPMI_PASSWORD
Escribe la contraseña (no se muestra) y pulsa Intro. Comprueba la conexión:
ipmitool -I lanplus -H 10.20.0.50 -U opsadmin -E mc info
La salida debe ser la misma que en el paso 1. En el resto de la guía, ipmi en los ejemplos equivale a ipmitool -I lanplus -H 10.20.0.50 -U opsadmin -E. Puedes definirlo como alias en tu sesión:
alias ipmi='ipmitool -I lanplus -H 10.20.0.50 -U opsadmin -E'
Paso 5: Controlar la alimentación
Consulta el estado de alimentación:
ipmi power status
Chassis Power is on
Estas son las acciones disponibles, de la más suave a la más brusca:
| Comando | Efecto |
|---|---|
ipmi power on | Enciende el servidor. |
ipmi power soft | Simula una pulsación corta del botón: el sistema operativo hace un apagado ordenado vía ACPI. |
ipmi power reset | Reinicio en caliente, como el botón de reset. No avisa al sistema operativo. |
ipmi power cycle | Corta la alimentación y la restablece tras unos segundos. |
ipmi power off | Corta la alimentación inmediatamente, sin apagado ordenado. |
Usa siempre power soft primero cuando el sistema operativo responde. reset, cycle y off equivalen a tirar del cable y pueden dejar sistemas de archivos o bases de datos en estado inconsistente.
Para arrancar una sola vez desde la red (por ejemplo, para reinstalar por PXE) y reiniciar:
ipmi chassis bootdev pxe
ipmi power reset
bootdev solo afecta al siguiente arranque; después el servidor vuelve a su orden de arranque normal. Las otras opciones habituales son disk, cdrom y bios (entrar en la configuración de la BIOS).
Paso 6: Leer sensores y el registro de eventos
El BMC mide temperaturas, ventiladores, tensiones y el estado de las fuentes de alimentación. Lista los sensores con su estado:
ipmi sdr elist
CPU1 Temp | 01h | ok | 3.1 | 48 degrees C
CPU2 Temp | 02h | ok | 3.2 | 51 degrees C
FAN1 | 41h | ok | 29.1 | 5400 RPM
PS1 Status | c8h | ok | 10.1 | Presence detected
PS2 Status | c9h | ok | 10.2 | Presence detected, Failure detected
La tercera columna indica si el sensor está dentro de umbrales. En el ejemplo, la fuente PS2 ha fallado aunque el servidor siga funcionando con PS1. Filtra por tipo cuando busques algo concreto:
ipmi sdr type Temperature
ipmi sdr type Fan
ipmi sdr type "Power Supply"
Para ver los umbrales de alerta de cada sensor, usa ipmi sensor list.
El registro de eventos del sistema (SEL) guarda errores de memoria ECC, fallos de fuente, sobretemperaturas y accesos al chasis, con fecha:
ipmi sel elist
1 | 09/12/2026 | 03:14:07 | Memory #0x87 | Correctable ECC | Asserted
2 | 09/12/2026 | 03:14:07 | Power Supply #0xc9 | Failure detected | Asserted
Los errores ECC corregibles repetidos en el mismo módulo son el aviso típico de que un DIMM va a fallar. El SEL tiene un tamaño limitado; cuando se llena, muchos BMC dejan de registrar. Guarda una copia antes de vaciarlo:
ipmi sel elist > sel-10.20.0.50-$(date +%F).txt
ipmi sel clear
Para alertas continuas, en lugar de un script propio usa un recolector: el exportador IPMI de Prometheus (prometheus-ipmi-exporter), Zabbix o el agente de monitorización que ya tengas, todos leen estos mismos sensores.
Paso 7: Usar la consola Serial-over-LAN
Serial-over-LAN (SOL) redirige el puerto serie del servidor a la red del BMC. Te da una consola de texto que funciona durante el arranque, en el menú de GRUB y cuando SSH no responde, sin necesidad de la consola gráfica (KVM) del fabricante.
Primero, en el servidor, envía la consola del kernel y de GRUB al puerto serie. La mayoría de BMC exponen SOL en el segundo puerto serie (ttyS1), aunque algunos usan ttyS0; consulta la documentación de tu placa. Edita la configuración de GRUB:
sudo nano /etc/default/grub
Modifica o añade estas líneas, manteniendo las opciones que ya tuviera GRUB_CMDLINE_LINUX:
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS1,115200n8"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --unit=1 --speed=115200 --word=8 --parity=no --stop=1"
--unit=1 corresponde a ttyS1; usa --unit=0 si tu BMC usa ttyS0. Regenera la configuración de GRUB:
sudo update-grub
Con console=ttyS1 en la línea de comandos del kernel, systemd arranca automáticamente un login en ese puerto ([email protected]) tras el siguiente reinicio.
Desde el equipo de administración, comprueba que SOL está habilitado y a la misma velocidad:
ipmi sol info 1
Enabled : true
Volatile Bit Rate (kbps) : 115.2
Non-Volatile Bit Rate (kbps) : 115.2
Payload Channel : 1 (0x01)
Payload Port : 623
Si Enabled es false o la velocidad no coincide, ajústalos:
ipmi sol set enabled true 1
ipmi sol set non-volatile-bit-rate 115.2 1
ipmi sol set volatile-bit-rate 115.2 1
Abre la consola y reinicia el servidor desde otra terminal para ver el arranque completo:
ipmi sol activate
Para salir de la sesión SOL pulsa ~. (virgulilla y punto) al principio de una línea. Si estás dentro de una sesión SSH, pulsa ~~., porque SSH captura la primera virgulilla. Si una sesión anterior quedó abierta y el BMC rechaza la nueva, ciérrala con ipmi sol deactivate.
Paso 8: Reducir la superficie de ataque del BMC
Aparte de aislar la red de gestión, revisa estos puntos en cada BMC.
Deshabilitar el cipher suite 0. Con el cipher suite 0 activado, el BMC acepta cualquier contraseña para un usuario válido. Comprueba si lo acepta intentando conectar con una contraseña falsa:
ipmitool -I lanplus -C 0 -H 10.20.0.50 -U opsadmin -P contraseña_falsa power status
Si devuelve el estado de alimentación, el BMC es vulnerable. El valor Cipher Suite Priv Max de lan print es una cadena de 15 caracteres, uno por cipher suite del 0 al 14: X lo deshabilita y a lo permite con nivel administrador. Pon una X en la primera posición manteniendo el resto como estaba. Con el valor del paso 2:
sudo ipmitool lan set 1 cipher_privs XaaaXXaaaXaaXXX
Repite la prueba con -C 0: ahora debe fallar. Las conexiones normales con lanplus usan el cipher suite 3 o 17 y siguen funcionando.
Deshabilitar el usuario anónimo y los de fábrica que no uses. El usuario con ID 1 y nombre vacío es el anónimo. Deshabilítalo, y también el administrador de fábrica cuando hayas comprobado que tu usuario funciona:
sudo ipmitool user disable 1
sudo ipmitool user disable 2
Advertenciaalgunos BMC no permiten deshabilitar el usuario de fábrica o lo necesitan para su interfaz web. Si prefieres no deshabilitarlo, cámbiale la contraseña con
sudo ipmitool user set password 2.
Actualizar el firmware del BMC. Las vulnerabilidades más graves se corrigen solo con actualizaciones del fabricante. Compara la Firmware Revision de ipmitool mc info con la última versión publicada para tu placa.
Solución de problemas
Could not open device at /dev/ipmi0. Los módulos del kernel no están cargados o el servidor no tiene BMC. Repite el modprobe del paso 1 y revisa sudo dmesg | grep -i ipmi.
Error: Unable to establish IPMI v2 / RMCP+ session. El BMC no es alcanzable (prueba ping 10.20.0.50 desde el equipo de administración) o el firewall bloquea UDP 623. Si el ping funciona, revisa que el usuario tiene IPMI Msg a true y privilegio suficiente con sudo ipmitool user list 1 en el servidor.
RAKP 2 message indicates an error : unauthorized name. El nombre de usuario no existe en el BMC. Si el error menciona HMAC, la contraseña es incorrecta.
El BMC no responde ni en local. Reinicia solo el BMC, sin afectar al servidor ni al sistema operativo:
sudo ipmitool mc reset cold
Espera uno o dos minutos antes de volver a conectar.
Conclusión
Con ipmitool puedes configurar la red y los usuarios del BMC, encender y reiniciar servidores en remoto, leer sensores y eventos de hardware y acceder a la consola aunque el sistema operativo no responda. Mantén los BMC en una red de gestión aislada, con usuarios propios, el cipher suite 0 deshabilitado y el firmware al día. Como siguientes pasos puedes integrar los sensores en tu monitorización con prometheus-ipmi-exporter, automatizar reinstalaciones combinando chassis bootdev pxe con un servidor PXE o gestionar la configuración de todos los BMC con Ansible.
