如何确保VMware VCenter Server的安全?

日期: 2008-12-15 作者:Eric Siebert翻译:王越 来源:TechTarget中国 英文

确保VMware VCenter Server的安全是非常重要的,这是因为VMware VCenter Server(从前叫做Virtual Center)对其管理的所有虚拟机拥有完全的访问控制权限。你可能已经采取一定的手段防止非授权用户登录VCenter,但是有两个方面可能被许多系统管理员所忽略。VCenter有两个非常重要的集成组件:存储VCenter配置数据的数据库和认证用户身份的Active Directory。如果这两个组件没有得到很好保护的话,恶意用户就可以通过这两个组件取得对你工作平台环境的访问控制权限。

  保护VCenter  Server数据库   VCenter……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

确保VMware VCenter Server的安全是非常重要的,这是因为VMware VCenter Server(从前叫做Virtual Center)对其管理的所有虚拟机拥有完全的访问控制权限。你可能已经采取一定的手段防止非授权用户登录VCenter,但是有两个方面可能被许多系统管理员所忽略。VCenter有两个非常重要的集成组件:存储VCenter配置数据的数据库和认证用户身份的Active Directory。如果这两个组件没有得到很好保护的话,恶意用户就可以通过这两个组件取得对你工作平台环境的访问控制权限。

  保护VCenter  Server数据库

  VCenter数据库是存放配置数据和其它数据的地方,其中包括角色、许可权、事件、任务、性能数据、数据中心信息、集群信息、资源池信息以及其它更多信息。

  如果使用SQL 工具连接SQL服务器数据库,并且查看VCenter数据库的话,你就会看到许多VCenter使用的表。这些表中有许多都是以VPX开头的。VPX_ACCESS表用来存放对VCenter的访问控制信息,主要由以下几列组成:ID、PRINCIPAL、ROLE_ID、ENTITY_ID和FLAG。如果我们输入一个简单的SQL查询语句,就可以看到这个表中主要包含的信息:

  Select * from vpx_access

  结果类似于这样:

VCenter Server

  让我们看一下表中的各列数据以及这些数据所代表的含义:

  • ID是表中的唯一标识符,用来标识表中的每一条记录
  • Principal是本地或者域用户或用户组的名字,在域用户和群组的前面有一个“”(如ACMETJones)
  • ROLE_ID是VPC_ROLE表中定义的角色所对应的ID。VPC_ROLE表包括ID和与其对应的角色。-1表示是管理员身份,管理员角色不可能从VCenter中删除,否则就也就不会在数据库中。VCenter中的另外一些角色,如DataCenterAdministrator的ID是2、VirtualMachine用户的ID是5;
  • Entity_ID是VPX_ENTITY表中定义的客体所对应的ID。VPX_ENTITY表中包括实体和与其对应的ID。VCenter内的所有实体都有一个唯一的ID,这些实体对象包括虚拟机、主机、集群、资源池和数据中心。ID 1用来标识较高级别的实体,如主机、集群。
  • Flag用来标识Principal表示的是一个用户还是一个群组。Flag为3表示principal是一个群组,Flag为1表示principal是一个用户。

  在我们知道这些数据代表的含义之后,就可以详细阐述VPX_ACCESS表中所返回的数据,如下:

  • 本地Windows群组管理员是主机或者集群级别的管理员角色的一个成员
  • ACME Windows域的VCenter_Admins群组是主机或者集群级别管理员角色的一个成员
  • ACME Windows域的TJones用户是某个特定角色的成员,该角色对一个叫Win2000-5(在vpx_entity表中1422 = Win2000-5)的特定虚拟机来讲称之为vCenter Network (在vpx_entity表中120 = vCenterNetwork)
  • ACME Windows域的vCenter_Users群组是某个特定角色的成员,这个角色对Denver1数据中心(在vpx_entity表中21 = Denver1)来讲叫做vCenterOps(在vpx_entity表中140 = vCenterOps)

  如果某用户拥有访问数据库的权限,并且拥有一个本地Windows账号或者域账号,就可以通过如下的SQL命令给自己赋予管理员的权限,获得对较高的主机和集群级的访问控制权限:

insert into vpx_access (ID, PRINCIPAL, ROLE_ID, ENTITY_ID, FLAG) values ('100', 'ACMEJSMITH', '-1', '1', '1');
commit;

  这样做可以赋予一个名字叫JSmith(ACMEJSMITH)域用户账号(1)在高的主机和集群级别(1)上的管理员的角色(-1);输入ID 100表示当前在表中没有使用这个账号。如果SQL表更新,而VCenter没有立刻识别出更新信息的话,关闭、然后重新启动VCenter服务器就可以强制VCenter识别更新信息,并且用户此时也可以登录到VCenter服务器。

  总之一句话:通过使用强密码机制和限制对数据库的访问来保护VCenter SQL数据库。并且对于其它任何可以访问表(如MS-SQL这种的“sa”账号)的账号也需要确保使用强密码机制。另外,如果可能的话在一个特定的SQL服务器上运行VCenter数据库,尽量不要和其它用户使用共享的SQL服务器。最后,及时给SQL服务器打补丁,防止恶意用户通过一些众所周知的漏洞取得对服务器的访问控制权限。

  Active Directory和VCenter许可权

  接下来我们讨论Active Directory。默认情况下,VCenter每天验证一次所有用户和群组对VCenter中实体对象的许可权限。这样做的目的是查看用户和群组,确保他们仍然在AD中,如果没有在AD中的话就自动删除许可权限。如果在删除一个AD账号之后又创建一个同名账号,并且VCenter还没有删除原来账号对应的权限,那么这个新的账号就可以使用这个许可权限访问VCenter。因此如果一个叫MJONES的AD账号早上被删除了,并且这个账号拥有VCenter的管理员权限,几个小时后又创建了一个叫MJONES的账号,那么这个账号就拥有同样的VCenter管理员权限,因为这个账号是在vCenter每日的例行验证之前重建的。

  这种情况确实是有可能发生的,因为在VCenter中没有使用系统标识符(SIDS:System identifiers)、长字符串和或者长数字串,这些都是Windows用来唯一标识用户的。在Windows中,如果一个账号被从AD中删除了,然后重新创建了一个同名账号,那么这个账户将会有不同的SID,也就不可能拥有之前同名账户所拥有的同样的Windows许可权限。然而对于VCenter来讲,这两者就会被视为同一个账号,拥有同样的许可权限,这是因为VCenter只使用域和用户的用户名来做检查,而不使用SID。

  在VCenter中,在“Top Menu”中选择“Administration”来完成控制这类行为的设置,然后选择“VCenter Management Server Configuration”选项。在左侧的方框中选择“Active Directory”,从右侧方框就可以看到“Enable Validation”的设置,下面是验证周期(精确到分钟)。可以完全关闭这个特性,默认的时间间隔是1440分钟(一天),当然这个可以修改。如果用户注重操作环境中的安全问题的话,可以把验证周期修改为一个较低的值(如120分钟)。由于这个特点可以通过自动删除不再有效的许可权限来保护VCenter,所以建议不要关闭这个属性特征。

  如上所述,在VCent中还有需要格外注意的区域,用户确保已经了解这些区域并且恰当地保护这些区域。其中保护数据库是关键问题,另外保证及时阻止非法访问是保护VCenter服务器不受未授权入侵的关键。

翻译

王越
王越

相关推荐