Tutoriel

Mises à jour de sécurité automatiques sur VPS Debian/Ubuntu

Sécurité & Monitoring10 min de lecture5 étapes

Un VPS exposé sur internet sans politique de mise à jour est une surface d'attaque ouverte. Les vulnérabilités critiques sont exploitées en quelques heures après publication d'un CVE, bien avant qu'une intervention manuelle soit possible. Configurer **unattended-upgrades** sur chaque serveur Debian ou Ubuntu de votre parc est la mesure la plus simple pour réduire mécaniquement ce délai d'exposition, sans renoncer au contrôle sur ce qui est appliqué.

Sommaire· Pourquoi automatiser les patches de sécurité1/10
  1. 01Pourquoi automatiser les patches de sécurité
  2. 02Bénéfices concrets pour les agences qui gèrent un parc client
  3. 03Comment fonctionne unattended-upgrades
  4. 04Prérequis
  5. 05Installer et configurer unattended-upgrades
  6. 06Configurer les notifications par courriel
  7. 07Surveiller les redémarrages requis avec needrestart
  8. 08Reboot automatique pour les patches noyau
  9. 09Mises à jour manuelles vs automatiques : comparatif
  10. 10Déployer et gérer unattended-upgrades sur un parc multi-VPS

Pourquoi automatiser les patches de sécurité

Le cycle de vie d'une vulnérabilité est court. Entre la publication d'un CVE critique et les premières tentatives d'exploitation massives, la fenêtre se compte désormais en heures. Pour une agence qui administre dix, vingt ou cinquante VPS, attendre une intervention humaine planifiée chaque semaine revient à offrir plusieurs jours d'exposition sur chaque machine.

La réglementation renforce cette exigence. Le Cyber Resilience Act européen impose aux opérateurs de produits connectés de démontrer une politique de correctifs documentée et appliquée. Pour les agences qui hébergent des applications clients, l'absence de traçabilité des mises à jour peut engager leur responsabilité contractuelle en cas d'incident.

L'argument technique est simple : la majorité des compromissions de serveurs Linux exploitent des vulnérabilités pour lesquelles un patch est disponible depuis plus de 30 jours. L'outil unattended-upgrades, inclus dans les dépôts Debian et Ubuntu, installe automatiquement les correctifs de sécurité issus des dépôts officiels — sans toucher aux mises à jour de version majeure ni aux paquets que vous avez explicitement exclus.

Bénéfices concrets pour les agences qui gèrent un parc client

  • Délai de correction réduit : les patches de sécurité sont appliqués dans les heures qui suivent leur publication dans les dépôts stables, sans ticket de maintenance.
  • Traçabilité automatique : chaque installation est enregistrée dans /var/log/unattended-upgrades/, consultable à tout moment pour un audit ou un rapport client.
  • Périmètre contrôlé : seules les mises à jour estampillées security sont appliquées par défaut — les montées de version restent sous contrôle manuel.
  • Charge opérationnelle allégée : un parc de 50 VPS n'exige plus 50 connexions SSH hebdomadaires pour apt upgrade.
  • Conformité documentable : la politique est définie dans un fichier de configuration versionnable, reproductible par Ansible ou tout outil de gestion de configuration.
  • Notifications ciblées : les erreurs d'installation ou les redémarrages requis peuvent déclencher un courriel, sans noyer l'équipe dans les rapports de routine.

Comment fonctionne unattended-upgrades

unattended-upgrades est un démon Debian/Ubuntu qui s'exécute via un timer systemd (ou cron sur les systèmes plus anciens). Il interroge les dépôts APT configurés, filtre les paquets selon les origines autorisées définies dans sa configuration, puis installe les mises à jour sans interaction utilisateur.

La logique de filtrage repose sur les Release files APT. Chaque dépôt expose des métadonnées (Origin, Suite, Codename) que unattended-upgrades compare à sa liste blanche. Par défaut sur Ubuntu, seules les origines ${distro_id}:${distro_codename}-security sont activées — ce qui correspond exactement aux archives de sécurité officielles Canonical, sans inclure les mises à jour de backports ni les paquets tiers.

Le processus se déroule en trois phases : mise à jour du cache APT (apt-get update), résolution des dépendances pour les paquets éligibles, installation avec journalisation détaillée. En cas d'erreur (conflit de dépendance, paquet verrouillé, espace disque insuffisant), l'installation s'arrête et une notification peut être émise selon la configuration. L'intégrité du système n'est jamais compromise : unattended-upgrades ne force pas la résolution de conflits.

Prérequis

La configuration décrite dans cet article s'applique à Debian 11/12 et Ubuntu 22.04/24.04 LTS. Les systèmes plus anciens (Debian 10, Ubuntu 20.04) sont compatibles mais leur support amont approche de sa fin — une migration est recommandée avant d'investir dans leur configuration.

Accès requis : connexion SSH avec droits root ou compte sudo. Aucune dépendance externe n'est nécessaire pour le fonctionnement de base ; la configuration SMTP est optionnelle et n'intervient que pour les notifications par courriel.

