Mises à jour automatiques sous CentOS avec yum-cron

Mise à jourUne des règles les plus élémentaires de la sécurité informatique, c’est de garder son système à jour. Sur un serveur dédié qui héberge des services critiques avec une ouverture frontale sur Internet, il est même vital de patcher le plus rapidement possible les vulnérabilités connues de la machine.

Sur un système comme CentOS, c’est tout à fait possible d’automatiser cette tâche dans la mesure où il s’agit d’une distribution de qualité “entreprise”. Concrètement, cela signifie que le distributeur fournit des mises à jour à faible risque, censées corriger des bugs ou des failles de sécurité sans pour autant introduire des nouvelles fonctionnalités susceptibles de perturber le bon fonctionnement des applications hébergées.

Si vous gérez un parc de machines conséquent, vous avez peut-être l’habitude de vous réserver un jour dans la semaine pour gérer toutes vos mises à jour. Peut-être vous demandez-vous dans un coin de votre tête si la mise à jour hebdomadaire est suffisante. Quoi qu’il en soit, il s’agit là d’une tâche répétitive, et comme tous les administrateurs dignes de ce nom le savent, les tâches répétitives sont là pour être automatisées.

Évidemment, rien ne nous empêcherait de définir une tâche automatique sous forme de cronjob. Sous Red Hat Enterprise Linux et CentOS, il vaut mieux utiliser l’outil yum-cron, qui est spécialement pensé pour cette tâche. Le paquet yum-cron est fourni par les dépôts officiels.

# yum install yum-cron

Le paquet installe une paire de fichiers de configuration par défaut.

  • /etc/yum/yum-cron.conf gère les mises à jour quotidiennes du système.
  • /etc/yum/yum-cron-hourly.conf pilote les mises à jour horaires de la machine.

Étant donné qu’une mise à jour quotidienne suffit amplement à nos besoins, nous allons laisser de côté le fichier yum-cron-hourly.conf pour nous concentrer sur yum-cron.conf. Le fichier fourni par défaut est amplement documenté, et avant toute chose, nous allons en faire une copie de sauvegarde.

# cd /etc/yum
# cp yum-cron.conf yum-cron.conf.orig

J’édite le fichier en l’adaptant à mes besoins, et je supprime les commentaires pour plus de lisibilité. Au total, le fichier ressemble à ceci.

# /etc/yum/yum-cron.conf

[commands]
update_cmd = default
update_messages = yes
download_updates = yes
apply_updates = yes
random_sleep = 0

[emitters]
system_name = betadine.microlinux.fr
emit_via = email
output_width = 79

[email]
email_from = root@localhost
email_to = info@microlinux.fr
email_host = localhost

[groups]
group_list = None
group_package_types = mandatory, default

[base]
debuglevel = -2
mdpolicy = group:main

Cette configuration mérite quelques remarques.

  • La directive update_cmd définit le type de mise à jour et distingue théoriquement entre les mises à jour normales (default) et les mises à jour de sécurité (security). Cette distinction vaut uniquement pour Red Hat Enterprise Linux, étant donné que CentOS ne fait pas la distinction dans les métadonnées des paquets. Pour les utilisateurs de CentOS, le seul choix valable est donc default.
  • La directive random_sleep introduit un temps d’attente aléatoire avant de démarrer la mise à jour. L’intérêt de cette configuration, c’est d’éviter de congestionner le réseau si vous avez un nombre important de machines qui lancent leur mise à jour en même temps. Dans la configuration par défaut, ce temps d’attente peut atteindre jusqu’à 360 minutes, c’est-à-dire six heures. Puisque j’ai installé yum-cron sur un serveur dédié, je peux me passer du temps d’attente.
  • Le nom de la machine est spécifié par la directive system_name. Si vous gardez la valeur par défaut None, il équivaudra au nom d’hôte pleinement qualifié, c’est-à-dire le résultat de la commande hostname --fqdn.
  • À partir du moment où vous disposez d’un serveur mail sur la machine, c’est toujours une bonne idée de vous envoyer des notifications par mail. Notez que si vous définissez root@localhost comme expéditeur du mail, localhost sera automatiquement remplacé par le nom d’hôte spécifié dans la directive system_name.
  • Dans la configuration actuelle, c’est /etc/cron.daily/0yum-daily.cron qui est lancé en fonction de l’heure précisée dans /etc/anacrontab. Sans trop rentrer dans les détails, yum-cron se lance grosso modo toutes les nuits entre 3h00 et 4h00, ce qui convient parfaitement à mon utilisation. Les éventuels redémarrages disruptifs de certains services – notamment httpd – s’effectuent alors à une heure de faible affluence.

Il ne reste plus qu’à activer le service au démarrage et à le lancer.

# systemctl enable yum-cron
# systemctl start yum-cron

Voici à quoi ressemble un mail de notification de yum-cron après l’application d’une mise à jour automatique.

Notification yum-cron

Ce contenu a été publié dans CentOS, Documentation Microlinux, avec comme mot(s)-clé(s) , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.