Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
technique:adminsys:secu:automatic_updates [2021/01/30 23:39] qduchemitechnique:adminsys:secu:automatic_updates [2021/11/22 21:53] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. qduchemi
Ligne 1: Ligne 1:
 +{{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.txt
  • de qduchemi