--- title: "Gestión remota de servidores con IPMI e ipmitool en Linux" description: "Gestiona servidores físicos por IPMI con ipmitool: red y usuarios del BMC, encendido, sensores, registro de eventos, consola Serial-over-LAN y bastionado." category: "Gestión de Hardware y Sistema" language: es source: https://cubepath.com/es/docs/gestión-de-hardware-y-sistema/gestion-remota-de-servidor-con-ipmi updated: 2026-09-25 --- # Gestión remota de servidores con IPMI e ipmitool en Linux 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 `sudo` en ese servidor. - Un equipo de administración con Ubuntu 24.04 (o cualquier Linux) con acceso de red al puerto UDP `623` del 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. > Advertencia: nunca 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: ```bash 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: ```bash 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: ```bash ls /dev/ipmi0 sudo ipmitool mc info ``` ```output 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`: ```bash sudo ipmitool lan print 1 ``` ```output 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: ```bash 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): ```bash sudo ipmitool lan set 1 vlan id 112 ``` > Importante: si 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: ```bash sudo ipmitool user list 1 ``` ```output 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`: ```bash 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): ```bash 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: ```bash sudo ipmitool user list 1 ``` ```output 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`: ```bash read -rs IPMI_PASSWORD && export IPMI_PASSWORD ``` Escribe la contraseña (no se muestra) y pulsa Intro. Comprueba la conexión: ```bash 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: ```bash 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: ```bash ipmi power status ``` ```output 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: ```bash 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: ```bash ipmi sdr elist ``` ```output 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: ```bash 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: ```bash ipmi sel elist ``` ```output 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: ```bash 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: ```bash sudo nano /etc/default/grub ``` Modifica o añade estas líneas, manteniendo las opciones que ya tuviera `GRUB_CMDLINE_LINUX`: ```ini 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: ```bash sudo update-grub ``` Con `console=ttyS1` en la línea de comandos del kernel, systemd arranca automáticamente un login en ese puerto (`serial-getty@ttyS1.service`) tras el siguiente reinicio. Desde el **equipo de administración**, comprueba que SOL está habilitado y a la misma velocidad: ```bash ipmi sol info 1 ``` ```output 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: ```bash 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: ```bash 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: ```bash 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: ```bash 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: ```bash sudo ipmitool user disable 1 sudo ipmitool user disable 2 ``` > Advertencia: algunos 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: ```bash 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.