Un serveur non patché est une invitation ouverte. Les failles de sécurité sont souvent exploitées dans les heures qui suivent leur publication, le temps entre la découverte d’une vulnérabilité et son exploitation massive par des bots peut se compter en heures. Sur un serveur de production, attendre de trouver le temps de faire les mises à jour manuellement est un risque inacceptable. unattended-upgrades règle ce problème en appliquant automatiquement les correctifs de sécurité, sans intervention humaine.
Qu’est-ce que unattended-upgrades ?
unattended-upgrades est un paquet Ubuntu qui applique automatiquement les mises à jour de sécurité en arrière-plan. Il ne touche pas aux mises à jour fonctionnelles, uniquement aux paquets marqués comme correctifs de sécurité dans les dépôts officiels Ubuntu.
La distinction est importante : on ne veut pas qu’un serveur de production mette à jour automatiquement nginx vers une nouvelle version majeure qui pourrait casser la configuration. On veut uniquement que les failles connues soient colmatées rapidement.
Installation
Sur Ubuntu 24.04, unattended-upgrades est souvent déjà installé. Vérifions :
dpkg -l unattended-upgrades
Si ce n’est pas le cas, installons-le :
sudo apt install unattended-upgrades -y
Puis activons-le via l’assistant de configuration :
sudo dpkg-reconfigure --priority=low unattended-upgrades
Réponds Oui quand il te demande d’activer les mises à jour automatiques.
Configuration
Le fichier principal de configuration se trouve dans /etc/apt/apt.conf.d/50unattended-upgrades. Ouvrons-le :
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Sources de mises à jour autorisées
Vérifie que ces lignes sont présentes et non commentées :
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
};
Ces quatre sources couvrent les mises à jour de sécurité standard et ESM (Extended Security Maintenance) d’Ubuntu. Les sources updates, proposed et backports restent commentées: on ne veut pas de mises à jour fonctionnelles automatiques!
Nettoyage automatique
Décommente et active ces deux lignes pour supprimer automatiquement les dépendances devenues inutiles après une mise à jour :
Unattended-Upgrade::Remove-New-Unused-Dependencies "true"; Unattended-Upgrade::Remove-Unused-Dependencies "true";
Redémarrage automatique
Cette ligne doit rester à false sur un serveur de production :
Unattended-Upgrade::Automatic-Reboot "false";
Un redémarrage automatique en pleine nuit sans prévenir pourrait interrompre des services. On préfère être notifié qu’un redémarrage est nécessaire et le planifier manuellement.
Vérification
Lance un test à blanc pour vérifier que la configuration est correcte :
sudo unattended-upgrades --dry-run --debug 2>&1 | head -5
Tu dois voir les sources autorisées listées :
Allowed origins are: o=Ubuntu,a=noble, o=Ubuntu,a=noble-security...
Comment ça fonctionne en pratique
unattended-upgrades s’appuie sur deux timers systemd qui s’activent automatiquement :
apt-daily.timer : se déclenche deux fois par jour pour télécharger la liste des paquets disponibles.
apt-daily-upgrade.timer : se déclenche une fois par jour (vers 6h du matin par défaut) pour appliquer les mises à jour de sécurité téléchargées.
Vérifie leur statut :
sudo systemctl status apt-daily.timer apt-daily-upgrade.timer --no-pager
Consulter les logs
Les mises à jour appliquées sont journalisées dans /var/log/unattended-upgrades/ :
sudo cat /var/log/unattended-upgrades/unattended-upgrades.log
Tu y verras la liste des paquets mis à jour automatiquement, avec leur date et version.
En cas de problème, le log détaillé est disponible ici :
sudo cat /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
Gérer les redémarrages nécessaires
Certaines mises à jour, notamment les mises à jour du kernel, nécessitent un redémarrage pour être effectives. Puisqu’on a désactivé le redémarrage automatique, il faut vérifier régulièrement si un redémarrage est en attente :
cat /var/run/reboot-required
Si le fichier existe, un redémarrage est nécessaire. Tu peux planifier ce redémarrage dans une fenêtre de maintenance à faible trafic :
sudo reboot
Pour être notifié automatiquement par email qu’un redémarrage est nécessaire, ajoute cette ligne dans le crontab root :
sudo crontab -e
0 8 * * * test -f /var/run/reboot-required && echo "Redémarrage requis sur le serveur VPS" | mail -s "[VPS] Reboot requis" TON_ADRESSE@gmail.com
Ce que unattended-upgrades ne fait pas
Il est important de comprendre les limites de cet outil :
Il ne met pas à jour WordPress les mises à jour des applications hébergées (WordPress, plugins, thèmes) sont gérées séparément depuis le tableau de bord WordPress ou via WP-CLI.
Il ne met pas à jour les paquets hors dépôts officiels — si tu as installé des logiciels depuis des PPA tiers ou des sources externes, ils ne seront pas couverts.
Il ne remplace pas une veille sécurité pour les vulnérabilités zero-day ou les incidents majeurs, une intervention manuelle reste nécessaire. Suivre les bulletins de sécurité Ubuntu (ubuntu.com/security/notices) est une bonne pratique complémentaire.
Conclusion
unattended-upgrades est l’une des mesures de sécurité les plus simples et les plus efficaces qu’on puisse mettre en place sur un serveur Linux. Quelques minutes de configuration suffisent pour s’assurer que les correctifs de sécurité sont appliqués rapidement et automatiquement, sans risquer de casser la configuration en place grâce au ciblage exclusif des paquets de sécurité.
Combiné à Logwatch pour la surveillance et Fail2ban pour la protection active, unattended-upgrades forme le socle d’une infrastructure Linux correctement maintenue.
Laisser un commentaire