Dans mon article précédent C’est décidé, je retourne sous Linux, je me moquais gentiment sur le Windows livré sur mon nouveau pc (un Dell Vostro 3360, comme ça vous saurez tout). Après tant d’amusement trollesque, j’ai voulu installer un système Archlinux aux petits oignons qui me convenait. Comme je trouve que la ligne de commande reste le moyen le plus efficace et rapide de faire du peaufinage de système, on va en bouffer ! La procédure ci-dessous explique comment obtenir une installation d’Archlinux dans un conteneur LVM chiffré avec dm-crypt et LUKS (système et SWAP) avec l’activation de TRIM pour SSD et une utilisation de Enlightenment E17 comme windows manager.

Kwa ? G rien compri !

Voici ce dont on parle :

  • Archlinux : mon coup de coeur dans les distributions de linux, les explications devraient pouvoir être adaptable à d’autres systèmes tant que vous avez un terminal à disposition.
  • LVM : méthode de gestion de partitions non continues. On peut ajouter, supprimer, modifier les partitions un peu comme on veut, plus besoin de rester 3h devant GParted en priant le dieu Bécup.
  • LUKS : norme de chiffrement par blocs, idéal sous linux pour chiffrer une partition (en opposition à par exemple à eCryptfs qui sert à chiffrer un dossier comme le propose Ubuntu avec le dossier home)
  • dm-crypt : sous-système permettant de gérer le chiffrement LUKS (où se trouvent les clefs…) utilisé par le noyau Linux. Propose notamment cryptsetup que l’on utilise ici.
  • SSD : nouvelle génération de disques remplaçant les vieux HDD. Plus rapides, silencieux, économes en énergie et surtout plus chers. Mon Vostro est équipé d’un SSD de 128GB (pas de HDD en hybride)
  • TRIM : sur un HDD, lorsque l’on écrit là où se trouvaient des données « supprimées », on écrase l’ancienne valeur par la nouvelle. Avec un SSD, on doit d’abord supprimer le contenu du secteur puis écrire la nouvelle (perte de performances). TRIM permet d’indiquer au système lorsque l’on n’a plus besoin de certaines données, l’autorise à les supprimer et l’on gagner du temps pour la future réécriture. Une sorte de garbage collector. De par son mode de fonctionnement, TRIM rend aussi inefficace toute tentative de récupération de données en cas de rm mal placé.
  • SWAP : espace du disque dédié à soulager la RAM lorsque celle-ci se retrouve surchargée. Il est nécessaire de la chiffrer pour éviter les fuites d’information (des mots de passe pouvant être chargé dans la RAM).
  • E17 : window manager léger et hyper personnalisable (*tousse*opposé de GNOME*tousse*). Une version stable vient de sortir après 12 ans de développement. Au passage ne venez pas m’ennuyez sur le window manager vs desktop environment, on met un peu n’importe quoi dans les deux catégories et puis c’est moi qui décide ici, na !

Voici une image permettant de mieux comprendre ce que l’on va réaliser :

luks-graph

Le /boot est sur une petite partition séparée (on a besoin d’un certain nombre de modules pour déchiffrer la partition), le reste du système se trouvant dans une partition chiffrée. En déchiffrant cette partition, on ouvre un conteneur LVM. Cela permet d’avoir toutes les partitions chiffrées avec la même clef. Si l’on voulait chiffrer une seule partition (ou plusieurs avec des clefs différentes), l’on aurait fait le contraire (LUKS dans LVM). Dans mon cas, n’ayant qu’Archlinux sur un petit disque, j’ai préféré utiliser uniquement une SWAP et une partition pour le système. Libre à vous de diviser le conteur LVM en plus de parties pour un home séparé ou pour du multiboot.

La manipulation va donc permettre de chiffrer sa machine, cela ne rendra pas la machine invisible contre tout types d’attaque. Les implications exactes en termes de sécurité sont mentionnées dans la conclusion, lisez là bien avant de commencer toute manipulation si vous n’êtes pas certains de bien comprendre.

Préparation

Attention, cette procédure va écraser lamentablement vos précédentes données tel le scarabée rhumatisant sous la patte du vaillant hippopotame. Si vous voulez conserver une copie de votre disque, je vous conseille de suivre cette procédure. Suumitsu a donné une procédure permettant de convertir un disque en machine virtuelle. J’ai testé mais perso la machine virtuelle ne fonctionne pas chez moi (récup système qui échoue).

Créez un live CD ou USB, démarrez dessus jusqu’à obtenir un terminal utilisable (je passe cette étape, pour arch c’est ici que ça se passe, jusqu’au 2.2). Fait ? Maintenant on efface le tout. D’abord on met de l’aléatoire pour maximiser la sécurité (on ne peut pas différencier les données aléatoires des données chiffrées). Note : l’activation de TRIM réduit l’intérêt de cette manipulation, lisez la dernière section sur les limites pour vous faire une opinion. Si vous jugez cela inutile, passez cette étape (je la laisse sans être certain à 100% de ce que j’avance). Si vous avez un HDD, faites le.

$ dd if=/dev/urandom of=/dev/sda

Ouille pauvre disque, ça prend du temps (6 MB/s sur mon disque de 128GB, soit 6 heures, glups). C’est pas le mode le plus parano du monde mais ça suffit. Faire plusieurs réécritures a été montré comme superflu. En parlant de suppression efficace, n’utilisez pas non plus des outils comme shred en pensant bien effacer vos fichiers, c’est inefficace sur un SSD.

Partitions