Si vous gérez votre parc depuis Ansible, les étapes décrites ci-dessous peuvent être reproduites directement dans un rôle dédié — la structure des fichiers de configuration est stable entre les versions majeures de Debian et Ubuntu.

Installer et configurer unattended-upgrades

  1. Installer le paquet

    Sur Debian et Ubuntu, le paquet est disponible dans les dépôts standards :

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

    Le paquet apt-listchanges est optionnel mais recommandé : il permet d'inclure le résumé des changements dans les notifications par courriel.

  2. Configurer les origines autorisées

    Éditez /etc/apt/apt.conf.d/50unattended-upgrades. La section Unattended-Upgrade::Allowed-Origins contrôle quels dépôts sont éligibles. Sur Ubuntu 22.04, la configuration minimale recommandée :

    Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}-security";
        "${distro_id}ESMApps:${distro_codename}-apps-security";
        "${distro_id}ESM:${distro_codename}-infra-security";
    };

    Sur Debian 12, remplacez par :

    Unattended-Upgrade::Allowed-Origins {
        "Debian:${distro_codename}-security";
    };

    Pour exclure des paquets sensibles (par exemple un noyau personnalisé ou une version épinglée de PHP) :

    Unattended-Upgrade::Package-Blacklist {
        "linux-image";
        "php8.2-fpm";
    };
  3. Activer le timer périodique

    Le fichier /etc/apt/apt.conf.d/20auto-upgrades commande la fréquence d'exécution. Créez-le ou vérifiez son contenu :

    APT::Periodic::Update-Package-Lists "1";
    APT::Periodic::Unattended-Upgrade "1";
    APT::Periodic::AutocleanInterval "7";

    La valeur "1" signifie une exécution quotidienne. Sur Ubuntu, le service apt-daily-upgrade.timer est activé automatiquement après cette configuration. Vérifiez son état :

    systemctl status apt-daily-upgrade.timer
  4. Vérifier les logs

    Les journaux d'installation sont écrits dans /var/log/unattended-upgrades/. Le fichier principal :

    tail -50 /var/log/unattended-upgrades/unattended-upgrades.log

    Une ligne de succès ressemble à :

    2026-09-25 04:12:31,847 INFO Packages that will be upgraded: libssl3 openssl
    2026-09-25 04:12:45,021 INFO Package libssl3 upgraded to 3.0.2-0ubuntu1.17

    En cas d'échec, le fichier unattended-upgrades-dpkg.log conserve la sortie complète de dpkg pour diagnostic.

  5. Tester l'exécution à la demande

    Pour déclencher une exécution immédiate sans attendre le timer et vérifier que la configuration est opérationnelle :

    unattended-upgrade --dry-run --debug 2>&1 | head -60

    L'option --dry-run simule l'installation sans rien modifier. Retirez-la pour une exécution réelle :

    unattended-upgrade -v

    Si la sortie affiche No packages found that can be upgraded unattended, le système est à jour ou aucun paquet éligible n'attend d'installation — c'est le résultat attendu sur un serveur récemment provisionné.

Configurer les notifications par courriel

Les notifications courriel permettent à l'équipe de recevoir une alerte lorsqu'une mise à jour échoue ou lorsqu'un redémarrage est requis. Elles n'envoient rien en cas de succès silencieux — ce qui évite de saturer la boîte de réception avec des rapports quotidiens.

Dans /etc/apt/apt.conf.d/50unattended-upgrades, activez l'option :

Unattended-Upgrade::Mail "[email protected]";
Unattended-Upgrade::MailReport "only-on-error";

La valeur only-on-error (recommandée) n'envoie un courriel qu'en cas d'erreur. La valeur on-change envoie un courriel à chaque installation. La valeur always envoie un courriel même quand rien n'est installé — à éviter sur un parc de plusieurs dizaines de machines.

Pour que l'envoi fonctionne, le serveur doit disposer d'un MTA local capable de relayer les courriels. Sur un VPS minimal, postfix en mode satellite est l'option la plus légère :

apt-get install -y postfix
# Choisir "Satellite system" dans le wizard
# Renseigner le relais SMTP de votre fournisseur ou de votre infrastructure

Alternativement, msmtp peut servir de relais vers un service transactionnel (Mailgun, Postmark, SendGrid) sans installer un MTA complet.

Surveiller les redémarrages requis avec needrestart

Certains patches de sécurité — en particulier ceux du noyau, de la libc ou d'OpenSSL — nécessitent un redémarrage pour être pleinement actifs. L'outil needrestart détecte les services et processus qui utilisent encore les anciennes versions en mémoire.

Installez-le avec :

apt-get install -y needrestart

Après chaque mise à jour, needrestart liste les services à redémarrer. En mode automatique ($nrconf{restart} = 'a'; dans /etc/needrestart/needrestart.conf), il redémarre les services concernés sans intervention. Pour les noyaux, il ne redémarre jamais la machine automatiquement sans configuration explicite — c'est le comportement attendu sur un VPS de production.

