PROJET AUTOBLOG


Le blog de Seboss666

Site original : Le blog de Seboss666

⇐ retour index

Quelques liens en vrac et en français, 24° édition

mardi 7 novembre 2017 à 18:30

Encore plein d’articles intéressants sur différents domaines, du technique, de l’un peu moins technique, et même un peu de politique, sale évidemment, c’est la norme semble-t-il cette année…

BOINC, systemd et priorité des processus sous Linux

L’arrivée de systemd et de l’exploitation des cgroups pour l’ordonnancement des processus au sein du noyau linux a eu un effet de bord relativement inattendu sur la gestion et l’utilisation du « nice ». Paul nous présente donc comment s’en sortir avec l’exemple du service BOINC (calcul scientifique partagé).

Le piratage d’Equifax

Equifax est une société qui fait de la notation de crédit : ils collectent des données sur des personnes poru évaluer leur capacité à rembourser un emprunt. Et donc la collecte est importante, très intrusive, pour pouvoir dresser le profil le plus précis possible. Hors, comme il est de plus en plus courant, Equifax a fait l’object d’une attaque qui a conduit à une énorme fuite de données personnelles, de celles qui permettent d’usurper quantité d’identités, avec les conséquences désastreuses que l’on sait pour les personnes touchées. Et leur comportement face à cette crise est plus que douteux à bien des niveaux.

De l’état du marché du développement

C’est une réalité, les logiciels et les algorithmes sont amenés à prendre de plus en plus de place dans notre vie quotidienne, encore plus qu’actuellement, et nos dirigés pensent qu’il est nécessaire de « produire » plus de codeurs. Mais le problème est-il vraiment dans les cursus ? Pas nécessairement si l’on en croit Jean-Baptiste Dusseaut d’Arpinum, qui dresse un portrait peu glorieux du marché, et des entreprises notamment française dans le domaine du développement logiciel.

Wget derrière un SSO

On a beau vous rabâcher que les cookies c’est le mal, j’ai déjà eu l’occasion de m’exprimer sur leur réelle utilité technique. Mais quand vous avez besoin de faire des tests via wget (ou curl) avec un session connectée, c’est compliqué, à moins de pouvoir récupérer un cookie déjà enregistré et valide pour votre application. Et c’est Genma qui vous présente la manipulation, même si l’extension proposée ne sera plus exploitable avec Firefox 57 (j’ai collé ma petite contribution en commentaire 😉 ).

Le paradoxe de Monty Hall (…disponible également en version « pigeon »)

Monty Hall était un présentateur de télévision dans les années 60 (et j’ai découvert que ça a duré bien plus longtemps que ça) qui présentait un jeu dont la phase finale, relativement simple, plaçait le candidat face à trois portes, avec un cadeau derrière l’une d’entre elles, le but consistant à sélectionner la bonne porte. Le plus étrange avec ce jeu, c’est que les pigeons semblent plus enclins à découvrir la meilleure façon de gagner que nous. Je sais que pour la première fois de l’histoire le QI moyen a légèrement baissé, mais tout de même, c’est cocasse 🙂

Vos clés (physiques) ne sont pas en sécurité sur Internet

Vous pensez que votre domicile, votre valise, votre carte bleue, sont en sécurité dans le monde « physique » ? Que nenni, grâce à la magie des réseaux sociaux et à un étalage immodéré de notre vie privée sur ceux-ci, il est possible de récupérer quantité d’informations permettant ainsi d’accéder à ce que vous pensiez en sécurité. Petit florilège à partager aux personnes ayant donc une très mauvaise hygiène.

L’UE a dissimulé un rapport montrant que le piratage n’a pas d’effet négatif sur la vente de contenu protégé

Si on voulait encore une preuve de la collusion des élus même au niveau européen avec les lobbies d’industries culturelles, la voilà : un rapport de 360000€ sur l’étude de l’impact du piratage de contenus sur leurs ventes qui n’aboutit pas aux conclusions qui plaisent aux ayant-tous-les-droits, enterré par les commanditaires. Fort heureusement, il reste quelques irréductibles comme l’incontournable Julia Reda du Parti Pirate pour bien remettre le nez dans leur merde à ces corrompus (parce que là c’est pas possible que ça soit une erreur).

Infiltration : Ne pas mettre à jour son blog… et c’est le drame

On ne le dira jamais assez : si vous basez votre site sur un gestionnaire de contenus (Content Management System dans la langue de Taylor Swift), il faut le tenir à jour, aussi bien la base que les différents plugins et thèmes, et ça vaut aussi si d’aventure vous développez du code custom dessus.