On crée ensuite une nouvelle table de partition. J’ai utilisé cfdisk, c’est très facile et interactif, même pas besoin de lire la man page pour comprendre. Les partitions sont à définir selon vos gouts mais comme je vous le disais plus haut, je vais uniquement séparer /boot du reste. 200MB pour /boot sur sda1, le reste sur sda2.

# cfisk /dev/sda
# mkfs.ext4 /dev/sda1 -L boot # EXT4 est bien mais c’est un choix personnel après

Pour chiffrer sda2, on a plusieurs choix d’algorithmes, de modes de stockage de clef, etc. On peut par exemple utiliser une suite de bytes aléatoires qui sont stockés sur une clefs USB chiffrée avec GPG (not bad). Mais nous, on ne vise pas la top sécurité (trop contraignant je trouve), on va faire au plus simple : un mot de passe à entrer au boot. Lisez la man page ou ce wiki pour des variations. (désolé pour cet idiot de wordpress qui me remplace les doubles tiret par un caractère spécial)

# cryptsetup –cipher aes-cbc-essiv:256 –key-size 256 –hash sha256 –iter-time 1000 –use-random –verify-passphrase luksFormat /dev/sda2

On choisi un super mot de passe (que vous irez écrire sur un post-it collé à l’écran) et on confirme (n’oubliez pas les majuscules pour le « yes »).

Pour ouvrir le conteneur, on utilise la commande suivante (très important, c’est cette commande que vous allez utiliser si jamais vous crachez votre système et devez faire la réparation avec un live cd, notez la aussi sur le post-it) :

# cryptsetup luksOpen /dev/sda2 sda2_crypt

La partition est maintenant accessible à /dev/mapper/sda2_crypt (vous pouvez évidement choisir un autre nom).

La partition sda2_crypt va être convertie en Primary Volume LVM contenant la swap et /. Je conseille encore une fois la doc archlinux pour les variations mais dans mon cas :

# modprobe dm-mod
# pvcreate /dev/mapper/sda2_crypt
# vgcreate MyGroup /dev/mapper/sda2_crypt
# lvcreate -C y -L 1G MyGroup -n lvswap
# lvcreate -l +100%FREE MyGroup -n lvarch
# mkswap /dev/mapper/MyGroup-lvswap
# mkfs.ext4 /dev/mapper/MyGroup-lvarch -L arch
squelette à un bar

Kevin attend patiemment que son algorithme de brute force trouve votre clef LUKS

Installation

Maintenant on peut continuer normalement l’installation comme n’importe quel système. Dans le cas d’Archlinux avec arch-chroot, il faut d’abord monter les partitions dans /mnt.

# mount /dev/mapper/MyGroup-lvarch /mnt
# swapon /dev/mapper/MyGroup-lvswap
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot

Dans le beginner’s guide d’archlinux, on peut reprendre au point 2.6. select a mirror. Les partitions montées étant déchiffrées, la génération du fichier fstab devrait donner les bons UUID.

Dans le cas de mon Dell Vostro 3360, le wifi était reconnu nativement mais pas ethernet, la faute à l’Atheros AR8161. J’ai expliqué la marche à suivre mais à ce jour (à adapter à sa version du noyau, deviendra compat-driver dès linux 3.7), les commandes sont :

# wget http://www.orbit-lab.org/kernel/compat-wireless-3-stable/v3.6/compat-wireless-3.6.8-1-snpc.tar.bz2
# tar xjf compat-wireless-3.6.8-1-snpc.tar.bz2
# cd compat-wireless-3.6.8-1-snpc
# ./scripts/driver-select alx
# make
# make install
# modprobe alx

Avant que vous ne redémarriez, il faut faire quelques modifications pour activer le déchiffrement et TRIM. Dans le fichier /etc/mkinitcpio.conf, on défini les modules à charger dans le noyau au démarrage. Voici ce qu’il faut dans notre cas :

MODULES="... sd_mod .."
...
HOOKS="... keymap encrypt lvm2 resume filesystems ..."

sd_mod étant pour LVM, keymap pour charger la disposition du clavier que vous aurez spécifié dans /etc/vconsole.conf (attention, si pas présente, vous devrez déchiffrer votre partition en qwerty), encrypt pour LUKS, LVM2 pour LVM (inattendu je sais), resume pour sortir de l’hibernation et tout cela devant se trouver avant filesystems. Vous pouvez également faire un nettoyage ici en supprimant et déplaçant quelques modules. Je ne suis pas spécialiste de cette partie donc ne vais pas trop m’aventurer là dedans de peur de dire des conneries. Si ça vous intéresse Postblue en donne quelques unes (des optimisations, pas des conneries).

On régénère l’image à charger avec :

# mkinitcpio -p linux

(ou autres paramètres en cas de noyau différent ou optimisation)

Pour indiquer à GRUB la marche à suivre, on va modifier le fichier /etc/default/grub à la ligne GRUB_CMDLINE_LINUX pour mettre :

GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:sda2_crypt:allow-discards resume=/dev/mapper/MyGroup-lvswap pcie_aspm=force elevator=noop"

N’oubliez pas de regénérer un nouveau fichier grub.cfg avec grub-mkconfig. Le allow-discards permettant d’activer TRIM. On va d’ailleurs également modifier le fichier /etc/fstab qui chez moi ressemble à ça :

# /dev/mapper/MyGroup-lvarch LABEL=arch
UUID=8f42... / ext4 defaults,noatime,nodiratime,discard 0 1

# /dev/sda1 LABEL=boot
UUID=dd30... /boot ext4 rw,relatime,data=ordered 0 2

# /dev/mapper/MyGroup-lvswap
UUID=2142... none swap defaults,noatime,nodiratime,discard 0 0