Combinez needrestart avec les notifications unattended-upgrades : un courriel indiquant qu'un redémarrage est requis permet à l'équipe de planifier l'intervention au bon moment, sans urgence mais sans laisser traîner.

Reboot automatique pour les patches noyau

Le redémarrage automatique après un patch noyau est la décision la plus délicate dans une politique de mises à jour. Il garantit que le correctif est actif immédiatement, mais il interrompt les services en cours — ce qui peut être inacceptable pour certaines charges de travail.

Dans /etc/apt/apt.conf.d/50unattended-upgrades, les options concernées :

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-WithUsers "false";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

Automatic-Reboot-Time planifie le redémarrage à une heure creuse. Automatic-Reboot-WithUsers "false" empêche le redémarrage si une session utilisateur est ouverte — utile pour les machines de développement, moins pertinent sur un serveur de production sans connexion interactive permanente.

Précautions indispensables avant d'activer cette option :
- Vérifiez que vos services se relancent automatiquement au démarrage (systemctl is-enabled <service>).
- Testez le temps de redémarrage complet sur un serveur de staging avant de déployer en production.
- Si votre application nécessite un ordre de démarrage précis (base de données avant applicatif), documentez et testez ce scénario.
- Pour un parc multi-VPS, échelonnez les horaires de redémarrage — voir la section suivante.

Mises à jour manuelles vs automatiques : comparatif

Faites défiler le tableau

CritèreMise à jour manuelleMise à jour automatique (unattended-upgrades)
Délai d'applicationDépend du planning d'astreinte — souvent 3 à 7 joursQuelques heures après publication dans les dépôts stables
TraçabilitéDépend de la rigueur des notes de maintenanceLog horodaté automatique dans `/var/log/unattended-upgrades/`
Risque de régressionContrôlé : chaque mise à jour est validée avant applicationFaible sur les patches de sécurité stables, écarté par la liste noire
Charge opérationnelleÉlevée sur un parc de plus de 5 VPSNégligeable une fois la configuration déployée
Patches noyau actifsImmédiat si redémarrage planifiéNécessite la configuration du reboot automatique ou une intervention manuelle
Couverture CVE critiqueInsuffisante si le cycle est hebdomadaireOptimale — les patches sont appliqués dans la fenêtre la plus étroite possible
Conformité documentableDifficile à prouver sans outillage supplémentaireFichiers de log et configuration versionnables, auditables

Déployer et gérer unattended-upgrades sur un parc multi-VPS

La configuration décrite jusqu'ici s'applique à un seul serveur. Pour un parc de dizaines de VPS clients, la reproductibilité et la coordination deviennent des enjeux à part entière.

Automatiser avec Ansible

Un rôle Ansible simple suffit à déployer la configuration sur l'ensemble du parc en quelques minutes. Stockez les fichiers 50unattended-upgrades et 20auto-upgrades dans templates/ et rendez les options de reboot configurables par variable d'inventaire :

- name: Déployer unattended-upgrades
  hosts: vps_clients
  become: true
  tasks:
    - name: Installer unattended-upgrades
      apt:
        name: [unattended-upgrades, apt-listchanges]
        state: present
        update_cache: true
    - name: Déployer la configuration
      template:
        src: 50unattended-upgrades.j2
        dest: /etc/apt/apt.conf.d/50unattended-upgrades
        owner: root
        mode: '0644'
    - name: Déployer apt-periodic
      copy:
        src: 20auto-upgrades
        dest: /etc/apt/apt.conf.d/20auto-upgrades
        owner: root
        mode: '0644'

Échelonner les redémarrages

Si le reboot automatique est activé, ne configurez pas la même heure sur tous vos serveurs. Un redémarrage simultané de 30 VPS peut générer une charge de reconnexion inhabituelle sur votre infrastructure et compliquer le diagnostic en cas de problème. Distribuez les horaires sur une plage de deux heures (02:00 à 04:00) en utilisant une variable Ansible par groupe ou par serveur.

Tester sur staging avant le parc de production

Pour les configurations qui activent le reboot automatique ou qui modifient la liste noire des paquets, validez d'abord sur un serveur de staging représentatif. Un VPS 99 DH/mois dédié aux tests de configuration évite de propager une erreur de configuration à l'ensemble du parc.

Centraliser les alertes

Plutôt que de recevoir des courriels individuels de chaque serveur, configurez un alias courriel qui agrège les alertes dans un canal de supervision unique. Si votre infrastructure utilise déjà un agrégateur de logs (Loki, OpenSearch), les fichiers de log unattended-upgrades peuvent y être acheminés via un agent léger pour une vue centralisée du parc.

Pour aller plus loin sur la sécurisation de vos VPS, consultez notre checklist de durcissement Linux et notre comparatif CrowdSec vs Fail2ban. Si vous gérez également des applications self-hosted, la routine de correctifs pour applications self-hosted complète cette approche avec les couches applicatives.

Gérez un parc VPS client sans friction

ServOrbit.com propose des VPS managés à partir de 99 DH/mois, avec provisionnement automatisé et tableau de bord centralisé pour les agences et revendeurs.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet