On s’amuse avec IPMI

AOC-IPMI20-E-copyright-supermicroJ'ai passé un week end plutôt divertissant en compagnie d'IPMI. Tout a commencé avec la lecture d'un article édifiant sur arstechnica.com présentant IPMI comme un parasite, une sangsue.
J'ai toujours su instinctivement que l'IPMI pouvait, quelque part, poser un souci en terme de sécurité. Mais jamais je n'aurai imaginé que la situation fût aussi dramatique.
Les failles sont à tous les niveaux, tant dans le protocole IPMI, que dans les implémentations semi-propriétaires des fabricants. Elles sont dans les logiciels utilisés, elles sont dans le verrouillage que les fabricants imposent aux BMC, les rendant impossible à auditer, etc. Sysadmin de tout poil, je vous invite fortement à lire l'article d'Ars, et les proses de Dan Farmer et HD Moore.

Bref, j'ai tout lu, et disposant d'exemplaires HP et SuperMicro, j'ai tenté moi-même d'exploiter les failles décrites. Je ne rentre pas dans les détails, tout est déjà très bien expliqué dans la littérature sus-mentionnée. Par contre je vais donner quelques pistes pour l'installation des outils sous FreeBSD.

ipmitool, l'outil de base doit être installé avec FreeIPMI, sinon les manipulations permettant d'exploiter les BMC vulnérables ne fonctionneront pas. Sous FreebSD on peut simplement utiliser les ports :

# cd /usr/ports/sysutils/ipmitool
# make install clean
On active l'option "FREEIPMI" dans la configuration, et c'est parti.

On active l'option "FREEIPMI" dans la configuration, et c'est parti.

Ensuite il est possible d'installer metasploit, outils puissant et complexe. Pour gagner du temps, et si vous ne souhaitez pas approfondir l'usage de ce logiciel, vous pouvez décocher l'option "DB" au moment de l'installation du port :

# cd /usr/ports/security/metasploit
# make install clean

Si vous souhaitez jouer un peu avec les outils et scripts développés par Dan Farmer, vous devrez installer en plus le module perl CaptureOutput.pm, nécessaire au fonctionnement de rak-the-ripper.pl :

# cd /usr/ports/devel/p5-IO-CaptureOutput
# make install clean

Si vous avez en plus une machine disposant d'une BMC qui tourne sur FreeBSD, voici ce qu'il faut faire pour accéder à ce contrôleur parasite via ipmitool :

# kldload ipmi

Cela charge le module ipmi, si ce n'est déjà fait. Vous aurez quelque chose de ce style dans la sortie de dmesg -a :

ipmi0: <IPMI System Interface> port 0xca2,0xca3 on acpi0
ipmi0: KCS mode found at io 0xca2 on acpi
ipmi0: IPMI device rev. 1, firmware rev. 2.35, version 2.0
ipmi0: Number of channels 2
ipmi0: Attached watchdog
ipmi1: <IPMI System Interface> on isa0
device_attach: ipmi1 attach returned 16

Et vous pourrez ensuite vous livrer à toutes sortes d'expériences en local (donc une fois de plus sans authentification…).
La prudence veut que vous désactiviez immédiatement ce module ensuite :

# kldunload ipmi

même si, ne nous voilons pas la face, ça retarderait juste de quelques dizaines de secondes un éventuel attaquant.

Mettez bien à jour le firmware de vos BMC. Et quand je dis bien à jour, c'est très sérieux, puisque des firmwares récents chez HP (juin) ne corrigent pas l'énorme faille du Cipher-0. Il faut utiliser le firmware 1.60 publié fin juillet pour avoir une chance de corriger cette faille de sécurité.

À vendre : serveur bi Xeon dual core low voltage

Je vends mon ancienne passerelle internet (serveur maison, routeur…), puisque je l'ai remplacée il y a quelques temps par un modèle plus compact.

C'est un boitier tour ATX noir, contenant :

  • 1 carte mère serveur Tyan Tiger i7520SD S5365 bi processeur ;
  • 2 processeurs Intel Xeon LV dual core "sossaman" 1,67 GHz ;
  • 1 carte WIFI DLink DWL-G520, chipset Atheros ;
  • 1 Go de RAM ;
  • 1 alimentation hybride NX-9003 SFB 350W ;
  • 1 lecteur CD.

