Comment configurer les mises à jour automatiques du noyau sans redémarrage dans un serveur Linux

Mettre à jour le noyau d’un serveur Linux semble simple. Il peut être effectué à l’aide d’outils courants tels que dpkg, apt-get ou kexec. Ces méthodes deviennent toutefois compliquées si une organisation gère des centaines ou des milliers de serveurs. De nombreux serveurs signifient plusieurs distributions à patcher, chacune d’entre elles nécessitant l’attention personnelle d’un administrateur système ou d’un ingénieur.

Ces méthodes de patch manuel sont également risquées car elles nécessitent des redémarrages. Les redémarrages impliquent un temps d’arrêt du serveur, ce qui est toujours problématique, c’est pourquoi ils sont généralement effectués dans des cycles de redémarrage. Comme les correctifs manuels sont effectués pendant ces cycles, ils offrent aux pirates une « fenêtre de temps » pendant laquelle ils peuvent attaquer l’infrastructure du serveur.

Pour les organisations qui gèrent plus de quelques serveurs, le live patching est une meilleure option. C’est un moyen automatisé de patcher un noyau Linux pendant que le serveur fonctionne, ce qui lui permet d’être à la fois plus efficace et plus sûr que les méthodes manuelles. Voyons comment configurer quatre des systèmes de live patching les plus populaires de Canonical, Oracle, Red Hat et CloudLinux.

Qu’est-ce que le live patching et comment ça marche

En fin de compte, il existe deux méthodes de live patching pour les noyaux et les bibliothèques : temporaire et persistante. La méthode temporaire applique un correctif sans redémarrage mais nécessite effectivement de redémarrer le serveur par la suite. Le live patching persistant ne nécessite aucun redémarrage.

La méthode temporaire

Le site méthode temporaire (ou patching « en pile ») est exécutée avec un logiciel de gestion de paquets (comme le plugin YUM). Les correctifs sont livrés aux référentiels et appliqués selon les flux de travail de mise à jour spécifiés par l’utilisateur.

« Stack » patching équivaut à des redémarrages du serveur et à des temps d’arrêt, même si tu n’as pas forcément besoin d’un redémarrage juste après avoir installé le patch, mais à cause de l’architecture de ce type de mises à jour en direct, les patchs de sécurité s’empilent les uns sur les autres au fil du temps, ce qui peut potentiellement diminuer les performances et la stabilité. La seule solution à ce problème est de redémarrer le serveur pour charger un noyau frais en mémoire.

Les vendeurs qui fournissent des correctifs temporaires sont :

La méthode persistante

Dans le cas d’une méthode persistanteun serveur stocke les derniers correctifs et ces correctifs sont dits « monolithiques » car ils contiennent les correctifs précédents. Pour mettre à jour les serveurs, un programme agent s’exécute en arrière-plan et vérifie la présence de correctifs sur le serveur de correctifs. S’il existe un correctif pour un noyau sur le serveur de correctifs, l’agent appelle le module de correctifs et il applique le correctif.

Le patching persistant présente d’autres avantages importants :

  • Les serveurs qui utilisent la méthode persistante restent opérationnels même en cas de vulnérabilités matérielles qui nécessitent habituellement un redémarrage pour appliquer le correctif, comme Spectre, Meltdown et Zombieload;
  • Elle réduit le temps et les efforts nécessaires pour administrer les serveurs grâce à l’automatisation complète du processus de patching ;
  • Elle permet aux serveurs de rester opérationnels, souvent pendant des années.

La méthode de patching persistant implique généralement des frais de fournisseur, avec des périodes d’essai gratuites disponibles chez la plupart des fournisseurs :

Configurer des mises à jour automatiques du noyau sans redémarrage dans un serveur Linux

Nous allons te montrer ci-dessous comment configurer des mises à jour du noyau sans redémarrage dans un serveur Linux en utilisant les services Livepatch, Kpatch, Ksplice et KernelCare.

Remarque : Avant de commencer à appliquer ces instructions, assure-toi que ton système est à jour et sauvegardé.

1. Configuration de Canonical Livepatch

Le service Canonical Livepatch peut être configuré pendant ou après l’installation. Il installera les correctifs de sécurité du noyau uniquement lorsque tu exécuteras la commande apt-get upgrade (donc, semi-automatique).

Pour : Simple. Semi-automatique. Pas de redémarrage nécessaire.

Inconvénients : Cher pour 4 hôtes ou plus (mais gratuit jusqu’à 3 hôtes pour tous et jusqu’à 50 machines si tu es membre de la Communauté Ubuntu). Pas de retour en arrière des correctifs.

Frais, par serveur : Mensuel (non disponible), Annuel (225 $).

Pour installer Livepatch sur le serveur Ubuntu 20.04 LTS (fonctionne aussi sur les versions 16.04 LTS, 14.04 LTS et 18.04 LTS), ouvre un terminal et exécute ces deux commandes :

sudo snap install canonical-livepatch
sudo canonical-livepatch enable <your key>

Pour désenregistrer un serveur, utilise cette commande :

sudo canonical-livepatch disable <your key>

