热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

KVM虚拟化技术与安全

在过去几个月间,我一直在关注RedHatEnterpriseLinux和CentOS上的KVM虚拟化,并且最近开始关注KVM安全性。我用一些戴尔PowerEdge服务器、EqualLogiciSCSI存储和若干Linux虚拟机(VM)在我的实验室进行了小规模的部署。尽管在实验室环境中安全并非是关注的

在过去几个月间,我一直在关注Red Hat Enterprise Linux和CentOS上的KVM虚拟化,并且最近开始关注KVM安全性。我用一些戴尔PowerEdge服务器、EqualLogic iSCSI存储和若干Linux虚拟机(VM)在我的实验室进行了小规模的部署。尽管在实验室环境中安全并非是关注的重点,不过我还是了解到了与KVM虚拟化安全有关的一些有趣的事情,想要在这里与大家分享。

虚拟化环境中的安全性可被分为三个不同的组成部分:虚拟化管理程序(物理服务器)安全性、虚拟机安全性和远程管理安全性。因为虚拟化管理程序和虚拟机安全性非一篇博文的篇幅所能涵盖,我只做一些简短介绍,把重点放在介绍有哪几种方法能够提供安全的远程管理。

虚拟化管理程序安全性

虚拟化管理程序安全性涉及限制对虚拟化主机的访问,这一点上应该与非虚拟化的主机没有什么区别。可以使用常用的工具来保护KVM主机的安全,包括iptables和SELinux。您可以实施更多的措施,例如将虚拟机网络流量与虚拟化管理程序的网络流量隔离开来,从而降低虚拟化管理程序遭受外部袭击的几率。虚拟化管理程序安全性至关重要,因为如果虚拟化管理程序的安全得不到保障,运行其上的所有虚拟机的安全都得不到保障。

虚拟机安全性

虚拟机安全不仅包括确保在虚拟机上运行的操作系统的安全(与物理主机没有什么不同),还确保来自虚拟化管理程序内部的虚拟机映像的安全。因为通过本地存储或远程存储上的虚拟化管理程序均可访问虚拟机映像,应当采取措施,像确保其他任何敏感数据那样确保虚拟机映像的安全。提供不同的选项,包括虚拟机映像加密和sVirt服务。

远程管理安全性

远程管理涉及对KVM主机上的虚拟资源(存储和虚拟机)进行远程管理。当您想要将虚拟环境管理工作委派给其他用户,而又不授予对方KVM虚拟化管理程序登入访问权时,远程管理非常有用。

libvirtd daemon负责管理KVM主机上所有的虚拟资源,并且有‘virsh’和‘virt-manager’等客户端工具能与它远程互动。在接下来的一节中,我将介绍安全连接至libvirtd的两种简便方法:SSH通道(SSH Tunnels),以及简单鉴权和安全层(Simple Authentication and Security Layer,SASL )。

SSH 通道:此方法使用SSH 来远程连接至虚拟化管理程序,并且不需要预先进行任何配置。对于能够使用虚拟资源的用户,它要求具备虚拟化管理程序上的SSH登录证书,默认情况下只有“根”(root)能够做到这一点,不过也可以改变,使非根账户也可采用。

例如,您可以从远程管理客户端运行:

# virsh -c qemu+ssh://root@kvmhost.dell.com/system list

    root@kvmhost.dell.com's password:

Id Name                 State

----------------------------------

  1 vm1                 running

  2 vm2                 shut off

# virsh -c qemu+ssh://root@kvmhost.dell.com/system start vm2

    root@kvmhost.dell.com's password:

  Domain vm2 started

# virsh -c qemu+ssh://root@kvmhost.dell.com/system list

    root@kvmhost.dell.com's password:

Id Name                 State

----------------------------------

  1 vm1                 running

  2 vm2                 running

SASL:此方法提供安全的验证和数据加密。在其最简单的实施中,创建单独的用户证书数据库来验证libvirtd daemon。此方法有一大优势,即非登录用户ID可用于管理KVM主机上的虚拟化资源。

要配置KVM主机以使用SASL,请执行以下操作:

1. 编辑 /etc/libvirt/libvirtd.conf 并更改:

   listen_tls = 0             # Disable the listen_tls flag

   listen_tcp = 1            # Enable the listen_tcp flag

   auth_tcp = “sasl”    # Set the authentication scheme

2. 编辑 /etc/sysconfig/libvirtd 并取消此行的批注,以使libvirtd听取TCP/IP连接:

   LIBVIRTD_ARGS=”--listen”

3. 在KVM主机上,打开防火墙端口16509/TCP:

   # iptables -A INPUT -p tcp -m tcp --dport 16509 -j ACCEPT

   # service iptables save

4. 重启libvirtd daemon以使变更生效:

   # service libvirtd restart

5. 最后,将用户添加到用户数据库。在这一例子中,我们正在将用户 ‘admin’ 添加到 ‘libvirt’ SASL数据库:

   # saslpasswd2 ?c ?a libvirt admin

   Password:

   Again (for verification):

6. 现在SASL已配置完毕,您可以安全地连接至KVM虚拟化管理程序:

   # virsh -c qemu+tcp://kvmhost.dell.com/system list

   Please enter your authentication name: admin

   Please enter your password:

   Id Name                 State

   ----------------------------------

     1 vm1                 running

     2 vm2                 running

SSH 通道和SASL可用于运行任何virsh命令。有关可用选项的完整列表,请参阅virsh手册页面。


推荐阅读
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文介绍如何通过更改软件源来提前体验Ubuntu 8.10,包括详细的配置步骤和相关注意事项。 ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
  • 解决网站乱码问题的综合指南
    本文总结了导致网站乱码的常见原因,并提供了详细的解决方案,包括文件编码、HTML元标签设置、服务器响应头配置、数据库字符集调整以及PHP与MySQL交互时的编码处理。 ... [详细]
  • 在Ubuntu 8.04中安装美观的Cairo-Dock桌面增强工具
    本文介绍如何在Ubuntu 8.04系统中安装和配置Cairo-Dock,这款桌面增强工具以其精美的界面和高效的功能备受用户青睐。文章将指导您通过简单的步骤完成安装,并提供一些实用的配置建议。 ... [详细]
  • 解决U盘安装系统后无法重启的问题
    本文详细探讨了运维新手常遇到的U盘安装系统后无法正常重启的问题,提供了从问题分析到具体解决方案的完整步骤。通过理解Boot Loader的工作原理和正确配置启动项,帮助用户顺利解决问题。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
author-avatar
Mister-Sky_724
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有