rss logo

Configuration des mises à jour automatiques sous Debian

Debian Logo

Lorsque nous avons à gérer (comme moi) un ensemble de serveurs Debian, il peut être chiant exigeant de les maintenir tous à jour. Cela implique de se connecter à chaque serveur individuellement, d'exécuter quelques commandes et, occasionnellement, de redémarrer le système en fonction des mises à jour appliquées. Pour automatiser ce processus, nous pouvons utiliser l'outil unattended-upgrades. Dans cet article, je vais décrire comment utiliser cet outil pour maintenir un système Debian à jour et comment le configurer pour envoyer une notification par email à la fin d'une mise à jour.

Prérequis

  • D'abord, installer le paquet unattended-upgrades :
root@host:~# apt update && apt install unattended-upgrades

Configuration

Selon la sensibilité de ses serveurs, nous pouvons les configurer pour redémarrer automatiquement, pour installer uniquement les mises à jour de sécurité, etc… Personnellement, je choisis d'installer toutes les mises à jour et de redémarrer le système si nécessaire.

  • Éditez le fichier /etc/apt/apt.conf.d/50unattended-upgrades :
Unattended-Upgrade::Origins-Pattern { // Les mises à jour recommandées sont des modifications de logiciels, mais pas des mises à jour qui affecteront la sécurité de votre système. Elles tendent à corriger des bogues et des problèmes gênants. "origin=Debian,codename=${distro_codename}-updates"; // Les mises à jour "proposed" sont des mises à jour qui attendent d'être placées dans la file d'attente des mises à jour recommandées après avoir été testées. Il se peut qu'elles ne soient jamais recommandées ou qu'elles soient remplacées par une mise à jour plus récente. // Elles sont déconseillées dans un environnement de production //"origin=Debian,codename=${distro_codename}-proposed-updates"; "origin=Debian,codename=${distro_codename},label=Debian"; "origin=Debian,codename=${distro_codename},label=Debian-Security"; "origin=Debian,codename=${distro_codename}-security,label=Debian-Security"; }; […] // Permettre au système de redémarrer automatiquement si nécessaire Unattended-Upgrade::Automatic-Reboot "true"; […] // Si le redémarrage automatique est activé et nécessaire, le redémarrage s'effectue à l'heure // spécifiée au lieu de redémarrer immédiatement. // Paramètre par défaut : "now" Unattended-Upgrade::Automatic-Reboot-Time "02:00";
  • Créer ou éditer le fichier /etc/apt/apt.conf.d/20auto-upgrades pour activer unattended-upgrades :
// Exécuter "apt-get update" automatiquement tous les n-jours (0=désactivé) APT::Periodic::Update-Package-Lists "1"; // Exécuter le script "unattended-upgrade" // tous les n-jours (0=désactivé) // Nécessite le paquet "unattended-upgrades", écrira // log dans /var/log/unattended-upgrades APT::Periodic::Unattended-Upgrade "1";
  • Lancer unattended-upgrade en mode debug pour vérifier que la configuration est OK :
root@host:~# unattended-upgrade -d --dry-run

Modifier la planification du téléchargement et des installations

Par défaut, le téléchargement des mises à jour s'exécute deux fois par jour, à 6h et à 18h, avec des installations prévues pour 6h. Nous pouvons modifier ces paramètres en éditant deux fichiers systemd.

Modification du planificateur de téléchargement

  • Éditer le fichier /etc/systemd/system/timers.target.wants/apt-daily.timer et remplacer la valeur existante par celle souhaitée :
[Unit] Description=Daily apt download activities [Timer] OnCalendar=*-*-* 6,18:00 RandomizedDelaySec=12h Persistent=true [Install] WantedBy=timers.target

Modification du planificateur d'installation

  • Éditer le fichier /etc/systemd/system/timers.target.wants/apt-daily-upgrade.timer et remplacer la valeur existante par celle souhaitée :
[Unit] Description=Daily apt upgrade and clean activities After=apt-daily.timer [Timer] OnCalendar=*-*-* 6:00 RandomizedDelaySec=60m Persistent=true [Install] WantedBy=timers.target

Prise en compte des modifications

  • Exécuter ces commandes pour prendre en compte les modifications :
root@host:~# systemctl daemon-reload && systemctl restart apt-daily-upgrade.timer && systemctl restart apt-daily.timer

Configurer les alertes par mail

Il peut être utile de recevoir des rapports par email pour s'assurer que les mises à jour sont correctement appliquées et pour savoir quand un serveur a été redémarré afin d'appliquer les dernières mises à jour. Pour cela, nous devons configurer au moins un client SMTP. Dans cet article, je montrerai comment configurer msmtp.

  • Installer le paquet msmtp et définir des permissions restrictives sur le fichier /etc/msmtprc :
root@host:~# apt update && apt install msmtp root@host:~# chmod 600 /etc/msmtprc
  • Éditer le fichier /etc/msmtprc et l'adapter à son serveur de mails, par exemple dans mon cas :
    • Serveur de mail: mail.std.rocks
    • Protocole: smtps / TCP465
    • Identifiant: srv1@std.rocks
    • Mot de passe: MyWeakPassword
account STD #Mail Server : host mail.std.rocks port 465 from srv1@std.rocks #LOGIN / PASSWORD user srv1@std.rocks password MyWeakPassword auth on tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt tls_certcheck off logfile /var/log/msmtp account default : STD
  • Définir msmtp comme le programme par défaut pour sendmail :
root@host:~# ln -fs /usr/bin/msmtp /usr/sbin/sendmail
  • Éditer le fichier /etc/apt/apt.conf.d/50unattended-upgrades :
// Envoyer un courriel à cette adresse pour signaler des problèmes ou des paquets qui ont été mis à jour Unattended-Upgrade::Mail "srv1-unattended@std.rocks"; […] // Remplacer la valeur "on-change" par "always" et lancer unattended-upgrade -d pour tester que le rapport par courriel fonctionne Unattended-Upgrade::MailReport "on-change"; // Optionnel : Paramétrer le champ From dans le courriel qui sera envoyé Unattended-Upgrade::Sender "srv1@std.rocks";
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

contact mail address