Le Blog Utux

Parce qu'il n'y a pas que Linkedin pour se faire mousser avec des articles techniques

Encore du nettoyage de PC

Rédigé par uTux

L'histoire

On m'a confié un PC portable qui est lent et qui "affiche des publicités partout sur le web". Rien d'anormal jusque là vu que le web est pourri par la publicité, sauf qu'il y en a même sur Linuxfr et pour le coup c'est plutôt inquiétant. Des bannières, des onglets qui s'ouvrent, des pages qui me proposent de "nettoyer le registre pour accélérer mon PC", bref de la mauvaise herbe. Le PC est un SONY VAIO et est rempli de crapware/bloatwares préinstallés par le constructeur. Des logiciels bidons, des surcouches à l'interface graphique, des bidules de cloud etc etc. La machine rame et ventile alors qu'elle ne fait rien, le démarrage est long alors qu'en mode sans échec tout va vite.

Je commence par vérifier les extensions Firefox/Chrome/IE, mais rien d'anormal. Je supprime le profil Firefox et le recréé, mais le problème persiste, des pubs s'ouvrent toujours. Je passe un coup de malwarebytes, fait du tri dans le planificateur de tâches et le msconfig, vérifie le fichier hosts, les DNS, mais le problème persiste. Reboot en mode sans échec, scan malwarebytes / eset nod32 online scanner / Spybot. Entre 500-700 menaces détectées à chaque fois et supprimées mais les publicités reviennent quand même.

Je créé un nouveau compte utilisateur pour tester et reboote en mode normal. Pendant quelques minutes tout fonctionne bien mais les pub apparaissent à nouveau. Ces adware sont coriaces, j'ai épuisé tous mes recours et la prochaine étape est le formatage. Je démarre sur un LiveUSB de Fedora et copie les données sur un disque dur USB (je ne voulais pas le faire depuis Windows pour ne pas copier les adware/virus dessus).

Après avoir réinstallé Windows puis les pilotes essentiels ça va tout de suite beaucoup mieux car l'OS peut enfin s’atteler à d'autres tâches que faire tourner les crapwares de SONY VAIO. Les publicités qui altèrent les pages web ont enfin été éradiquées.

L'analyse

Ces crapwares / adwares sont coriaces. On ne peut pas toujours les désinstaller proprement, et ils s'enracinent de plus en plus profondément (par exemple avec les tâches planifiées). Les sociétés crapuleuses qui les développent surfent entre la légalité et l'illégalité. En effet contrairement aux virus qui s'installent discrètement sans consentement de l'utilisateur, un adware obtient toujours l'accord de ce dernier. Il est fourni comme "sponsor" pré coché lors de l'installation d'un autre logiciel, et en laissant la case cochée l'utilisateur accepte les conditions d'utilisation et installe le nuisible. Comme les gens ne lisent pas ou ne savent pas, ils valident.

