technique:adminsys:secu:automatic_updates

Les failles de sécurité sont un risque majeur pour l’infrastructure. Un exemple emblématique est la récente vulnérabilité de sudo, présente depuis plus de 10 ans, qui permet à n’importe quel utilisateur non-privilégié d’obtenir des droits d’administration.

Important:

Ce genre de failles est critique : dès qu’elle est rendue publique, des robots commencent à tenter d’exploiter les vulnérabilités sur des plages d’IP et se servent des intrusions pour construire des réseaux de bots, miner des cryptomonnaies ou exfiltrer/chiffrer des données.

Il est donc très désirable d’obtenir les mises à jour de sécurité le plus rapidement possible dès qu’un patch est disponible.

Question:

Les mises à jour automatique, ça craint, non ? Si ça casse des trucs et qu’on est pas là pour le voir ?

Nos machines tournent sur Debian, une distribution Linux pensée pour la stabilité. L’idée est d’automatiser les mises à jour concernant les failles de sécurité. Un dépôt spécial vise à transmettre ces mises à jour, qui sont abondamment testées et n’introduisent pas de nouvelles fonctionnalités.

Il nous semble beaucoup plus souhaitable de garantir le patch rapide des vulnérabilités, par exemple un semestre où l’équipe technique n’est pas très disponible, plutôt que de risquer de se faire trouer. Rappelons qu’il y a beaucoup de données personnelles sur les serveurs et qu’il est critique de les protéger du mieux que l’on peut. Certes, il y a toujours un risque de casse, mais il est minime. Ainsi, on appliquera :

  • Les mises à jour strictement nécessaires pour régler des failles de sécurité.
  • On exclura les mises à jour automatiques du noyau, qui nécessitent un redémarrage et font souvent exploser la mémoire disponible dans /boot, nécessitant une attention particulière.
  • On exclura les mises à jour automatiques de grub, qui peuvent mal tourner et empêcher un redémarrage.

A Savoir:

Debian propose un paquet qui gère la configuration de ces mises à jour automatique : unattended-upgrades.

Installation

Note:

Depuis Debian 9, le paquet est installé et configuré par défaut. Sauf que la plupart de nos VM ont été installées avec Debian 8… Et sur une autre, l’option a visiblement été désactivée à l’installation. On peut le vérifier avec la commande suivante :

dpkg -s unattended-upgrades

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

A Savoir:

Ce genre d’opération peut s’effectuer sur l’ensemble des machines, d’un seul coup, en utilisant cette astuce.

apt-listchanges va permettre de faire une synthèse des nouveaux paquets installés, et de les envoyer par mail à une adresse dédiée. Les personnes de l’équipe technique pourront se connecter au compte depuis un client IMAP quelconque et jeter un œil aux différentes mises à jour.

Choisir les paquets à mettre à jour

La configuration par défaut se trouve dans /etc/apt/apt.conf.d/50unattended-upgrades. Modifier la section suivante pour n’activer que les mises à jour de sécurité. On pourrait aussi activer les corrections de bug, mais ce n’est pas critique, on veut garder un maximum le contrôle sauf quand on parle de sécurité “vitale” :

Unattended-Upgrade::Origins-Pattern {
  "origin=Debian,codename=${distro_codename},label=Debian-Security";
}

Désactiver la mise à jour automatique de grub et du noyau :

Unattended-Upgrade::Package-Blacklist {
  "linux-headers*";
  "linux-image*";
  "linux-generic*";
  "linux-modules*";
  "grub-*";
};

Remplir la ligne suivante :

Unattended-Upgrade::Mail "tech@picasoft.net";
Unattended-Upgrade::MailOnlyOnError "true";

Elle indique qu’un rapport de mise à jour sera envoyé à tech@picasoft.net, uniquement en cas d’erreur. On configurera plus loin dans cette page le programme permettant d’envoyer de tels mails. :-D

S’assurer que le redémarrage automatique est désactivé :

Unattended-Upgrade::Automatic-Reboot "false";

Choisir les moments d'activation

L’activation automatique des mises à jour se configure dans /etc/apt/apt.conf.d/20auto-upgrades. On vérifie qu’il continue les valeurs suivantes :

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

A Savoir:

Le 1 indique que ces mises à jour sont faites une fois par jour (par un timer systemd). Pour configurer ce comportement plus finement, on pourra étudier et configurer le fichier /etc/apt/apt.conf.d/02periodic.

Note:

On suppose que les machines ont la capacité d'envoyer des mails via le serveur mail de Picasoft.

Éditer le fichier /etc/apt/listchanges.conf :

frontend=pager
email_address=root
confirm=0
save_seen=/var/lib/apt/listchanges.db
which=both

unattended-upgrades utilise apt-listchanges pour formater la sortie des mises à jour et envoyer un email à l’adresse demandée.

  • technique/adminsys/secu/automatic_updates.txt
  • de qduchemi