J’avoue ne pas être certain à 100% des paramètres en dehors du discard, les nomachin permettant de réduire le nombre d’écriture nécessaire (mais peut poser des problèmes dans certains cas de figure). Lisez SSD Tuning For Linux ou Archlinux SSD pour plus d’info.

Démarrage et E17

J’ai choisi d’installer E17 comme environnement de bureau. C’est très léger et très personnalisable. Tellement personnalisable que je n’ai pas encore réussi à l’adapter complètement à mes envies mais je suis sur que ça arrivera (j’ai commencé à mettre une série d’astuces ici). Voila à quoi ça ressemble chez moi après installation.

bureau-e17

Sobre et léger, moi j’aime ( fond d’écran)

Il suffit d’installer le paquet enlightenment17 pour obtenir le bureau ainsi que tous vos programmes favoris et légers pour les tâches voulues (connman pour la gestion du wifi, mirage pour les images, 7-zip pour les archives… à vous de voir). Comme pour n’importe quel environnement de bureau en somme.

Là par contre où une modification devient intéressante est la connexion automatique. Si l’on chiffre le disque, l’intérêt de demander le mot de passe de l’utilisateur directement après est diminué. L’optimisation vient de chez postblue qui la tient du wiki Archlinux. Connexion automatique sur votre utilisateur qui va lancer Enlightenment avec un exec enlightenment_start dans le fichier ~/.xinitrc.

Grâce à ces optimisations, sur mon Vostro, une fois le mot de passe LUKS entré, j’ai besoin de 3 secondes pour être sur un bureau prêt à l’utilisation, c’est moins que ce qu’il me fallait pour sortir d’hibernation sur mon ancienne machine !

Vérification TRIM

Alors là, pour être honnête, j’ai une incertitude. Cela a été le sujet d’une discussion sur les forums Archlinux (ici) sans arriver à de solution convenant tout le monde. De nombreux sites affirment que le flag « allow-discards » suffit à activer TRIM. On peut le vérifier ainsi :

# dmsetup table /dev/mapper/sda2_crypt –showkeys
0 249583634 crypt aes-cbc-essiv:sha256 f7[… ]95 0 8:2 4096 1 allow_discards

Si on leur fait confiance (ce que j’ai envie de faire), cela devrait suffire.

Seulement « discard » indique que l’on active TRIM, pas que TRIM fonctionne (vous voyez la subtilité ?). Un test un peu plus sophistiqué est donné ici. Cela consiste en la création d’un fichier, regarder où il se trouve en mémoire, le supprimer et vérifier que le registre a bien été vidé (les commandes sont dans le lien). Cependant lors du test, je découvre que les secteurs en questions sont vides avant d’avoir supprimé le fichier.

Avec un peu de recherche, j’ai trouvé ce blog donnant une piste de réponse. Il faudrait en réalité faire une addition sur l’alignement des partitions pour obtenir la bonne valeur. J’ai réalisé l’exercice ici avec un résultat différent mais tout autant décevant : une série de bytes aléatoires dans le secteur calculé mais pas supprimés à la suppression du fichier. Erreur de calcul ? Non activation de TRIM ? Problème avec la couche d’abstraction LUKS+LVM ? Mystère. Si quelqu’un a plus d’idées, je suis sur que ça en intéressera certains.

Conclusion et limites du chiffrement

La sécurité obtenue n’est pas absolue mais est déjà très raisonnable. Chiffrer votre disque ne vous protègera pas complètement. Il n’y a pas de problèmes si vous perdez votre machine hors ligne (pas de logiciels types Prey donc, pas grave, je préfère) mais il existe des cas plus problématiques. Le fait d’entrer votre mot de passe signifie qu’un attaquant ayant accès à votre PC est potentiellement capable de modifier vos fichiers de boot pour y ajouter un keylogger par exemple. Le cas de la clef sur une clef USB diminue un peu ce risque mais est assez contraignant (à vous de voir votre besoin de sécurité).

L’activation de TRIM réduit également la sécurité. Lisez cet article par un développeur de cryptsetup pour comprendre le problème. En autorisant le système à vider tous les secteurs inutilisés, l’on va permettre la détection des secteurs utilisés et ceux qui ne le sont pas. C’est pour cela que j’affirmais plus haut que le remplissage du disque de random était sans doute inutile. Cela ne me pose pas de problème pour mon utilisation de la machine mais il faut le savoir.

Une fois la partition déchiffrée, LUKS ne sert plus à rien évidement. Le chiffrement ne vous protègera pas contre les failles de sécurité dans vos logiciels. Il est par exemple important de verrouiller votre machine en veille. Il n’est pas à ma connaissance possible d’accéder au contenu d’une machine verrouillée sans faire d’attaque physique (contenu de la RAM par ex), vous devriez donc être à l’abri des script-kiddies si vous n’avez pas laissé de failles grosse comme une maison (si vous voulez vous protégez contre des gouvernements, pensez qu’ils possèdent d’autres moyens d’obtenir les clefs que de pirater votre machine).

Au passage, je conseille vivement de ne pas choisir le même mot de passe pour LUKS et votre utilisateur. Il est beaucoup plus facile d’avoir un keylogger ou d’accéder aux hash de votre mot de passe lorsque votre machine fonctionne.

Bonus : détectez les modifications de /boot

Je disais plus haut que le problème sécurité le plus préoccupant avec cette configuration était qu’une manipulation offline pouvait tout foutre en l’air. Si l’attaquant arrive à bidouiller les fichiers dans /boot, il peut faire beaucoup ; même une clef présente sur une clef USB peut se faire enregistrer avec un script malveillant. Heureusement, une publication dans ct-magazine donne une solution : vérifier le hash du MBR et des fichiers une fois la partition déchiffrée (les hash sont chiffrés évidement). Si une modification est détectée, grosse alerte !