La carte dispose d'un slot Compact Flash, idéal pour booter un OS léger. La ventilation silencieuse est à base de Nexustek.

Le matériel est robuste, conçu pour tourner 24/24. C'est une configuration 100% compatible FreeBSD/Linux, idéale pour un serveur "maison" multi-usage, une passerelle internet, ou une station Linux/Unix.
Les processeurs Intel Xeon LV dual core "sossaman" ont une enveloppe thermique de 35W, permettant un refroidissement passif.

LOT COMPLET : 350 euros, remise en mains propres uniquement
LOT PARTIEL (carte mère, 2 CPU, RAM, radiateurs) : 300 euros.

carte-tyan-tiger-a-vendre

Relia Fanless Industrial PC : fanless oui, industriel pas trop.

Depuis un moment, pour des raisons de silence et surtout d'encombrement, je voulais remplacer mon routeur (une tour ATX avec ventilation relativement silencieuse) par un boitier compact sans ventilateur. Les conditions à remplir étaient les suivantes :

  • ventilation passive,
  • puissance CPU d'actualité, et 64bits
  • 2 ports ethernet, grand minimum,
  • WIFI,
  • port série,
  • 2 emplacements pour disque dur, grand minimum,
  • ne pas coûter un bras.

En cherchant des petits PC fanless "industriels" je suis tombé sur Aleutia, qui propose le modèle Relia. Celui-ci rempli approximativement le cahier des charges. Surtout, les gens chez Aleutia ont bien assuré l'avant-vente, répondant à mes nombreuses questions avec rapidité et précision. Pour la somme pas vraiment négligeable de 848,32 euros j'ai :

  • un mini PC sans ventilateur,
  • Core i3 2.8 GHz,
  • 8 Go de RAM,
  • carte Wifi/Bluetooth avec deux antennes de 30cm,
  • (seulement) 2 ports ethernet,
  • SSD de 64 Go mini-PCIe,
  • 2 emplacements pour disques durs de 2,5".

Aleutia Reliacrédit photo : Aleutia

Comme l'engin n'a que 2 ports ethernet, il m'a fallu ajouter un mini switch ethernet silencieux (Netgear GS105E) pour 25 euros de plus. J'ai aussi monté dans le boitier 2 disques HGST Travelstar 7K1000 en SATA III, 1To chaque.
Montant total : 1032 euros et 19 cents.

Sur le plan physique, je suis satisfait de mon achat. L'alimentation externe est petite et discrète et le PC est compact, très robuste, d'un beau noir mat. Il est incontestablement d'aspect industriel, à tel point que je ne laisserai pas des gamins jouer avec : en le manipulant on peut se faire mal sur les angles des radiateurs latéraux. Il est livré dans la boite d'origine du fabricant Streacom.

Sur le plan du silence par contre, on repassera. La machine émet une sorte de couinement aigu, d'intensité variable et inversement proportionnelle à la charge CPU. Ce bruit d'origine électronique est désagréable, car il porte loin et que j'y suis sensible. Moralité, pas besoin de ventilateur pour polluer l'ambiance. Par dessus, j'ai rajouté les deux disques qui font, même inactifs, un léger bruit de ventilateur.

