Présentation du paquet debian-goodies
Par Joël le dans Administration de serveurs. Marqué comme administration, debian, sécurité, sysadmin avec 3 Commentaires
Un collègue de bureau m’a dernièrement parlé d’un petit programme bien pratique et que je ne connaissais pas encore !
Il se nomme checkrestart et il vous sera sûrement utile, surtout en cette période bien chargée, concernant l’actualité relative aux failles de sécurité de nos chers serveurs …
apt-cache search checkrestart debian-goodies - Small toolbox-style utilities for Debian systems
Pour plus d’informations, je vous conseille de jeter un coup d’œil à cette page : packages.debian.org/wheezy/debian-goodies
Au sein de ce paquet, on trouve un petit outil très intéressant => checkrestart
Kézako ce truc ?!
checkrestart permet de lister les processus de votre serveur qui ont besoin d’être redémarrés après une mise à jour.
Il est important de savoir qu’après une mise à jour d’un paquet, ou de votre distribution par exemple, un processus en cours d’exécution (et qui n’a pas encore redémarré), peut encore utiliser une ancienne version des librairies qui sont utiles à son fonctionnement. Cela signifie alors que celui-ci est encore vulnérable aux failles de sécurité, le ciblant malgré la mise en place d’un patch de sécurité.
J’ai donc pris pour habitude, d’utiliser le programme checkrestart comme outil d’audit de mes serveurs, afin de vérifier après chaque apt-get upgrade si des binaires doivent être redémarrés ou non. Le script a par ailleurs besoin d’être exécuté en tant que root afin d’effectuer son analyse !
Comment ça s’installe ?!
Rien de plus simple concernant son installation sous Debian, ce paquet fait parti des dépôts officiels de la distribution :
sudo apt-get install debian-goodies
Comment ça s’utilise ?!
Là encore, rien de bien magique, il suffit d’exécuter le programme avec un utilisateur ayant des privilèges élevés :
sudo checkrestart
Les options suivantes sont disponibles :
- -v, –verbose
Génère une sortie détaillée (liste de tous les processus trouvés en utilisant les fichiers supprimés ou descripteurs) - -p, –package
Agit seulement sur les fichiers faisant parti d’un paquet, en ignorant les fichiers supprimés qui n’ont pas été associés avec un paquet système. - -a, –all
Traite tous les fichiers supprimés indépendamment de leur emplacement. Du coup le programme analyse les fichiers supprimés, même si normalement ils devraient être ignorés car ils sont situés dans des endroits tels que /tmp, qui sont connus pour produire des faux positifs. - -b fichier, –blacklist=fichier
Prend en compte une liste d’expressions régulières dans un fichier afin de générer une black-liste. Tous les fichiers correspondant aux modèles seront ignorés. - -i nom, –ignore=nom
Ignore les services qui sont associés au nom du paquet fourni en paramètre à la commande
Voici un exemple de résultats renvoyés par le programme sur une de mes machines nécessitant un « restart » de plusieurs services :
Found 29 processes using old versions of upgraded files (11 distinct programs) (9 distinct packages) Of these, 7 seem to contain init scripts which can be used to restart them: The following packages seem to have init scripts that could be used to restart them: apache2.2-bin: 27410 /usr/lib/apache2/mpm-prefork/apache2 openssh-server: 22931 /usr/sbin/sshd postfix: 11828 /usr/lib/postfix/qmgr 11849 /usr/lib/postfix/tlsmgr 11820 /usr/lib/postfix/master sasl2-bin: 12097 /usr/sbin/saslauthd clamav-daemon: 13194 /usr/sbin/clamd bind9: 11575 /usr/sbin/named clamav-freshclam: 13554 /usr/bin/freshclam These are the init scripts: service apache2 restart service ssh restart service postfix restart service saslauthd restart service clamav-daemon restart service bind9 restart service clamav-freshclam restart These processes do not seem to have an associated init script to restart them: python2.7-minimal: 23983 /usr/bin/python2.7 mysql-server-core-5.5: 3383 /usr/sbin/mysqld
Et voici un exemple supplémentaire, mais cette fois-ci avec une machine ne nécessitant pas de redémarrage de services :
Found 0 processes using old versions of upgraded files
Informations supplémentaires :
Après une rapide lecture du manuel de ce programme, voici quelques informations que j’ai trouvées intéressantes à partager avec vous :
* Le développeur indique que ce programme peut ne pas fonctionner correctement par moment car celui-ci se repose principalement sur le programme « lsof ». En effet, en cas de mise à jour du programme lsof, une mise à jour de checkrestart peut être nécessaire.
* Checkrestart est particulièrement sensible à la version du noyau utilisé, il peut ne pas fonctionner, en particulier avec les versions trop anciennes et/ou trop récentes.
* Le développeur prévoit éventuellement de réécrire le programme afin d’être moins dépendant à LSOF, mais ne donne pas plus de précisions concernant l’arrivée de cette nouvelle version.
Toutes ces informations peuvent sembler inquiétantes, mais sachez que pour le moment, je n’ai pas rencontré de problème :)
Bonus de dernière minute
Avant de valider mon billet afin de le publier, je suis retourné lire rapidement la page de description du paquet que j’ai évoqué en début d’article.
J’ai alors découvert un autre programme également présent dans le paquet debian-goodies : dpigs
Ce petit outil, créé par le même développeur (Matt Zimmerman), est lui aussi bien pratique car il permet de lister les paquets installés sur votre machine en les triant par taille.
Voici un petit aperçu du retour de la commande sur mon Desktop :
[joel@sublimigeek][~][20:28][0]$ dpigs 232057 nvidia-331-updates 232055 nvidia-331 165140 plexmediaserver 146842 linux-image-3.2.0-79-generic 146829 linux-image-3.2.0-77-generic
Google Manpage étant votre ami, je vous laisse découvrir les options que propose ce programme qui vient s’ajouter à ma trousse à outils :)
Super outils que vous nous partagez là. Je suis pas un expert mais la manipulation à pas l’air trop compliqué. Merci
Article très intéressant !!
J’ai fait un petit test sur une machine :
Found 153 processes using old versions of upgraded files
(119 distinct programs)
(88 distinct packages)
En effet je suis assez surpris des vieille config qui tourne ahah !!
Du coup, tu vas pouvoir reboot tes serveurs histoire de réellement patcher les failles de sécurité =)
Avec cet outil, c’est fini les uptime de plusieurs centaines de jours en fonction des paquets qui ont été mis à jour !