Mises à jour automatiques de Linux : configurer unattended-upgrades et dnf-automatic pour les serveurs Linux
Niveau : Expert
Durée estimée : ~30 minutes
Objectif : Configurer des mises à jour automatiques de Linux évolutives et sans interruption de service avec unattended-upgrades et dnf-automatic, selon les principes de l'Infrastructure as Code.
Introduction
L'application manuelle des correctifs sur les serveurs est un goulot d'étranglement critique dans la gestion de tout environnement de production : sans automatisation, maintenir de manière fiable des centaines de nœuds sécurisés et à jour serait très difficile. Une application vulnérable peut être compromise en quelques minutes, et la plupart des exploits ciblent des vulnérabilités bien connues et non corrigées. Il faut appliquer les mises à jour de sécurité (correctifs critiques publiés pour remédier aux vulnérabilités connues d'un logiciel) en temps voulu afin d'éviter les failles de sécurité. Dans ce tutoriel, nous allons configurer les mises à jour automatiques de Linux sur un serveur Linux avec unattended-upgrades et dnf-automatic. Cette approche standardise les mises à jour des serveurs Linux.
Que sont unattended-upgrades et dnf-automatic ?
unattended-upgrades est un utilitaire Debian/Ubuntu qui automatise l'installation des mises à jour de sécurité et des autres mises à jour de paquets.
dnf-automatic est un composant qui assure les mises à jour automatisées des systèmes RHEL/CentOS/Fedora.
Ces utilitaires permettent d'exécuter en arrière-plan, en toute transparence, des mises à jour automatiques (le processus de récupération et d'installation des mises à jour sans intervention humaine). Ils sont généralement lancés quotidiennement par un minuteur systemd (une unité systemd qui gère la planification des tâches et remplace les tâches cron traditionnelles).
Prérequis
Avant de commencer, assurez-vous que les conditions suivantes sont remplies :
- Système d'exploitation : Ubuntu 20.04/22.04/24.04 LTS, Debian 12/13 ou RHEL/AlmaLinux 9/10
- Accès : accès sudo ou root au serveur
- Exigences réseau : accès HTTPS sortant vers les dépôts de paquets (archive.ubuntu.com, security.debian.org, repo.almalinux.org)
- Connaissances requises : solide maîtrise de l'administration système, de systemd et des bases de la gestion des correctifs (le processus de distribution et d'application des mises à jour logicielles), ainsi que de la gestion des correctifs sous Linux.
Étape 1 : Configurer les mises à jour automatiques de Linux avec unattended-upgrades
Pour les systèmes utilisant APT (Advanced Package Tool) (le système de gestion de paquets de base des distributions dérivées de Debian), nous utilisons unattended-upgrades. Cet outil s'intègre parfaitement à votre stratégie de gestion des correctifs sous Linux.
1.1 Installer le paquet
Commencez par vérifier et installer le paquet requis depuis le dépôt de paquets (un emplacement de stockage centralisé à partir duquel les paquets logiciels sont récupérés et installés).
Exécutez la commande suivante :
sudo apt update && sudo apt install unattended-upgrades -y
Vous devriez voir une sortie confirmant l'installation. Le système est ainsi prêt pour les mises à jour automatiques APT.
1.2 Configurer les origines autorisées
Le fichier de configuration principal se trouve dans /etc/apt/apt.conf.d/50unattended-upgrades. Nous allons le modifier pour n'installer que les mises à jour de sécurité. Cela réduit au minimum le risque de modifications incompatibles lors des mises à jour automatiques de paquets.
Avant toute modification, il est recommandé de créer une sauvegarde du fichier de configuration d'origine :
sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak
Ouvrez le fichier de configuration :
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Remplacez entièrement le contenu du bloc Allowed-Origins et ajoutez les noms indiqués au bloc Package-Blacklist :
Pour Ubuntu :
Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}-security"; };
Pour Debian :
Unattended-Upgrade::Origins-Pattern { "origin=Debian,codename=${distro_codename},label=Debian-Security"; "origin=Debian,codename=${distro_codename}-security,label=Debian-Security"; };
Configurez ensuite la liste noire de paquets et le comportement de redémarrage :
Unattended-Upgrade::Package-Blacklist { "^nginx$"; "^mysql-server$"; "^mariadb-server$"; "postgresql*"; "docker*"; }; Unattended-Upgrade::Automatic-Reboot "false";
La Package-Blacklist utilise des expressions régulières. Une entrée comme "nginx" correspond aussi à nginx-common, nginx-extras, etc. Pour cibler uniquement le paquet exact, utilisez des ancres regex comme "^nginx$".
Cette configuration limite les mises à jour automatiques APT aux correctifs de sécurité et exclut les paquets critiques des mises à jour automatiques, ce qui réduit le risque d'interruption de service tout en conservant l'automatisation des correctifs de sécurité.
Les mises à jour du noyau, de libc et d'autres paquets de bas niveau peuvent toujours nécessiter un redémarrage. En production, laissez les redémarrages automatiques désactivés, sauf si les fenêtres de maintenance sont imposées par l'orchestration.
1.3 Activer les mises à jour automatiques
Créez le fichier auto-upgrades afin d'activer le minuteur systemd pour APT.
Ouvrez le fichier :
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
Collez-y le contenu suivant :
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; APT::Periodic::AutocleanInterval "7";
Cette configuration demande au système de :
Update-Package-Lists "1"- mettre à jour quotidiennement les listes de paquets.Unattended-Upgrade "1"- exécuter automatiquement les mises à jour automatiques APT.AutocleanInterval "7"- nettoyer le cache des paquets tous les 7 jours.
Étape 2 : Configurer dnf-automatic pour les mises à jour des serveurs Linux
Pour les systèmes utilisant DNF (Dandified YUM) (le gestionnaire de paquets de nouvelle génération des distributions dérivées de RHEL), dnf-automatic offre une automatisation des mises à jour DNF robuste.
2.1 Installer le paquet
Installez l'outil d'automatisation depuis le dépôt de paquets.
Exécutez la commande suivante :
sudo dnf install dnf-automatic -y
Vous devriez voir une sortie confirmant l'installation réussie du paquet d'automatisation des mises à jour DNF.
2.2 Configurer les politiques de mise à jour
Le fichier de configuration principal se trouve dans /etc/dnf/automatic.conf. Configurez l'outil pour qu'il télécharge et applique uniquement les mises à jour de sécurité.
Avant toute modification, sauvegardez le fichier de configuration et vérifiez si des avis de sécurité (security advisories) sont disponibles pour votre distribution :
sudo cp /etc/dnf/automatic.conf /etc/dnf/automatic.conf.bak sudo dnf updateinfo summary sudo dnf updateinfo list security
Ouvrez le fichier de configuration :
sudo nano /etc/dnf/automatic.conf
Ajustez les paramètres suivants :
[commands] upgrade_type = security random_sleep = 3600 download_updates = yes apply_updates = yes [emitters] emit_via = stdio
Cette configuration demande au système de :
upgrade_type = security- cibler exclusivement les correctifs de sécurité.random_sleep = 3600- rendre l'exécution aléatoire jusqu'à 1 heure, afin de répartir la charge dans les déploiements Infrastructure as Code à grande échelle et d'éviter les pics de charge sur les dépôts ainsi que les défaillances en cascade simultanées.download_updatesetapply_updates- télécharger et installer automatiquement les mises à jour de sécurité.
upgrade_type = security dépend des métadonnées de sécurité du dépôt. Si les avis de sécurité sont absents (ce qui est typique d'une installation neuve d'AlmaLinux 10), dnf-automatic avec ce paramètre risque de n'appliquer aucune mise à jour. Vérifiez la prise en charge par le dépôt avant de vous appuyer sur des mises à jour de sécurité uniquement en production. Pour les systèmes de production, vous pouvez aussi envisager upgrade_type = security-severity:Critical ou default-security.
2.3 Activer le minuteur systemd
Activez le minuteur pour planifier l'automatisation des mises à jour DNF.
Exécutez la commande suivante :
sudo systemctl enable --now dnf-automatic.timer
Vous devriez voir une sortie indiquant que le minuteur est activé et démarré. Cela active les mises à jour automatiques de paquets planifiées sur le système.
Étape 3 : Vérifier la configuration
Une fois la configuration écrite, il convient de la vérifier.
3.1 Vérification sous Debian/Ubuntu
Effectuez une exécution à blanc (dry run) pour valider la configuration. L'option -d (ou --dry-run) lance unattended-upgrades en mode débogage - rien n'est réellement modifié :
sudo unattended-upgrades --dry-run --debug
L'option --dry-run affiche des informations de diagnostic mais ne modifie aucun fichier. Assurez-vous qu'aucun paquet de la liste noire n'est en file d'attente.
En production, les journaux comptent plus que les exécutions à blanc. Vérifiez que le minuteur et le service sont actifs :
systemctl list-timers | grep apt systemctl status apt-daily-upgrade.service --no-pager
Consultez ensuite les dernières lignes du journal pour confirmer l'activité de mise à jour. Sur un système tout juste configuré, le journal peut être vide. Pour une vérification immédiate, exécutez : sudo unattended-upgrade -v.
sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log
3.2 Vérifier le minuteur sous RHEL/AlmaLinux
Vérifiez l'état du minuteur :
systemctl list-timers | grep dnf-automatic
Sortie attendue :
Wed 2026-05-27 06:23:13 EEST 16h left - - dnf-automatic.timer dnf-automatic.service
Si le minuteur apparaît dans la liste, vos mises à jour sont correctement planifiées.
3.3 Vérifier la nécessité d'un redémarrage
Les mises à jour du noyau et de libc font partie de la file des mises à jour de sécurité (par exemple, sous Debian, linux-image-amd64 en fait partie). Comme Automatic-Reboot=false est défini, vous devez vérifier vous-même si un redémarrage manuel est nécessaire.
Pour Debian/Ubuntu :
test -f /var/run/reboot-required && cat /var/run/reboot-required.pkgs
Pour AlmaLinux/RHEL :
sudo dnf needs-restarting -r
3.4 Exécution forcée pour la vérification
Il se peut que vous ne voyiez pas le résultat avant le déclenchement du minuteur. Pour lancer manuellement le processus de mise à jour à des fins de vérification :
Pour Debian/Ubuntu :
sudo unattended-upgrade -v
Pour AlmaLinux/RHEL :
sudo dnf-automatic
Étape 4 : Configuration avancée (niveau expert)
Pour répondre aux exigences d'un niveau expert, vous pouvez étendre la configuration avec des notifications et une planification plus fine.
4.1 Notifications par e-mail
Pour recevoir des rapports sur les mises à jour :
Pour Debian/Ubuntu :
Dans /etc/apt/apt.conf.d/50unattended-upgrades, décommentez et ajustez :
Unattended-Upgrade::Mail "<YOUR_EMAIL>"; Unattended-Upgrade::MailReport "on-change";
Pour AlmaLinux/RHEL :
Dans /etc/dnf/automatic.conf, configurez la section [email] et changez l'émetteur (emitter) :
[emitters] emit_via = email [email] email_from = [email protected] email_to = <YOUR_EMAIL> email_host = localhost
4.2 Minuteurs avancés de dnf-automatic
dnf-automatic propose plusieurs minuteurs permettant de séparer les phases de téléchargement et d'installation, ce qui offre un meilleur contrôle en production :
- dnf-automatic.timer : le minuteur par défaut (télécharge et, si configuré, installe).
- dnf-automatic-notifyonly.timer : vérifie uniquement la disponibilité des mises à jour et envoie une notification.
- dnf-automatic-download.timer : télécharge les mises à jour sans les installer.
- dnf-automatic-install.timer : télécharge et installe automatiquement les mises à jour (remplace le paramètre
apply_updatesde la configuration).
Utilisez le minuteur correspondant à la politique de maintenance de votre cluster.
Retour arrière (rollback)
Pour annuler tout ce qui a été fait, il suffit de supprimer les outils et les configurations.
Debian/Ubuntu :
sudo apt purge unattended-upgrades -y sudo rm -rf /etc/apt/apt.conf.d/20auto-upgrades /var/log/unattended-upgrades/ /var/run/reboot-required* sudo mv /etc/apt/apt.conf.d/50unattended-upgrades.bak /etc/apt/apt.conf.d/50unattended-upgrades
RHEL/AlmaLinux :
sudo systemctl disable --now dnf-automatic.timer sudo mv /etc/dnf/automatic.conf.bak /etc/dnf/automatic.conf sudo dnf remove dnf-automatic -y
La suppression de ces outils désactivera les mises à jour automatiques sur l'ensemble du système et laissera vos serveurs vulnérables s'ils ne sont pas corrigés manuellement.
Conclusion
Voilà, c'est tout. Un système correctement configuré avec unattended-upgrades ou dnf-automatic, vérifié par une exécution à blanc - et c'est terminé. Grâce à cette automatisation des correctifs de sécurité, les mises à jour automatiques de Linux sont appliquées en toute fluidité, la charge de maintenance reste faible et les mises à jour des serveurs Linux deviennent prévisibles au lieu d'être subies. Pour les environnements plus importants, associez cette configuration à l'Infrastructure as Code et à des déploiements échelonnés afin de ne pas mettre à jour tous les nœuds en même temps.
Version du document : 1.0
Dernière mise à jour : mai 2026
Propriétaire : Équipe de documentation technique