Les deux révisions précédentes Révision précédente | |
technique:adminsys:secu:automatic_updates [2021/01/31 14:55] – qduchemi | technique:adminsys:secu:automatic_updates [2021/11/22 21:53] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. qduchemi |
---|
| {{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. |