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_fifotelnet localhost:12345(в этом случае клиент SSH будет прослушивать только localhost).

Для достижения лучшей безопасности используйте ключи SSH для подключения к мониторам. На удаленном хосте виртуализации создайте пользователя, который будет иметь rwправа на /my_path/my_fifoобъект. Создайте пару ключей и поместите открытый ключ в файл этого пользователя ~/.ssh/authorized_keysограниченным способом, чтобы разрешить только пересылку:

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

Для подключения используйте команду, которая не выделяет оболочку и не запускает команду, полезно только для переадресации:

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

и, наконец, используйте telnet localhost 12345для доступа к сокету монитора, перенаправленному через SSH.

Связанный контент