À l'intérieur ça se corse. La carte mère est un simple modèle de bureau, la Intel DQ77KB. Et ça, ce n'est pas une bonne nouvelle (même si je le savais avant d'acheter). Pour faire simple, et court, je découvre les joies des "interrupt storms", des chipsets qui font tout sauf le café, et qui donc ne font pas forcément bien le travail. Je me retrouve aussi face à un BIOS pas très robuste et manquant de souplesse.
Il n'y a que sur une carte mère grand public que le système d'exploitation peut perdre les pédales quand on branche un écran. Là où une carte de serveur aurait une électronique bien mieux cloisonnée, et un simple port VGA bien robuste, on a ici sans doute trop de gadgets sur la même ligne d'IRQ. Au hasard : l'IRQ 16 c'est 6 ports USB3 et USB2, un port Displayport et un port HDMI.
Alors bien sûr, il y a vraisemblablement un bug du côté de FreeBSD, mais avec une carte mère Tyan ou Supermicro, je n'aurais eu aucun problème. Résultat, le port HDMI est totalement inutilisable, sauf en cas d'urgence. C'est une machine headless, donc j'en fais le deuil, mais c'est pénible.
Autre souci, et non des moindres : la carte Wifi vendue avec le Relia est une Intel Centrino Advanced-N 6230. Elle fonctionne, mais elle ne permet pas la création d'un point d'accès (mode hostap). C'est uniquement dans ce but que j'ai besoin d'une carte Wifi. Je dois donc trouver une alternative compatible hostap, qui rentre dans un slot half-mini PCIe. Je cherche encore...
Et pour finir, les câbles SATA fournis par Aleutia ont des prises droites, qui s'avèrent problématiques pour brancher les disques sur les ports SATA III. Heureusement, j'avais des câbles coudés en réserve.

Comme évoqué plus haut, Aleutia a bien assuré la phase d'avant-vente. Par contre, l'après-vente est très décevante. J'ai contacté une fois le support technique : pas de réponse. J'ai donné des info à l'ingénieur avant vente au sujet de la compatibilité de la carte Wifi avec le mode hostap : pas de réponse. En gros, j'ai le sentiment qu'une fois qu'on a payé, on n'est plus trop intéressant pour eux.

Un peu de positif tout de même : j'ai pu installer assez facilement FreeBSD 9.1 sur le SSD, intégralement sur ZFS (même le swap). Les deux disques durs, dont on me reprochera le fait qu'ils ne sont pas très fiables, servent à stocker mes sauvegardes d'autres machines. J'ai donc volontairement choisi un bon rapport volume/prix, la fiabilité est un peu secondaire. Ils sont aussi formatés en ZFS avec un alignement de 4K.
Je constate néanmoins des soucis de performance. Si j'envoie un gros volume de données entre un des disques et le SSD, la charge CPU monte facilement à 15-20, et je peux perdre la main jusqu'à la fin du transfert. La compression gzip que j'utilise sur de nombreux volumes est sans doute en cause.

Le bilan est plus que mitigé. Le Relia remplace un PC bi xeon LV dual core (Sossaman 32 bits), carte mère Tyan, avec 3 ports ethernet et une carte Wifi en access point. Certes il prenait de la place, et était ventilé, mais il avait aussi un port série pour le branchement de ma sonde de température et mon lecteur de iButton. Finalement, je gagne ZFS sur du 64bits, et je multiplie ma RAM par 8, je supprime une tour du salon, mais pour le reste je ne me sens pas gagnant !

3 mois avec un fitbit One

Depuis trois mois, je transporte un tracker fitbit One, presque en permanence. Ce petit gadget est équipé entre autres de nombreux accéléromètres, d'une batterie, d'une mémoire et d'un peu d'intelligence. Il permet essentiellement de mesurer vos mouvements, qui sont décomposés par le logiciel en pas et extrapolés en kilomètres parcourus, étages montés, calories brûlées, etc.
La nuit il permet aussi de suivre votre sommeil. Le fitbit One est vendu avec un bracelet ressemblant à une bande de tissus dans le quel l'appareil vient se loger. Ainsi vous connaitrez le lendemain le détail de votre agitation nocturne, et vous pourrez aussi vous faire réveiller par son mode vibreur.
fitbit_badgesJe dois bien avouer que ce petit tracker est assez ludique. Le site du fabriquant sert à paramétrer son appareil en lui donnant un nom, en réglant les dates et heures des alarmes, etc. Il permet aussi et surtout d'extraire et de visualiser les données enregistrées au travers d'un dongle bluetooth dédié. Et ces données vous permettent de gagner des badges virtuels récompensant votre dépense énergétique. Malheureusement, quand on mène une vie plutôt sédentaire, l'aspect ludique s'étiole assez vite, à mesure que les badges sont de plus en plus inaccessibles. Avec une moyenne hebdomadaire de 3000 pas, j'ai pu obtenir le badge "20000 pas en une journée" dans un contexte tout à fait particulier. Je n'envisage pas d'occasion qui pourrait me permettre d'atteindre les 25000 pas sur une journée dans les mois qui viennent. L'aspect communautaire de fitbit.com est tout à fait négligeable en ce qui me concerne, même si faire la course aux stats avec pioupioum est toujours marrant. Continue reading

Quelques jours avec le Nexus 4

IMG_2870 Comme évoqué précédemment, j'ai baissé ma garde, et paf, je me retrouve avec un smartphone Google Nexus 4. Bien sûr, c'est rarement par hasard qu'on met un script shell dans une crontab pour tester toutes les 5 minutes le réassort d'un modèle de téléphone sur le site du distributeur… Je peux difficilement invoquer l'accident.
Je passe sur les spécifications techniques du bazar. Ce qui compte c'est que ce téléphone est mon premier modèle moderne. Mon outil précédent était un Nokia 3100, presque 10 ans d'âge, obtenu à l'époque pour 1 euro avec un forfait d'entrée de gamme, et fonctionnant encore parfaitement. En payant 300 fois plus cher ce Nexus, je sais déjà qu'il ne vivra pas aussi longtemps. La Sainte Obsolescence, tout ça. Mais passons.
La première expérience avec un smart phone est quelque chose de troublant. Un truc auquel on ne pense jamais par exemple, c'est la manière dont le téléphone rétréci en une poignée de jours. Fraîchement reçu et déballé, l'engin me semblait énorme, mal commode, encombrant en comparaison de mon fidèle 3100 qui tient très bien au creux de ma main. Après quelques jours, il n'est plus si gros que ça, il tient un peu mieux en main. Et surtout, plus on l'utilise plus on trouve que l'écran est trop petit.
Question ergonomie, je suis plutôt satisfait par la version d'android fournie. C'est propre, plutôt bien foutu, et même sans manuel utilisateur j'ai trouvé mes repères assez rapidement. J'ai plus de difficultés avec le matériel par contre. Sans coque de plouc pour protéger les télécommandes, le téléphone est assez glissant, très lisse, et le tout-tactile ne laisse aucune indication sous les doigts. Je pense que j'aurai apprécié une fine bande antidérapante sur la tranche Mon téléphone me signale qu'il a une bande légèrement antidérapante sur les côtés, mais je dois bien avouer que ce n'est pas du tout comme ça que je l'imaginais, donc ça ne compte pas.
Étant un peu photographe, je me suis immédiatement intéressé au rendu des couleurs. Le résultat est très décevant, surtout face à mon écran calibré. Les photos sont verdâtres. Par contre, prise sans référence extérieure, l'image reste agréable. Et là, je tiens une vraie valeur ajoutée : maintenant j'ai mon book dans ma poche. C'est assez appréciable quand je veux parler de ce que je fais sans avoir mon site web sous la main. L'appareil photo quant à lui est de piètre qualité, mais je n'ai pas encore mesuré à quel point, ne l'ayant pas testé en extérieur à la lumière du jour. Je dois aussi voir si il est utilisable en conjonction avec mon Ranger Quadra.
Globalement, je suis satisfait, mais pas spécialement emballé. Mon opinion générale sur les smart phones n'a pas vraiment changé (c'est cher, ça ne sert pas à grand chose, et c'est largement sous-dimensionné pour ce à quoi je voudrai l'employer). Pour moi qui n'ai pas de forfait data, les vrais gains sont : le clavier pour les sms, les galeries photos pour avoir mon book dans ma poche et le GPS couplé aux cartes google map enregistrées en local (parce que même le lichen a un meilleur sens de l'orientation que moi).