Quelles conséquences si jamais vous négligez cette situation ? Eh bien, j’aurai pu moi-même faire un article, mais finalement, c’est déjà très bien fait par des gens dont c’est le métier en plus. Une chose à retenir : si votre site est détourné à des fins malveillantes, c’est d’abord vers vous qu’on va se retourner et emmerder comme pas possible. Demandez à ceux dont le serveur a été saisi en début d’année suite à l’attaque Wannacry sous prétexte que celui-ci communiquait via Tor.

Tour d’horizon sur HTTPS et les en-têtes de sécurité

Le mouvement de chiffrement des communications web est définitivement engagé, et il est plus qu’improbable qu’on reviendra en arrière étant donné qu’il faut maintenant se protéger de nos propres gouvernements y compris pour les communications les plus simples. Mais si la partie cryptographique est une base solide, il est facile d’oublier qu’on peut faire plein de choses sympa pour améliorer l’expérience et le niveau de sécurité via de simples entêtes HTTP. Pourquoi s’en priver dès lors ?

10 mythes sur la vie privée sur Internet

Vous pensez que votre vie privée est à l’abri sur Internet, ainsi que votre anonymat ? Pas de bol, il va falloir réviser votre jugement, et c’est une bonne base de passer par cet article très simple mais pas simpliste, en donnant des pistes simples pour démonter chaque mythe.

Guide d’autodéfense numérique : deuxième parution papier

Le guide d’autodéfense numérique est avant tout publié en ligne. C’est l’étape suivante après avoir mis en pratique des mesures d’hygiène numérique, et que l’on veut aller encore plus loin dans la préservation de nos activités en ligne. La version papier a son intérêt : on risque moins d’être surveillé en la lisant qu’en lisant la version en ligne. Comme d’habitude, vous n’avez pas nécessairement besoin de mettre la totalité des propositions en pratique. Tous les détails sur le site de linuxfr.

Super Logout

Ce site n’est pas français, mais bon, c’est pas grave, il est intéressant. Il permet d’appeler d’une seule traite la plupart des pages de déconnexion de dizaines de sites en ligne, principalement des services en ligne américains.

CTF Quaoar : la démonstration de l’utilité des bonnes pratiques de sécurité

dimanche 5 novembre 2017 à 10:30

Quand on dit qu’il faut éviter les mots de passe par défaut, de suivre les mises à jour de sécurité d’un système (en l’occurrence ici le moteur de blog), ce ne sont pas des paroles en l’air. Et pour vous prouver ça, j’ai décidé de me pencher sur un exemple de challenge disponible sur le site vulnhub.com, qui propose une machine virtuelle prête à l’emploi à attaquer. Et j’annonce tout de suite, pour les moins techniciens, ne fuyez pas trop vite, je vais essayer d’expliquer au plus simple chaque étape.

En fait, c’est par le biais du Journal du Hacker que j’ai découvert ce challenge, simple au demeurant comme on va le voir. J’ai commencé à regarder la vidéo, et dès que j’ai vu qu’il y avait un WordPress, ça a fait tilt dans ma tête creuse, j’ai arrêté la vidéo et je me suis dit que j’allais m’y attaquer moi aussi. Après tout, WordPress est probablement le moteur de sites web le plus utilisé à l’heure actuelle, il est donc nécessaire de vous rappeler à quoi vous vous exposez en l’exploitant de travers, et moi de m’exercer un peu pour l’année prochaine et la prochaine Nuit du Hack (encore que le niveau est assez bas ici apparemment). Et donc, un petit CTF, c’est à dire un Catch The Flag, à savoir que des « drapeaux » sont cachés sur le système à attaquer qu’il faut découvrir pour marquer des points.

Rappel d’usage : il est strictement interdit par la loi de procéder à ce type de manipulation sur un système qui ne vous appartient pas.

Bon, reprenons depuis le début : on télécharge la VM, on l’importe dans Virtualbox, et on la démarre. Pour ceux qui sont déjà un peu perdus, la machine virtuelle simule un équipement distant sur la même machine physique. Car pour rappel, techniquement un serveur sur lequel se trouve un site web n’est finalement à la base que la même chose que votre PC, juste adapté (pas besoin d’écran, par exemple). Virtualbox vous permet donc de démarrer plusieurs systèmes, et dans le cas présent je vais en avoir deux : la cible, et une instance Kali, une distribution Linux spécialisée justement pour les tests de sécurité.

Tout ce qu’on sait en démarrant la machine cible, c’est son adresse IP : ici, c’est 192.168.1.4. On va donc commencer par faire un scan de ports, pour savoir sous quel angle on peut attaquer la machine. Un port, dans le domaine des communications informatiques, peut être vu comme une porte sur une maison, un point d’entrée pour communiquer avec un service : quand votre navigateur vous affiche un site, il demande la page au serveur via le protocole (langage) HTTP sur le port 80; plusieurs ports sont normalisés de la sorte, je ne vais pas faire un listing complet et en plus, en théorie, pour n’importe quel service on peut techniquement changer le port par défaut.

