保证VMware ESX主机安全的深度防御策略介绍

日期: 2009-01-20 作者:Edward L. Haletky翻译:王越 来源:TechTarget中国 英文

随着虚拟机安全威胁的增加,IT经理和管理者们纷纷提出为VMware ESX主机安全提供深度防御的安全策略。全面防护确实可以保证安全性,因为防御对策其中一层出现安全漏洞也仅仅是影响到下一层,而不会影响到整个系统。 在VMware ESX的服务控制台内,用户可以通过访问控制层激活这种深度防御。该访问控制层是虚拟化主机的一部分,用户通过访问控制层可以使用主机名字、IP地址、时间、组成员和用户名来限制访问控制权限。

但对于创建这些访问权限的约束,我们需要使用如下三项技术:TCP封装、可插拔认证模块(PAM:Pluggable Authentication Modules)和iptables(防火墙)。 ……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

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

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

随着虚拟机安全威胁的增加,IT经理和管理者们纷纷提出为VMware ESX主机安全提供深度防御的安全策略。全面防护确实可以保证安全性,因为防御对策其中一层出现安全漏洞也仅仅是影响到下一层,而不会影响到整个系统。

在VMware ESX的服务控制台内,用户可以通过访问控制层激活这种深度防御。该访问控制层是虚拟化主机的一部分,用户通过访问控制层可以使用主机名字、IP地址、时间、组成员和用户名来限制访问控制权限。但对于创建这些访问权限的约束,我们需要使用如下三项技术:TCP封装、可插拔认证模块(PAM:Pluggable Authentication Modules)和iptables(防火墙)。

  接下来,我们将看到如何使用TCP封装来控制不同主机对VMware ESX主机守护进程的访问;如何使用pam_access基于组成员、时间和组织名称来管理用户的系统登陆。我们介绍一个通用的方法,即通过改变内置VMware ESX防火墙来控制可以访问系统的主机。

  TCP封装

  TCP封装应用于每一个守护进程而并不是每一台主机,并且遗憾的是还要基于守护进程本身,包括正确的函数库。另外,用户可以修改任何守护进程启动项,把原来不在守护进程内的TCP封装功能包括进来。现在的许多守护进程,如Tomcat, Apache和SSH,已经包含TCP封装功能。然而,并不是VMware ESX内的每一个守护进程都有这个能力。通过主机来控制对守护进程的读取需要修改如下两个文件:/etc/hosts.allow和/etc/hosts.deny,使用命令man hosts.allow and man hosts.deny可以看到相关帮助材料。

  /etc/hosts.deny是目前为止最简单的配置,用户只需要在这个文件中增加如下一行代码即可,这行代码是拒绝任何对使用TCP封装的守护进程的访问:ALL: ALL

  现在我们配置/etc/hosts.allow文件。在这个文件中用户可以通过守护进程的名字和IP地址访问这个守护进程。明确标明允许访问的IP地址和主机名要比明确地标明拒绝访问的IP地址和主机名要好一些,因为用户很有可能忘记对一个给定IP地址设置拒绝访问。检查的时候就是对比允许访问表,如果没有在这个表上,就使用拒绝访问表。对SSH来讲,可以使用如下命令:sshd: 10.0.0.20

  遗憾的是,VMware ESX的主要连接点vmware-hostd并不使用TCP封装,因此就需要其它方法来控制这个守护进程。我们可以修改vmware-hostd启动项来使用tcpd守护进程,虽然这样也可行,但是用户的虚拟平台主机更新就可能覆盖这项修改。因此最好是使用其它方法。使用命令man tcpd可以看到使用tcpd的方法。然而TCP封装可以控制对VMware远程控制台的访问。

  热插拔认证模块

  控制对虚拟平台主机访问的第二个方法是使用PAM,即pam_access。这个帮助手册不在VMware ESX上,在任何Linux主机上或者网页上使用命令man pam_access都可以找到相关帮助。通过正确地修改/etc/pam.d目录下的文件可以激活pam_access,尤其是文件/etc/pam.d/system-auth,在该文件中增家如下代码即可:

account [default=bad success=ok user_unknown=ignore]
/lib/security/$ISA/pam_access.so

  在上述代码加入该文件之后,再通过修改文件/etc/security/access.conf来决定是否允许通过用户、IP、组成员和时间来访问该系统。下述代码就是不错的例子:

# Access.conf
+ : root : crond console tty1 tty2 tty3 tty3 tty5 tty6
+ : root : 127.0.0.1
+ : @vmadmins EXCEPT badadmin : ALL
+ : badadmin : 192.168.1.100
- : root : ALL
- : ALL : ALL

  文件中的每一行代码都是一个测试程序,假设我们以根用户登录系统,IP地址是192.168.1.100。第一行对比根用户登录的位置,确定根用户是从crond守护进程登录?还是从控制台或者某个tty端口?如果不是,转到下一行,验证根用户是否是从地址127.0.0.1登录。如果还不是,转到第三行。这一行用来验证用户是vmadmins群组成员而不是badadmins群组成员。如果该用户是根用户,但是根用户不是该组成员,我们就转到下一行,这一行表示允许所有来自主机192.168.1.100的badadmin群组用户成员访问。

  遗憾的是,如果我们是以根用户登录,由于根用户不是badadmin群组成员,那么这个测试就没用了。我们转到下一行,该行表示拒绝来自任何位置的根用户。在这个例子中,用户遇到这个准则,所以根用户被拒绝登录。

  Vmware-authd或者vmware-hostd使用PAM模块控制访问,因此我们知道如果用户试图通过VI Client以根用户身份登录的话,这类文件也拒绝直接把VI Client连接到主机上。确保vpxuser是vmadmins群组成员,只有这样vCenter服务器才根用户允许登录系统。

  Iptables

  通过IP地址控制访问的最后一个方法是使用iptables。这个方法是服务器控制台防护的第一道防线,其它方法的检查在Iptables检查后。对所有守护进程和服务来讲,这是一个基于IP地址的拒绝访问方法。Iptables有可能相当复杂,因此除非用户对这项技术相当熟悉,否则最好还是用其它方法,或者参考LINUX iptables Pocket Reference也可以,网上还有其它关于Iptables的进一步阅读材料。修改文件/etc/rc.d/rc.local是拒绝访问最简单的方法,即在文件的最后一行增加如下类似的代码:

/sbin/iptables -I INPUT 1 -s 192.168.1.100 -j DROP

  这行代码表明Iptables在INPUT链的第一条规则前插入一条新的规则,这个规则是丢弃来自IP地址为192.168.1.100的所有网络传输包。Iptables规则,和pam_access模块规则相似,按照顺序使用,因此各行代码的位置相当重要。

  在VMware ESX Server in the Enterprise: Planning and Securing Virtualization Hosts这本书的第四张有关于Iptables使用更复杂的例子。

  这三个工具都可以通过提供全面防护安全战略增加虚拟平台主机的安全性。

翻译

王越
王越

相关推荐