Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu’il s’agit d’une erreur. {{indexmenu_n>20}} ## Automatiser les mises à jour de sécurité ### Préambule Les failles de sécurité sont un risque majeur pour l'infrastructure. Un exemple emblématique est la récente [vulnérabilité de sudo](https://www.qualys.com/2021/01/26/cve-2021-3156/baron-samedit-heap-based-overflow-sudo.txt), présente depuis plus de 10 ans, qui permet à n'importe quel utilisateur non-privilégié d'obtenir des droits d'administration. <bootnote critical>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.</bootnote> 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. <bootnote question>Les mises à jour automatique, ça craint, non ? Si ça casse des trucs et qu'on est pas là pour le voir ?</bootnote> 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. <bootnote learn>Debian propose un paquet qui gère la configuration de ces mises à jour automatique : `unattended-upgrades`.</bootnote> ### Installer et configurer unattended-upgrades #### Installation <bootnote>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 ``` </bootnote> ``` sudo apt update && sudo apt install unattended-upgrades apt-listchanges ``` <bootnote learn>Ce genre d'opération peut s'effectuer sur l'ensemble des machines, d'un seul coup, [[technique:tips:broadcast|en utilisant cette astuce]].</bootnote> `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"; ``` <bootnote learn>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`.</bootnote> ### Envoyer un mail lors des mises à jour <bootnote>On suppose que les machines ont la [[technique:adminsys:tips:mail|capacité d'envoyer des mails via le serveur mail de Picasoft]].</bootnote> É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.txtde qduchemi