Ici, plusieurs informations différentes, on voit donc du SSH, pour interagir en ligne de commande à distance avec la machine, du HTTP, pour servir des pages web, du DNS, pour jouer aux pages jaunes, et du mail (IMAP, POP et SMTP). Chacun de ces éléments peut être attaqué pour diverses raisons, ici on cherche à prendre le contrôle de la machine, et donc obtenir un accès avec le plus de privilèges possibles. Le serveur web est probablement le plus simple à exploiter, commençons donc par vérifier ce qu’il nous dit.

On a donc une image, qui nous dit de cliquer sur le lien pour savoir quoi faire, et ça aboutit à une deuxième image tout aussi inspirée. Dans le cadres de challenges comme celui-ci, il se peut qu’un des drapeaux à retrouver se cache au sein de l’image, une technique qu’on appelle la stéganographie, mais je vais laisser ça de côté dans l’immédiat, on y reviendra si besoin d’indice qui seraient cachés. Il n’y a donc que peu d’informations pour le moment. Tentons certaines choses, du style /phpmyadmin, et la page d’erreur « 404 » nous donne un peu plus d’informations :

Apache/2.2.22 (Ubuntu) Server at 192.168.1.4 Port 80

Le système semble être une Ubuntu avec un serveur web Apache 2.2.22, ce qui nous indique une Ubuntu 12.04. Comme d’habitude, je ne sais pas encore si ça va nous servir mais le fait est que plus on obtient d’informations, plus on saura comment s’attaquer au système. En effet, les mises à jour de sécurité ont cessé sur cette version et en cas de besoin, on pourra consulter les vulnérabilités non corrigées. Si PHP est installé via les paquets d’origine, il sera en 5.3, ce qui est particulièrement vieux et donc faillible également. Donc vous le voyez, on a déjà, sans même être allé très loin, obtenu suffisamment d’information pour trouver quantité de vecteurs d’attaques potentiels. Et tout à ça la main.

Un fichier qu’on va souvent trouver sur un serveur web est le fichier robots.txt. Il est utilisé dans le cadre du référencement d’un site lors du passage des robots d’indexation de Google&co, pour indiquer les endroits autorisés et interdits pour le référencement. Et tiens, quelle surprise, apparemment il y a un /wordpress/ :

On remarquera la petite blague sur les hackers 🙂

Bingo ! En tout cas, ça ressemble à un WordPress, le thème par défaut date de 2014, ce qui peut laisser présager une version non maintenue à jour. Je pourrais chercher pas mal de choses à la main, mais je vais me concentrer sur un outil particulièrement pratique qui s’appelle WPscan (que j’avais présenté dans un de mes rares usages de Docker sur Manjaro, que j’ai même arrêté de pratiquer après la dernière réinstallation à la perte du SSD). Cet outil va nous permettre de récupérer quelques informations intéressantes :

Et pour certaines de ces entrées, un recensement des vulnérabilités connues. Et là, c’est champagne : le wordpress est dépassé, les rares plugins présents sont vulnérables, et on voit un utilisateur « admin » qui est l’un des identifiants les plus présents sur ce type de solution, au point qu’on devrait pendre les utilisateurs qui le laissent trainer. Pourquoi ? parce que le mot de passe probablement le plus utilisé pour aller avec, c’est admin. La preuve ?

Voilà, j’ai donc déjà le contrôle quasi complet du WordPress. Pas encore suffisant pour moi, mais déjà, ça permet de lancer à peu près ce qu’on veut avec l’utilisateur qui est associé au PHP qui tourne derrière (www-data si PHP est en module, c’est pratiquement assuré), et modifier à peu près ce qu’on veut sur le site, pour intégrer plein de choses dégueulasses qui permettront soit d’exfiltrer les données du site, et donc potentiellement des visiteurs/utilisateurs, leur faire miner de la monnaie électronique de manière cachée (coucou Pirate Bay), transformer le site en boutique de produits contrefaits… Les possibilités sont tellement nombreuses que je ne préfère pas trop m’étendre sur le sujet, en plus j’oublierais des trucs.

Ici on va commencer par s’ajouter un webshell, c’est à dire s’ajouter un mécanisme de ligne de commandes au travers du site, ce qui nous permettra d’effectuer plus d’opérations que par la base de WordPress. Plusieurs possibilités, aussi bien sur les méthodes d’injection, que sur le shell à utiliser. J’ai opté pour ws0shell, que je colle sur le site en passant par l’éditeur de thème :