Pas malin

Voilà, je viens de donner un accès illimité à mes données personnelles, mes contacts, mes photos, mes sms, mon historique de navigation, et j'en passe, à une entreprise américaine qui n'a pas grand respect pour la vie privée et dont les pratiques me répugnent presque autant que celles de Facebook. Je suis géolocalisable une bonne partie du temps, j'ai autorisé des logiciels à accéder et modifier mes données de manière non documentée. J'ai mis pas mal d'argent dans un appareil moderne qui consomme tellement qu'il a autant d'autonomie qu'un modèle de 10 ans d'âge avec sa batterie d'origine, en prime je tue des ours polaires parce qu'il n'est pas démontable (sans doute pas réparable) et que la batterie n'est pas remplaçable par l'utilisateur. Il n'est pas extensible et sera sans doute périmé dans moins de 3 ans. Son client mail par défaut ne sait pas faire de l'authentification CRAM-MD5, et bien sûr je ne peux rien synchroniser directement à partir de mon ordinateur, tout doit être stocké sur et transféré via des serveurs américains.
Bref, j'ai un Google Nexus 4.

Mac OS X on VMware ESXi: hardware challenges

I've decided to try and build a virtualized workstation that would allow me to use multiple OSes on top of my Mac Pro. That's no piece of cake, because it mainly boils down to using a professional hypervisor optimized for hardware abstraction and headless operation as a power-user workstation with full hardware access and as much GPU power as possible. It does not look like something that has a bright future, does it?