Téléchargez l’archive suivante 1203-146.zip par l’auteur de l’article ou ma version qui utilise sha256 plutôt que sha1 (qui, si toujours sécurisé aujourd’hui, risque de ne plus l’être très longtemps, surtout depuis cette nouvelle attaque), ajoute le fichier de config systemd, enlève un espace au début de chkboot.sh (plantait le lancement de systemd) et ajoute un fichier .desktop pour chkbook_user.sh. Si je suis pas trop sympa quand même !

# cp chkboot.sh /usr/local/bin/chkboot.sh
# chmod +x /usr/local/bin/chkboot.sh
# cp chkboot_user.sh /usr/local/bin/chkboot_user.sh
# chmod +x /usr/local/bin/chkboot_user.sh
# cp chkboot@.service /etc/systemd/system/chkboot@.service
# systemctl enable chkboot@.service
# mkdir /var/chkboot
# /usr/local/bin/chkboot.sh

Le script chkboot_user.sh utilise zenity pour les alertes. Veillez à ce qu’il soit installé. Démarrez ce script au démarrage de votre session. Cela peut se faire via l’interface graphique de window manager préféré ou en ajoutant un fichier .desktop (comme celui dans l’archive que je vous donne par exemple) dans le dossier ~/.config/autostart/. Dans le cas de E17, le dossier autostart n’est pas utilisé (juste pour GNOME, KDE et XFCE). À la place, placez le fichier .desktop dans ~/.local/share/applications/ et allez ensuite dans settings > apps > startup applications >
applications
et activez l’application Chkboot.

alert-changes-detected-boot

Avec la liste des fichiers ayant changé de hash

Attention, le script chkboot.sh est à faire tourner à chaque modification du dossier /boot. Cela peut arriver souvent sous Archlinux (à chaque mise à jour du noyau ou de grub par exemple). Si vous trouvez cela trop contraignant, n’hésitez pas créer un alias type alias sysupdate="/usr/local/bin/chkboot_user.sh && yaourt -Syua && /usr/local/bin/chkboot.sh".

PS : j’ai commencé la rédaction de la page en français au sujet de LUKS sur le wiki archlinux.fr. N’hésitez pas à venir contribuer, c’est encore bien vide.

J’ai fait l’acquisition d’un ultrabook Dell, un très bel objet (j’en ai même fait un déballage). Dessus était préinstallé le système d’exploitation d’une startup qui monte pas mal ses derniers temps : Microsoft avec son Windows. Si j’ai bien compris, Microsoft fait payer son OS, un business model qui me semble assez bancal mais pourquoi pas, s’ils apportent une vraie innovation. Toujours curieux de découvrir des nouvelles choses et étant donné que je l’ai payé à l’achat de la machine, j’ai voulu tester ce système. Voici donc mon retour d’expérience.

Livreur d'UPS qui est plus rapide pour faire Chine - Kazakhstan que Bruxelles - monbled

Livreur d’UPS qui est plus rapide pour faire Chine – Kazakhstan que Bruxelles – monbled

Première petite déception, Dell m’a fourni la version 7 de Windows alors que j’ai entendu tellement de bien de leur 8eme version, soit, je regarderai pour faire une upgrade plus tard. J’allume la machine et me retrouve devant une série d’écrans étranges. Plutôt que le processus d’installation habituel (langue, heure,…), on me donne de longs textes aussi imbuvable que la GPL à lire. Je relève des passages surprenants. Je ne suis autorisé qu’à faire tourner le logiciel que sur deux cœurs maximum (heureusement que je n’avais pas prévu d’upgrade du matériel), interdiction de faire tourner la version 32 et 64 bits en même temps (je ne sais pas comment j’aurais fait de toute façon), autorisation de télécharger les polices inclues uniquement le temps d’imprimer un document ainsi qu’une limitation d’utilisation à 20 dispositifs « pour utiliser les services de fichiers, services d’impression service internet, partage de connexion internet et service de téléphonie uniquement » (dois-je commencer à compter mes clefs USB ?). Peu de choix de langue également (français ou anglais-us), ils n’ont peut être pas encore eu le temps de le traduire (c’est le problème d’avoir des effectifs limités). Je tique un peu sur l’obligation de mettre un indice pour retrouver le mot de passe. Je pensais qu’il avait été démontré que c’était une mauvaise pratique. Dell me pose également des questions pour savoir si je veux bien lui envoyer des données systèmes pour ses partenaires commerciaux, désolé Dell mais non.

Après ce long processus d’installation, où l’on ne m’a posé aucune question intéressante, quelques mises à jour à faire et … demande de redémarrage. Une mise à jour du noyau sans doute, pas très agréable mais il faut ce qu’il faut. Ça y est, je chipote enfin sur mon nouvel OS ! Pas trop moche à première vue, je sens que je vais aimer. Le navigateur préinstallé (digression : et il est où mon BrowserChoice ?) ne m’inspire pas trop confiance. Heureusement, l’équipe de Mozilla a prévu un build de Firefox pour ce système. Enfin, j’ai du me rendre sur leur site pour le découvrir. J’ai longtemps cherché leur gestionnaire de paquets avant de me rendre à l’évidence : ils n’en ont pas. Heureusement qu’ils n’ont pas d’assez grosses part de marché que pour intéresser les pirates. Avec un système pareil, c’est la porte ouverte au phishing et logiciels malveillants.

Même pas à jour tes crasses

Même pas à jour tes crasses