Voilà, je peux donc maintenant parcourir tous les fichiers du WordPress, et je vais naturellement me tourner vers le fichier de configuration, qui contient les identifiants à la base de données. Et là, deuxième mauvaise pratique : le compte utilisé pour accéder à la base de données, qui contient donc tous les secrets du WordPress, c’est le compte root, autrement dit l’administrateur de la base de données, qui a donc accès à bien plus que la base du wordpress, à savoir tous les autres sites installés sur la même machine. Eh ben vous savez quoi ? J’ai tenté ce couple login/mot de passe pour me connecter via SSH :

Boum. Me voilà administrateur de la machine, et j’en ai donc le contrôle total, à pouvoir installer de quoi y rester même si le propriétaire s’en rend compte et colmate ses brèches, et pouvoir faire mes affaires à son insu. Et tout ça, sans être un expert en sécurité ou en « piratage ». Une fois que j’avais terminé moi-même, j’ai lu quelques articles sur ce challenge : parmi les plugins installés, il y en a un qui permet d’inclure n’importe quel fichier du système et donc de l’afficher (ce qui ne devrait pas être permis), et on peut tenter de passer par le shell injecté pour lancer un exploit d’élévation de privilèges, à cause du manque de mises à jour de la machine. Comme quoi, il y avait la voie facile et au moins une autre possibilité pour détourner cette machine de son usage premier.

Donc, récapitulons un peu, pour comprendre quels sont les erreurs qu’il ne faut pas reproduire :

Bien, maintenant pourquoi je rabâche encore sur le sujet de la sécurité ? Pour les personnes les moins aguerries et qui ont eu du mal à suivre jusqu’ici, il est facile de se retrouver face à un service à l’apparence propre qui est plus que discutable si on regarde l’envers du décor. Il est donc impératif de ne pas être trop confiant et le meilleur moyen si on veut tout de même utiliser ce service, c’est de disposer d’un mot de passe unique qui évitera que plusieurs de vos services se fassent trouer et donc vos données avec.

Pour parler un peu plus de technique, le monde merveilleux voudrait qu’on soit tous bons et que toutes les mises à jour soit appliquées en permanence dès que c’est disponible, la réalité est que souvent, et c’est une grosse erreur, un site web même basé sur WordPress est livré en mode « one-shot », sans suivi de sécurité, à la façon d’une affiche de publicité statique. Pire, quand de lourds développements ont été effectués, ils le sont généralement par rapport à une version de PHP bien précise, une version de WordPress bien précise, et occasionnellement, la mise à jour d’un de ces deux acteurs casse des choses, et réparer coûte de l’argent, de l’argent que certains ne sont pas prêts à payer, jusqu’à ce que ce prix soit payé par les clients, via les comptes utilisateurs volés ainsi que les données qui sont associées.

Et si la démonstration que j’ai faite là a pris à peine 20 minutes à la main, les sites web sur la planète entière sont en permanence scannés par des robots et d’autres sites infectés pour tenter d’intégrer les machines à des réseaux de zombies qui seront ensuite exploitées à la demande par des réseaux criminels, pour pas mal de choses comme du déni de service, du bruteforce, et autres joyeusetés. Alors prenez le temps de mettre en place quelques bonnes pratiques (du style celles de cet article, à propos de WordPress), ça vous coûtera beaucoup moins cher plus tard.

Mon NAS, qu’il est bien pour stocker mes données

dimanche 29 octobre 2017 à 10:30

J’ai d’abord présenté l’organisation que je comptais appliquer à mes sauvegardes, du moins la partie locale, et j’avais dit que j’évoquerai le NAS dans un billet dédié. Voici donc ledit billet, pour lequel la faute de grammaire est volontaire et je vous laisse chercher la référence 😛

Non, je n’ai pas remonté un NAS maison

L’itération originale de mon stockage réseau, à l’époque ou j’habitais encore avec ma très chère mère, était fabriqué maison avec en grande partie des éléments « recyclés » (boitier, CPU, RAM, Alim, Carte mère, disque système). Il a servi vaillamment pendant plusieurs années, avant qu’un gros souci avec le RAID5 mette un point d’arrêt à son fonctionnement (deux disques non reconnus sur trois, c’est un peu disqualifiant). Peu après mon arrivée chez LinkByNet, j’ai remis en place un petit Synology DS216j avec deux disques de 2To en RAID1 pour les besoins de ma maman. De mon côté j’ai survécu comme j’ai pu, avec disques durs externes, disques durs internes…

