21 Juin

Debian : Mises à Jour Automatiques

Un des gros problèmes souvent rencontré dans l’administration d’un système est la mise à jour. Combien de fois peut-on voir sur les forums quelqu’un se plaindre de s’être fait hacker son serveur et, dans le même temps, avouer benoîtement ne pas en avoir passé une seule depuis l’installation ! Les différentes distributions mettent pourtant en place des système de gestion des packages (yum ou apt), mais on n’a pas forcément toujours le temps de régulièrement se connecter sur son ou (surtout) ses serveurs pour s’en occuper.

Pour résoudre ce problème, Debian, mais aussi Ubuntu, proposent un package, unattended-upgrade, permettant d’automatiser les mises à jour. Ce n’est pas la panacée, une mise à jour présente toujours le risque de casser quelque chose et mieux vaut toujours les passer manuellement, mais c’est toujours mieux que de rien faire.

Installer et Activer Unattended-Upgrade

Un simple apt-get suffit.

Voilà, c’est a priori simple, mais, par défaut, unattended-upgrade n’est pas activé. Il faudra donc créer le fichier /etc/apt/apt.conf.d/02periodic. La configuration suivante est un bon point de départ :

Le script que vous venez ainsi de configurer est /etc/cron.daily/apt et il est exécuté (normalement) par défaut tous les jours à 6h25, en tous cas sur mon système :

Je n’arrive pas à savoir si le 6h25 est systématique sur tous les systèmes Debian/Ubuntu. Cela semble être le cas et, dans le doute, il est dans l’intérêt de tout le monde, soit de changer l’heure d’exécution, soit de bien activer le paramètre APT::Periodic::RandomSleep "1800"; afin d’éviter de saturer les serveurs hébergeant les repos.

Si vous utilisez Ubuntu, le fonctionnement d’unattended-upgrade est le même à ceci près que le fichier 10periodic se substitue au fichier 02periodic de Debian et est créé à lors de l’installation.

Configurer unattended-upgrades

Pour configurer plus finement le comportement d’unattended-upgrade, il suffit de modifier le fichier /etc/apt/apt.conf.d/50unattended-upgrades. Par défaut, seules les mises à jour de sécurité sont passées :

Et honnêtement, ce n’est pas plus mal. De même, je pense que certains packages ne devraient jamais être mis à jour automatiquement et que les reboots automatiques sont une très mauvaise idée :

Maintenant, tout dépend de votre système, de vos besoins et de vos préférences personnelles.

Ajouter des Repository

La configuration jusqu’à maintenant permet de gérer les mises à jour automatiques des packages issus des repository Debian. Mais comment rajouter un repository tiers (third party) comme dotdeb par exemple ?
Cette configuration est gérée au niveau du paramètre Origins-Pattern et il faut d’abord connaître les valeurs origin, archive et label etc. du repository. On les obtient assez simplement :

Pour rappel et explication

  • o = Release Origin/Vendor (Debian, Ubuntu, Grml, CRAN, ETHZ, Opera Software ASA, LP-PPA-, “Google, Inc.”, etc.)
  • v = Release Version (6.0, 12.04, etc.)
  • a = Archive/Suite (stable, testing, unstable, etc.)
  • n = Code name (wheezy, squeeze, sid, etc.)
  • c = Component (main, contrib, non-free, universe, restricted, multiverse, etc.)
  • l = Label (Debian-Security, Debian Backports, Google, etc.)

Si l’on souhaite connaître à quel repository appartient un package spécifique :

J’en conclue donc, que si je veux que nginx de dotdeb soit updaté régulièrement, je dois rajouter la ligne suivante au fichier /etc/apt/apt.conf.d/50unattended-upgrades :

Bien évidemment, cela mettra à jour tous les packages partageant la même origine et le même label, pas seulement nginx.

Débuguer Unattended-Upgrade

Une fois tout installé et configuré, le problème est de savoir si sa configuration est bonne sans attendre la prochaine mise à jour… On peut dans un premier temps, exécuter unattended-upgrade à la ligne de commande. L’option –dry-run simule une installation et -d est le mode debug pour obtenir plus d’informations.

Accessoirement, si certains packages ne sont toujours pas mis à jour automatiquement, il faut aller chercher la réponse dans les logs avec par exemple cat /var/log/unattended-upgrades/unattended-upgrades.log | more

Pour Conclure

Unattended-upgrade est un outils extrêmement pratique pour déployer rapidement les mises à jours de sécurité et par extension toutes les mises à jour du système. Plus aucune excuse maintenant pour traîner un système avec des versions ante-diluvienne!
Ceci dit, et encore une fois, soyez prudent surtout si la stabilité du serveur est critique. Mieux vaut alors se limiter aux correctifs de sécurité et passer sur un serveur de test (pré-production) le reste des mises à jour.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *