Post

Mises à jour automatiques sur Debian

Mises à jour automatiques sur Debian

Un élément central de la sécurité des serveurs Linux consiste à installer les mises à jour de sécurité à temps. C’est l’une des tâches essentielles des administrateurs Linux pour mettre le système à jour. De plus, ça garde votre système plus stable et sécurisé.


Configuration des mises à jour automatiques sous Debian

Paquet unattended-upgrades

Installer le paquet de mises à niveau sans surveillance sur Debian

Tout d’abord, si le paquet unattended-upgrades n’est pas déjà installé sur votre système, vous pouvez l’installer à l’aide des commandes ci-dessous dans la console :

1
2
sudo apt update
sudo apt install unattended-upgrades

Edition fichier de configuration

Le fichier de configuration pour les mises à niveau sans surveillance se trouve dans le répertoire /etc/apt/apt.conf.d/
Son nom est 50unattended-upgrades.

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

Le fichier complet 50unattended-upgrades

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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";
};

// Envoyer un email à cette adresse pour les problèmes ou les mises à jour de paquets
// Si vide ou non défini, aucun email n'est envoyé, assurez-vous que vous
// d'avoir une configuration de messagerie fonctionnelle sur votre système. Un paquet qui fournit
// 'mailx' doit être installé. Par exemple, « user@example.com »
Unattended-Upgrade::Mail "rnmkcy@cinay.eu";

// Suppression automatique des paquets inutilisés après la mise à jour
// (équivalent à apt-get autoremove)
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Permettre au système de redémarrer automatiquement si nécessaire
//Unattended-Upgrade::Automatic-Reboot "false";

// 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";

Adapater votre adresse de messagerie

Activer les mises à jour automatiques sur Debian

Pour activer les mises à niveau sans surveillance, vous devrez configurer le fichier /etc/apt/apt.conf.d/20auto-upgrades
Exécutez la commande sudo dpkg-reconfigure --priority=low unattended-upgrades dans la console

1
sudo dpkg-reconfigure --priority=low unattended-upgrades

La fenêtre suivante apparaîtra après avoir exécuté la commande ci-dessus, vous demandant automatiquement si vous souhaitez télécharger et installer automatiquement les mises à jour stables. Utilisez la touche de tabulation pour sélectionner l’option Oui et appuyez sur Entrée.

Le fichier /etc/apt/apt.conf.d/20auto-upgrades sera mis à jour avec le contenu suivant

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

Autre possibilité, créer ou éditer le fichier /etc/apt/apt.conf.d/20auto-upgrades pour activer unattended-upgrades

1
2
3
4
5
6
7
8
// 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";

Pour voir si le service mises à niveau sans surveillance est activé et en cours d’exécution, vous pouvez exécuter la commande ci-dessous

1
sudo systemctl status unattended-upgrades.service


le service unattended-upgrades est activé pour installer automatiquement les mises à jour.

Si le service n’est pas autorisé et démarré, vous pouvez le faire manuellement

1
2
sudo systemctl enable unattended-upgrades
sudo systemctl start unattended-upgrades

Toute modification du fichier /etc/apt/apt.conf.d/20auto-upgrades doit être suivi d’un redémarrage du service: sudo systemctl restart unattended-upgrades

Pour désactiver les mises à jour autiomatiques sur Debian, exécuter sudo dpkg-reconfigure --priority=low unattended-upgrades, sélectionner l’option Non et appuyez sur Entrée

Tester la configuration

Lancer unattended-upgrade en mode debug pour vérifier que la configuration est OK

1
sudo 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

1
2
3
4
5
6
7
8
9
10
[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

1
2
3
4
5
6
7
8
9
10
11
[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 :

1
2
3
sudo systemctl daemon-reload
sudo systemctl restart apt-daily-upgrade.timer
sudo 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 :

1
2
3
4
sudo apt update
sudo apt install msmtp
touch $HOME/.msmtprc
chmod 600 $HOME/.msmtprc

Éditer le fichier $HOME/.msmtprc et l’adapter à son serveur de mails

1
2
3
4
5
6
7
8
9
10
11
12
13
account default
host mx1.xoyize.xyz
port 587
from yack@cinay.eu
user yack@cinay.eu
password mot_passe_yack
auto_from off
add_missing_from_header on
auth on
logfile ~/.msmtp.log
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

Définir msmtp comme le programme par défaut pour sendmail :

1
sudo ln -fs /usr/bin/msmtp /usr/sbin/sendmail

Pour pouvoir utiliser la commande mail, nous devons installer mailx

1
sudo apt install bsd-mailx

Configurer l’agent de transport du courrier pour qu’il utilise msmtp

1
sudo nano /etc/mail.rc

ajouter ce qui suit en fin de fichier

1
set mta=/usr/bin/msmtp

Test

1
echo "Test d’envoi de message" | mail -s "Depuis serveur $HOSTNAME" rnmkcy@cinay.eu

Options
Éditer le fichier /etc/apt/apt.conf.d/50unattended-upgrades :

1
2
3
4
5
6
7
// Envoyer un courriel à cette adresse pour signaler des problèmes ou des paquets qui ont été mis à jour
Unattended-Upgrade::Mail "rnmkcy@cinay.eu";
[…]
// 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 "rnmkcy@cinay.eu";
Cet article est sous licence CC BY 4.0 par l'auteur.