Mais pas de sauvegardes en tant que tel, et un SSD tout neuf qui m’a lâché en début d’année qui m’a vacciné. J’ai encore joué avec le feu pendant quelques mois pour me décider, et les premières briques sont maintenant en place après avoir tâtonné sur quelques points.

Le châssis : c’est pas un Synology !

Je ne suis pas parti sur un microserveur HP ou un nouveau bousin fait maison comme mon Pimousse. Et ce n’est pas non plus un Synology, non pas que je sois mécontent des prestations de celui de ma maman, mais les tarifs des modèles pouvant accueillir quatre disques sont un peu dissuasifs. Je me suis tourné vers Asus pour le coup, à la fois pour le prix et aussi pour le design. Oui, le fabricant historique de cartes mères pour PC s’est largement diversifié au fil des années pour couvrir toute une gammes d’appareils, dont les NAS via la gamme Asustor. Et c’est le modèle AS-1004T qui a retenu mon attention.

Pour commencer il est joli, du moins selon mes critères, et croyez-moi, quand vous allez devoir l’exhiber dans votre salon en permanence, c’est important. Les diodes sont discrètes (encore plus que prévu j’y reviendrais), et sur le papier la prestation offerte est tout à fait correcte pour le prix, parce qu’il y a une différence de près de 100€ avec les équivalents quatre baies chez beaucoup de concurrents.

Le montage des disques est assez trivial, les vis sont serrables à la main (sauf quand on a des trop gros doigts, ce qui est mon cas), avec une entretoise discrète en caoutchouc qui sera, je l’espère, efficace pour amortir les quelques vibrations qui pourraient se faire sentir. Bref, pas chiant, les amateurs de tiroirs amovibles pour un changement à chaud devraient se rappeler qu’il ne va pas être si sollicité que ça, et que si besoin d’intervention, ce qui n’arrivera pas souvent, l’éteindre pour l’ouvrir ne sera pas une catastrophe.

Pour l’instant le ventilateur est quasiment inaudible, ceci dit à date il ne souffle que sur un seul disque, donc à voir quand les 4 seront de la partie.

L’interface : c’est pas du Synology (et ça se sent)

Les interfaces modernes des NAS ont acquis des capacités nombreuses, visuellement agréable la plupart du temps, mais la mise à jour en temps réel de certaines informations rend le tout assez lourd, et si Synology ne s’en sort pas trop mal globalement, c’est moins le cas pour certains menus d’ADM (c’est son petit nom chez Asus) qui souffrent de lenteurs presque inacceptables, comme l’explorateur de fichiers que j’ai finalement très vite arrêté d’utiliser pour me tourner vers le NFS; elle reste malheureusement presque indispensable pour faire des transferts depuis un support USB connecté en face avant vers un des volumes du NAS.

Les menus sont aussi moins évident à identifier, la gestion des utilisateurs et des partages étant les premiers qu’on cherche à utiliser, j’imagine qu’on finit par trouver ses petits avec le temps, mais le premier contact est pas super intuitif. Dommage, une fois les sections identifiées chaque page est pour le coup assez complète, claire, bien organisée, je n’ai pas vraiment eu d’autres reproches à faire pour l’instant.

Petit bonus, j’ai découvert que l’on pouvait contrôler pas mal d’aspects matériels du bousin : niveau de vitesse du ventilateur (j’ai collé sur bas, ce qui peut expliquer le niveau sonore que j’obtiens), et une chose très appréciable quand vous dormez dans la même pièce : le contrôle des leds, aussi bien de la carte réseau que de la façade avant : le niveau de luminosité est paramétrable, et il y a même un mode nuit que vous pouvez activer manuellement ou planifier selon vos horaires ! Fini les sapins de Noël dans le noir 🙂

Un gros point noir par contre, c’est la possibilité de notification par mail lors de la création d’un nouvel utilisateur : le mot de passe est reçu en clair ! Allo ? On est en 2017 les gens de chez Asustor, faut se réveiller, même sur un appareil à ce prix, la sécurité ne devrait pas être aussi affreuse. Je ne parlerai pas de l’offre logicielle installable en sus, je n’ai pas encore pris le temps de me pencher dessus longuement, sachant que c’est vraiment le stockage qui m’intéresse avant tout…

Dernier point à mentionner, comme d’habitude les assistants d’installation (ne serait-ce que pour identifier le NAS à sa première connexion, avant de fixer l’adresse IP) ne sont pas disponibles sous Linux. Je suis passé par l’interface web du Freebox Server pour récupérer l’IP du bail DHCP avant de faire mes affaires directement via l’interface web, une manipulation qui n’est pas à la portée de tout le monde, surtout avec des box moins accessibles (Orange entre autres). Ceci dit, pour la première installation l’assistant qui tourne dans un navigateur est un guide plutôt correct, il procède même directement aux mises à jour; soyez patient par contre si vous n’avez pas un débit confortable.

