文章目录
- 50 最佳实践-安全最佳实践-Libvirt鉴权
- 50.1 简介
- 50.2 开启libvirt鉴权
- 50.3 管理SASL
50 最佳实践-安全最佳实践-Libvirt鉴权
50.1 简介
用户使用libvirt远程调用功能时,如果不进行任何鉴权校验,所有连接到主机所在网络的第三方程序都可以通过libvirt的远程调用操作虚拟机,存在安全隐患。为了提升系统安全性,openEuler提供了libvirt鉴权功能,即用户通过libvirt远程调用操作虚拟机前,必须经过身份校验,只有特定用户允许访问虚拟机,从而保护组网中的虚拟机。
50.2 开启libvirt鉴权
openEuler默认关闭libvirt远程调用功能,这里给出开启libvirt远程调用和libvirt鉴权功能的方法。
-
使用root用户登录主机。
-
修改libvirt服务配置文件/etc/libvirt/libvirtd.conf,开启libvirt远程调用和libvirt鉴权功能。例如使用基于SASL(Simple Authentication and Security Layer)协议的TCP远程调用配置参考如下:
# 传输层安全协议,0表示关闭,1表示开启,由用户自行配置 listen_tls = 0 # 开启基于TCP的远程调用,开启libvirt远程调用和libvirt鉴权功能必须配置为1 listen_tcp = 1 # TCP远程调用所使用的协议,由用户自行配置,此处以sasl为例 auth_tcp = "sasl"
-
修改/etc/sasl2/libvirt.conf配置文件,设置SASL认证机制和sasldb数据库。
# sasl协议的认证机制 mech_list: digest-md5 # 存放用户和用户密码的数据库 sasldb_path: /etc/libvirt/passwd.db
-
添加用于SASL验证的用户并设置其密码,假设用户名为userName,命令参考如下:
# saslpasswd2 -a libvirt userName Password: Again (for verification):
-
修改/etc/sysconfig/libvirtd配置文件,开启libvirt侦听选项。
LIBVIRTD_ARGS="--listen"
-
重启libvirtd服务,使修改生效。
# systemctl restart libvirtd
-
确认libvirt远程调用的鉴权功能是否生效。根据提示输入用户名和密码能够成功连接libvirt服务,说明开启成功。
# virsh -c qemu+tcp://192.168.0.1/system Please enter your authentication name: openeuler Please enter your password: Welcome to virsh, the virtualization interactive terminal.Type: 'help' for help with commands'quit' to quitvirsh #
50.3 管理SASL
这里给出管理SASL用户的操作,请使用root用户操作。
-
查询数据库中存在的用户
# sasldblistusers2 -f /etc/libvirt/passwd.db user@localhost.localdomain: userPassword
-
从数据库中删除用户user
# saslpasswd2 -a libvirt -d user
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!