Category Archives: Geek

Upgrading a Debian AWS HVM EC2 instance to Jessie

Use case: this is for people who use a somewhat custom Debian HVM EC2 instance that does not warrant tight configuration management such as provided by e.g. Saltstack. So the natural path for upgrading to Jessie is to… just upgrade the instance to Jessie.

This is, as opposed to creating a new instance based on the latest Debian AMI and moving the various files over. Even if most of the “custom” stuff is cordoned off in a separate volume, there are still all these pesky /etc files to move around. As well as all those files that we always forget about.

Anyway, if a reader has a smoother process, I am interested to hear about it.

Symptom: after the otherwise pleasant and uneventful upgrade to Jessie, systemd complains with

Failed to make us a subreaper: Invalid argument
Perhaps the kernel version is too old (< 3.4?)

A quick uname -a later: indeed, the kernel got stuck to 3.2.0 from Wheezie.

The old extlinux package used for those AMI got retired, and with it the extlinux-update command. Time to move to Grub, it would seem.

apt-get install grub2-common grub-common grub-pc grub-pc-bin

 

When asked, specify both /dev/xvda as locations to install the boot loader. I first tried to specify only the first one, the instance would not boot.

A bit of clean-up as well:

 apt-get --purge remove extlinux

Reboot, the instance should come back up.

Traditional word of caution: your mileage may vary, snapshots are your best friends.

Reader – Merci Google !

Google a décidé de fermer son agrégateur de nouvelles – ce qui est finalement une excellente chose pour la protection de ma vie privée. Après quelques minutes de recherche (…google), tt-rss semble un remplacement très honnête.

Cerise sur le gâteau, grâce à StartSSL (certificats gratuits) et à SNI (extension de SSL/TLS pour pouvoir servir de multiples certificats depuis une adresse IP unique, marche tout seul avec Debian stable), mon agrégateur RSS est consultable en https même depuis mon iPhone.

Après une semaine d’utilisation, le changement est adopté définitivement. À quand ownCloud pour se débarrasser de Dropbox ? S’il vous plaît, messieurs-dames de Dropbox, donnez-moi une excuse…

Dératiser son Mac OS

Endroits où la cause des ennuis a tendance à se cacher :

  • /Library/LaunchDaemons/
  • /Library/LaunchAgents/
  • Ce qui ne vient pas d’Apple dans /System/Library/LaunchAgents
  • Extensions noyau qui ne viennent pas d’Apple : kextstat -l | grep -v apple
  • Safe boot (appuyer sur shift pendant le démarrage) semble dépoussiérer certains recoins

Interesting impact of available RAM on I/O

This is the story of a server that was getting a bit short in memory.
Change request issued to the hosting company, please throw four more GigaBytes of RAM in that guy.

One of the processes indexes the content of a database table (hosted on /dev/sda) and store it on /dev/sdb on an hourly basis, in order to speed up some searches.
Impact of the increased RAM over this process?

iostat

You guessed it, the RAM upgrade happened on the 16th.

What about the overall memory utilization?

Memory Week

The dreadful committed memory got reduced to much more sane levels, whereby the server no longer takes the risk of falling over if processes start actually using the memory they (m)allocated.
I venture that the increased violet-ish part of the graph explains in part the improved I/O behavior.

OS caching is great.

Changer de port SSH, et plus encore

Les tentatives d’intrusions sur le serveur maison familial devenant par trop régulières, votre serviteur avait adjoint à la précaution fail2ban un changement de port du service SSH.

Dans les 10 derniers jours, deux adresses IP (une tchèque et une chinoise) ont fini par trouver le port en question et s’y sont donné à coeur joie :
User root from [] not allowed because not listed in AllowUsers
Address [] maps to [], but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
Failed password for invalid user test from [] port 52960 ssh2

Bien entendu, après une tentative échouée fail2ban bloque l’adresse IP en question pour un bout de temps. Qu’à cela ne tienne, l’indélicat revenait à la charge après le temps imparti.
M’enfin ?! Z’avez rien de mieux à faire ?

fail2ban à beaucoup de sauces