Par conséquent l'ordinateur est inutilisable alors que matériellement il est excellent. On comprend le malaise qui existe dans l'informatique grand public car ce nettoyage m'a pris du temps : environ 8h réparties sur plusieurs soirées, qu'un réparateur professionnel aurait facturé au prix fort (à juste titre, c'est son métier). La plupart des gens vont alors supporter la lenteur, les publicités, alimentant par ailleurs le cliché "ordinateur = de la merde lente" et finiront par en acheter un nouveau qui aura exactement les mêmes tares.

A quand des antivirus qui bloquent les adwares ? Par exemple la barre Ask.com => poubelle. En 2016 j'affirme que les adwares sont devenus plus problématiques que les virus, et qu'à part le bon sens et l'expérience il n'y a pas vraiment de moyens pour s'en protéger.

Tox : bien mais pas encore prêt

Rédigé par uTux

tox, pour faire simple, est une alternative à Skype qui se concentre sur le chiffrement et la décentralisation. C'est tellement décentralisé qu'il n'y a pas de serveur ni de comptes, chaque utilisateur se voit attribuer un ID unique auto-généré et trouve ses amis via DHT comme bittorrent. Il existe plusieurs clients : µtox, qtox, toxic...

Le bon : le client qtox est joli, contrairement aux clients jabber qui nous rappellent toujours l'époque IRC. La possibilité de faire des captures d'écran, des les envoyer, et d'avoir une miniature des images dans la conversation est intéressante. L'absence de serveur résout le problème récurrent des serveurs Jabber public, c'est à dire l'instabilité. Ça marche plutôt bien.

Image tirée du projet sur github.

Le mauvais : les ID utilisateur sont assez indigestes, le copier-coller est donc obligatoire. L'intégration du client qtox n'est pas parfaite, ainsi selon le desktop l'icône systray est plus ou moins visible, voir carrément absente. Gros problème avec les notifications de messages qui passent souvent inaperçues : je rate souvent des messages que l'on m'envoie et mes contacts aussi ("ah mince, tu m'as écrit il y a 15 minutes mais je n'avais pas vu"). Les appels vidéo/audio ne fonctionnent pas à tous les coups (écran noir puis webcam bloquée). Mais le problème le plus bloquant c'est la liste de contacts non synchronisée. Si vous vous connectez à votre compte depuis un autre poste, la liste de contacts sera vide. Dans mon cas j'ai contourné le problème en synchronisant le dossier ~/.config/tox sur seafile.

EDIT : sur les versions plus récentes de qtox, la visibilité des notifications a été améliorée.

Tox pose les bonnes questions et tente d'y apporter une solution. Malheureusement il y a beaucoup de problèmes qui le rendent peu utilisable même pour les geeks. Attendons de voir s'ils seront résolus ou si la conception (absence de serveur par exemple) fait qu'il n'y aura jamais de solution.

Récit d'une nuit au datacenter

Rédigé par uTux

Mon blog a pour sous-titre "le sysadmin qui raconte des histoires". Voici donc le récit d'une nuit passée au datacenter pour remettre en fonctionnement nos serveurs suite à une coupure électrique.

Dans la nuit du 30 Juin au 1er Juillet 2015 un important incident électrique a eu lieu dans l'Ouest de la France, impactant de nombreuses villes en Bretagne et dans les Pays de Loire. J'étais d'astreinte cette nuit là et je ne parvenais pas à dormir en raison de la chaleur (38°c en fin de soirée).

0h00. Je constate que plusieurs de nos serveurs ne répondent pas : absence de ping et pas d'accès IPMI / iDRAC donc impossible de faire quoi que ce soit à distance. Je dois donc me rendre en urgence au datacenter.

01h00. Arrivé sur place je croise d'autres techniciens venus eux aussi réparer leurs serveurs. J'entre mais n'ayant pas le code pour ouvrir la baie je suis obligé d’appeler mon collègue. Celui ci me le fourni et me propose de venir me filer un coup de main : vu la situation j'accepte. Une fois la baie ouverte je fais un contrôle visuel des voyants, tout est au vert, la raison de la panne est donc plus profonde. En branchant un PC sur le switch de la baie je fais un premier diag et je constate que les machines virtuelles sont toutes en carafe ainsi que deux serveurs physiques. Je note aussi que les quelques équipements fonctionnels ont un uptime d'à peine une heure, il y a donc eu un redémarrage général (non prévu).

01h30. J'ai trouvé la cause du non démarrage des VMs : le datastore iSCSI est offline. Heureusement je parviens à le remonter rapidement : le daemon iscsi-target était arrêté sur le SAN. Après l'avoir lancé je remonte les VMs, tout passe sauf quelques vieux serveurs Windows qui affichent des BSOD. Je charge une iso win2k3 puis tente des chkdsk mais rien à faire. Mon collègue est arrivé et a emmené de quoi tenir : des gâteaux et de l'eau. Nous attaquons donc ensemble le diagnostic de ces VMs Windows qui ne veulent pas démarrer et comprenons qu'il faut les mettre sur même serveur Xen qu'avant leur exctinction. En effet notre infra Xen est composée de 3 serveurs reliés à un datastore et les VMs peuvent démarrer dessus au choix. Cela ne pose pas de problèmes pour Linux, en revanche un vieux Windows n'aime pas. Nous faisons donc plusieurs essais jusqu'à trouver le serveur qui leur convient, nous paramétrons ensuite Xen pour que ces VMs précisent ne puisse démarrer que sur celui-là.

03h00. Les machines virtuelles sont maintenant fonctionnelles mais pas certains serveurs physiques, nous cherchons donc la raison. En fait un switch réseau a perdu partiellement sa configuration, probablement parce qu'elle n'a pas été sauvegardée dans la flash. En effet si vous avez fait du Cisco vous savez probablement qu'il y a plusieurs niveaux de sauvegarde de la configuration : le running-config (effacé au redémarrage) et le startup-config (permanent). Après avoir réaffecté les VLANs aux bons ports, les serveurs physiques repassent enfin en UP, sauf un.

03h30. Sur ce serveur réticent nous branchons un écran + clavier et constatons qu'il est bloqué au niveau de Grub. Après avoir booté un LiveCD de Gparted nous lançons une réparation du RAID1 logiciel qui est cassé à l'aide de mdadm. Mais la reconstruction ne suffit pas, Grub refuse toujours de booter. Nous démarrons alors à nouveau sur le LiveCD et faisons un chroot pour réinstaller Grub, à coup de update-grub et grub-install (sur sda puis sdb). Cette fois ça fonctionne !

04h30. Échange téléphonique avec le CTO qui nous aide à vérifier que tous les services sont bien rétablis. Nous corrigeons les derniers problèmes existants.

6h00. Nous partons nous coucher pour pouvoir attaquer la journée à 09h00. En ouvrant la porte de sortie du datacenter je constate qu'il fait jour et que le sol est humide alors que j'y suis rentré de nuit sous une chaleur étouffante. J'aperçois aussi d'autres techniciens aller et venir avec des serveurs sous le bras, nous ne sommes donc pas les plus malchanceux.

Résumé : Une brève coupure électrique a provoqué l’extinction puis l'allumage de nos équipements. 1 serveur physique a cassé son RAID1, le datastore pour Xen n'a pas correctement démarré, et le switch a perdu partiellement sa configuration. Malgré la fatigue nous avons gardé la tête froide, aidés par l'adrénaline et les gâteaux. Nous avons résisté à cette épreuve du feu, en équipe, et avons gagné 1 journée de repos en compensation.

HP ProLiant MicroServer Gen8 : mon NAS homemade

Rédigé par uTux

Le HP Proliant Gen8 G1610T format micro tour est un petit serveur en forme de cube ayant la particularité d'offrir 4 baies de disque. Il est totalement silencieux avec une consommation électrique maîtrisée et est proposé à un prix abordable. Il existe en version Intel Celeron ou Intel Xeon, la première étant trouvable à moins de 300 euros (j'ai eu le miens à 226€ neuf chez Amazon en Septembre). Ce n'est pas si cher si on le compare à un NAS Synlogy d'autant qu'on a droit à du hardware beaucoup plus intéressant :

  • CPU Intel Celeron G1610T (double cœur, 64 bits, virtualisation)
  • 2GB de RAM ECC (extensible)
  • 2 cartes réseau gigabit
  • iLo (KVM IP)
  • Un emplacement PCI Express 16x format low profile.
  • Consommation en idle et sans disques de ~30W
  • Silencieux
