Quelques astuces diverses, onzième

closeCet article a été publié il y a 6 ans 2 mois 7 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

J’ai stocké tout ça un peu trop longtemps et il est temps que je partage une nouvelle fournée de bricoles qui vous sauve une journée de boulot, ou un weekend un peu trop accaparé par des soucis ou des maintenances d’infras persos, quand ce n’est pas un dépannage lors d’un PSL 🙂

Coreutils 8.24 et suivants : dd qui cause !

J’ai découvert ça en toute fin d’année, après la finalisation du dernier épisode (et Pierre m’en a reparlé début février quand je suis retourné à la Cité des Sciences). Avec un coreutils récent (Debian Stretch, Ubuntu 16.04, Manjaro/Arch), dd a maintenant un mode verbeux pour dire où il en est, et ça c’est cool :

Pratique quand on sait que les copies sur clé USB peuvent parfois prendre de longues minutes, surtout avec une clé USB poussive.

Rot13 « quick and dirty » en bash

Lors d’un petit délire sur un challenge de sécurité informatique, l’auteur a trouvé le moyen de s’amuser en ajoutant une petite étape à base de rot13. Quand on est pressé, qu’on a pas forcément le temps de chercher un outil tout fait, y’a moyen de le faire en bash (attention, tr est fourni avec coreutils, merci Exagone313) :

Connexion SFTP avec un client OpenSSH récent et proftpd/mod_sftp

Récemment, le prestataire d’un client rencontrait des difficultés pour se connecter en SFTP à la plateforme de ce dernier. Après vérification, et un énième juron quand aux satanés fanatiques des ordinateurs fruités, il s’avère que le souci venait de proftpd qu’on utilise pour proposer justement la connectivité chiffrée. La solution tient à la modification des Digests :

Exporter les utilisateurs d’un vieux MySQL pour l’importer dans MySQL 5.7

Situation : on me demande de migrer d’un MySQL 5.5 vers MySQL 5.7. Oracle ne supporte que les upgrades de point à point, donc il me faudrait passer par MySQL 5.6. Pas ouf, et comme les bases de ce serveur de dev ne sont pas compliquées, je veux passer par des dumps bases et users à importer ensuite. Problème, Sur les dernières révisions de MySQL 5.7, la création d’utilisateur avec la syntaxe GRANT ... TO <user> IDENTIFIED BY ... ne fonctionne plus. Petite routine maison pour contourner ce problème :

Et paf, ça fait des Chocapic.

Tunnel SSH en ligne de commande pour connexion MySQL distante

Pour chiffrer une connexion MySQL (qui est en clair par défaut, il faut le souligner), vous avez deux solutions principalement : mettre en place du TLS au niveau de MySQL, mais c’est pas évident, ou, pour du one shot, un tunnel SSH. Sous linux, rapidement :

Il suffit ensuite de se connecter avec le client mysql en tapant sur son port local :

HTTPS, SNI, et Curl sont dans un bateau…

En procédant à des tests sur la bonne installation d’un certificat X509 sur un vhost dont le domaine ne pointe pas encore sur le serveur en question, plutôt que de bricoler du fichier hosts, j’ai préféré utiliser curl, mais il était récalcitrant avec les paramètres « habituels » :

Pas grand chose à voir avec mon vhost. En fait, c’est parce que de cette manière, Curl n’envoie pas d’entête SNI pour indiquer le nom qui doit être validé par le certificat, et dans un contexte avec plusieurs vhosts, cet entête permet de chercher à sélectionner le bon certificat en fonction de l’hôte. Curl sait le faire :

Il ne lui manque que la fonction café en fait à curl…

Une meilleure détection de l’état de santé d’un backend dans haproxy

Contexte : par défaut, les checks basiques d’haproxy ne servent qu’à détecter s’il y a toujours un port en écoute au niveau des serveurs de la ferme. Si vous avez deux serveurs et que l’un des deux est à moitié pété (ça écoute toujours mais l’application ne répond plus), vous avez une réponse sur deux qui n’est pas bonne. Pour optimiser ça, on peut faire un peu mieux au niveau de la configuration :

