Product SiteDocumentation Site

4.2. Faire une mise à jour de sécurité

Dès que de nouveaux bogues de sécurité sont décelés dans les paquets, les responsables Debian et les auteurs amont les corrigent généralement dans les journées ou les heures suivantes. Une fois le bogue résolu, un nouveau paquet est fourni sur http://security.debian.org.
Si vous installez une version de Debian, vous devez prendre en compte le fait qu'il a pu y avoir des mises à jour de sécurité depuis la parution, à chaque fois qu'une vulnérabilité a été découverte dans un paquet. Ainsi, des révisions mineures (il y en a eu quatre dans la version Debian 3.0 Sarge) incluent ces mises à jour de paquets.
Pendant l'installation, les mises à jour de sécurité sont configurées sur le système, et les mises à jour en attente sont téléchargées et appliquées, sauf indication contraire ou si le système n'est pas connecté à Internet. Les mises à jour sont appliquées avant même le premier démarrage, de telle sorte que le nouveau système commence sa vie aussi à jour que possible.
Pour mettre à jour vous-même le système, ajoutez la ligne suivante dans le sources.list et vous recevrez les mises à jour de sécurité automatiquement quand vous mettrez à jour le système. Remplacez [NOM] par le nom de la version, par exemple squeeze.
deb http://security.debian.org/ [NOM]/updates main contrib non-free
Remarque : si vous utilisez la distribution testing, utilisez les source du miroir de sécurité de testing conformément à Section 10.1.4, « Suivi en sécurité de la branche testing ».
Après avoir fait cela, plusieurs outils vous permettent de mettre à niveau le système. S'il s'agit d'un ordinateur de bureau, une application appelée update-notifier[10] permet de vérifier facilement si de nouvelles mises à niveau sont disponibles. En choisissant cela, vous pouvez faire les mises à niveau depuis le bureau (en utilisant update-manager). Pour obtenir plus de renseignements, veuillez consulter Section 10.1.2.2, « Vérification de mises à jour sur station de travail ». Dans les environnements de bureau, vous pouvez aussi utiliser synaptic (GNOME), kpackage ou adept (KDE) pour des interfaces plus avancées. Si le système ne possède qu'un terminal texte, vous pouvez utiliser aptitude, apt ou dselect (obsolète) pour mettre à niveau.
  • Si vous voulez utiliser l'interface texte d'aptitude, il suffit d'appuyer sur u (mise à jour) suivi de g (pour mettre à niveau). Vous pouvez aussi utiliser simplement la ligne de commande (en tant que superutilisateur) :
    # aptitude update
    # aptitude upgrade
  • Si vous voulez utiliser apt, il suffit de faire comme pour aptitude, mais en remplaçant aptitude des lignes précédentes par apt-get.
  • Si vous voulez utiliser dselect, choisissez tout d'abord mise à jo[U]r, puis [I]nstaller et enfin [C]onfigurer pour mettre à jour et installer les paquets.
Si vous le voulez, vous pouvez ajouter également les lignes deb-src à /etc/apt/sources.list. Consultez apt(8) pour plus de détails.

4.2.1. Mise à jour de sécurité des bibliothèques