Le choix du disque : Red is dead

En effet, contrairement à la plupart des personnes qui choisissent, certainement à juste titre, des modèles Western Digital « Red » qui sont optimisés et pensés pour fonctionner 24/7 dans des NAS, leur tarif, surtout passé les 3To, est assez rédhibitoire. Et je cherchais à m’équiper en modèles de 4To. En demandant de l’aide aux copains sur Telegram, j’ai été orienté vers Seagate, qui propose logiquement lui aussi des disques spécialisés pour les NAS : les « Ironwolf ». Un peu ronflant comme nom, mais c’est pas l’essentiel.

Pour le prix d’un 3To chez WD, j’ai donc un modèle 4To dont les plateaux opèrent à 5900 tours par minute chez Seagate (contre 5400 chez WD), avec les mêmes garanties sur la fiabilité du fonctionnement. Et il faut dire que pour l’instant, bien que je n’en ai pris qu’un seul, je n’ai pas vraiment à me plaindre du dégagement de chaleur, du bruit, ou des performances qui sont de toute façon limitées par l’interface utilisée pour le transfert, que ça soit USB3 ou Gigabit Ethernet.

Des performances plus que correctes pour l’instant

Mon premier test a consisté à transférer les données d’un disque dur externe d’1To en USB3 autoalimenté via la prise en façade. Résultat : ~75Mo en écriture en moyenne, sur un disque simple donc, le transfert étant lancé via l’interface web. Via Ethernet, j’ai testé avec mon gros PC de jeu, et le résultat est à peu près équivalent en SMB.

Pour le prix, on est donc vraiment bien servi, à voir quand le RAID sera de la partie, parce qu’il va nécessiter un surplus de calcul pour la parité, parité qui permettra de perdre un disque sans perdre de données, ce qui laisse le temps de le remplacer. Le SoC dans l’absolu n’est pas un foudre de guerre, il est refroidi passivement (d’ailleurs on peut voir apparaître le radiateur quand on ouvre pour installer les disques), donc ça pourrait jouer un rôle.

Une installation à conseiller ?

J’attends de voir avec un peu plus de temps et la multiplication des pains des disques, mais au moins pour les disques durs, pour l’instant il me semble que l’Ironwolf est une bonne alternative au Red qui semble être LA référence que tout le monde ressort à tout bout de champ. Pour le NAS lui-même, je suis un peu plus dubitatif, l’interface est brouillonne, à la limite pour un technicien prêt à fouiller les menus pourquoi pas, mais pour une personne moins à l’aise, il y a des chances que je continue de conseiller plutôt un Synology dont l’interface est peut-être un peu plus lourde, mais on cherche moins après des fonctions de base qui ne seraient pas nécessairement regroupées logiquement.

Un des avantages qu’il a est qu’il supporte facilement la migration d’un RAID1 vers un RAID5, je vais donc pouvoir facilement étaler l’achat de mes disques, pour éviter une mauvaise surprise 🙂

Je m’en accommoderai de toute façon, mais je ne pense pas qu’à moi (comme pour les outils de sauvegarde). Et comme peu de personnes font l’effort de chercher, moins on leur en fait faire, plus ils seront prêt à accepter d’utiliser ce type de solutions.

Quelques astuces diverses, neuvième

jeudi 26 octobre 2017 à 18:30

Certaines des astuces que je partage dans cette série sont anciennes, juste je n’avais pas pensé à les poser là avant, ou bien je viens seulement de les découvrir et de commencer à les utiliser. Dans tous les cas, j’adore ce métier vivant où l’on apprend des choses tous les jours 🙂

Désactiver l’ouverture d’un onglet avec une URL par le bouton du milieu dans Firefox

Une opération qui n’existe que sous Linux, et que Mozilla considérait plus logique, le bouton du milieu étant traditionnellement associé à l’opération « coller »; Mozilla allait plus loin en ouvrant un nouvel onglet et en chargeant l’URL présente dans le presse-papier. Si ce comportement va être désactivé pour les nouveaux à partir de Firefox 57 (ce n’est pas le seul changement), il est possible d’ores-et-déjà de s’en occuper manuellement via about:config :

middlemouse.contentLoadURL;false (défaut:true)

Mais pourquoi je découvre ça aussi tard ?

Fusionner une liste de vidéos avec ffmpeg sans réencoder

Trois morceaux, dans le même format, que j’avais besoin de recoller, si possible sans réencoder. ffmpeg sait heureusement le faire, pour ça il faut créer une liste de fichiers au préalable :

$ cat mylist.txt
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

$ ffmpeg -f concat -i mylist.txt -c copy output

