Accueil

Mises à jour automatiques avec unattended-upgrades

System
Difficulte: Beginner
4 min de lecture

Tutoriel pour configurer unattended-upgrades et apt-listchanges sur Debian/Ubuntu pour automatiser les mises à jour de sécurité et recevoir des notifications.

Retour aux tutoriels

L'essentiel

  • Deux fichiers pilotent l'ensemble : /etc/apt/apt.conf.d/20auto-upgrades, l'interrupteur créé par sudo dpkg-reconfigure -plow unattended-upgrades, et /etc/apt/apt.conf.d/50unattended-upgrades, qui définit le comportement.
  • Par défaut, seule l'origine ${distro_id}:${distro_codename}-security est active dans Allowed-Origins : c'est le réglage le plus sûr. Décommenter -updates, -proposed ou -backports élargit nettement la surface de changement.
  • Unattended-Upgrade::Mail envoie un rapport, MailOnlyOnError le limite aux échecs et Package-Blacklist exclut les paquets à ne jamais toucher automatiquement. Tout cela suppose un MTA fonctionnel sur la machine, comme msmtp ou postfix.
  • Automatic-Reboot est pratique sur un poste de travail et dangereux en production : mieux vaut une notification et un redémarrage planifié, avec needrestart pour savoir s'il est réellement nécessaire.
  • Avant de faire confiance à l'automatisme : sudo unattended-upgrade --dry-run --debug simule sans rien modifier, et les traces d'exécution sont dans /var/log/unattended-upgrades/.
À quoi servent ces outils ?
unattended-upgrades est un script qui installe automatiquement les mises à jour de sécurité (et autres, si configuré) sur un système Debian/Ubuntu. Il permet de maintenir un serveur à jour sans intervention manuelle. apt-listchanges s'intègre à apt pour afficher les nouveautés ou les changements importants d'un paquet avant son installation.

Pourquoi les utiliser ensemble ?

L'automatisation des mises à jour de sécurité est une bonne pratique fondamentale. Cependant, certaines mises à jour peuvent introduire des changements de comportement non désirés. La combinaison des deux outils offre le meilleur des deux mondes :

  • Votre système reçoit les correctifs de sécurité automatiquement.
  • Vous êtes notifié par email si une de ces mises à jour contient des changements importants, vous permettant de vérifier que tout fonctionne comme prévu.

Prérequis

  • Un système Debian ou Ubuntu.
  • Accès root ou privilèges sudo.
  • Un agent de transport de mail (MTA) fonctionnel (comme msmtp ou postfix) pour recevoir les notifications.

Installation

sudo apt-get update
sudo apt-get install unattended-upgrades apt-listchanges

Configuration

Étape 1 : Activer les mises à jour automatiques

Lancez l'outil de reconfiguration de unattended-upgrades. C'est la méthode la plus simple pour créer le fichier de configuration initial.

sudo dpkg-reconfigure -plow unattended-upgrades

Une interface en ncurses s'ouvrira. Répondez "Oui" à la question "Télécharger et installer automatiquement les mises à jour stables ?". Cela créera le fichier /etc/apt/apt.conf.d/20auto-upgrades.

Étape 2 : Personnaliser le comportement

Le fichier de configuration principal est /etc/apt/apt.conf.d/50unattended-upgrades. Ouvrez-le pour l'éditer.

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Voici les sections les plus importantes :

// Décommentez les lignes des dépôts que vous voulez mettre à jour automatiquement.
// Par défaut, seul "security" est activé, ce qui est le choix le plus sûr.
Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}-security";
        //"${distro_id}:${distro_codename}-updates";
        //"${distro_id}:${distro_codename}-proposed";
        //"${distro_id}:${distro_codename}-backports";
};

// Mettre sur liste noire des paquets que vous ne voulez JAMAIS mettre à jour automatiquement.
Unattended-Upgrade::Package-Blacklist {
    // "vim";
    // "libc6";
};

// Décommentez pour recevoir un email en cas de problème ou de mise à jour.
Unattended-Upgrade::Mail "[email protected]";

// Décommentez pour être notifié uniquement en cas d\'erreur.
//Unattended-Upgrade::MailOnlyOnError "true";

// Décommentez pour supprimer automatiquement les dépendances inutiles.
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Décommentez et mettez à "true" pour autoriser le redémarrage automatique si nécessaire
// (dangereux sur un serveur de production !).
//Unattended-Upgrade::Automatic-Reboot "false";

Étape 3 : Configurer apt-listchanges

Configurez apt-listchanges pour qu'il vous envoie des emails au lieu de vous interrompre en ligne de commande.