L’installation de nouveaux logiciels est vraiment contraignante : télécharger un binaire, encore une série de question inutiles, une demande de confirmation administrateur (pas très sécurisé, ils ne demandent même pas de mot de passe root). Pire, avec certains programmes, j’ai des dépendances étranges qui s’installent. Je cherchais à installer un client torrent (on m’a conseillé µTorrent) pour télécharger une iso d’archlinux et je me retrouve avec une série de dépendances comme une toolbar ou un changement de ma page d’accueil dans Firefox. Je ne comprend vraiment pas pourquoi c’est nécessaire et pourquoi tout le monde trouve ça normal.

Admirez la richesse des effets proposés à droite

Admirez la richesse des effets proposés à droite

Les logiciels ne me semblent pas très stables non plus. J’ai voulu tester la webcam et ai reçu directement quelques popups avec une fenêtre d’erreur. Non seulement ça fait pas très pro de vendre des logiciels buggés mais en plus cette agression à coup de popup montre un manque flagrant d’étude de l’interface. Heureusement que je m’y connais un peu en informatique parce qu’un utilisateur non averti aurait vite fait de tout fermer (ce qui est exactement ce que j’ai fait après réflexion).

Quand je démarre mon PC, c'est pas par ça que j'ai envie d'être accueilli

Quand je démarre mon PC, c’est pas par ça que j’ai envie d’être accueillit

En continuant sur le sujet des popups, j’en ai également une série me proposant des versions d’essais ou des mises à jours automatiques de logiciels dont je n’ai aucune idée de l’utilité. On me parle même d’un système de protection contre les menaces internet et virus. Je ne vois pas trop l’utilité, si un logiciel est bien fait, les failles sont corrigées dès qu’elles sont découvertes, pas besoin de venir rajouter une couche de protection intermédiaire, c’est juste bon à ralentir la machine.

Bon je commence à en avoir assez de tout cela. J’ai voulu ouvrir le traitement de texte préinstallé (Microsoft Office, le LibreOffice local je crois). On me demande de me connecter à un compte pour prouver ma licence. Si tu me donnes pas de licence, pourquoi tu me préinstalles ça !

Y a pas que MS Office de logiciel inutilement préinstallé...

Y a pas que MS Office de logiciel inutilement préinstallé…

Et puis la gestion des fichiers est épouvantable. Comment les gens peuvent travailler là dessus ? Le nom d’un même dossier est parfois traduit en français, parfois en anglais, il y a des liens symboliques dans tous les coins. Je n’arrive pas à comprendre la hiérarchie. A la place du simple dossier /home/mart pour mon utilisateur, dans le dossier C:Users, je trouve mart, All Users, Default, Default Users et Public. Mais ça ne s’arrête pas là ! Dans chacun de ces dossiers, j’ai des sous dossiers qui me semble redondants comme AppData, ApplicationData ou Local Settings. Est-ce que je dois stocker mes documents dans le dossier Documents ou Mes documents ? Le Mes documents n’étant d’ailleurs visiblement pas uniquement pour les documents puisqu’il contient des liens symboliques vers les dossiers présents un niveau supérieur de contenu multimédia (Ma musique pointe vers ../Music, idem pour les images et les vidéos). Je suis vraiment perdu là dedans.

Dell m’a gentiment fourni des CD contenant les drivers pour des périphériques comme le lecteur d’empreinte digital. Par contre il est pas très malin puisqu’il y a pas de lecteur CD sur cet appareil. Bon de toute façon un lecteur d’empreinte est un peu de l’anti-sécurité, je ne l’utiliserai pas. Je découvre avoir pas mal de programmes qui tournent en arrière plan au point de que ma barre d’outil est assez bordélique.

Et encore j'avais déjà fait un peu de nettoyage à ce moment là

Et encore j’avais déjà fait un peu de nettoyage à ce moment là

Après quelques heures d’utilisation, je me retrouve avec des popups dans tous les sens, des alertes de sécurité et invitations de tests, plusieurs toolbars sur mon Firefox. Je n’arrive plus à retrouver les fichiers que je venais de créer (c’est plus tard que j’ai compris que le dossier « Téléchargement » et « Download » étaient le même). Je me rend compte que j’ai des dizaines d’utilitaires préinstallés et même pas un pour ouvrir les .tar.gz. À chaque démarrage, j’ai des popups (dont une d’erreur Intel) désagréables. Pour toute nouvelle clef USB insérée, le système doit d’abord installer les drivers (pour une clef USB!) et veut me faire toute une série d’opérations d’importation (même un formatage quand j’ai inséré une clef en EXT, et puis quoi encore ?). Chaque installation de programme n’est vraiment pas une sinécure, j’ai des binaires d’installation qui traines dans tous les coins. Les forums sur internet me conseillent plein d’outils pour augmenter tel ou tel niveau de protection, pour faire de la maintenance et désinstaller tel ou tel programme préinstallé. Et la goutte qui fait déborder le vase était quand je découvre qu’il faut faire tourner régulièrement un outil pour défragmenter le disque en raison d’un système de fichier mal conçu.

Non, non et non. Je veux bien être ouvert d’esprit et encourager les startup innovantes et même payer si le logiciel est bien fait mais là franchement c’est raté. Je veux pas être pessimiste Microsoft mais si vous ne vous remettez pas sérieusement en question, vous n’allez jamais percer sur le marché si concurrentiel des OS de bureau, surtout avec un business model pareil. Après quelques heures d’utilisation, c’est décidé, je retourne sous Linux ! Tient j’ai entendu parler d’une autre startup montante : Apple, il faudra que je teste ça un jour.

Commentaires fermés sur StatusNet vs Twitter, quelques statistiques personnelles