Tada !

Désactiver l’envoi de statistiques de votre base influxdb chez influxdata.com

Le pétrole du 21° siècle, que tout le monde collecte par tous les moyens possibles, souvent sans vous prévenir ni vous demander la permission. J’ai pu découvrir en réinstallant influxdb qu’il envoyait des statistiques à la maison mère sans m’avoir consulté auparavant, à part un commentaire dans le fichier de configuration :

sept. 10 12:03:11 raspberrypi influxd[377]: [I] 2017-09-10T10:03:11Z Storing statistics in database '_internal' retention policy 'monitor', at interval 10s service=monitor
sept. 10 12:03:11 raspberrypi influxd[377]: [I] 2017-09-10T10:03:11Z Sending usage statistics to usage.influxdata.com
sept. 10 12:03:16 raspberrypi influxd[377]: [httpd] ::1 - telegraf [10/Sep/2017:12:03:16 +0200] "POST /write?consistency=any&db=telegraf&rp=default HTTP/1.1" 204 0 "-" "-" 43b0934c-960f-11e7-8001-000000000000 756847

Bien qu’en théorie les informations collectées ne sont pas sensibles en soi, Il est fort heureusement possible de désactiver ce comportement douteux avec une ligne dans le fichier de configuration :

reporting-disabled = true

Pensez évidemment à redémarrer le service.

Remplacer les espaces par des underscores dans les noms de fichiers

En lien avec la fusion des vidéos présentée jsute au dessus, j’ai rencontré un problème avec des espaces dans les noms de fichier. Comme c’est de toute façon le mal (ça et les accents), on peut remplacer ces espaces par des underscores :

find . -type f -name "* *.webm" -exec bash -c 'mv "$0" "${0// /_}"' {} \;

J’adore ce format de remplacement à la volée.

Historique illimité dans Bash

Je suis en effet souvent frustré de pas me souvenir dans le détail d’une commande mais de pouvoir la retrouver dans l’historique. Seulement par défaut la longueur de l’historique est assez courte, et il y a la possibilité de le rendre illimité/permanent en paramétrant ces deux variable d’environnement de la sorte :

HISTSIZE=
HISTFILESIZE=

Convertir un jeu de png en jpg en renommant l’extension au passage

J’ai procédé à une série de captures d’écran pour une analyse poussée des données de Piwik (que j’ai pas sorti parce que j’ai un vieux bug à l’écriture de l’article, mais passons). Ces captures sont au format png, et je peux économiser en passant au format jpg. On peut faire ça avec un one-liner :