sudo dpkg-reconfigure apt-listchanges
  • Quel type de modifications doit être affiché ? `news` est un bon choix.
  • Voulez-vous que apt-listchanges vous pose des questions ? `non`.
  • De quelle manière apt-listchanges doit-il s'afficher ? `mail`.
  • Adresse de courriel où envoyer les messages : Entrez votre adresse.

Tester et vérifier

Tester la configuration

Vous pouvez faire une simulation pour voir ce que unattended-upgrades ferait.

sudo unattended-upgrade --dry-run --debug

Cette commande ne modifiera rien mais vous montrera les paquets qui seraient mis à jour.

Vérifier les logs

Les logs des exécutions se trouvent dans /var/log/unattended-upgrades/. C'est là que vous devez regarder si vous suspectez un problème.

ls -l /var/log/unattended-upgrades/
Redémarrage automatique
L'option `Automatic-Reboot` est très pratique pour les postes de travail, mais peut causer des interruptions de service sur un serveur. Ne l'activez qu'en connaissance de cause. Il est souvent préférable de recevoir une notification et de planifier le redémarrage manuellement. L'outil `needrestart` peut vous aider à savoir si un redémarrage est nécessaire.

Conclusion

La mise en place de unattended-upgrades est une mesure de sécurité fondamentale pour tout serveur Debian ou Ubuntu. Elle garantit que les failles de sécurité critiques sont corrigées rapidement, sans que vous ayez à intervenir manuellement tous les jours. En le combinant avec apt-listchanges, vous gardez un œil sur les modifications importantes, ce qui vous permet d'intervenir uniquement lorsque c'est nécessaire.

MR

Écrit par

Morgann Riu

Expert en cybersécurité et administration Linux. Je partage mes connaissances à travers des tutoriels gratuits et des formations pour aider les administrateurs systèmes et développeurs à sécuriser leurs infrastructures.

Questions fréquentes

Pourquoi la commande de test s'appelle <code>unattended-upgrade</code> au singulier alors que le paquet est <code>unattended-upgrades</code> ?
C'est une particularité du paquet : le nom Debian est au pluriel, l'exécutable au singulier. La bonne commande de simulation est donc sudo unattended-upgrade --dry-run --debug. Elle ne modifie rien et affiche exactement quels paquets seraient installés, ce qui permet de valider une configuration sans attendre le prochain déclenchement automatique.
Je ne reçois aucun email alors que des mises à jour passent, que vérifier ?
Trois points, dans l'ordre. D'abord la ligne Unattended-Upgrade::Mail "[email protected]" doit être décommentée dans 50unattended-upgrades. Ensuite, si MailOnlyOnError "true" est actif, aucun message n'est envoyé quand tout se passe bien : c'est le comportement attendu, pas une panne. Enfin il faut un MTA opérationnel (msmtp ou postfix) sinon le rapport est généré puis perdu. Les fichiers de /var/log/unattended-upgrades/ permettent de confirmer que la mise à jour a bien eu lieu.
Faut-il activer <code>-updates</code> en plus de <code>-security</code> ?
Sur un serveur de production, non par défaut. L'origine -security seule couvre les correctifs de failles, qui sont le vrai enjeu de l'automatisation, tout en limitant les changements de comportement. Activer -updates, -proposed ou -backports fait entrer des mises à jour fonctionnelles susceptibles de casser une application, et sur une machine peu surveillée cela se découvre longtemps après. Si vous les activez, protégez au minimum les paquets critiques avec Package-Blacklist.
Comment empêcher la mise à jour automatique d'un paquet précis ?
Ajoutez-le dans le bloc Unattended-Upgrade::Package-Blacklist de /etc/apt/apt.conf.d/50unattended-upgrades, une entrée par ligne, en décommentant les exemples fournis comme "libc6"; ou "vim";. Le paquet reste alors figé pour l'automate tout en restant installable manuellement quand vous le décidez. Confirmez le résultat avec sudo unattended-upgrade --dry-run --debug, qui montre les paquets retenus et ceux qui sont écartés.
À quoi sert <code>apt-listchanges</code> si <code>unattended-upgrades</code> installe déjà tout seul ?
Il vous informe du contenu des mises à jour au lieu de vous laisser découvrir un changement de comportement en production. On le configure avec sudo dpkg-reconfigure apt-listchanges en choisissant news comme type de contenu, mail comme mode d'affichage, et en répondant non à la question sur les invites interactives. Ce dernier point est impératif : une invite bloquerait une mise à jour non supervisée.

Partager ce tutoriel

Cet article vous a plu ?

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Commentaires

Recommandé pour vous

Article de fond sur le sujet

Checklist Sécurité Linux

30 points essentiels pour sécuriser un serveur Linux. Recevez aussi les nouveaux tutoriels par email.

Pas de spam. Désabonnement en 1 clic.