Security

QEMU/KVM:如何保護監視器訪問?

  • April 15, 2022

使用監視器執行 QEMU/KVM:kvm ...some_parameters... -monitor unix:/my_path/my_fifo,server,nowait

然後我們可以使用socat - UNIX-CONNECT:/my_path/my_fifo然後鍵入命令進行連接。

簡單方便。

我想將監視器介面暴露給本地網路(根據安全方法,可能使用 socat),這是相當安全的。如何保護對顯示器的訪問?

我沒有看到任何可用的密碼選項、證書等。所以我懷疑我必須依賴 QEMU/KVM 外部的方法。

您可以利用 SSH 提供的安全選項,使用 SSH 安全地訪問此類套接字。您根本不需要socat,因為 SSH 允許通過選項轉發 socket-to-socket 或 tcp-to-socket -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 客戶端將僅在 localhost 上偵聽)。

為了獲得更好的安全性,請使用 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 轉發的監控套接字。

引用自:https://serverfault.com/questions/1098710