Une fois que vous avez exécuté une mise à jour de sécurité, il se peut que vous deviez redémarrer certains des services système. Si vous ne faites pas cela, certains services pourraient encore être vulnérables après une mise à jour de sécurité. La raison pour cela est que les démons qui fonctionnent avec une mise à jour peuvent encore utiliser les anciennes bibliothèques après la mise à jour[11]. Pour détecter quels démons peuvent devoir être redémarrés, vous pouvez utiliser le programme checkrestart (disponible dans le paquet debian-goodies) ou utiliser cette ligne de commande[12] (en tant que superutilisateur):
À partir de Debian Jessie, il est possible d'installer le paquet needrestart qui s'exécutera après chacune mise à niveau par APT et vous demandera de redémarrer les services qui ont été affectés par les mises à jour qui viennent d'être installées. Dans les versions antérieures, vous pouvez exécuter vous-même le programme checkrestart (disponible dans le paquet debian-goodies) après la mise à niveau par APT.
Some packages (like libc6) will do this check in the postinst phase for a limited set of services specially since an upgrade of essential libraries might break some applications (until restarted)[13].
Faire passer le système en niveau d'exécution1 (utilisateur seul), puis ensuite au niveau d'exécution3 (multiutilisateur) devrait entraîner le redémarrage de la plupart (si ce n'est tous) des services système. Mais cela n'est pas envisageable si vous exécutez la mise à jour de sécurité depuis une connexion distante (comme SSH) car celle-ci serait alors interrompue.
Apportez le plus grand soin lors des mises à jour de sécurité si vous les réalisez depuis une connexion à distance comme SSH. Une procédure suggérée pour une mise à jour de sécurité qui implique un redémarrage de services est de redémarrer le démon SSH, puis immédiatement de tenter une nouvelle connexion SSH sans interrompre la précédente. Si la connexion échoue, annulez la mise à jour et analysez le problème.

4.2.2. Mise à jour de sécurité du noyau

Assurez-vous tout d'abord que le noyau est géré par le système de gestion des paquets. Si vous l'avez installé en utilisant le système d'installation de Debian3.0 ou de versions précédentes, le noyau n'est pas intégré dans le système de gestion des paquets et pourrait être obsolète. Vous pouvez facilement confirmer cela en exécutant:
$ dpkg -S `readlink -f /vmlinuz`
linux-image-2.6.18-4-686: /boot/vmlinuz-2.6.18-4-686
Si le noyau n'est pas géré, vous verrez un message indiquant que le gestionnaire de paquets n'a pas trouvé le fichier associé à un paquet au lieu du message ci-dessus, qui dit que le fichier associé au noyau actuellement en fonctionnement est fourni par le paquet linux-image-2.6.18-4-686. Dans le premier cas, vous devrez installer manuellement un paquet d'image de noyau. L'image exacte du noyau que vous devez installer dépend de l'architecture et de la version de noyau préférée. Une fois fait, vous pourrez gérer les mises à jour de sécurité du noyau comme pour tout autre paquet. Dans tous les cas, notez que les mises à jour du noyau ne seront faites que pour la même version du noyau que celui que vous utilisez, c'est-à-dire que apt ne va pas mettre à jour automatiquement le noyau de la version2.4 à la version2.6 (ou de la version2.4.26 à la version2.4.27[14]).
Le système d'installation des dernières versions de Debian gérera le noyau sélectionné comme partie du système de gestion des paquets. Vous pouvez vérifier quels noyaux sont installés en exécutant:
$ COLUMNS=150 dpkg -l 'linux-image*' | awk '$1 ~ /ii/ { print $0 }'
Pour voir si le noyau doit être mis à jour, exécutez:
$ kernfile=`readlink -f /vmlinuz`
$ kernel=`dpkg -S $kernfile | awk -F : '{print $1}'`
$ apt-cache policy $kernel
linux-image-2.6.32-5-686:
  Installé : 2.6.32-35
  Candidat : 2.6.32-35
  Table de version :
 *** 2.6.32-35
        100 /var/lib/dpkg/status
Si vous effectuez une mise à jour de sécurité incluant l'image du noyau, vous devez redémarrer le système pour que la mise à jour de sécurité soit utile. Sinon, vous utiliserez encore l'ancienne image de noyau (vulnérable).
Si vous devez effectuer un redémarrage du système (à cause d'une mise à jour du noyau), vous devriez vous assurer que le noyau démarrera correctement et que la connectivité réseau sera restaurée, particulièrement si la mise à jour de sécurité est réalisée depuis une connexion à distance comme SSH. Pour le premier point, vous pouvez configurer le chargeur d'amorçage pour redémarrer l'ancien noyau en cas d'échec (pour des informations plus détaillées, veuillez consulter (en anglais) http://www.debian-administration.org/?article=70). Pour le second point, vous devez introduire un script de test de connectivité réseau qui vérifiera si le noyau a lancé le sous-système réseau correctement et qui redémarrera le système si ce n'est pas le cas[15]. Cela devrait éviter des surprises désagréables comme une mise à jour du noyau en réalisant après un redémarrage qu'il n'a pas détecté ou configuré le matériel réseau correctement et que vous devez parcourir une longue distance pour relancer à nouveau le système. Bien sûr, avoir la console série[16] du système connectée à une console ou un serveur de terminal devrait également aider à déboguer à distance les problèmes de redémarrage.


[10] Depuis Etch.
[11] Bien que les bibliothèques aient été supprimées du système de fichiers, aucun inœud ne sera nettoyé tant qu'un programme a encore un descripteur de fichier pointant dessus.
[12] En fonction de la version de lsof, vous pourriez avoir besoin de remplacer $9 par $8.
[13] This happened, for example, in the upgrade from libc6 2.2.x to 2.3.x due to NSS authentication issues, see http://lists.debian.org/debian-glibc/2003/03/msg00276.html.
[14] Sauf si vous avez installé un métapaquet de noyau comme linux-image-2.6-686 qui va toujours tirer la dernière révision mineure de noyau pour une version de noyau et une architecture donnée.
[15] Un exemple d'un tel script appelé http://www.debian-administration.org/articles/70/testnet est disponible dans l'article http://www.debian-administration.org/?article=70. Un script de test de connectivité réseau plus élaboré est disponible dans l'article http://www.debian-administration.org/?article=128.
[16] Configurer une console série est en dehors du cadre de ce document, pour plus d'informations, veuillez consulter le http://www.tldp.org/HOWTO/Serial-HOWTO.html et le http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/index.html.