Cet article m’a donné l’opportunité de me remémorer mon usage plus ou moins ésotérique de fail2ban :

  • Les attaques dictionnaires sur Sendmail ne sont que trop courantes
    failregex = sm-mta\[[0-9]+\]: [^:]+: \[<HOST>\]: possible SMTP attack: command=AUTH
  • Si les spammeurs insistent, Sendmail commence par les ralentir. S’ils insistent trop,
    failregex = sm-mta\[[0-9]+\]: ruleset=check_relay, arg1=[^,]+, arg2=[^,]+, relay=[^ ]+ \[<host>\], reject=421 4\.3\.2 Connection rate limit exceeded\.
  • Avec la configuration par défaut de Debian, Suhosin n’a pas (encore ?) produit de faux positif. Armé de cette confiance :
    failregex = suhosin\[[. 0-9]+\]: ALERT - .* \(attacker '<HOST>',
  • iptables peut être configuré pour calmer les ardeurs des outils qui ouvrent une pléthore de connexions HTTP. Étape suivante pour les plus pénibles d’entre eux :
    failregex = kernel: \[[. 0-9]+\] HTTP_DoS IN=eth0 OUT= MAC=[^ ]+ SRC=<host> DST=[^ ]+ LEN=[^ ]+ TOS=[^ ]+ PREC=[^ ]+ TTL=[^ ]+ ID=[^ ]+ (DF )?PROTO=TCP SPT=[^ ]+ DPT=80 WINDOW=[^ ]+ RES=[^ ]+ SYN

Autres leçons apprises avec plus ou moins de douleur :

  • Il y a un problème de concurrence au démarrage de fail2ban (au moins dans son incarnation 0.8.3), qui peut être évité en plaçant des délais aléatoires comme indiqué dans le bug Debian http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554162.
  • Les scripts qui définissent les règles de Firewall sont bien avisés de d’abord arrêter fail2ban, appliquer les règles, puis démarrer fail2ban.

Courant porteur sur une installation électrique défraîchie

Les quatre D-Link DHP-300 ont déménagé avec le reste de la famille, dans une demeure dont l’installation électrique n’est pas de la première fraîcheur.

En absence de pré-cablage Ethernet, ils reprennent du service même pour le pingouin_qui_fait_tout.
Malgrès un accès Internet autour des 11 Mbps (votre serviteur regarde ce qu’il peut faire de ce côté là aussi), les sauvegardes sont singulièrement longues.

Voici ce que dit munin, côté trafic :

Trafic eth0

Rien de bien effrayant, si ce n’est un débit maximal décevant. Le délai aller-retour vers les États-Unis et la France est usuellement suffisamment bas pour qu’une connexion TCP seule arrive à remplir 20 Mbps, même depuis une connexion ADSL.
Sauf que, quand on regarde le comportement du réseau entre le pingouin et le modem ADSL (i.e. principalement le courant porteur), on trouve des latences dignes d’un certain nombre d’aller-retours terre – satellite géostationnaire :

Ping modem

Est-il besoin de préciser que le courant porteur a depuis été remplacé par un câble catégorie 5 ?

LaTeX : accents, ISO-8859 et UTF-8

Tous les auteurs de documents LaTeX n’ont pas nécessairement commencé l’inévitable transition vers UTF-8. Certains fichiers sources présentent des accents qui plongent notre formateur de documents préféré dans un abime de perplexité, avec les distributions récentes. En effet, les accents disparaissent du document compilé.

La solution brute de décoffrage tient en une commande d’une ligne :


$ iconv -f ISO-8859-15 -t UTF-8 LeFichierAvecLesMauvaisAccents.tex > LeNouveauFichierAvecLesBonsAccents.tex

Sous MacOS, il aura fallu au préalable installer MacPorts et son paquetage libiconv :
$ sudo port install libiconv

Pour rendre la conversion vers UTF-8 plus conviviale, les utilisateurs de Linux pourront utiliser ce script :
#!/bin/bash
shopt -s nocasematch
FILEIN="$1"
FILEOUT=${FILEIN%.tex}"_2.tex"
iconv -f ISO-8859-15 -t UTF-8 -o "$FILEOUT" < "$FILEIN"

et par exemple créer un lanceur sous Gnome. Cela permettra de convertir des fichiers juste en les déplaçant sur l'icône du lanceur.

Les utilisateurs de MacOS / MacPort pourront utiliser ce script (syntaxe légèrement différente, et qui offre le support de plusieurs fichiers en entrée) :
shopt -s nocasematch
for file in "$@"
do
FILEOUT=${file%.tex}"_2.tex"
iconv -f ISO-8859-9 -t UTF-8 "$file" > "$FILEOUT"
done

Il suffit alors de le copier-coller dans Automator pour obtenir une automation comme celle-ci. Elle permettra de convertir des fichiers juste en les glissant sur l’icône.

Il est aussi possible de définir l’action en service MacOS pour l’avoir au bout d’un clic contextuel dans Finder. Ou bien en action Nautilus sous Gnome via le paquetage nautilus-actions, même résultat.

Il y a plus d’une manière de le faire, comme on dit.

Récupérer des photos effacées

Grand classique de la photographie numérique : effacer ses photos de la carte mémoire avant qu’elles ne soient en lieu sur.

Voici un mode d’emploi rapide pour récupérer les photos sous Mac – oui, ça sent le vécu et du copier-coller de mail. Sans garantie aucune, comme d’habitude.

Pour commencer, il faut que tu branches la carte directement sur ton Mac, c’est à dire pas en passant par ton appareil photo mais par un lecteur de carte (genre celui intégré aux Macbooks récents).

Étape suivante, savoir comment il est identifié dans ton système.

Démarre ton “disk utility” (tu peux cliquer sur la loupe en haut à droite, commence à taper “disk” et “disk utility” devrait apparaître).

Ensuite, repère ta carte dans la liste des disques durs à gauche. Chez moi, ça ressemble à ça :

CANON_DC

Quand tu as mis ta carte en sourligné (ici mon CANON_DC), clique sur l’icône “Info”. Note bien le “Disk Identifier”, chez moi disk1s1:

disk1

Ensuite, j’ai fait un test rapide avec ce logiciel (libre) : http://www.cgsecurity.org/wiki/TestDisk_Download qui a l’air de bien faire l’affaire. Télécharge-le en cliquant sur le lien “Mac OS”.

Clique dessus avec ton Safari, ça devrait le décompresser automatiquement et t’ouvrir une fenêtre Finder.

Va dans le répertoire Darwin.

Double-clique sur photorec.

Là, il te demande le disque à récupérer. C’est le “Disk Identifier” de plus haut, mais version “raw” (et sans indication de partition). Pour moi, “rdisk1”, sélectionné avec la flèche de mon clavier qui va vers le bas, puis “Entrée” sur le clavier. La version “par raw” (i.e. disk1, as opposed to rdisk1) a l’air de marcher aussi.

rdisk

Ensuite, pour “partition table type”, choisis “Intel”.

Ensuite, prends la partition “FAT16 >32M” (si ça ne marche pas plus tard, il se peut que tu aies à choisir l’autre option).

Pour le type de partition, choisis “Other”.

Ensuite, choisis “Whole”.

À ce moment là, tu indiques où tu veux sauvegarder les fichiers récupérés.

Je te suggère de choisir “Desktop” (appuies sur Entrée après t’être positionnée sur Desktop), puis confirme en faisant “Y”.

Ensuite… patience, et croise les doigts pour que le nombre de “recovered” en face de “jpg” augmente progressivement. Tu remarqueras que le “Estimated time for achievement” vers le milieu de ton écran descend lentement mais surement vers 0h00m00.

Quand c’est fini, presse “Entrée” (c’est un [Quit] qui t’est proposé).

Te revoilà au menu d’avant : avec la flèche de droite de ton clavier, va sur Quit, Entrée, puis Quit encore une fois.

Utilise ton Finder préféré pour voir le résultat, normalement stocké dans le répertoire “recup_dir.1”.