Au passage on voit aussi comment modifier les intervalles de vérification pour réellement limiter la visibilité du problème et des dégâts que ça pourrait provoquer.

Curl et Docker : tester un service Swarm en local

J’ai eu le tour sur mon propre cluster ainsi que sur les plateformes de tests fournies lors de ma formation par Treeptik. Une fois mon service déployé, j’essaie de le tester avec curl depuis le nœud où il est déployé, mais ça répond pas. En fait, les deux environnements en question sont paramétrés avec une ipv6, mais le service au sein de docker n’écoute qu’en v4, et ça aussi, curl est capable de s’en accommoder :

Si vous devez tester/forcer en ipv6, utilisez -6, mais dans mon cas ça ne fonctionnait pas.

Terminator en plein écran dès le lancement

C’est un problème récurrent/chiant que j’ai souvent, le gestionnaire de fenêtres n’enregistre pas les positions des fenêtres quand je les ferme, si bien que je dois les repositionner à chaque lancement (il n’ya guère que Thunderbird qui « tient le coup »). Pour ma machine virtuelle Linux du boulot (et maintenant sur ma grosse bertha à la maison), je lance principalement Terminator, et j’aime bien du coup qu’il prenne toute la place. Après quelques errements liés notamment au fait que je ne connais apparemment pas assez l’anglais, j’ai trouvé la solution en modifiant la commande dans le raccourci :

Oui, je m’attendais à devoir utiliser --maximize, et apparemment les deux orthographes sont correctes


Et bien que j’attende généralement une dizaine d’astuces avant de publier, ça fait trop longtemps donc tant pis s’il n’y en a que 9. On essaiera de revenir dans les clous au prochain épisode 🙂

10 Commentaires
Le plus ancien
Le plus récent
Commentaires en ligne
Afficher tous les commentaires
Exagone313
19/02/2018 20:24

tr est fourni avec GNU coreutils, pas avec bash 😛
C’est dommage d’utiliser md5 ou sha1 maintenant …
J’ai constaté que les serveurs ne vérifiaient pas si le domaine passé avec SNI est le même que celui donné avec Host. TLS et HTTP sont gérés séparément. Je me rappelle avoir testé au moins avec nginx.
C’est difficile de faire autre chose que de l’IPv4 avec 127.0.0.1 🙂

David_5.1
David_5.1
20/02/2018 23:03
Répondre à  Exagone313

Niveau algorithmes, hmac-sha1-96, c’est du SHA-1 (donc faible) mais tronqué donc encore moins solide, et hmac-ripemd160, c’est un peu le même combat que SHA-1 a priori, il y a moins d’attaques mais aussi moins d’efforts publics pour essayer de le casser a priori. Idéalement, il ne faudrait faire que du SHA-2 parmi la liste donnée…

Cascador
Cascador
19/02/2018 20:57

Yo,

Tu es sur Terminator depuis combien de temps ? Tu parlais de Guake il y a encore pas très longtemps. Je suis passé sur Terminator depuis 2 mois mais l’avenir c’est Tilix.

Tcho !

PPmarcel
PPmarcel
20/02/2018 05:17

Pour dd il existait une alternative avec pv (progress viewer) :
$ (sudo) dd if=fichier | pv | dd of=destination

David_5.1
David_5.1
20/02/2018 22:59
Répondre à  PPmarcel

Pour dd, il existe aussi kill (et pkill) pour lui demander où il en est, avec par exemple pkill -x -USR1 dd qui envoie le signal USR1 (demande d’information pour dd, mais ça peut stopper d’autres processus) à tous les process dd en cours sur la machine.

Juik
Juik
21/02/2018 08:22

Bah… pour dd depûis des années il y a dcfldd >> sudo apt install dcfldd
et : # dcfldd if=/ toto.iso of=/dev/sdX
et la on a la progression en direct etc etc

Juik
Juik
21/02/2018 20:55

Bah… pour dd depûis des années il y a dcfldd >> sudo apt install dcfldd
et :
# dcfldd if=/ toto.iso of=/dev/sdX
et là on a la progression en direct etc ..etc