Virsh管理kvm虚拟机认证和加密

柔情只为你懂 2022-06-04 04:57 730阅读 0赞

前提:使用virsh管理kvm虚拟机的时候出现需要使用密码的情况

  1. [root@a-kvm-t-1 ~]# virsh list --all
  2. Please enter your authentication name: root
  3. Please enter your password:
  4. error: Failed to reconnect to the hypervisor
  5. error: no valid connection
  6. error: authentication failed: authentication failed

原因分析使用了sasl认证

  1. # 解决
  2. [root@a-kvm-t-1 ~]# saslpasswd2 -a libvirt admin
  3. Password: # 输入密码
  4. Again (for verification): # 确认密码
  5. [root@a-kvm-t-1 ~]# virsh list --all
  6. Please enter your authentication name: admin
  7. Please enter your password: #密码
  8. Id Name State
  9. ----------------------------------------------------
  10. 1 kvm-1 running
  11. 2 kvm-2 running
  12. - kvm-3 shut off
  13. # 可以看出创建密码后可以通过virsh正常管理kvm虚拟机

下面详细介绍摘自:IBM

使用 SASL 认证和加密进行远程管理

Simple Authentication and Security Layer (SASL) 提供了安全认证和数据加密,但是允许与传统或外部认证和授权服务集成。

在其最简单的形式下,SASL 可用来定义用于进行授权的凭证的数据库。在较复杂的场景中,它可与外部认证服务(例如 Kerberos 或轻量级目录访问协议 (LDAP))一起工作以对用户进行认证。在这两种场景中,如果远程管理请求并非在受保护的传输层安全性 (TLS) 连接上面运行,那么 libvirtd 守护程序通过需要“类属安全性服务”应用程序编程接口 (GSSAPI) 作为 SASL 方法来提供机密性。libvirtd 守护程序可将 DIGEST-MD5 而不是 GSSAPI 用作 SASL 方法。但是,MD5 散列被视为不安全,不应该使用。SASL 的这些变体支持对推送的数据进行加密。为简便起见,此示例将 DIGEST-MD5 用作 SASL 方法。
要在最简单的场景(没有外部认证或 TLS 安全性)中使用 SASL 配置远程管理,请完成下列步骤:

  1. 登录到 KVM 主机。
  2. 保存 /etc/libvirt/libvirtd.conf 文件和 /etc/sysconfig/libvirtd 文件的副本。
  3. 编辑 /etc/libvirt/libvirtd.conf 文件,并进行下列更改:

    • 通过将 listen_tls 配置伪指令设置为 0 来禁用该伪指令(因为没有配置任何 TLS 证书)。否则,libvirtd 守护程序启动会失败。
    • 确保通过将配置伪指令 listen_tcp 设置为 1 来启用该伪指令。
    • 将 auth_tcp 配置伪指令设置为 sasl,以启用通过 TCP 进行 SASL 认证。

以下示例显示了这些参数(与股票 libvirtd.conf 文件对比),突出显示了要删除 (-) 和增加 (+) 的更改:

  1. --- libvirtd.conf.orig 2012-01-04 11:28:32.000000000 -0600
  2. +++ libvirtd.conf 2012-01-04 11:34:02.000000000 -0600
  3. @@ -19,7 +19,7 @@
  4. # using this capability.
  5. #
  6. # This is enabled by default, uncomment this to disable it
  7. -#listen_tls = 0
  8. +listen_tls = 0
  9. # Listen for unencrypted TCP connections on the public TCP/IP port.
  10. # NB, must pass the --listen flag to the libvirtd daemon process for this to
  11. @@ -30,7 +30,7 @@
  12. # DIGEST_MD5 and GSSAPI (Kerberos5)
  13. #
  14. # This is disabled by default, uncomment this to enable it.
  15. -#listen_tcp = 1
  16. +listen_tcp = 1
  17. @@ -143,7 +143,7 @@
  18. # Don't do this outside of a dev/test scenario. For real world
  19. # use, always enable SASL and use the GSSAPI or DIGEST-MD5
  20. # mechanism in /etc/sasl2/libvirt.conf
  21. -#auth_tcp = "sasl"
  22. +auth_tcp = "sasl"
  23. # Change the authentication scheme for TLS sockets.
  24. #
  • 编辑 /etc/sysconfig/libvirtd 文件并启用 –listen 参数,以便 libvirtd 守护程序侦听 TCP/IP 连接:

    —- libvirtd.orig 2012-01-04 11:41:37.000000000 -0600
    +++ libvirtd 2012-01-04 11:31:33.000000000 -0600
    @@ -3,7 +3,7 @@

    Listen for TCP/IP connections

    NB. must setup TLS/SSL keys prior to using this

    -#LIBVIRTD_ARGS=”—listen”
    +LIBVIRTD_ARGS=”—listen”

    Override Kerberos service keytab for SASL/GSSAPI

    KRB5_KTNAME=/etc/libvirt/krb5.tab

  • 重新启动 libvirtd 守护程序,以使更改生效:

    /etc/init.d/libvirtd restart

    Stopping libvirtd daemon: [ OK ]
    Starting libvirtd daemon: [ OK ]

  • 既然 libvirtd 守护程序接受 TCP 连接,请将一些用户添加至 SASL 数据库。以下示例使用 saslpasswd2 命令将 admin 用户添加至 libvirt 凭证数据库。

    saslpasswd2 -a libvirt admin

    Password:
    Again (for verification):

注:
libvirt 是 libvirtd 守护程序认证域的 SASL 数据库的预期名称。请勿将任何其他名称用于此数据库。
请使这些凭证保持安全状态,因为此数据库中的每个用户都有权登录并运行远程虚拟机管理。

  • 如果 KVM 主机正在运行防火墙,请确保该防火墙允许传入的流量通过 libvirtd 守护程序 TCP 侦听端口。在缺省情况下,该侦听端口为 16509。
  • 通过使用 SASL 认证(以指示启用了 libvirt 的应用程序与 TCP 传输进行连接)来验证设置是否已成功。以下示例从远程管理站运行 virsh 命令,并以新创建的用户 admin 的身份登录,来在 kvmhost.company.org 系统中启动 guest02 实例:

    virsh -c qemu+tcp://kvmhost.company.org/system start guest02

    Please enter your authentication name:admin
    Please enter your password:
    Domain guest02 started

发表评论

表情:
评论列表 (有 0 条评论,730人围观)

还没有评论,来说两句吧...

相关阅读

    相关 KVM virsh命令

    @查看虚拟机 virsh list  查看运行的虚拟机 virsh list --all  查看所有定义了的虚拟机,包括没有运行的 说明:在所有需要名称作为参数的v

    相关 virsh 管理KVM

    `virsh` 是用来管理客户端及其管理程序的命令行界面工具。 `virsh` 工具是构建在 `libvirt` 管理 API 上,可作为 xm 命令和图形客户端管理程序(

    相关 Virsh 虚拟迁移

    -------------------- 简介 虚拟机迁移主要分为两种:静态迁移和动态迁移 静态迁移是指在虚拟机关闭或暂停的情况下,将源宿主机上虚拟机的磁盘文件