QEMU/KVM: Wie schützt man den Monitorzugriff?

QEMU/KVM: Wie schützt man den Monitorzugriff?

QEMU/KVM mit Monitor ausführen:kvm ...some_parameters... -monitor unix:/my_path/my_fifo,server,nowait

Wir können dann eine Verbindung herstellen, indem socat - UNIX-CONNECT:/my_path/my_fifowir die Befehle eingeben.
Einfach und praktisch.

Ich möchte die Monitorschnittstelle dem lokalen Netzwerk zugänglich machen (wahrscheinlich mit Socat, je nach Sicherungsmethode), was einigermaßen sicher ist. Wie kann ich den Zugriff auf den Monitor schützen?

Ich sehe keine verfügbare Kennwortoption, kein Zertifikat usw. Ich vermute also, dass ich mich auf eine Methode außerhalb von QEMU/KVM verlassen muss.

Antwort1

Sie können SSH verwenden, um sicher auf einen solchen Socket zuzugreifen, und dabei die von SSH bereitgestellten Sicherheitsoptionen nutzen. Sie brauchen das socatüberhaupt nicht, da SSH die Weiterleitung von Socket zu Socket oder von TCP zu Socket über -Ldie Option ermöglicht:

     -L [bind_address:]port:host:hostport
     -L [bind_address:]port:remote_socket
     -L local_socket:host:hostport
     -L local_socket:remote_socket

Wenn Ihr qemuProzess beispielsweise mit -monitor unix:/my_path/my_fifo,server,nowaitder Option ausgeführt wird, verwenden Sie ssh virtualization-host -L /tmp/monitor:/my_path/my_fifozum Herstellen einer Verbindung und dann zum lokalen Socket /tmp/monitor, oder verwenden Sie ssh virtualization-host -L 12345:/my_path/my_fifound Telnet zu localhost:12345(der SSH-Client hört in diesem Fall nur auf dem lokalen Host).

Um eine bessere Sicherheit zu erreichen, verwenden Sie SSH-Schlüssel, um eine Verbindung zu Monitoren herzustellen. Erstellen Sie auf dem Remote-Virtualisierungshost einen Benutzer, der rwRechte für das Objekt hat. Erstellen Sie ein Schlüsselpaar und legen Sie den öffentlichen Schlüssel so eingeschränkt /my_path/my_fifoin die Datei dieses Benutzers ein, dass nur die Weiterleitung zulässig ist:~/.ssh/authorized_keys

restrict,port-forwarding,command="/bin/false" ssh-... ..... (the public key string)

Verwenden Sie zum Verbinden einen Befehl, der keine Shell zuweist und keinen Befehl ausführt. Dies ist nur für Weiterleitungen nützlich:

ssh monitoruser@virtualization-host -i mointor_private_key -L 12345:/my_path/my_fifo -N

und verwenden Sie schließlich, telnet localhost 12345um auf den per SSH weitergeleiteten Monitor-Socket zuzugreifen.

verwandte Informationen