Lien vers la fiche constructeur.

On a donc un vrai serveur sur lequel on peut mettre l'OS de son choix et faire de la virtualisation.

Après avoir mis 8GB de RAM ECC ainsi que 4 disques de 1To dans les baies, j'ai installé FreeNAS sur une clé USB. Au démarrage le ventilateur souffle fort (puisqu'on a affaire à un vrai serveur) mais il ralenti progressivement pour devenir quasiment inaudible. C'est simple : ce serveur fait moins de bruit qu'une Bbox Sensation fibre.

Les disques en cours d'ajout dans les baies.

Je connaissais déjà un peu FreeNAS mais il y a quelques années encore je n'étais pas très familier avec ZFS et FreeBSD. Aujourd'hui je le suis beaucoup plus et je découvre donc à quel point ce produit est bon. Quelle joie d'avoir à portée de main les outils pour gérer un zpool, programmer des scrub périodiques, des snapshots avec durée de rétention, des dataset, des périphériques block...

Bien entendu FreeNAS est orienté NAS donc au delà de ZFS on a les fonctionnalités de partage Windows, UNIX et Apple ainsi qu'une gestion complète des utilisateurs (intégration LDAP ou AD possible).

Les sysadmin FreeBSD seront ravis de noter la présence des jails. Si vous voulez que votre NAS fasse office de serveur DNS, il suffit de créer une jail qui tournera sur FreeBSD 9.3 et dans laquelle vous pourrez configurer named. Backuppc ? Idem, une jail avec les ports qui vont bien (ou pkg).

Mes jails sur FreeNAS.

Pour le stockage j'ai testé deux configurations :

  • 4 disques en raidz-1, similaire à du RAID5 : 3TB utiles
  • 2 disques en mirror + 2 disques en mirror, similaire à du RAID10 : 2TB utiles.

