Sommaire
Bonsoir nal,
Il y a quelques semaines, je fus victime d’un odieux larcin, mon PC portable pro a été dérobé (cher voleur, tu peux faire un git push
de mes devs ferroviaires ?). Donc nouveau PC portable pro, installation de Debian, et toute la phase rigolote de sécurisation de la machine.
Je vous passe l’installation de Debian (LUKS, SELinux, nftables…), on va se concentrer ici sur les firmwares.
1er firmware : le microcode du processeur
Comme vous le savez peut‐être, les processeurs x86 ne parlent plus directement x86 dans le silicium, mais utilisent un microcode, avec une couche de traduction des instructions, un ordonnanceur pour l’exploitation efficace des différentes parties du processeur, tout un bazar pour la gestion de l’énergie… Et tout ça, c’est un logiciel, le microcode, qu’il convient de mettre à jour pour corriger des bogues ou des failles de sécurité (trouver un lien).
Sous Debian, cette étape est facile : apt install intel-microcode
puis un redémarrage, il met à jour le microcode et on n’en parle plus.
Donc passons à la partie rigolote : l’UEFI…
2e firmware : l’UEFI d’un Thinkpad X270
Historiquement, la mise à jour d’un BIOS non EFI imposait de passer par un DOS pour mettre à jour la puce. C’était pénible, il fallait trouver un Freedos et l’amorcer… Avec l’UEFI, c’est supposé devenir plus simple, avec un binaire EFI à démarrer ou, mieux encore, l’utilisation du nouveau protocole qui permet au système d’exploitation d’envoyer un blob à l’UEFI pour une application au prochain redémarrage. Ce nouveau protocole est encore très expérimental, donc j’ai choisi de l’ignorer et de rester sur la méthode « old school ».
Donc, direction le site de Lenovo, je saisis le modèle du PC portable (X270 20HN), je vais dans les téléchargements, section BIOS/UEFI, et là deux choix : un binaire Windows ou une ISO de CD amorçable. Bon, le binaire Windows, on va pas essayer, prenons l’ISO. La machine n’a pas de lecteur de CD (ça serait physiquement impossible), donc cela doit être comme une ISO de distribution GNU/Linux et être « universel ».
Aller chercher les fichiers
Je télécharge le fichier ISO, je fais un file
dessus et, surprise !
snoopy@peanuts2:~/Downloads$ file r0iuj11wd.iso
r0iuj11wd.iso: ISO 9660 CD-ROM filesystem data 'R0IET40W' (bootable)
Où est la surprise ? Un disque « universel » sera identifié avec un secteur d’amorçage DOS/MBR comme suit :
snoopy@peanuts2:~/Downloads$ file debian-9.0.0-i386-xfce-CD-1.iso
debian-9.0.0-i386-xfce-CD-1.iso: DOS/MBR boot sector; partition 2 : ID=0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 6908, 608 sectors
Peut‐être est‐ce un CD amorçable moderne avec des fichiers EFI alors ?
$ find /mnt/disc/
/mnt/disc/
Que de quoi ? J’ai une ISO de 21 Mio vide ?
Pour comprendre un peu ce qu’il se passe, plongeons dans les années 90. Pour rendre un CD amorçable à l’époque, il a été décidé de mettre dans une sorte de piste à part dans l’ISO d’une image de disque qui, elle, sera démarrée par le BIOS. Il s’agit de l’extension El Torito. Mais où se cache donc cette image disque dans l’ISO ? Demandons à isoinfo :
$ isoinfo -d -i r0iuj11wd.iso
CD-ROM is in ISO 9660 format
System id:
Volume id: R0IET40W
Volume set id:
Publisher id:
Data preparer id:
Application id: NERO BURNING ROM VER 12,5,5,0
Copyright File id:
Abstract File id:
Bibliographic File id:
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 10934
El Torito VD version 1 found, boot catalog is in sector 20
Joliet with UCS level 3 found
NO Rock Ridge present
Eltorito validation header:
Hid 1
Arch 0 (x86)
ID 'NERO BURNING ROM VER 12'
Key 55 AA
Eltorito defaultboot header:
Bootid 88 (bootable)
Boot media 4 (Hard Disk Emulation)
Load segment 7C0
Sys type 6
Nsect 1
Bootoff 1B 27
Voilà, là, on commence à avoir des informations. Une ISO est constituée de secteurs de 2 048 octets, et isoinfo nous dit que le décalage de l’image d’amorçage est 0x1B, soit 27.
Donc, demandons à notre ami dd :
$ dd if=r0iuj11wd.iso of=boot.img skip=27 bs=2048
10907+0 records in
10907+0 records out
22337536 bytes (22 MB, 21 MiB) copied, 0.0174814 s, 1.3 GB/s
$ file boot.img
boot.img: DOS/MBR boot sector; partition 1 : ID=0x4, active, start-CHS (0x0,1,1), end-CHS (0x14,63,32), startsector 32, 42976 sectors
Ah, ben voilà qui est mieux. On a une table de partition DOS, on pourrait la copier sur une clé USB et la démarrer. Ou avoir la flemme d’aller chercher une clé USB. Continuons donc.
$ /sbin/fdisk -l boot.img
Disk boot.img: 21.3 MiB, 22337536 bytes, 43628 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
boot.img1 * 32 43007 42976 21M 4 FAT16 <32M
On a une partition, donc on peut l’extraire…
$ dd if=boot.img of=boot_inner.img skip=32 bs=512
43596+0 records in
43596+0 records out
22321152 bytes (22 MB, 21 MiB) copied, 0.0442729 s, 504 MB/s
$ file boot_inner.img
boot_inner.img: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "MSDOS5.0", reserved sectors 2, root entries 512, sectors 40960 (volumes <=32 MB) , Media descriptor 0xf8, sectors/FAT 159, sectors/track 32, heads 64, hidden sectors 32, serial number 0x3a1aeaaa, unlabeled, FAT (16 bit)
Parfait, on a une image que l’on peut monter… Que contient‐elle ?
$ tree .
├── EFI
│ └── BOOT
│ └── BootX64.efi
├── Flash
│ ├── 406E3.PAT
│ ├── 406E8.PAT
│ ├── 506E8.PAT
│ ├── 806E9.PAT
│ ├── BCP.evs
│ ├── BootX64.efi
│ ├── NoDCCheck_BootX64.efi
│ ├── R0IET40W
│ │ ├── $0AR0I00.FL1
│ │ └── $0AR0I00.FL2
│ ├── README.TXT
│ └── SHELLFLASH.EFI
└── System Volume Information
├── IndexerVolumeGuid
└── WPSettings.dat
Démarrer le bon fichier…
Le fichier EFI/BOOT/BootX64.efi
est le fichier cherché par défaut par l’UEFI sur un disque. Très bien. On note qu’il est identique au fichier Flash/BootX64.efi
.
Copions le dossier Flash dans la partition /boot/efi
, redémarrons et passons sur la console GRUB…
Dans GRUB, j’exécute donc les commandes suivantes (et vive la complétion) :
set root='(hd0,gpt1)'
chainloader /Flash/BootX64.efi
boot
Et l’outil de mise à jour de Lenovo se lance, victoire !
À noter pour les plus joueurs : a priori, les fichiers .PAT
, .FL1
et .FL2
devraient pouvoir être envoyés dans le firmware par le protocole de mise à jour UEFI, mais… je n’ai pas envie de cramer ma machine pro, donc je n’essaye pas pour le moment…
Amusez bien tout le monde, et n’oubliez pas vos mises à jour ! Dans le lot, j’ai quand même eu des mises à jour de l’Intel ME (qui a connu des failles critiques cette année), des correctifs pour l’UEFI qui pouvait fuiter son mot de passe au démarrage… Bref, que du bonheur.
# Les liens
Posté par Pinaraf . Évalué à 5.
Toutes mes excuses, j'ai oublié les liens…
Pour le bug OCaml/Intel : http://ocamllabs.io/general/2017/06/26/IntelHyperThreadBug.html
Pour les failles de sécu, on en a vu plusieurs, comme la memory sinkhole de 2015.
# fwupd
Posté par Okki (site web personnel, Mastodon) . Évalué à 10.
fwupd est un projet (utilisé entre autre par la logithèque GNOME) qui permet de mettre à jour des firmwares de façon fiable et sécurisée. Je sais que Dell, Intel et Logitech ont d'ores et déjà rejoint le projet. Si ce n'est pas encore le cas de Lenovo, ça vaudrait sans doute le coup de les contacter pour leur en parler. Plus il y aura de linuxiens à en faire la demande, plus on aura de chance de faire bouger les choses.
De voire apparaître la mise à jour du firmware dans sa logithèque et de pouvoir l'installer d'un simple clique en même temps que le dernier Firefox, c'est tout de même plus sympa et bien plus accessible pour le commun des mortels (ou les grosses feignasses :)
Pour plus d'infos, Richard Hughes a écrit plusieurs articles à ce sujet sur son blog.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: fwupd
Posté par ff9097 . Évalué à 3.
Oui les Thinkpad sont de très bonnes machines et fonctionnent très bien sous Linux
[^] # Re: fwupd
Posté par Funix (site web personnel, Mastodon) . Évalué à 5.
Je confirme, je suis devenu fan au boulot et depuis à la maison j'équipe tout le monde en thinkpad, j'en ai 4 au total, X230, X220, X200 et un vieux X60, je les achète d'occas sur ebay à un prix dérisoire (200€ pour des versions haut de gamme à 2000€ neuf).
https://www.funix.org mettez un manchot dans votre PC
[^] # Re: fwupd
Posté par xcomcmdr . Évalué à 1. Dernière modification le 02 août 2017 à 13:26.
J'ai pris un vintage : un Thinkpad T43, Modele 2669.
Processeur : Intel Pentium M à 1.86 GHz (compatible PAE)
Mémoire : 512 Mo de DDR2-666
Disque dur : 40 Go 5400 RPM (UDMA33, PATA)
GPU : ATI Mobility Radeon X300
Écran : TFT Mat 1024x768
Chipset sonore : AC'97
Chipset carte mère : Intel 915PM Express
USB2, WiFi, lecteur optique : lecteur DVD + graveur CD tout ça.
Batterie fonctionnelle, OS fourni.
Le tout à… 30 € TTC !
Prévu (et livré avec) pour Windows XP.
Upgrade matériel :
- 2GB (2x1) DDR2 666 PC2-6400 (j'ai dû enlever le clavier pour accéder au second emplacement. Pas fun quand une visse est usée et courbée et ne voulait plus bouger aux trois quarts de son retirage…)
- Écran avec pixels morts remplacé
- Nettoyage (il puait le tabac) avec un produit adéquat du clavier et de la coque.
- Disque dur remplacé par un Hitachi Desktar de 80 Gio à 7200 RPM en miniIDE (IDE 2"5)
Upgrade logiciel :
- On passe à Windows 7 x86 SP1.
99% des pilotes sont trouvés automatiquement via Windows Update (lecteur d'empreintes, chipset USB, chipset audio, bidule TPM, WiFi, Bluetooth, modem, …).
Quelques uns, tels que l'ethernet, fonctionnaient déjà de base.
Seul le pilote graphique a été difficile à trouver. Il est uniquement disponible sur le site de Lenovo. Il est prévu pour Windows Vista, mais Windows 7 reste rétrocompatible avec WDDM 1.0. Ce qui permet à l'accélération graphique de fonctionner, ouf ! :)
Maintenant je cherche à lui trouver une utilité, mais je l'adore déjà.
Il est petit, léger, beau, rapide (relativement, hein), et beaucoup plus solide que mon ASUS N56VV (beaucoup plus récent et onéreux, dont le lecteur optique est beaucoup moins fiable d'ailleurs).
Bon y'a juste le BIOS qui gueule un peu au démarrage car il ne reconnaît plus le firmware du disque dur (donc la protection contre les chocs du HDD ne fonctionne plus), mais j'ai jamais fait tomber mes laptops de toute façon. Et je l'utilise qu'occasionnellement.
En fait, je l'utilise déjà pour développer, et pour jouer à des vieux jeux Megadrive (Phantasy Star IV, surtout). :D
"Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)
[^] # Re: fwupd
Posté par ff9097 . Évalué à 7.
Donc ça t'as coûté combien en tout ?
[^] # Re: fwupd
Posté par xcomcmdr . Évalué à 4. Dernière modification le 02 août 2017 à 20:45.
En tout, dans les 100 €.
Pour un Thinkpad légendaire, c'est pas cher payé. :)
(aujourd'hui sur ebay ça va à ~100 € le Thinkpad T43 qui fonctionne mais avec maximum 1 Go de RAM seulement, un disque dur de 40 Go à 5400 RPM, et avec un clavier QWERTY, et le modèle utilise un GPU Intel largement moins puissant, et une version en anglais de Windows. Argh !).
"Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)
[^] # Re: fwupd
Posté par Funix (site web personnel, Mastodon) . Évalué à 4.
niveau solidité, je me souviens d'un commercial d'IBM à l'époque (avant le rachat par lenovo) qui vantait les mérites de la coque en magnésium, fibre de carbone renforcée et autre titane, accéléromètre, etc. on pourrait croire à un blabla commercial comme un autre, sauf qu'il a jeté par terre son portable en fonctionnement et il a sauté dessus à pieds joints (le portable était fermé) ! Le truc fonctionnait encore !
C'est vrai que c'est pas le portable le plus élégant, mais il est limite durci, j'ai pu le tester à mes dépends plusieurs fois en le faisant tomber n fois sans que ça le perturbe. Fort heureusement lenovo a gardé la même philosophie.
https://www.funix.org mettez un manchot dans votre PC
[^] # Re: fwupd
Posté par Le Gab . Évalué à 3.
Par contre, le revêtement de leurs écrans se rayent très facilement avec… les touches du clavier. C'est fâcheux car autant lâcher un thinkpad et marcher dessus n'est pas une chose que je fais couramment, autant fermer l'écran et transporter mon portable c'est quasi tout le temps.
Certes les zones rayées sont invisibles dés lors que la partie de l'écran qu'elles recouvrent affichent une images lumineuse.
Mais c'est comme un pixel mort, une fois vu, il devient le nez au milieu de la figure.
[^] # Re: fwupd
Posté par ff9097 . Évalué à 1.
Ce matin j'ai pu mettre à jour en un clic et en 5 secondes à peine le firmware logitech clavier/souris
# C'est bien ton processeur a des gros seins
Posté par Fabrice Devaux . Évalué à 10.
silicium
[^] # Re: C'est bien ton processeur a des gros seins
Posté par Pinaraf . Évalué à 2.
Ho la belle boulette… Faut plus que je rédige de journaux le soir, merci.
[^] # Re: C'est bien ton processeur a des gros seins
Posté par Benoît Sibaud (site web personnel) . Évalué à 3.
Corrigé, merci.
# Comportement standard
Posté par Boa Treize (site web personnel) . Évalué à 4.
Il me semble que c'est ce qui est prévu par la norme, ou en tout cas le standard de facto. Tu mets tous tes fichiers dans ton répertoire, et tu copies ton bootloader dans EFI\BOOT. C'est ce que fait Ubuntu également, de mémoire.
[^] # Re: Comportement standard
Posté par purplepsycho . Évalué à 3.
Oui, c'est le comportement attendu.
Un peu de documentation à ce sujet ici : https://www.happyassassin.net/2014/01/25/uefi-boot-how-does-that-actually-work-then/ (en gros, cet article est une explication détaillée de la spécification UEFI)
# Bien au contraire ...
Posté par notimeu . Évalué à 8.
Au contraire, même si ce n'est pas le thème de ton article, j'aurais bien aimé voir comment tu installes SELinux, si tu as rencontré des erreurs avec les policies par défaut (par rapport au document sur le wiki Debian), si ton gestionnaire de fenêtres a posé des soucis, etc.
Pareil, côté nftables, as-tu un retour d'expérience (installation, utilisation) ?
[^] # Re: Bien au contraire ...
Posté par Pinaraf . Évalué à 6.
Je ferai ça dans un prochain journal alors, quand j'aurai commencé à vraiment exploiter SELinux pour castrer des applications dangereuses…
Par rapport à nftables : it works… Et ça fait plaisir d'avoir un ensemble qui soit lisible et qui gère à la fois IPv4 et IPv6.
[^] # Re: Bien au contraire ...
Posté par shbrol . Évalué à 3.
A la lecture du mot "nftables", je me suis demandé kekseksa, alors j'ai cherché un peu et je suis tombé sur article sur le sujet : https://linuxfr.org/news/nftables-successeur-diptables
Diantre, une syntaxe à la pf pour la configuration du firewall sous linux, en remplacement d'iptables, mais c'est merveilleux ! Alors je vérifie sur ma machine (debian/buster), et la c'est le drame : nftables est bien candidat a l'installation, mais ce qui est présent par défaut c'est iptables…
Je reviens sur l'article cité qui m'a vendu du rève, et je m'apercois qu'il date de 2009 :-(
Il y a presque 10 ans, on annonçait donc le remplaçant d'iptables, mais il n'est pas installé par défaut sur ma machine aujourd'hui ? C'est la faute à ma debian qui n'est pas à jour, ou bien nftables c'est pas encore prêt pour le desktop ?
[^] # Re: Bien au contraire ...
Posté par Pinaraf . Évalué à 5.
Beaucoup d'outils dépendent encore d'iptables. iptables et nftables ne peuvent pas être utilisés en même temps.
Et la stabilité de nftables est très récente, c'est que depuis Debian stretch que le paquet est dans stable.
Mais effectivement, ça promet de changer beaucoup de choses, il était plus que temps !
[^] # Re: Bien au contraire ...
Posté par shbrol . Évalué à 1.
Merci pour les précisions.
[^] # Re: Bien au contraire ...
Posté par Sufflope (site web personnel) . Évalué à 4.
Ceci dit si tu veux un outil moins abscons tout en gardant iptables tu peux regarder firewalld. Moi en tout cas je suis satisfait.
# whitelist
Posté par garfi (site web personnel) . Évalué à 3.
Un peu en rapport mais pas trop, j'ai un thinkpad E330 et ce genre de machine possède un bios avec des whitelist pour les cartes wifi. Ce qui signifie que si l'on veut changer la carte mais qu'elle n'est pas dans cette liste le bios lance une erreur 1802 au démarrage.
En farfouillant un peu, il existe un forum ou on peut faire une demande de "mod bios", soit une version modifié de bios sans cette liste. Et voila, j'ai pu changer la carte avec l'aide de freedos et ce bios modifié.
Si quelqu’un à la raison de ces listes.
[^] # Re: whitelist
Posté par BohwaZ (site web personnel, Mastodon) . Évalué à 4.
Réglementation sur les ondes type FCC etc. j'imagine ? Les machines sont testées avec du matos (wifi et 3G) qui est précis et autorisé et qui ne doit pas permettre de faire n'importe quoi niveau ondes.
Effectivement : https://news.ycombinator.com/item?id=4770992
https://www.reddit.com/r/thinkpad/comments/4ca5ga/why_is_lenovo_whitelisting_wifi_cards_to_what_end/
Apparemment ce n'est plus le cas depuis le X250 cependant.
« Je vois bien à quels excès peut conduire une démocratie d'opinion débridée, je le vis tous les jours. » (Nicolas Sarkozy)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.