On considère souvent que StatusNet est un échec. Communauté trop petite, peu d’interaction, plateforme non agréable,… On voit de nombreuses personnes abandonner leur instance, @clochix étant le dernier à déclarer son intention de quitter StatusNet. Et pourtant Twitter est loin de faire des heureux, la version 1.1 de son API entrant en activité le mois prochain, de nombreux clients devraient fermer, ne respectant plus les nouvelles conditions draconiennes (nombre d’appel vers l’API fortement réduit ou interdiction de mixer les flux de Twitter et un autre réseau social par exemple). Il semblerait logique de déménager vers des cieux plus libres et cléments et pourtant… J’avais eu il y a quelques mois une réflexion concernant app.net, clone payant de Twitter, comme étant une réponse surprenante et assez déprimante (l’aspect libre n’intéresserait-il pas grand monde ?). J’ai personnellement créé un compte StatusNet sur une instance perso (mart@dotzero.me) début 2012. Après un an d’utilisation (et comme il est de bon gout de faire des récapitulatifs à la nouvelle année), voici quelques stats personnelles de mon utilisation des deux réseaux.

J’ai fait un script python pour récupérer ses stats (digression: c’est vraiment pas pratique à utiliser les API OAuth) et ai réussi avec, pas mal de difficultés avouons le, a récupérer quelques chiffres. J’aurais voulu obtenir quelques statistiques supplémentaires comme le nombre de messages favoris, répétés etc. mais l’API StatusNet ne le permet pas. Le nombre de personne suivie est également un peu faussé car est le total, pas spécifiquement pour 2012 (pas trouvé comment filtrer cette info sur aucun des deux réseaux). J’aurais aimé connaitre le nombre de personnes présentes sur les deux réseaux mais cela nécessiterait un passage en revue manuel des deux listes (peut être plus tard). Donc sur l’année 2012 nous avons eu :

Status postés : 1174 StatusNet, 796 Twitter
…dont sont des répétitions (aka RT) : 112 StatusNet, 205 Twitter
Mentions directes : 591 StatusNet, 90 Twitter
Nombre de personnes suivies : 98 StatusNet, 203 Twitter
Nombre de personnes me suivant : 67 StatusNet, 49 Twitter
…dont suivi réciproque : 45 StatusNet, 28 Twitter

dancing

Moi à chaque alerte d’un nouveau follower

Le seul point où Twitter fait vraiment mieux que StatusNet chez moi est le nombre de personnes que je suis. On peut expliquer cela par :

  • il y a plus de monde sur Twitter
  • StatusNet, de par sa nature décentralisée, rend également plus difficile la découverte de personnes à suivre (où chercher un pseudo connu ?)
  • les suggestions sur Twitter aident bien

Par contre, il n’y a pas photo, je poste plus et il y a plus d’interaction sur StatusNet que sur Twitter. J’ai plus souvent tendance à avoir une discussion de quelques status avec des gens sur StatusNet (cela peut sans doute s’expliquer à la limite de 140 caractères sur Twitter que j’ai augmenter à 256 sur StatusNet). Le taux de suiveurs réciproques (personnes que je suis et qui me suivent) est beaucoup plus faible sur Twitter. Je vois plusieurs explications :

  • plus de sociétés ou personnalités sur Twitter (personnes qui auront moins tendance à me suivre en retour)
  • plus de spammeurs sur Twitter (que je ne suivrai pas en retour)
  • je souvent de sujets geek ou libres qui intéresse un plus fort public sur StatusNet

Le nombre de répétition de status supérieur sur Twitter peut s »expliquer par le fait que j’aurai plus tendance à répéter un message d’une société, organisation ou personnalité qui sont plus présents sur Twitter.

Le troisième point soulève quand même un problème : StatusNet est une communauté peuplée principalement de geeks et libristes quand Twitter est plus généraliste. @Lydie_F a mentionné hier sur Twitter que 75% des chefs d’Etat disposent d’un compte Twitter. Combien possède un compte StatusNet ? Sans doute zéro. Combien savent ce qu’est StatusNet ? Sans doute zéro également. StatusNet n’arrive toujours pas à capter le grand public.

Évidement ceci n’est que mon expérience personnelle, d’autres auront surement des retours différents. Mes sujets de conversations sont sans doute plus orientés geek-libriste mais l’expérience StatusNet est une réussite pour moi. A l’heure actuelle, je ne pense pas supprimer un compte sur aucun des deux réseaux en raison de leur utilisation différente que j’en fais. Twitter reste plus orienté actualité/découverte de nouvelles choses tandis que StatusNet a plus un aspect communautaire. Si Twitter venait à m’obliger d’utiliser son site internet, il se pourrait cependant que je ferme mon compte sur ce dernier mais c’est clairement se couper un public différent (il reste des personnes avec qui j’ai envie de continuer à avoir un contact). Attendons de voir comment vont évoluer ces réseaux, tout cela sera surement fort différent dans un an, il ne s’agira sans doute même plus des même réseaux (pump ?).

Mise à jour: le script a été mit à jour, les possibilités et commandes ont légèrement changé, lisez le README pour plus de détail ou suivez mes annonces avec le tag smailarchiver.

Faisant un peu le nettoyage dans mes boites à emails, j’ai voulu sauver tous mes vieux messages avant suppression. Cependant, je voulais un moyen de faire cela de manière automatisée (possible d’utiliser cron), incrémental (ne pas tout retélécharger à chaque fois), supportant la compression et surtout garder une certaine confidentialité (chiffrement).

