QEMU/KVM:如何保护监视器访问?

QEMU/KVM:如何保护监视器访问?

运行带监视器的 QEMU/KVM:kvm ...some_parameters... -monitor unix:/my_path/my_fifo,server,nowait

然后我们可以使用socat - UNIX-CONNECT:/my_path/my_fifo输入命令进行连接。
简单又方便。

我想将监视器接口暴露给本地网络(根据安全方法,可能使用 socat),这相当安全。我该如何保护对监视器的访问?

我没有看到任何可用的密码选项、证书等。所以我怀疑我必须依赖 QEMU/KVM 外部的方法。

答案1

您可以使用 SSH 安全地访问此类套接字,并利用 SSH 提供的安全选项。您socat根本不需要,因为 SSH 允许通过以下选项转发套接字到套接字或 TCP 到套接字-L

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

例如,如果您的qemu进程使用-monitor unix:/my_path/my_fifo,server,nowait选项运行,则使用ssh virtualization-host -L /tmp/monitor:/my_path/my_fifo连接,然后连接到本地套接字/tmp/monitor,或者使用ssh virtualization-host -L 12345:/my_path/my_fifo和 telnet localhost:12345(在这种情况下,SSH 客户端将仅在本地主机上侦听)。

为了实现更好的安全性,请使用 SSH 密钥连接到监视器。在远程虚拟化主机上,创建一个rw对该/my_path/my_fifo对象具有权限的用户。创建密钥对并以受限方式将公钥放入该用户的~/.ssh/authorized_keys文件中,以仅允许转发:

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

要连接,请使用不分配 shell 且不运行命令的命令,仅对转发有用:

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

最后,使用telnet localhost 12345来访问通过 SSH 转发的监视套接字。

相关内容