for i in $(ls piwik*.png); do convert $i -flatten -background white -quality 80 ${i//.png/.jpg}; done

On retrouve le modèle de substitution à la volée de tout à l’heure pour les espaces 🙂

Apache : transférer l’authentification HTTP à PHP

Une agence m’a tanné parce que l’authentification Basic ne fonctionnait pas sur l’API de leur WordPress utilisée par leur application mobile. Je ne vais pas m’étendre sur la pertinence du Basic en contexte application mobile, mais il faut savoir que si c’est PHP qui génère le 401, Apache va se réserver l’entête. Pour tout de même le passer, à PHP, une seule ligne suffit, pas la peine d’en rajouter :

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

Évidemment, personne ne le savait, et ils partaient du principe que si leur environnement de dev fonctionnait comme ça, c’était valable pour la terre entière. Et on me demande pourquoi j’ai du mal avec les devs…

LFTP pour faire du transfert SFTP récursif

Objectif : envoyer un dossier de 14Go sur un serveur distant dont la fonction SFTP est remplie par CoreFTP, et OpenSSH ne supporte pas bien. Je suis passé par lftp :

lftp sftp://login:password@1.2.3.4 -e mirror -R intranet/ ; bye

Le mode miroir fonctionne comme un rsync 🙂

Compter le détail des threads d’un processus

Pendant qu’on essayait de comprendre pourquoi une instance Logstash loadait sa race sur VM Azure, un intervenant m’a sorti une commande bien pratique pour vérifier ce qui était lancé par le process :

$ ps -T -p 31298 | cut -f 12 -d ' ' | sort | uniq -c
1
19 java
2 LogStash::Runne
8 [main]<azureblo
27 [main]<azurewad
6845 [main]<wadeph
1 [main]>worker0
1 [main]>worker1
1 [main]>worker2
1 [main]>worker3
7 pipeline.main

Oui, plus de 6000 threads pour un des plugins. On comprend mieux le load…

Stocker la liste des fichiers d’un dossier sur une seule ligne

Pour exploiter une liste de fichiers dans une commande lftp mput, j’avais besoin de garder tous les fichiers sur la même ligne. ls -x n’ayant pas aidé sur un grosse liste, j’ai du passer autrement, et j’ai trouvé ceci :

filelist=$(ls | xargs)

Aussi simple que ça.

A bientôt pour de nouvelles aventures 🙂

Quelques méthodes avancées pour faire un backup MySQL/MariaDB

dimanche 22 octobre 2017 à 10:30

Je suis récemment tombé sur cet article un peu provocateur indiquant que mysqldump n’était pas un outil de backup. Si l’on a un peu utilisé l’outil, et sur des bases conséquentes, ses arguments résonnent évidemment correctement, malgré tout pour certains sites, et notamment ce blog par exemple, il reste tout à fait pertinent. Le deuxième article est plus décevant en ça qu’il ne détaille pas réellement les techniques et contraintes de chaque solution proposée. J’ai donc décidé de reprendre un peu tout ça pour creuser un peu plus le sujet.

Pour rappel, mysqldump procède de manière séquentielle, il lit chaque table une par une pour en extraire le contenu et générer des requêtes SQL qui pourront rejouées pour injecter les données. Le souci, c’est que pour chaque table, il la verrouille pendant qu’il en parcourt le contenu, et donc, interrompt le travail du site concerné par la base jusqu’à ce qu’il ait fini. Dans le même esprit, entre le début et la fin, il peut y avoir eu des modifications et l’outil ne revient pas dessus, vos données peuvent donc être incohérentes.

MyISAM

Je ne vais pas m’attarder sur ce cas, il est déjà très détaillé et son utilisation est de plus en plus marginale et spécialisée. Ce sont sur les deux autres que je vais concentrer mes mots aujourd’hui.

Snapshot

Typiquement au travers d’LVM, le snapshot est une technique qui permet de prendre un instantané, de figer une version du système de fichiers. En montant cet instantané du système de fichiers dans un dossier particulier, cela permet de démarrer une deuxième instance Mysql à coté de celle qui bosse toujours pour en faire une vraie sauvegarde, qui sera assurément cohérente de bout en bout (puisqu’elle ne travaille pas), et qui ne bloque pas le travail en cours. La seule contrainte est de s’assurer que le snapshot a suffisamment de place dans son volume group, ce qui peut être un challenge sur des bases particulièrement sollicitées en écriture (et même en lecture parfois).

C’est une technique que l’on utilise souvent sur les instances MySQL que l’on installe chez LinkByNet, en plus d’utiliser des outils maisons pour sauvegarder chaque table de chaque base indépendamment afin de pouvoir faire une restauration extrêmement granulaire. Autant à titre personnel je ne m’en servirai probablement jamais, autant c’est une technique que je trouve élégante, bien qu’un peu touchy à mettre en place (on a des scripts déjà tout fait pour ça, mais dès qu’on sort de nos installations habituelles, c’est infernal).

On est même pas obligé de démarrer une instance et de lancer un dump, une simple copie du datadir peut suffire. Cependant, si lors de la restauration vous êtes contraints de changer de version de MySQL/MariaDB, le lancement risque d’être compliqué en raisons de différences mineures sur les formats de fichiers, et là un dump contenant des commandes SQL sera certes plus long à importer, mais autrement plus fiable.

XtraBackup

L’outil mis à disposition par la société Percona, qui distribue et commercialise des offres autour de leur variante de MySQL, qui est axée sur les performances, repose finalement sur une fonction avancée d’InnoDB : le « crash-recovery ». En clair, il procède classiquement à une synchronisation des fichiers (de la même façon que pour MyISAM comme le propose l’auteur), puis s’appuie sur la capacité de réparation d’InnoDB pour recaler les données de manière cohérente via le journal des transactions. Ce qui permet de faire une sauvegarde à chaud sans s’inquiéter de poser des verrous sur votre base. La documentation est évidemment en anglais et je vous laisse la lire si vous souhaitez vous faire mal au crâne (mais c’est super instructif).

C’est notamment la solution qu’on utilise sur un client dont la base de données fait 200Go et qui exploite une réplication master-slave. Quand l’interruption de réplication est trop longue pour relancer celle-ci à la main (avec un retard conséquent à rattraper), on procède via XtrBackup pour refaire l’instance slave de zéro, ce qui permet de limiter le temps de remise en service derrière.

Et vous, vous utilisez quoi ?

Perso, vu l’activité de mes bases mysqldump est largement suffisant et je n’ai pas besoin de mettre en place de procédures plus contraignantes. Mais on l’a vu, il n’est pas parfait non plus. LVM et XtraBackup sont des options qui ont l’avantage d’être gratuites, et je n’ai pas connaissance d’autres outils, mais vous peut-être ?