J’ai trouvé des bouts de codes pour faire chaque partie séparément (ici et ici par exemple) mais pas de programme permettant de faire tout cela ensemble. A que cela ne tienne, j’ai donc créé un petit script python contentant mes besoins. Ainsi est né SMailArchiver (avec S pour Secured ou Suicide, question de point de vue) que je partage ici.

Ce petit bout de code (approchant des 400 lignes de python) permet facilement de faire des backup de plusieurs comptes emails avec toute une série d’option comme la compression des mails avant le chiffrement (une compression après le chiffrement pourrait également être utile mais est moins efficace) ou le choix d’une clef constituée uniquement de bytes aléatoires ou renforcée par un mot de passe de votre choix. Le chiffrement se fait avec AES 256 avec une signature HMAC-SHA256 histoire d’empêcher les manipulations. C’est pas Truecrypt mais ça suffit pour cacher les conversations avec votre maitresse des yeux indiscrets de madame votre femme (ou inversement).

big mess

Avant d’utiliser SMailArchiver, ma gestion des emails ressemblait à ça… et mes cheveux étaient secs et cassants.

Le programme peut recevoir les paramètres nécessaires par la console, via des arguments ou via un fichier de config (regardez le fichier d’exemple dans le dépot).

$ python smailarchiver.py 
Enter your email username: foo@bar.com
Enter your imap server: imap.bar.com
Enter your password: 
Enc key: 6MIiWqNiJ4h1qDmp5Z4OpWKRLst7eAbirWOPHIm9zqk=
Sig key: 9JmR0593CWwtnJhRWqdLHk7tXvX/h6l6A2GLKA4iVq4=
$ python smailarchiver.py --user foo@bar.com --imap imap.bar.com --passwd monkey1 --key foo@bar.com.keys --promp --compress
Enter your encryption/signature password: 
Enc salt: KNwhv7kuNs0/iCZZTUyd05IuOylzG/n2oBALj1UMJ0c=
Sig salt: A99CxfzwRbU4P4lse6eN5O+g2wethRzL4gMH7xqFkgE=
Hash: oNcX7GAyHsS+bNOT8UCYAYM/ltCmx34E9Gmmpky02AE=
$ python2 smailarchiver.py -c config.json
Enter your encryption/signature password: 
Enc salt: m87TeE9fmr5XPf7yvN0w3PYOv3ivlNKpKGp35hC+N/k=
Sig salt: 2k9Wu5HBEo7G0J0EzlglOqV0Zko1LmhfiGnxD2QEzhE=
Hash: FA3TdkhWNZqy9BjGOk2UVZ6AeqgHSrparH3ynHdvj38=
$ python2 smailarchiver.py --decrypt foo@bar.com/ --key foo@bar.com.keys --promp
Enter your encryption/signature password: 
Decrypting 16.gz.mbox
Decrypting 11.gz.mbox
Decrypting 45.gz.mbox
...

Code évidement open source que vous pouvez trouver le code sur mon dépot gitorious. C’est compatible python 2.7 et plus (python 3 c’est l’avenir !) et nécessite pycrypto (qui est compatible python 2.1 et 3.2, j’imagine même pas le bordel que ça doit être). Mes tests très scientifiques type àvuedenezçapasse montrent que le programme fonctionne mais on est jamais à une erreur prêt, n’hésitez pas à me communiquer vos idées d’améliorations ou corrections.

PS: fait amusant concernant AES 256, saviez vous que l’énergie contenue dans une supernova ne suffirait pas rien que pour énumérer les 2²⁵⁶ états possibles (calcul non compris donc). A moins de trouver une faille de sécurité, il est donc impossible, avec les notions de la physique actuelle, de faire un brute force sur une clef AES 256. Source: Applied Cryptography, Bruce Schneier (extrait en question).

Un des problèmes avec la gestion des mails maison, c’est qu’on a vite fait d’être considéré comme un spam par un filtre un peu trop difficile. Très gênant si vous pensiez gérer votre adresse professionnelle. Heureusement il existe des solutions. J’ai mis à jour la page de mon wiki concernant la gestion des mails avec reverse DNS, SPF et DKIM. Voici un résumé :

Les filtres

Le principe des filtres anti-spam (dont SpamAssassin est le plus connu) est très simple. Vous partez d’un score de zéro. Lorsque le filtre détecte quelque chose de suspect votre score augmente, lorsque vous avez un comportement que n’aurait pas un spammeur, vous perdez des points. Arrivé à une certaine limite, vous devenez un spam.

Évidement toute la difficulté réside à bien pondérer et trouver les bons critères. Le fait d’utiliser des mots comme « viagra » va vous faire gagner des points. Les spammeurs l’ayant comprit, ils utiliseront v1agra par exemple. Les critères faisant perdre des points ne doivent pas non plus être simples sinon un spammeur les utilisera pour passer inaperçu.

Il existe également le filtre bayésien plus complexe mais très puissant qui va utiliser des probabilités statistiques. Ce filtre se base sur le contenu du message et l’on a donc pas d’influence coté serveur. Évitez juste de parler de vente de médicaments en ligne dans vos messages.

Voici deux exemples de scores (spamassassin et un inconnu) plutôt mauvais que j’ai eu sans rien activer :

X-SGSI-SpamCheck: n'est pas un polluriel, SpamAssassin (score=1.982,requis 5,
 BAYES_50 1.00, RDNS_DYNAMIC 0.98, SPF_HELO_PASS -0.00)

Il s’agit du filtre de mon université, il considère que l’on est un spam à partir de 5 et m’a mit 1.982, rien de dramatique.

