/*
 * https ; gemini ;
 * tout ; log ; twtxt ;
 * à propos ; ;
 */

Que devient mon serveur si je disparais?

Voici la question qui m'a traversé l'esprit en pleine nuit. Mais si, vous savez, juste après avoir rendormi mon fils, lorsque le sommeil ne veut plus de vous, ça cogite fort, et pas toujours de façon rassurante.

Je ne pense pas qu'il vaille la peine de former quelqu'un pour prendre la relève : mon serveur n'a rien d'ambitieux ni d'important.

Cependant, il contient des données que certains voudraient vouloir récupérer : des photos de famille et des sauvegardes.

En y réfléchissant, au lieu de donner le code root ou créer un compte spécial pour une personne de confiance, il y a encore plus simple : débrancher le disque et l'ouvrir sur une autre machine. Ainsi, seul la passphrase pour déchiffrer le disque est nécessaire.

Ce n'est pas à la porté de tous me direz-vous. En effet, mais pour l'instant, aucun de mes proches n'a les compétences de bidouiller le serveur. Je préfère donc rendre public les informations nécessaires pour contacter mes proches : ceux qui font cette démarche sont à priori des personnes rencontrées sur le web bien intentionnées dont j'ai déjà parlé à ma famille (arpinux, Starsheep, Trefix, Péhä, vinishor, Solène pour ne citer qu'elleux).

Voici donc ce qui va se passer désormais : si je ne me connecte pas sur mon serveur pendant un délai assez long (2 mois), un fichier apparaîtra ici :

canari.txt

Ce dernier contiendra tout le nécessaire pour contacter qui sera en mesure de donner la passphrase pour déchiffrer le disque du serveur. En voici un extrait :

Bonjour,

si vous lisez ce fichier, c'est probablement que je suis mort.
Ou bien pas très en forme.
On m'a sans doute forcé à prendre une surdose d'homéopathie.
Pire, on m'a privé de crêpes et mon corps n'a pas tenu le coup.

Plus sérieusement, ce message s'affiche automatiquement lorsque je n'ai pas accédé à mon serveur pendant 2 mois.

Si vous voulez prendre des nouvelles, vous pouvez contacter ma chérie au xxxxxxxx
(sauf si elle m'a accompagné sur Dune, ça capte mal là bas).
...

Le tout reste de savoir comment détecter si je ne me suis pas connecté récemment.

Mais tout est prévu d'avance : la commande "last" est faîte pour ça.

La suite, c'est un script qui compare des nombres (j'aime bien les dates à partir de l'Epoch pour ça :P) et qui copie le fichier contenant les informations au bon endroit.

#!/bin/sh
# check if user $1 has logged in since $2 seconds
# if not, a file $3 is copied to $4
# Add an entry in a cron task

set -e

usage()
{
	printf "%s <user> <seconds> <source> <canari_file>\n" "$0"
	printf "Example for a month\n"
	printf "%s batman 2592000 /var/canari /var/www/htdocs/canari.txt\n" "$0"
	exit 1
}

test $# -ne 4 && usage

u="$1"
delay="$2"
content="$3"
canari="$4"

now=$(date +%s)
lastlogin=$(last -s $u | awk 'NR==1 {print $4}')

if [ $(( $now - $lastlogin )) -gt $delay ]; then
	printf "$u not logged for a while, copying canari\n"
	install -m 555 $content $canari
fi

exit 0

Ce script est appelé quotidiennement via une tâche cron :

@daily /home/pi/bin/canari.sh utilisateur 5184000 /home/utilisateur/canari.txt /var/www/htdocs/si3t.ch/pub/canari.txt

Si jamais je devais me faire enlever par des aliens rouxphiles, vous aurez quand même de mes nouvelles :)

Une réaction?

📧 Envoyez votre commentaire par mail.
📫 Abonnez-vous pour recevoir les réponses
📚 Consultez les archives.
💨 Vous désinscrire