- Incluso después de que los servidores convergieran hacia hardware de propósito general similar al de una PC, la gestión fuera de banda para manejar fallas, arranque e instalación remota sigue siendo una función clave que distingue a clientes y servidores
- IPMI no es un nombre de producto, sino una especificación; los sistemas de gestión de cada proveedor, como HP iLO y Dell DRAC, se superponen con IPMI, pero tienen sus propias historias y funciones extendidas
- IPMI se ejecuta en el BMC y ofrece tanto interfaces fuera de banda basadas en red o puerto serial como interfaces en banda a través de controladores del sistema operativo
- Las implementaciones reales ofrecen UI web, SSH, VNC, comandos basados en UDP 623, consola remota, medios virtuales y control de sensores, energía, ventiladores y watchdog, pero son especialmente vulnerables a la exposición de seguridad
- Intel ME e Intel AMT son tecnologías similares del lado de las PC cliente, pero por las condiciones de AMT y vPro, la idea común de que en dispositivos de consumo es posible el acceso de red sideband generalmente no es correcta
Hasta que los servidores se volvieron “computadoras grandes”
- La computación cliente-servidor parte de la evolución de la computación de tiempo compartido, en la que varias terminales se conectaban a una sola computadora
- Las terminales no necesitaban tener la misma arquitectura que la computadora, y esa percepción continuó en los primeros sistemas cliente-servidor
- La revolución de la PC de mediados de los años 90 creó una monocultura WinTel del lado del cliente, pero hasta los años 2000 era común que los servidores usaran sistemas operativos y arquitecturas aparte
- La combinación de SPARC y Solaris se usaba ampliamente en servidores
- Las arquitecturas de minicomputadoras de IBM y varios sistemas operativos también fueron plataformas de servidor importantes
- Java contribuyó a las aplicaciones empresariales al permitir la reutilización de código entre backends Solaris/SPARC y clientes Windows/x86
- Con el tiempo, las arquitecturas dedicadas para servidores quedaron cada vez más en desventaja frente a la competencia de costo y rendimiento de la arquitectura de PC
- El software de servidor también pasó de centrarse en el escalado vertical y alta disponibilidad a priorizar el escalado horizontal y requisitos de confiabilidad más relajados, reduciendo la ventaja de las computadoras de clase empresarial
- Hoy, los diferenciales de los servidores están principalmente en SMP multisocket y NUMA, controladores y topologías de almacenamiento complejos, y funciones de gestión fuera de banda
Qué resuelve la gestión fuera de banda
- La gestión fuera de banda es la capacidad de acceder a un servidor mediante una computadora de gestión separada incluso cuando el sistema operativo o los componentes de propósito general no funcionan correctamente
- SSH es un ejemplo típico de gestión en banda provista por software sobre el sistema operativo
- La gestión fuera de banda está a cargo de una pila separada de hardware y software, y tradicionalmente no requería cooperación del sistema operativo ni de la CPU
- Hoy, esta función se ve con mayor claridad en la consola remota de los servidores
- Funciona como un IP KVM integrado, permitiendo operar el servidor como si tuviera conectados un monitor y un teclado locales
- La función de “medios virtuales” permite subir un archivo ISO para que aparezca como un dispositivo físico, lo que resulta útil para instalar sistemas operativos
- Estas funciones no son un concepto nuevo; pueden encontrarse capacidades similares a lo largo de la historia de la computación empresarial
- Los servidores relativamente modernos solían incluir varios niveles de funciones de gestión al mismo tiempo
- Interfaces locales de operador, como LCD o LED, que muestran el estado del hardware
- Consolas seriales para acceder al bootloader inicial y a sistemas persistentes de gestión de bajo nivel
- Sistemas de gestión de mayor nivel para administrar remotamente la carga de trabajo de la máquina
- Aun hoy se mantienen los indicadores de falla del panel frontal y las funciones de gestión serial, pero el alcance de las piezas redundantes intercambiables en línea es menor que antes
La relación entre IPMI y BMC
- IPMI no es un producto específico, sino la especificación Intel IPMI
- Los principales proveedores de servidores suelen tener sus propias implementaciones de IPMI, con nombres como HP iLO y Dell DRAC
- Algunos de estos sistemas existían antes que IPMI, por lo que llamarlos “simplemente IPMI” no es del todo preciso
- Los fabricantes más nuevos muchas veces usan tal cual la oferta estándar de proveedores de firmware y la llaman IPMI
- El software IPMI normalmente se ejecuta en un procesador llamado BMC (Baseboard Management Controller)
- Los términos IPMI y BMC a veces se usan indistintamente
- LOM (Lights-Out Management) es en general un término antiguo, pero sigue vigente porque HP(E) continúa usando el nombre Integrated Lights-Out
- El BMC debe distinguirse del SMC (System Management Controller), que en computadoras cliente se encarga de tareas como controlar la velocidad de los ventiladores
- Ambos componentes están relacionados históricamente
- En servidores, el BMC maneja la mayoría de estas funciones
- IPMI especifica dos métodos de acceso
- Una interfaz fuera de banda mediante red o conexión serial
- Una interfaz en banda a la que el sistema operativo accede mediante un controlador
- Gracias al acceso en banda, herramientas como ipmitool en Linux pueden interactuar con IPMI desde el sistema operativo en ejecución
- IPMI es un sistema de gestión independiente, pero también ofrece una interfaz local al sistema operativo por conveniencia; conocer esta estructura ayuda a reducir la confusión terminológica
Formas reales de usar IPMI y restricciones de seguridad
- Los productos IPMI ofrecen cada vez más funciones centradas en aplicaciones web
- Muchos productos tienen software cliente dedicado, pero la tendencia es trasladar funciones a aplicaciones web integradas
- La calidad de las interfaces web varía mucho según la implementación y, en general, no es buena
- La mayoría de los servidores tienen una interfaz Ethernet dedicada marcada como IPMI o management
- Por seguridad y confiabilidad, lo más recomendable es colocar la interfaz de gestión IPMI en una red física dedicada
- Debe seguir siendo posible acceder a IPMI aunque la red principal tenga problemas de rendimiento o estabilidad
- Una red física dedicada requiere tiempo, espacio y costo
- También es común el compromiso de configurar la red de gestión como una VLAN sobre equipos de red generales
- Funciona como una red privada independiente, pero el equipo físico se comparte
- El aislamiento se implementa por software
- Para evitar cables adicionales, IPMI también ofrece red sideband
- El BMC se comunica directamente con la misma NIC que usa el sistema operativo
- La NIC hace que parezcan dos interfaces distintas; el tráfico IPMI se mezcla en el mismo flujo de paquetes que el tráfico del host, pero usa una dirección MAC diferente
- La separación entre IPMI y el tráfico de aplicaciones se debilita, por lo que requiere consideraciones de seguridad
- Muchas implementaciones de IPMI han mostrado problemas de seguridad graves y no deben quedar accesibles para usuarios no confiables
- Las funciones de red varían según la implementación, pero en común se usa una interfaz estándar basada en UDP 623 para descubrimiento y comandos básicos
- SSH y las interfaces web son comunes, y VNC también se usa con frecuencia para la consola remota
- Las funciones básicas que pueden realizarse con IPMI incluyen:
- Consultar la lista de módulos de hardware a nivel de FRU o número de pieza del proveedor
- Controlar funciones básicas de hardware como sensores, estado de energía y ventiladores
- Usar un temporizador watchdog estándar
- El temporizador watchdog puede combinarse con software sobre el sistema operativo para reiniciar el servidor si una aplicación cae en un estado anómalo
- El tiempo límite del watchdog debe configurarse lo suficientemente largo como para permitir el arranque del sistema y el tiempo necesario para desactivarlo después de conectarse
Intel ME, AMD ST, AMT y las excepciones en PC cliente
- IPMI es común en servidores empresariales, pero raro en computadoras cliente generales o computadoras pequeñas y de bajo consumo
- Intel ME y AMD ST son excepciones cercanas a controladores de gestión OOB presentes en casi todos los procesadores Intel y AMD
- Intel ME es un componente que habilita Intel AMT (Active Management Technology)
- AMT fue un intento de popularizar la gestión fuera de banda en máquinas cliente y ofrece la mayoría de las funciones similares a IPMI
- AMT no tuvo gran éxito, principalmente porque Intel restringió la mayoría de sus funciones para usarlas junto con costosas plataformas de gestión empresarial
- Existen clientes AMT de código abierto, pero sigue el problema de encontrar máquinas en las que realmente pueda usarse AMT
- La gestión sideband de AMT generó preocupación en la comunidad de seguridad, pero en la práctica solo es posible si se cumplen todas estas condiciones:
- El procesador debe soportar AMT
- El chipset de la placa madre debe soportar AMT
- La NIC debe soportar AMT
- Los tres dispositivos están limitados a productos Intel con insignia vPro
- El solo hecho de que las NIC Intel no sean populares en dispositivos de consumo hace que el acceso sideband sea poco común
- vPro está limitado a procesadores y chipsets relativamente avanzados
- El “hecho” ampliamente difundido de que Intel ME puede accederse por red sideband en dispositivos de consumo normalmente no es correcto, y la razón no es solo la licencia del software de Intel
- Intel ME por sí mismo, sin AMT, casi no tiene funciones de gestión fuera de banda, pero parece usarse como una base conveniente para alojar y administrar componentes de ejecución confiable como Secure Boot y DRM
- Intel ME no puede ser auditado por terceros y en el pasado ha contenido vulnerabilidades de seguridad importantes
- Los SoC ARM modernos de consumo también tienen capacidades similares, por lo que no es un problema exclusivo de un proveedor x86 específico
1 comentarios
Opiniones de Hacker News
Hay algunas partes que no coinciden del todo con la información más reciente. Intel se quedó atrás frente a AMD en CPU/GPU en general, y solo destacan excepciones como la línea N100, que encaja bien en usos de bajo consumo y sin ventilador.
Por eso, los CPU Intel suelen comprarlos principalmente organizaciones que necesitan renovar un entorno existente con CPU del mismo fabricante; por ejemplo, cuando se usa algo como EVC de vSphere para hacer que un procesador nuevo se comporte como un modelo anterior del mismo fabricante, con el objetivo de permitir migraciones en caliente entre arquitecturas de CPU y minimizar interrupciones al reemplazar hardware.
Fuera de eso, el ambiente es que casi todos se están yendo a CPU AMD, que ofrecen mejor rendimiento por precio y son más baratos. Los NIC de Intel en general son buenos, y también se ven cada vez más en dispositivos de consumo. Pero hay una excepción: el X710, que aun estando en listas de compatibilidad “enterprise” como las de VMware, durante más de un año provocó fallas de red silenciosas o crashes por problemas de drivers.
Para organizaciones que compran servidores, Supermicro puede ser una buena opción en general. Es más barato, ofrece más flexibilidad en factores de forma, chasis, componentes y cantidad de slots, y suele ser confiable; pero su soporte es menos estable que el soporte teórico de Dell/HPE, así que encaja mejor en configuraciones redundantes.
Además, la especificación IPMI está siendo reemplazada por Redfish, que ofrece una API más completa, segura, estandarizada y razonable. Si es un servidor mainstream de los últimos años, es muy probable que tenga Redfish además de IPMI.
Hace poco, la firma de investigación de ventas en corto Hindenburg publicó un informe que exponía puntos sospechosos de Supermicro, pero el hardware en sí sigue siendo de primer nivel y también lo usan grandes proveedores de nube: https://hindenburgresearch.com/smci/
Sin soporte de suspensión ACPI, poco soporte para ventiladores de 4/3 pines, así que los de 3 pines corren siempre al 100%, una interfaz web de IPMI clavada en los años 2010, una disposición de NVMe que impide usar disipadores, y un montón de jumpers opacos sin etiquetas en la placa.
En cambio, una placa ASRock Rack de gama equivalente fue incomparablemente mejor.
https://arstechnica.com/security/2024/07/secure-boot-is-comp...
A medida que los procesos se vuelven más finos, los problemas de vida útil inevitablemente crecen, así que no sorprende demasiado. Problemas como defectos de electromigración pueden convertirse más fácilmente en un gran problema. Se dice que fue un problema de microcódigo que pedía voltajes excesivos a la placa madre, y eso también es cierto, pero también es verdad que los chips se vuelven más sensibles a cambios del entorno.
Antes me gustaban el rendimiento y la compatibilidad con Linux de los NIC de Intel, y también me gustaban los SSD de Intel. Pero había que saber leer que su rendimiento en el tramo P95~P99 era un poco mejor que el de productos competidores baratos, y justo ese P95~P99 era el momento en que uno se frustraba porque la computadora se sentía lenta. Una de las razones por las que me gustaba y a la vez me disgustaba Anandtech era que a menudo se le escapaba ese punto clave.
Si fuera open source, se podría compilar fácilmente.
https://www.supermicro.com/en/solutions/management-software/...
Solo para subir y reemplazar certificados —nombre del certificado, codificación, etc.— tengo un conjunto de módulos de Python para manejar las diferencias raras de cada proveedor. En teoría, debería bastar con unas cuantas solicitudes PUT estándar que funcionen en todas partes, y la documentación de la API de Redfish te hace creer eso, pero la realidad no es así.
Por eso me cuesta estar de acuerdo con que esté estandarizado o sea utilizable; es tan irritante como en la época de manipular directamente la interfaz web.
Una opción frente a la idea de que, si uno insiste en computadoras compactas o de bajo consumo, tiene que vivir sin IPMI, es usar una placa Supermicro MicroATX basada en Atom con IPMI y enfriarla silenciosamente con un ventilador Noctua pequeño en un chasis 1U de poca profundidad.
En casa uso un modelo viejo, y al ser silencioso y pequeño me pareció mucho más atractivo que los modelos Dell R2x0 que había visto. Tiene funciones de servidor como IPMI y RAM ECC, así que es mejor que una mini PC, y fue más estable que una RasPi floja.
Personalmente no conectaría el puerto IPMI a la LAN principal, pero aislado resultó bastante útil y también divertido para experimentar.
En mi placa puse un 5950X, aunque durante un tiempo también funcionó bien con un 5600G. Como es mATX/ATX, entra en gabinetes comunes y con fuentes de poder comunes, y no necesita rack.
Si quieres agregar funciones de acceso remoto a un equipo que no tiene IPMI, puedes probar algo como el NanoKVM RISC-V de 30 dólares
Ofrece captura y codificación HDMI, Ethernet/Wi‑Fi, control de energía ATX y ejecuta una distribución Linux común
https://www.aliexpress.com/item/1005007369816019.html
https://github.com/sipeed/NanoKVM
Funciona como teclado USB, mouse USB, una unidad flash USB donde se guarda una ISO de arranque para instalación o recuperación, y una NIC USB bastante buena
Esta NIC USB se puede usar desde la PC para exponer solo un puerto SSH de administración, así que se siente como si la PC tuviera una especie de interfaz IPMI dedicada. El software más reciente también incluye soporte para WireGuard y Tailscale, de modo que uno puede conectarse directamente por VPN
Todavía tiene problemas menores, pero los desarrolladores los están corrigiendo rápido
También se podría fabricar uno, pero soldar conectores USB‑C es realmente desagradable
Es otro KVM en el que no se puede confiar
A fines de los años 90 instalé varios servidores fabricados por Intel. Enviaban la plataforma de referencia de Intel como computadoras “barebone”, y el integrador agregaba la RAM y el almacenamiento; para la administración lights-out usaban LANDesk Server Manager Pro y la “Emergency Management Card” (EMC)
Eran equipos de la época Pentium Pro a los primeros Pentium II, como AP450GX, BB440FX y RC440FX
Pensando en que el código de referencia de las plataformas x86 nunca muere, muchas veces me pregunté cuánto de la estructura actual de IPMI proviene de ese hardware y software. La contraseña predeterminada de la Intel LANDesk Emergency Management Card era “calvin”, una contraseña que te resultará familiar si alguna vez trataste con los primeros Dell iDRAC. No creo que sea casualidad
Como dato, un empleado de Intel me dijo que el nombre en clave de la EMC era “Hobbes”, pero no pude encontrarlo documentado
Las versiones de la EMC aparecen a menudo en eBay, y existían tanto versiones ISA como PCI. Era una PC x86 sobre una tarjeta, y algunas o todas tenían un UPS integrado. Contaba con una ranura PCMCIA para agregar administración fuera de banda, una fuente de alimentación externa, y se conectaba a la motherboard del servidor mediante la interfaz de bus host de la tarjeta y conectores propietarios
Descargué y revisé el firmware de algunas versiones de la EMC, y algunas parecían máquinas DOS embebidas. Sigue siendo un proyecto de juguete que algún día quiero hacer, así que todavía no he hecho ingeniería inversa del código ni lo he ejecutado en qemu, pero me gustaría hacerlo
Terceros como Unisys, Fujitsu, ALR/Gateway y NCR, que vendían plataformas de referencia de Intel, también ofrecían esta tarjeta. Si la ves en una publicación de venta, es una buena pista de que se trata de una plataforma de referencia de Intel, y las referencias a “LDSM” también son una pista
Si alguien conoce esta genealogía, sería realmente interesante
https://www.intel.com/pressroom/archive/releases/1998/ld1030...
https://web.archive.org/web/20240903131630/https://www.ebay....
Intel ME y AMD PSP cumplen un papel importante en llevar la CPU a un estado parecido al de una PC x86 en el que el firmware del host pueda ejecutarse de verdad
La complejidad de inicialización se volvió tan alta que, en vez de escribir toda la lógica en ensamblador con limitaciones extrañas como el código de arranque inicial de los BIOS tradicionales, tiene más sentido manejarlo en software sobre un núcleo embebido separado y dócil, programable en C
En algunos HPE ProLiant, parece que iLO realmente realiza parte de esta inicialización de bajo nivel. En esa etapa de arranque, iLO también controla directamente el framebuffer, y en los G10 se ve brevemente un mensaje del estilo “entregando la consola al host”; luego la pantalla se reinicializa y aparecen las indicaciones de las teclas de función
Dell probablemente haga algo parecido, pero en las etapas iniciales solo muestra “Please wait” y un indicador de carga grande, sin mostrar el progreso
IPMI y otras soluciones están bien, pero lo que siempre quiero es una interfaz serial estándar hacia una shell UEFI que esté siempre en ejecución. Cómo acceder a ese puerto serial ya es problema mío
ExitBootServices()El código literalmente se saca de la RAM y esa región se devuelve al sistema operativo, así que no es fácil de implementar
Las consolas remotas BIOS/UEFI siempre fueron complicadas y con resultados muy variables. Para alinear bien la entrada y salida, a menudo había que tocar la configuración de GRUB o del kernel
IPMI es útil, pero deja muy claro que no se puede confiar en que las empresas comerciales den soporte adecuado al hardware a largo plazo.
El sistema operativo que corre en IPMI suele ser relativamente seguro cuando el sistema es nuevo, pero cuando aparece un nuevo socket de CPU, los fabricantes van perdiendo cada vez más interés en actualizar los sistemas antiguos. Esto ocurre incluso si el mismo hardware IPMI está presente tanto en placas viejas como nuevas.
Si se pudiera instalar un sistema operativo propio en el hardware IPMI, sería mucho más útil. Así podría ser seguro conectarlo directamente a internet. Hoy se necesita comunicación sideband como VPN, reenvío de puertos SSH o un segmento de red separado, lo que termina agregando mucho hardware y configuración solo para dar soporte a IPMI.
En instalaciones grandes, el costo adicional se distribuye bien, pero en instalaciones pequeñas es una carga considerable. Si se trata de colocar un solo equipo en colocation, ni siquiera vale la pena.
Como no se puede exponer IPMI directamente a internet de forma segura, al final terminé conectando algún tipo de Pi a cada equipo. Con eso, usar el puerto serial es igual de fácil, o incluso más. Al final es volver al control estándar por puerto serial que existía desde la época de VAX, Sun y Alpha, y cuanto más lo pienso, más sentido tiene frente a una interfaz de red insegura.
Para despliegues más pequeños, por ejemplo de unos 10 mil núcleos, lo construiría directamente a través de un integrador.
Con una placa base Gigabyte/ASRock Rack, serie Epyc 9003, 384 GB de RAM y una configuración común de fuentes de alimentación redundantes, el costo ronda los 7 mil dólares por nodo y la eficiencia energética puede ser bastante buena.
El IPMI integrado también es bastante decente, funciona bien con
ipmitooly normalmente incluye también cierta funcionalidad relacionada con Redfish.Me encanta IPMI, pero lo que no me gusta para uso de homelab es que consume unos 5 W más en reposo.
La combinación de una placa Gigabyte MC12-LE0 con un Ryzen Pro 5650 parece una opción obvia para un servidor doméstico por unos 50 dólares, pero el mayor consumo de energía no me convence del todo.
Equipos antiguos como los Dell T20/T30 tienen Intel AMT, que es mucho más limitado en funciones y también tiene fallas de seguridad, pero usado con MeshCommander al menos permite alguna forma de administración remota. Lamentablemente MeshCommander fue discontinuado y sus releases desaparecieron de varios lugares, pero por suerte guardé el MSI y el paquete de Node en el servidor.
Planeo probar PiKVM V2 con una Raspberry 4 y una tarjeta sencilla de captura USB-HDMI de 8 dólares: https://docs.pikvm.org/v2/
Salvo por la falta de algunas funciones, parece prometedor porque puede usarse de forma más universal incluso con dispositivos que no soportan administración remota en absoluto.
Dudo que un BMC, a veces integrado en la NIC, realmente consuma tanto. Además, si se usa una Raspberry 4 para PiKVM, pasará de los 5 W.
https://github.com/sipeed/NanoKVM
No lo he probado, pero parece que el sucesor apuntado es https://meshcentral.com/
La gran pregunta con IPMI es cuáles son las claves predeterminadas.
Si en algún punto de la cadena de suministro alguien instala claves IPMI adicionales, o si existen claves predeterminadas, esa persona puede administrar la computadora de forma remota.
https://www.rapid7.com/blog/post/2013/07/02/a-penetration-te...
IPMI también limita la longitud máxima de la contraseña a 20 caracteres. En la práctica, hay que asumir que el hash solo se mantiene secreto frente a pentesters conocidos que trabajan dentro de un período contractual limitado, pero no frente a atacantes reales con tiempo ilimitado.
Soy muy crítico con esta parte. Ya pasaron 20 años desde que entró en la especificación. ¿No se supone que una ventaja del software es que es más fácil de cambiar que el hardware? Es fácil decir “hay que ponerlo en una VLAN”, pero cuando uno sale a hacer evaluaciones, IPMI casi siempre está conectado a la red corporativa.
Si se ponen valores predeterminados tontos, se extienden configuraciones tontas por todo el mundo, incluyendo el momento en que cualquier empresa sin administradores de seguridad capacitados “compra un servidor”.