Pour vérifier l’état du service, utilise cette commande :

sudo canonical-livepatch status --verbose

2. Configurer Oracle Ksplice

À moins que tu n’exécutes une instance de Ksplice dans le Cloud Oracle, tu auras besoin d’une clé d’accès pour l’installer. Tu peux l’obtenir en te connectant au Réseau Unbreakable Linuxet en suivant les instructions pour enregistrer ton système pour Ksplice.

Pour installer Ksplice, ton système doit avoir accès à Internet. Si tu utilises un proxy, configure le proxy dans ton shell :

# export http_proxy=http://proxy.example.com:port
# export https_proxy=http://proxy.example.com:port

Le proxy doit prendre en charge les connexions HTTPS et la chaîne du proxy doit avoir ce format :

[protocol://][username:[email protected]]<host>[:port]
  • protocole est le protocole pour se connecter au proxy (http ou https)
  • nom d’utilisateur et mot de passe sont les informations d’authentification nécessaires pour utiliser ton proxy (le cas échéant).
  • hôte et port sont le nom d’hôte/l’adresse IP et le numéro de port utilisés pour se connecter au proxy.

Exécute les instructions suivantes en tant que root, en remplaçant TA_CLÉ_D’ACCÈS par la clé d’accès que tu as reçue à l’étape précédente.

À l’intérieur d’Oracle Cloud

Pour installer Ksplice à l’intérieur d’Oracle Cloud afin que les mises à jour du noyau soient installées automatiquement, exécute ces commandes :

# wget -N https://ksplice.oracle.com/uptrack/install-uptrack-oc
# sh install-uptrack-oc --autoinstall

Pour appliquer les mises à jour disponibles à Uptrack, l’application qui installe automatiquement les mises à jour du noyau, exécute cette commande :

# uptrack-upgrade -y

Si tu as déjà installé Uptrack, tu peux l’activer en définissant les paramètres suivants autoinstall = yes dans /etc/uptrack/uptrack.conf après l’installation de Ksplice.

Pour installer Ksplice afin que les mises à jour soient appliquées manuellement, exécute ces commandes :

# wget -N https://ksplice.oracle.com/uptrack/install-uptrack-oc
# sh install-uptrack-oc

En dehors d’Oracle Cloud

Pour installer Ksplice en dehors d’Oracle Cloud afin que les mises à jour du noyau soient installées automatiquement, exécute ces commandes :

# wget -N https://ksplice.oracle.com/uptrack/install-uptrack
# sh install-uptrack YOUR_ACCESS_KEY --autoinstall

Pour installer Ksplice afin que les mises à jour soient appliquées manuellement, exécute ces commandes :

# wget -N https://ksplice.oracle.com/uptrack/install-uptrack
# sh install-uptrack YOUR_ACCESS_KEY

Remarque : Si tu installes Ksplice sur un serveur Debian ou Ubuntu, tu devras peut-être d’abord installer le fichier ca-certificats avec apt-get install ca-certificates. Sans ce paquet, tu verras apparaître une « erreur de vérification de certificat ».

4. Configuration de Red Hat Kpatch

L’installation de Kpatch est simple et directe :

Exécute le programme update pour mettre à jour les dépôts de paquets et obtenir les dernières informations sur les paquets :

sudo apt-get update -y

Exécute la commande install avec le drapeau -y pour installer rapidement les paquets et les dépendances :

sudo apt-get install -y patch

5. Configurer CloudLinux KernelCare

Pour voir si le noyau en cours d’exécution est pris en charge par KernelCare, exécute l’une de ces commandes :

curl -s -L https://kernelcare.com/checker | python

ou

wget -qq -O – https://kernelcare.com/checker | python

Pour installer KernelCare, exécute l’une de ces commandes :

curl -s -L https://kernelcare.com/installer | bash

ou :

wget -qq -O - https://kernelcare.com/installer | bash

Si tu utilises une licence basée sur l’IP, rien d’autre n’est nécessaire. Si tu utilises une licence basée sur une clé, exécute cette commande :

$ /usr/bin/kcarectl --register KEY

KEY est la chaîne de code de clé d’enregistrement que tu as reçue lorsque tu as acheté KernelCare ou que tu t’es inscrit pour un essai gratuit. Tu peux obtenir une clé ici.

Pour désenregistrer un serveur, exécute :

sudo kcarectl --unregister

Pour vérifier l’état du service, exécute :

sudo kcarectl --info

KernelCare vérifie automatiquement les nouveaux correctifs toutes les 4 heures. Pour effectuer les mises à jour manuellement plutôt qu’automatiquement, exécute :

/usr/bin/kcarectl –update

Conclusion

Ces instructions d’installation pour plusieurs solutions de live patching énumèrent toutes les étapes nécessaires pour en installer une dans ton environnement. Une fois que c’est fait, tu pourras profiter des avantages de la technologie du live patching : pouvoir mettre à jour le noyau sans arrêter le serveur, sans qu’aucun redémarrage ultérieur ne soit nécessaire pendant des mois, voire des années.

Vous aimerez aussi...