Je viens de commettre mon premier reboot inopiné d'un serveur de prod' (vous inquiétez pas, plus jeune j'ai déjà fait l'erreur de couper ma session SSH en poussant des règles de pare-feu avec iptables...).
Tout ARN s'est vautré... On a deux serveurs, redondance tout ça mais j'avais migré toutes les VM sur une seule machine justement en prévision du reboot de sa partennaire... mais c'est cette machine, devenue SPOF que j'ai rebootée.
Il *faut* installer molly-guard sur tous les serveurs distants que vous administrez ! Et quand vous tripotez netfilter, il *faut* utiliser ip(6)tables-apply.
Si je connaissais molly-guard avant cet incident, pourquoi n'était-il pas installé sur les machines physiques d'ARN ? Car plusieurs des admins pensaient que ça demandait juste une confirmation (« press y to continue », par exemple) et que dans des moments de stress/énervement/fatigue/... , on confirme toujours sans jamais vérifier quoi que ce soit. Donc, lors de notre discussion sur "on installe cet outil", le "vote" était biaisé et donc on ne l'a pas installé.
Du coup, je le dis ici : molly-guard *ne demande pas* une bête confirmation, molly-guard *demande de saisir le nom de la machine* et si les deux ne sont pas identiques (casse incluse), l'action halt/poweroff/shutdown/reboot n'est pas effectuée. Dans mon cas, soit j'aurai regardé le prompt soit j'aurai saisi le nom de la machine sur laquelle je croyais être. Dans les deux cas, molly-guard aurait atteint son objectif et la connerie aurait été évitée.
En fait, molly-guard va plus loin que ça : il exécute des scripts ordonnés placés dans /etc/molly-guard/run.d/ . Vous pouvez donc faire n'importe quel test et dire à l'admin "attention, tu vas vraiment faire une connerie". Exemple : y'a un helper Ganeti livré de base qui checke si la machine est master ou si elle a encore des machines virtuelles en cours d'exécution. Par contre ce helper est mal conçu puisqu'il demande juste de taper « YES » ce qui est insuffisant, je le répète : n'importe quel adminsys épuisé/stressé/énervé tapera YES ou yes ou y. Il faut poser une question qui fasse réfléchir.
Pour ceux et celles qui se demandent comment ça fonctionne (bah oui, si tu fais un ls -lh /sbin/halt, tu vois bien que ça pointe toujours sur systemd et donc que ça échappe à molly-guard) : des liens symboliques halt/poweroff/shutdown/reboot pointant vers molly-guard sont créés dans /usr/sbin. Or, la recherche d'un exécutable portant le nom demandé suit toujours l'ordre du $PATH. Or, /usr/sbin est examiné avant /sbin. Donc c'est bien molly-guard qui sera exécuté, pas les binaires dans /sbin/ .
Tue Feb 2 19:38:37 2016 - permalink -
-
http://www.digitalspirit.org/blog/index.php/post/2009/10/11/%C3%89viter-le-red%C3%A9marrage-accidentel-d-un-serveur