Lorsqu'il s'agit d'appliquer des correctifs, la rigueur est un aspect critique - il suffit d'un seul service non corrigé pour ouvrir les portes à une intrusion préjudiciable. Il en résulte une longue liste d'appareils, de services et d'applications qui doivent être régulièrement corrigés, y compris les services fonctionnant en arrière-plan, tels que QEMU.
QEMU (Quick EMUlator) est, bien sûr, l'outil de virtualisation populaire qui rend plus efficace l'exécution de charges de travail importantes et complexes dans l'environnement de l'entreprise. Même si QEMU travaille tranquillement en arrière-plan, il s'agit toujours d'un service essentiel qui doit être corrigé régulièrement.
Cependant, l'application de correctifs à QEMU peut être perturbante, c'est pourquoi QEMU peut parfois se retrouver en queue de peloton en termes de correctifs. Dans cet article, nous expliquons pourquoi il est si important de patcher QEMU et nous indiquons les étapes à suivre pour s'assurer que QEMU est patché en toute sécurité. Nous présentons également une méthode non perturbatrice pour appliquer les correctifs à QEMU, à savoir les correctifs en direct.
Contenu :
1 - Pourquoi le patching de QEMU est-il important - et pourquoi est-il si délicat ?
2 - Votre guide pour patcher QEMU
3 - La méthode rapide et sale - mais négligente
4 - Une approche d'administrateur système
5 - Meilleures pratiques, approche d'entreprise
6 - Le live patching est une alternative
7 - Conclusion
Pourquoi les correctifs de QEMU sont-ils importants et pourquoi sont-ils si délicats ?
Pratiquement toutes les applications et tous les services d'une machine sont une cible pour les pirates informatiques - vous avez la garantie que s'ils sont actifs, ils seront pris pour cible. Peu importe qu'elle fonctionne en arrière-plan et qu'elle effectue un travail invisible.
QEMU doit être patché comme n'importe quel autre service, même si ce n'est pas l'élément le plus visible de votre charge de travail. Cherchez et vous trouverez des vulnérabilités pour QEMU, comme pour tout autre service et application que vous utilisez.
Par exemple, en 2019, une vulnérabilité a été signalée affectant les instances virtuelles de QEMU-KVM utilisant le backend réseau vhost/vhost_net. En forçant la machine virtuelle à migrer, le journal des pages sales peut être amené à déborder car le noyau ne vérifie pas les limites du journal.
Une autre vulnérabilité de QEMU est apparue en 2015Il s'agit cette fois d'une vulnérabilité dans le contrôle de la disquette virtuelle pour QEMU. Appelée Venom, elle affectait les systèmes même lorsque QEMU n'avait pas été configuré avec un lecteur de disquette, simplement parce que le code est toujours actif au sein de QEMU.
Les vulnérabilités qui affectent QEMU vont continuer à s'accumuler. Ces vulnérabilités sont particulièrement pernicieuses, étant donné que toute vulnérabilité affectant vos services QEMU affectera également les machines virtuelles fonctionnant sous QEMU - y compris les machines virtuelles de vos clients, par exemple.
C'est pourquoi vous devez vous assurer de patcher QEMU aussi régulièrement que n'importe quel autre outil de votre arsenal technologique. Cependant, le patching de QEMU peut parfois être négligé car le patching de l'environnement virtuel affecte également les machines qui tournent dessus.
En d'autres termes, selon la voie que vous choisissez pour patcher QEMU, vous pouvez constater que votre patching entraîne des temps d'arrêt importants, ce que vos clients ou d'autres parties prenantes peuvent ne pas apprécier.
Votre guide pour patcher QEMU
Il y a plusieurs façons d'appliquer des correctifs à QEMU, nous allons vous présenter les différentes options dans cette section. L'approche que vous adoptez déterminera le niveau de risque que vous créez avec vos efforts - et le niveau de perturbation que vos efforts de correction entraînent.
Il convient de noter que les approches énumérées ci-dessous - à l'exception du live patching - sont applicables à la plupart des solutions de virtualisation, y compris VMware, Xen, Hyper-V, et ainsi de suite, même si les étapes peuvent être légèrement différentes.
La méthode rapide et sale - mais négligente
Si vous êtes pressé, vous pouvez opter pour l'application d'un correctif sans trop planifier. Voici les étapes à suivre :
- Vous vous connectez à votre hôte et mettez à jour QEMU et ses dépendances en utilisant le gestionnaire de paquets de votre choix.
- Le gestionnaire de paquets applique les correctifs et peut ou non redémarrer immédiatement les services concernés, ce qui peut également arrêter et redémarrer les machines virtuelles en cours d'exécution.
- Vous redémarrez QEMU pour récupérer les mises à jour, ce qui a pour effet d'arrêter toutes les machines virtuelles.
- Les locataires de vos machines virtuelles et les parties prenantes ne sont pas satisfaits que leur travail ait été affecté, interrompu ou détruit.
- Vous redémarrez les machines virtuelles en espérant qu'elles redémarrent automatiquement leurs charges de travail.
Bien que vous puissiez adopter cette approche si vous utilisez un système unique, un laboratoire domestique mono-utilisateur, vous êtes assuré d'avoir de sérieux problèmes avec votre employeur - ou avec vos clients - si vous essayez de patcher des charges de travail vivantes d'une manière aussi désordonnée. Pour faire simple : essayez de patcher QEMU de cette manière et vous passerez le reste de votre semaine à essayer de vous expliquer et de réparer vos applications et celles de vos collègues.
Une approche d'administrateur système
Si vous êtes un administrateur système professionnel, vous en savez plus, bien sûr. Dans cette section, nous parlerons d'une manière plus raisonnable d'essayer de patcher QEMU.
- Vous commencez par planifier une fenêtre de maintenance, en estimant le temps nécessaire, la liste des machines virtuelles affectées et l'impact sur les autres systèmes qui interagissent avec les machines virtuelles.
- Vous informez vos parties prenantes du temps d'arrêt et obtenez l'autorisation de procéder à l'opération dans un mois environ. La durée de cette annonce dépendra de la criticité de la vulnérabilité - plus la vulnérabilité semble dangereuse, plus vous devrez appliquer des correctifs rapidement.
- Attendez un mois pour commencer la maintenance et espérez que vous n'avez pas été piraté entre-temps.
- Vous arrêtez gracieusement toutes les machines virtuelles et utilisez le gestionnaire de paquets de votre distribution pour appliquer toutes les mises à jour de QEMU.
- Vous redémarrez QEMU et toutes les machines virtuelles.
- Comme tout se passe comme prévu, vous mettez fin à l'opération de maintenance et informez les parties prenantes que tout est rentré dans l'ordre.
- Vous passez les deux jours suivants à dépanner, par exemple en recherchant la machine virtuelle bloquée dans le processus de démarrage et en la réparant.
Vous ne contrarierez pas autant de personnes en suivant l'approche ci-dessus et vous ne perdrez pas autant de temps à essayer de réparer des applications et des services défectueux. Bien qu'elle fonctionne dans un environnement d'entreprise, cette approche n'est pas vraiment adaptée à l'entreprise et n'est pas acceptable dans certaines conditions. En particulier, avec cette approche, vous risquez toujours de découvrir toutes sortes de problèmes inattendus en cours de route.
Approche fondée sur les meilleures pratiques, à l'échelle de l'entreprise
Dans la technologie comme dans la vie, il y a toujours des compromis, et c'est également le cas pour notre méthode de meilleure pratique. Bien que la méthode suivante soit la plus sûre et la moins perturbante pour corriger QEMU, c'est aussi la plus complexe et elle nécessitera pas mal de ressources de la part de votre équipe technologique.
Néanmoins, si vous souhaitez une méthode raisonnablement non perturbatrice pour corriger vos charges de travail qui dépendent de QEMU, nous vous suggérons de suivre ces étapes :
- Commencez par vous assurer que vos charges de travail dépendent de plusieurs hôtes QEMU, en répartissant la charge de travail entre vos machines virtuelles et en servant de redondance en cas de défaillance de l'un des nœuds.
- Vous mettez en place des mécanismes de haute disponibilité entre les machines virtuelles situées sur différents nœuds, afin de protéger l'hôte et les charges de travail virtuelles contre les défaillances.
- Vous planifiez l'opération de maintenance en tenant compte de détails clés - par exemple, le fait que différentes machines virtuelles à haute disponibilité faisant partie du même service ne peuvent pas se trouver dans le même hôte de virtualisation lorsque le processus d'application des correctifs est lancé. Ce processus est appelé "Orchestration".
- Informez vos parties prenantes qu'il y aura une opération de maintenance et qu'elles doivent s'attendre à une réduction des performances, mais qu'il n'y aura pas d'indisponibilité du service.
- Vous demandez l'autorisation de procéder à l'opération et, comme aucun service ne devrait être indisponible, vous recevez cette autorisation immédiatement.
- Vous démarrez l'opération de maintenance sur le premier nœud QEMU - qui consiste en un certain nombre d'étapes :
A. Vous migrez en direct les machines virtuelles vers d'autres nœuds, en veillant à ce que les nœuds de machines virtuelles du même service de haute disponibilité restent séparés, car vous perdriez la haute disponibilité de ce service dans le cas contraire.
Voici un exemple de commande de migration :
virsh migrate web1 qemu+ssh://desthost/system
Il existe de nombreuses façons d'y parvenir, il ne s'agit ici que d'un exemple de commande de migration.
B. Vous attendez un certain temps pour que les données nécessaires soient transférées sur le réseau. Il est conseillé d'avoir à disposition ou d'utiliser une connexion réseau secondaire pour la migration, ce qui peut être contrôlé par cette commande :
virsh migrate web1 qemu://desthost/system tcp://10.0.0.1/
Cette phase de migration peut être assez longue en raison du nombre élevé de machines virtuelles et/ou de la mémoire vive/des ressources affectées à chaque machine virtuelle migrée qui doit être envoyée sur le réseau.
- Une fois que toutes les machines virtuelles ont migré, vous arrêtez QEMU.
- En utilisant votre gestionnaire de paquets, vous mettez à jour QEMU et ses dépendances.
- Vous démarrez QEMU.
- Vous migrez en direct les machines virtuelles vers l'arrière.
- Répétez les étapes 6 à 10 sur chacun des nœuds de virtualisation.
- Vous mettez fin à l'opération de maintenance en informant les parties prenantes que les opérations sont revenues à la normale.
Vous avez migré vos machines virtuelles en direct et vous espérez qu'il n'y aura pas de perturbation - il ne devrait pas y en avoir. Il y a cependant une chose à laquelle il faut faire attention : certaines charges de travail peuvent être très sensibles à une perte de paquets, même mineure, pendant l'opération de migration, et dans certains cas très particuliers, cette perte de paquets peut causer des problèmes. Assurez-vous que vos partenaires sont conscients de ce risque et qu'ils confirment que tout va bien sur chaque machine virtuelle.
Le live patching est une alternative
Si notre troisième suggestion est un moyen sûr de migrer les charges de travail, elle est indubitablement gourmande en ressources et requiert un niveau élevé de compétences techniques pour garantir une haute disponibilité et, par conséquent, l'absence de temps d'arrêt.
Il existe une alternative sous la forme de QEMUCare, l'agent de correction en direct de TuxCare. Au lieu d'effectuer des correctifs qui arrêtent une instance QEMU, la solution de correctifs de TuxCare applique des corrections de code pendant que QEMU fonctionne en direct.
Il est facile de commencer à appliquer des correctifs en direct pour QEMU à partir de TuxCare. Il s'agit d'une opération unique, il suffit d'installer l'agent Live Patch de TuxCare et d'ajouter la licence appropriée. Vous pouvez accélérer l'installation sur de nombreux serveurs en déployant l'agent TuxCare à l'aide d'Ansible ou d'un autre outil d'automatisation.
Une fois installé, l'outil de correction en direct de TuxCare corrigera continuellement vos instances QEMU, sans perturber les machines virtuelles que vous exécutez sur QEMU.
Conclusion
Nous avons examiné de près les différentes options qui s'offrent à vous lorsque vous appliquez des correctifs à vos instances QEMU. La première option n'est pas vraiment disponible, à moins que vous ne patchiez un système de test ou expérimental. En fonction de vos ressources et de la complexité de vos charges de travail, vous pouvez choisir la deuxième ou la troisième option - et la plupart des charges de travail d'entreprise sérieuses opteront probablement pour la troisième.
Notre dernière option, le live patching de TuxCare, élimine tellement d'étapes problématiques et simplifie l'ensemble du processus à un tel point qu'il n'est même pas comparable aux autres méthodes de patching de QEMU. Inutile de dire que le live patching de QEMU vaut la peine d'être envisagé.
Quelle que soit l'option de correctif que vous choisissez, il n'en reste pas moins que le correctif est un élément essentiel des SecOps et que vous devez effectuer un correctif complet - en touchant chaque service dans le processus, y compris QEMU.