热门标签 | 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手册页面。


推荐阅读
  • 本文介绍了SELinux的两种主要工作模式——强制模式和宽容模式,并提供了如何在CentOS 7中正确启用和配置SELinux的方法,以及在遇到登录问题时的解决策略。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • CentOS7通过RealVNC实现多人使用服务器桌面
    背景:公司研发团队通过VNC登录到CentOS服务器的桌面实现软件开发工作为防止数据外泄,需要在RealVNC设置禁止传输文件、访问粘贴板等策略过程&# ... [详细]
  • 本文详细介绍了如何在 CentOS 7 及其衍生发行版(如 Red Hat, Oracle, Scientific Linux 7)上安装和完全卸载 GitLab。包括安装必要的依赖关系、配置防火墙、安装 GitLab 软件包以及常见问题的解决方法。 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
    龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本文介绍了Linux操作系统的核心组成部分——内核及其版本分类,以及市面上常见的几种Linux发行版,旨在为初学者提供一个清晰的学习路径。 ... [详细]
  • 本文介绍了如何利用X_CORBA实现远程对象调用,并通过多个示例程序展示了其功能与应用,包括基础的Hello World示例、文件传输工具以及一个完整的聊天系统。 ... [详细]
  • 构建个人多节点Linux环境(CodeSheep)
    本文介绍如何通过虚拟机搭建一个多节点的Linux环境,这对于学习、实验和项目部署都具有重要意义。文章详细讲解了网络IP设置、节点间通信等关键步骤。 ... [详细]
  • Centos7 Tomcat9 安装笔记
    centos7,tom ... [详细]
  • CentOS 7 默认安装了 MariaDB,作为 MySQL 的一个分支。然而,出于特定需求,我们可能仍需在系统中安装 MySQL。本文将详细介绍如何通过 Yum 包管理器在 CentOS 7 上安装 MySQL,并提供一些常用的 MySQL 命令。 ... [详细]
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社区 版权所有