La première configuration semble la plus avantageuse car elle offre la plus grosse capacité de stockage mais souffre de mauvaises performances en écriture sans que je comprenne réellement pourquoi (bloqué à 30Mo/s). Refaire le zpool avec 3 disques + 1 spare règle le problème mais c'est dommage d'avoir un disque inutilisé. Il faut noter aussi que beaucoup de sysadmin déconseillent le raidz-1/RAID5 en raison de la reconstruction stressante en cas de changement de disque. Cet excellent article résume la situation. La deuxième configuration en mirror+mirror n'offre que 2TB de stockage (50%) mais fonctionne mieux et la maintenance est facilitée. Voici mon zpool de stockage "data" :


[root@freenas] ~# zpool status
  pool: data
 state: ONLINE
  scan: scrub repaired 0 in 1h38m with 0 errors on Wed Jan 20 03:38:41 2016
config:

	NAME                                            STATE     READ WRITE CKSUM
	data                                            ONLINE       0     0     0
	  mirror-0                                      ONLINE       0     0     0
	    gptid/094171e0-69d3-11e5-81a0-d0bf9c46b918  ONLINE       0     0     0
	    gptid/0a481bb7-69d3-11e5-81a0-d0bf9c46b918  ONLINE       0     0     0
	  mirror-1                                      ONLINE       0     0     0
	    gptid/0b1b6253-69d3-11e5-81a0-d0bf9c46b918  ONLINE       0     0     0
	    gptid/0bf02931-69d3-11e5-81a0-d0bf9c46b918  ONLINE       0     0     0

errors: No known data errors

Explication : le zpool data est composé de deux vdev additionnés : mirror-0 et mirror-1. Chaque mirror est composé de deux disques qui, comme leur nom l'indique, sont en miroir (comme du RAID1). Notez qu'il n'y a pas de "stripping" comme dans le RAID10 entre mirror-0 et mirror-1, les données sont écrites là où il y a de la place. L'avantage est qu'on peut avoir deux vdev de taille différente. Par exemple mirror-0 pourrait faire 1TB et mirror-1 faire 2TB, le zpool aurait donc une taille de 1+2 = 3TB là où un RAID10 s'alignerait sur le plus petit et n'aurait donc que 2TB disponibles. ZFS permet aussi de remplacer les disques au fur et à mesure et augmenter la taille du stockage, le tout à chaud. Pour la petite histoire, je l'ai déjà fait sur un serveur de production en remplaçant des disques de 2TB par des 4TB, le zpool est passé de 4 à 6 puis à 8TB.

La compression lz4 est activée par défaut dans FreeNAS car avantageuse en terme de stockage mais aussi de performances. En effet le coût CPU est faible et la réduction du nombre de blocs physiquement écrits et lus améliore la rapidité.

En conclusion le HP Proliant G1610T est le serveur que j'attendais depuis des années. Silencieux, peu gourmand mais néanmoins véloce, il a tout d'un grand surtout les baies de disque qui permettent de faire du stockage. Associé à FreeNAS, il bat toutes les solutions propriétaires du marché et se révèle beaucoup plus souple pour un sysadmin comme moi qui ne jure que par les produits qui offrent un vrai accès root.

HTML5 : la propriété <figure> c'est super !

Rédigé par uTux

J'ai fait beaucoup de CSS de 2008 à 2010, j'étais capable de coder un thème dotclear ou pluxml de A à Z avec un simple éditeur de texte. Mais les choses ont beaucoup changé aujourd'hui, HTML5 est arrivé ainsi que le responsive design et javascript qui prennent une place de plus en plus importante. Donc je suis non seulement rouillé mais en plus totalement à la ramasse par rapport au code moderne.

C'est la raison pour laquelle je me suis contenté de légèrement modifier le thème de base Pluxml au lieu d'en refaire un entier. Rien de bien fracassant puisque je me suis contenté d'ajouter un fichier "local.css" invoqué dans le header afin de modifier certains éléments notamment les couleurs et les polices.

En cherchant comment gérer une image + sa légende dans un article j'ai découvert <figure>. Cette propriété HTML5 évite de devoir créer inutilement des <div> et se révèle plus élégante :

<figure>
    <img src="https://utux.fr/data/medias/0005/orage.jpg" alt="" />
    <figcaption>Orage à Nantes (août 2015)</figcaption>.
</figure>

Lisible non ? Plus d'infos chez alsacréations. ou w3schools. Je ne détaille pas la partie CSS car ce serait un peu lourd, mais si ça vous intéresse vous pouvez jeter un œil dans le local.css. En attendant voici le résultat :

Orage à Nantes (août 2015)

Image extraite d'une vidéo prise avec un Lumia 735 il y a quelques temps. La tour que l'on voit entre les grues à gauche et l'éclair est bien sûr la Tour Bretagne.