X-Spam-Flag: YES
X-Spam-Score: 6.782
X-Spam-Level: ******
X-Spam-Status: Yes, score=6.782 tagged_above=4 required=6.3
	tests=[BAYES_50=0.8, EIGHTBIT_ENCODING=1, RCVD_FAKED_HELO=2,
	RCVD_SHORT_HELO=2, RDNS_DYNAMIC=0.982] autolearn=no

Il s’agit ici d’un filtre d’entreprise qui est beaucoup plus sévère. Il m’a mit un score de 6.782 alors que sa tolérance est à 6.3. Cela a eu pour effet de mettre un gros ***SPAM*** dans le sujet du message.

« Capitaine, je crois que notre filtre SpamAssassin est un peu trop permissif… »

Reverse DNS

La résolution DNS classique est de faire correspondre une URL à une IP. Le reverse DNS est le chemin inverse. Par défaut, j’ai, dans le cas de mon serveur OVH, 178-33-111-174.kimsufi.com pour l’IP 178.33.111.174. C’est ça qui explique mon « bonus » RDNS_DYNAMIC 0.98.

En mettant votre nom de domaine à la place, le problème est réglé. Vous pouvez vérifier que vous avez la bonne valeur via la commande $ dig -x 11.22.33.44 dans le champ PTR. J’ai remarqué que certains serveurs prenaient beaucoup de temps à mettre à jour leurs reverse DNS donc prenez votre mal en patience.

Si vous possédez comme moi plusieurs domaines pointant sur la même IP, sachez qu’il est inutile de mettre plusieurs entrées DNS PTR, cela pourrait être même contre productif. [Source]

SPF

Le plus simple. SPF pour Sender Policy Framework est simplement une entrée DNS depuis quel domaine on peut envoyer un email. Dans le cas d’un seul domaine qui n’envoie que depuis ses entrées MX, l’entrée DNS est

mart-e.be    SPF    v=spf1 mx ~all

Vous pouvez ainsi spécifier d’autres serveurs (si par exemple vous utilisez le relais SMTP de votre FAI). Pour les cas plus complexes, je vous renvoie vers le site officiel.

La valeur ajoutée par cette règle est assez faible. J’ai eu droit à SPF_HELO_PASS -0.00 pour le premier serveur mail et SPF_HELO_PASS=-0.001,SPF_PASS=-0.001 pour le deuxième. Vous pouvez vous dire que l’intérêt est donc limité mais voyez plutôt comme ceci : si un jour quelqu’un essaye d’envoyer du spam en se faisant passer pour vous, la vérification SPF échouera et son score de spam augmentera de façon non-négligeable.

Attention: SPF casse la redirection. Si vous envoyez un mail à machin@gmail.com sur laquelle votre correspondant a réglé une redirection automatique vers machin@myopera.com, c’est l’adresse IP de Google qui apparaîtra et pas la votre. La vérification SPF échouera donc. Cependant, ce n’est pas si grave que ça parce que le filtre anti-spam de Opera doit avoir l’habitude de recevoir tous les emails venant de machin@gmail.com qui a des bonnes chances d’être dans une liste blanche. Donc si le serveur du correspondant est bien fait, ça ne devrait pas poser de problèmes.

DKIM

Plus difficile, il s’agit ici de signer les headers du mail envoyé. La clef publique est spécifiée dans les DNS. J’ai choisi d’utiliser OpenDKIM. On génère des clefs asymétriques pour chaque domaine et on publie la clef publique dans les DNS. Celle pour ce domaine est par exemple :

default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChUywElHkvIJwgp9BYce97yhv0ImwK5+2Jm0CHBCfjYpeV7pSaAh/aYmX9+BJcSupVnJYBPf4DT/AFbV7O6snG6rGf3bnJSHdfyGa7Zq8a/7ERdTYo6/W5LJvaenDAxqlWPlgVafQtncRt+4/iF133FXLpC4VL6NmbMirK0yMRKQIDAQAB"

Lorsque que vous signerez un email, on aura par exemple.

DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mart-e.be; s=default;
t=1353269228; bh=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN/XKdLCPjaYaY=;
h=Date:From:To:Subject:From;
b=VQUjpDqQbD4OH4dRO5Ex3J0Qxoa5aKv6m7EYnxUgXE+SJd45PzJ0ZhIMzlIah3PRJ
6UQX7rZizYU7gp6PioYFovADAW0o31iZYyTpuiUlEXpKAFeoRl0gR7wTNZrPdkSgSr
A8bxxBjJPIUPpYW6ePuRixrumcCiNu2a0o8IC4Bk=

Votre correspondant supportant DKIM vérifiera la signature. Si elle est valide, vous perdez des points à votre score spam, si elle est invalide, vous en gagnez. Ben oui il ne suffit pas dire qu’on fait du DKIM pour ne pas être un spam, il faut encore bien le faire.

Conclusion

En appliquant ces trois méthodes, je suis passé à un score négatif sur le premier serveur et inférieur à 4 sur le deuxième (score à partir duquel il n’indique plus le détail).

Cela ne vous fera pas passer à travers les filtres les plus drastiques mais devrait diminuer le risque. N’hésitez pas à faire des tests sur plusieurs serveurs différents. Les filtres de Google et Yahoo ne donnent pas le détail du score mais les entreprises privées ou gens qui ont installé des filtres maisons sont plus sympa.

Si vous connaissez d’autres moyen de diminuer ce score, n’hésitez pas à partager. Je n’ai pas exemple pas d’explication sur le RCVD_FAKED_HELO et RCVD_SHORT_HELO qui m’ont donné chacun deux points ou le EIGHTBIT_ENCODING que je n’explique pas non plus (tu aurais préféré quoi ?) dans l’exemple ci-dessus.

css.php