After some experiment I have a pretty good idea of what is possible and what is not possible. Lets compare the Mac Pro's hardware and what you can access from within a virtual machine running in ESXi on the same Mac Pro:

Mac Pro VM
CPU Full power with HT No HT, number of cores depends on the VM setup, but frequency can be lower than expected.
Running OS X 10.8 I got 2.66 GHz in the VM despite the 2.8 GHz Xeon
RAM Full RAM Depends on the VM setup, but if you use device passthrough, you must reserve the full amount of RAM, meaning you lose the ability to share unused RAM with other VMs. If you are a virtualization expert you know it's not good.
SATA Full access Possibility of raw device mapping
USB Full access, plug & play Passthrough available but limited: no keyboard and no mouse. Probably no plug & play either. Tested with logitech headphones: flaky sound with kernel log message complaining about a problem in USB driver, any app (itunes, chrome...) won't play sound any longer than 2 or 3 seconds before shutting down the sound output.
Bluetooth Full access none pseudo-passthrough available via USB devices, not tested.
Wifi Full access Passthrough possible, but not tested
LAN Full access Passthrough possible, not tested. Otherwise access via the virtual network stack of the hypervisor, works well.
Firewire Full access, plug & play none.
Graphics card Full access Passthrough possible, with a performance drop.
Some softwares will just not work, see last part of this post for details.
DVD Full access Passthrough possible, not tested.
Access via VCenter possible.
Optical sound output Full access none Passthrough of the Intel HD sound controler possible, but playback is out of sync, and so flaky it's unusable. On windows the sound device application commits suicide, on OS X the sound output is not even available.

