QEMU/KVM et les VirtioVsock

Posté par  (site web personnel) . Édité par ZeroHeure, Davy Defaud, palm123, claudex, Nÿco, Pierre Jarillon et NeoX. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
22
27
nov.
2017
Virtualisation

La configuration d’une machine virtuelle que l’on nomme « invitée » nécessite classiquement une adresse IP dans l’invitée pour se connecter par SSH. Cette IP est configurée en dur ou gérée via DHCP pour plus de souplesse ; cette méthode a l’inconvénient de nécessiter une des interfaces virtuelles de la machine invitée et son pendant côté hyperviseur ou machine hôte.

QEMU

Avec les vsock créées sur qemu-kvm par Stefan Hajnoczi, les invités sont accessibles par un socket stream, donc du même type que TCP, sans passer par une interface IP.

Pour avoir un shell distant comme avec SSH, la sécurité en moins, il existe un petit programme client‐serveur qui se trouve sur GitHub :

git clone https://github.com/clownix/cloonix_vsock

Très simple d’utilisation, il peut aider à avoir un shell sans configuration vers des invités utilisant la virtualisation qemu-kvm.

Ce programme peut être testé avec des sockets INET ou UNIX, voici les trois types de sockets stream gérés :

  1. s = socket(AF_INET, SOCK_STREAM, 0); ;
  2. s = socket(PF_UNIX, SOCK_STREAM, 0); ;
  3. s = socket(AF_VSOCK, SOCK_STREAM, 0);.

On peut observer à nouveau la puissance d’UNIX qui permet d’ouvrir des descripteurs de fichiers vers des protocoles très différents, tout en les traitant exactement de la même façon après l’ouverture.

Aller plus loin

  • # Que veut dire exactement "la sécurité en moins" ?

    Posté par  . Évalué à 2.

    Ça ne me rassure pas de lire "Pour avoir un shell distant […], la sécurité en moins" dans le contexte d'un hyperviseur. Des détails?

    • [^] # Re: Que veut dire exactement "la sécurité en moins" ?

      Posté par  . Évalué à 5.

      Ben, c'est juste un pipe, le trafic n'est pas chiffré.

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Que veut dire exactement "la sécurité en moins" ?

      Posté par  . Évalué à 5.

      Rassurez vous, ce n'est pas précisé dans l'article (dommage) mais, à mon avis (humble) le contexte n'est pas la production mais le développement logiciel et plus particulièrement les phases d'intégration et de mise au point système …

      • [^] # Re: Que veut dire exactement "la sécurité en moins" ?

        Posté par  . Évalué à 5.

        Je pense qu'il faut comprendre qu'il s'agit d'une socket entre l'hôte et son invité : il n'est nullement question de réseau physique en réalité.
        Dans ce cas, la sécurité (chiffrement, authent…) offerte par un protocole comme SSH est donc parfaitement superflue, même pour un système en production.

        • [^] # Re: Que veut dire exactement "la sécurité en moins" ?

          Posté par  (site web personnel) . Évalué à 10.

          En effet, les réponses sont toutes bonnes, c'est pour bosser facilement en développement. La sécurité peut parfois être un frein à l'avancement.
          C'est bien agréable de savoir qu'on peut faire toutes les manips iptables que l'on veut sans perdre la connexion hyperviseur/invité lors de la mise au point.
          Et si on a des tests sur une machine qui justement est très sécurisé au niveau ip, et que l'on veut virtualiser cette machine pour simuler des attaques ip, une entrée pour l'administration des tests par une des interfaces est une grave modification du système sous test.
          On peut aussi mettre des droits d'exécution à root uniquement sur le binaire vsock_cli pour gérer la sécurité. Il faut avoir à l'esprit que l'on est déjà dans la machine hôte avant d'utiliser vsock. On peut ne lancer le serveur vsock_srv qu'avec droits utilisateur réduits …
          Bref, on peut quand même maitriser ce que l'on ouvre.

          • [^] # Re: Que veut dire exactement "la sécurité en moins" ?

            Posté par  . Évalué à 2.

            Merci pour cette précision. Vu ces explications, j'en déduis que la fonctionnalité en question s'applique principalement à des services de virtualisation sur internet, exact? (Ou plus exactement: moins à la virtualisation sur un ordinateur personnel faisant tourner virt-manager, par exemple, que la virtualisation chez un hébergeur dédié, là où on n'a pas nécessairement d'interface visuelle pour ouvrir directement une session sur la machine virtuelle à contrôler.)

            Ceci dit, plutôt que de dire "avec la sécurité en moins", je pense que "avec une sécurité réduite" serait plus approprié, puisque les canaux (pipes) ont aussi une certaine sécurité et en raison de ce qui a été expliqué. Ce n'est donc pas blanc/noir.

            • [^] # Re: Que veut dire exactement "la sécurité en moins" ?

              Posté par  (site web personnel) . Évalué à 3.

              Plus précisément: la sécurité est à gérer, en effet si on lance le serveur vsock_srv en root on arrive en root dans la machine ou ce serveur tourne même si on est logé user dans le shell ayant appelé vsock_cli.
              Ssh gère les comptes à la saisie: user@ip, ce qui ajoute une protection en plus du chiffrage des données échangées. vsock_src/vsock_cli ne gère pas les comptes.
              Sinon, le soft s'appuie sur une fonctionnalité linux/qemu-kvm, je ne pense pas que virtual-box puisse l'utiliser.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.