This chart means important things. Running a virtualized Mac OS X workstation on top of ESXi will prevent me from:

  • using 100% CPU power (not that important)
  • using 100% of my RAM (not that important)
  • using 100% of my already limited GPU power (kind of important)
  • plug in USB devices like thumbdrives (important)
  • plug in Firewire devices like my CF-card reader (important)
  • accessing bluetooth device (I don't care)
  • using my optical Edirol MA-15D or any other good speaker (important)

Lets face it, those limitations alone could bring my project to a halt. I don't want a crappy workstation, and if virtualization is not the way to go, I might go the other way around and buy a small PC for every other OS I want to run. Even if it defeats the all-in-one purpose of the virtualization, it would allow me full access to each hardware resources.

Below, the "About this Mac" dialog featuring the VM on top and the real Mac Pro under.

comparison of about this mac dialog between OS X VM, and OS X running on the Mac Pro

Even simple hardware features are not well recognized, but it's enough for the average user experience. The GPU passthrough allows decent full screen 1080p HD video playback from youtube, and many games should work too. Unfortunately Valve's games won't work (Left 4 Dead…) as they make use of some framework that fails on Virtualized hardware.

hl2_osx[772]: -[__NSCFString bytes]: unrecognized selector sent to instance 0x2827350
hl2_osx[772]: An uncaught exception was raised
hl2_osx[772]: -[__NSCFString bytes]: unrecognized selector sent to instance 0x2827350
hl2_osx[772]: (
 0   CoreFoundation      0x988b212b __raiseError + 219
 1   libobjc.A.dylib     0x9545352e objc_exception_throw + 230
 2   CoreFoundation      0x988b5d9d -[NSObject(NSObject) doesNotRecognizeSelector:] + 253
 3   CoreFoundation      0x987fe437 ___forwarding___ + 487
 4   CoreFoundation      0x987fe1e2 _CF_forwarding_prep_0 + 50
 5   CoreFoundation      0x9878d720 CFDataGetBytePtr + 80
 6   launcher.dylib      0x0041c955 _ZN12GLMDisplayDB17PopulateRenderersEv + 2005
 7   launcher.dylib      0x00418607 _ZN12GLMDisplayDB8PopulateEv + 23
 8   launcher.dylib      0x0041b18f _ZN9CCocoaMgr12GetDisplayDBEv + 159
 9   shaderapidx9.dylib  0x0b28fb47 _ZN10IDirect3D921GetAdapterDisplayModeEjP15_D3DDISPLAYMODE + 55
 10  shaderapidx9.dylib  0x0b2db946 _ZNK19CShaderDeviceMgrDx818GetCurrentModeInfoEP19ShaderDisplayMode_ti + 38
 11  engine.dylib        0x05dbdeaa _Z14Shader_Connectb + 122
 12  engine.dylib        0x05f1232a _ZN10CEngineAPI7ConnectEPFPvPKcPiE + 106
 13  launcher.dylib      0x004151c3 _ZN15CAppSystemGroup9OnStartupEv + 115
 14  launcher.dylib      0x00415575 _ZN15CAppSystemGroup3RunEv + 37
 15  launcher.dylib      0x00415598 _ZN15CAppSystemGroup3RunEv + 72
 16  launcher.dylib      0x0041d202 _Z18MainFunctionThreadPv + 82
 17  launcher.dylib      0x0041d56c ValveCocoaMain + 140
 18  launcher.dylib      0x0040ca61 LauncherMain + 673
 19  hl2_osx             0x00001d26 start + 54
 )

I've discovered that the [__NSCFString bytes]: unrecognized selector sent to instance error affects also Hackintosh users, ie. people running Mac OS X on top of non-Apple hardware.

Next step: try Valves games on the Windows VM, with GPU passthrough.

Mac OS X Benchmark: native vs virtualized, part 2

I've been really disappointed by my last benchmark of a virtualized Mac OS X running on top of ESXi with graphics card accessed in passthrough mode. So disappointed in fact that I had to make new tests.
This time, I've decided to ditch the six years old XBench, and to use proper video benchmarking tools: Geeks3D GpuTest, and Cinebench. And guess what? Thats better.
To run those tests, I've had to install OS X 10.8.2 because Geeks3D GpuTest doesn't run on Mac OS X 10.6.8. So I dedicated a SATA HDD on my Mac Pro to a fresh install of 10.8.2, created a VM with it and ran both benchmarks, once from the Mac Pro booted from OS X, once from the OS X VM.

In the chart bellow you can find FurMark and GiMark tests results for a native OS X system running on the Mac Pro, and for the exact same system running as a VM on top of ESXi hypervisor. No tuning was done, I've used the default settings for every benchmarks.

Geeks3D GpuTest Native VM
FurMark (AvgFPS / Score) 47 / 2845 47 / 2872
GiMark (AvgFPS / Score) 33 / 2000 7 / 446

FurMark scores the same frame rate on VM and on native OS X. But GiMark is not good at all, with a VM score 4.5x lower than reference.

Cinebench's results are quite interesting too:

Cinebench Native VM
CORES 4 4
LOGICALCORES 2 1
MHZ 2800 2663
CBCPUX 5.038354 3.797552
CBOPENGL 32.284100 27.319487

VM results are quite close from reference, but the CPU frequency is reported as 2.663 GHz instead of 2.8 GHz, and the VM has only 4 CPU threads, instead of 8. This explain the CPU performance drop between native and virtualized OS X. The OpenGL score is quite good, showing only a 15.4% drop.
We are very far from the 87% drop on XBench's OpenGL test.

On the left side the native OS X, on the right side the virtualized OS X:
Cinebench results for OS X 10.8.2 native vs virtualized