《虚拟化安全解决方案》一2.4 配置Citrix XenServer

本节书摘来自华章出版社《虚拟化安全解决方案》一书中的第2章,第2.4节,作者[美]戴夫·沙克尔福(Dave Shackleford),更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.4 配置Citrix XenServer

XenServer的优点是它非常类似Linux,对于一些虚拟管理员,这也是缺点,因为它们可能没有命令行正确管理和配置这些系统。但仍有许多事情使用XenCenter是可以完成的,使用者仍需要利用命令行完成许多特定的任务。这里的另一点是很重要的——XenServer不是标准的Linux内核或操作系统。它是充分修改的,以至于应该仔细地考虑运行标准操作系统命令可能产生什么负面影响。

2.4.1 给XenServer打补丁

XenServer的所有补丁都被称为hotf?ixes,一个与Microsoft补丁相关的术语。为了演示XenServer与主要Linux分发版本(尤其是Red Hat和CentOS)之间的一个主要区别,系统的控制台操作系统有一个众所周知的更新工具yum的拷贝。但是,Citrix不建议启用或使用它,因为它将导致标准CentOS包被下载和安装,这可能与系统的定制包操作冲突。
所有修补程序都由Citrix发布,并加密签名,当上载到一个管理程序主机的时候,这些签名要被检查。修补程序也包含下面的元数据组件:
一个独一无二的修补程序的识别号码。
一个简单的评估检查,它确定修补程序对要安装的单个主机的可应用性。
当可应用时,安装后配置和激活的指导。
1.?通过XenCenter打补丁
更新XenServer的第一个方法是通过XenCenter。更新过程很简单,有一个向导引导整个过程。通过XenCenter更新,使用者有两个选择:软件更新和滚动池更新。
为了开始标准软件更新,首先需要获取修补程序文件,并中心平台或本地系统存储它们,然后按照下面的步骤进行:
1)在XenCenter中单击“工具”,然后安装软件更新,打开向导。
2)单击“下一步”,然后单击“添加”按钮,添加修补程序文件。单击“下一步”,然后选择你想要更新的服务器,再次单击“下一步”。
3)然后进行更新评估检查,XenCenter将通知你任何可能阻止修补程序正确安装的问
题,例如版本不匹配。一个例子如图2.40所示。

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

4)在所有问题解决之后,单击“下一步”继续。
5)向导的下一阶段是更新模式。选择更新XenServer的选项——自动或手动。
自动模式允许XenCenter决定如何迁移虚拟机到其他主机,一旦主机被更新,可以再次将它们迁移回来。
手动模式允许你选择哪个更新被发送到哪个服务器,以及何时发送,还有如何和合适迁移在主机上运行的虚拟机到其他主机。
6)单击“下一步”,然后完成更新过程。
滚动池更新是一个允许在一个池中更新XenServer主机到一个新的XenServer版本的工具。池中运行的服务将在更新进程中仍可用。步骤与基本更新过程非常类似。选择工具启动过程,然后是滚动池更新,然后选择池而不是单个主机。
2.?通过命令行打补丁
也可以使用命令行更新单个XenServer或完成滚动池更新。
首先需要获取修补程序文件,在中心平台或本地系统存储它们。然后关闭或挂起主机系统上的任何运行的虚拟机。在一个池中,可以将虚拟机迁移到其他池主机,然后按照下面的步骤进行:
1)复制更新文件到主机,这可以通过使用如下scp命令完成:

因此一个例子也可能是这样:

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

4)运行xe补丁列表命令验证主机是否接受补丁。
还有其他可以打补丁的选择,但这是开始打补丁的基础。一个简单的脚本可用于自动化从命令行给XenServer打补丁,按照下面的步骤:
1)首先,使用Vi编辑器创建一个名为xenpatch.sh的新文件,输入下面的代码:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

2)保存脚本,退出文件。现在在命令行输入下面的命令修改脚本的权限(这样做的原因是任何用户都可能运行这个脚本):
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

2.4.2 用XenServer进行安全通信

与VMware ESXi很像,XenServer非常依赖SSL证书与管理控制台和组件进行交互,尤其是XenCenter。XenServer的SSL证书与XenAPI网络服务捆绑,它被多数需要访问系统的应用程序调用。
在XenServer主机上验证SSL指纹是一个好主意,确认正在连接的主机是计划连接的主机,有助于防止中间人(MitM)攻击。
首先,访问XenServer交互控制台,通过SSH登录或在XenCenter中选择一个XenServer主机,在右侧面板中单击控制台页面完成。一旦进入命令窗,输入xsconsole。菜单中的第一个选项,即状态显示,将显示当选择时的SSL证书指纹(见图2.41)。当使用者在XenCenter中第一次连接主机的时候,这个指纹要与呈现的匹配。
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

为了替换主机上默认的SSL证书,完成下面的步骤:
1)在命令行,首先将原始证书文件改为另一个名称。如果出错,可以再次重命名文件,恢复系统到原始配置,如下面的例子所示:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

3)一个可选的配置步骤是在让OpenSSL证书包含Dif?e-Hellman参数。这对于某些与服务器的关键交换方法是有用的,但对于多数XenServer交互这不是必需的。要这么做的话,运行下面的命令:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

为了确保XenCenter认识任何SSL证书中的反常变化,可以开启改变SSL修改检测。为了实现它,登录到XenCenter,单击Tools菜单选项,选择Option。看到的第一个菜单项是Security。可以检查两个配置项:第一个是当任何新SSL证书被检测到时改变,第二个是当检测到已知XenServer主机上的SSL证书修改时改变。这些设置如图2.42所示。

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

2.4.3 改变XenServer默认设置

有许多可以实现的XenServer变更,它们都遵守Linux强化最佳实践。本书不是创建另一个Linux强化指南,而是将列出一些更加基本的配置步骤。这些步骤已经在XenServer最近的版本上测试过了。并且可以与其他强化步骤一起无限制地在Red Hat企业版和CentOS操作系统上测试,但是需要先检测确认XenServer能与它们一起正常工作。专注于Linux强化指南的好例子可以在互联网安全中心找到:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

1.?限制运行的服务
许多服务运行在默认XenServer的安装版本上。为了确定哪个服务在运行,可以执行下面的命令:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

在默认安装上,应该看到下面的服务:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

这些服务通常是默认需要或有用的,建议保留它们。如果看到其他服务,并确定不需要,可以使用下面的命令容易的关闭它们:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

2.?改变启动行为
XenServer像传统Linux系统一样,允许用户重启或登录到单一用户模式。单一用户模式是一种特殊的命令行模式,它允许对操作系统根权限访问,进行配置和紧急变更。这当然是一种责任!为了获得根密码进入单一用户模式,编辑/etc/inittab文件,输入下面一行:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

XenServer上另一个引导装载程序是extlinux装载程序,它也是有密码保护的。按照下面的步骤完成这个改变:
1)首先,为装载程序选择一个密码,运行sha1sum命令获取一个40个字符的哈希码:

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

3)保持并退出文件。
3.?禁用调试模式
调试模式允许用户和进程潜在的访问XenServer文件系统的敏感区域,产生和读取潜在的敏感日志数据。这里建议以两种方式禁用调试模式。首先,禁用Xenstored进程的调试模式,它允许虚拟机存储(因此也允许虚拟机)访问调试模式。为了禁用Xenstored调试模式,检查文件/etc/xensource/xenstored.conf,确认没有读取的项目allowdebug=true。默认应该没有任何这些项,但周期性地检查是一个好主意。
另一个调试模式访问类型是,当XenServer使用活动目录和LDAP库时,XAPI进程使用的全局目录调试模式。如禁用全局目录调试的话,编辑/etc/xapi, conf文件,找到下面的行:

将true改为false,然后保持并退出文件。
4.?限制对CRON和AT的访问
某些用户可能需要使用cron或at程序功能创建计划工作和任务。应该对特定管理员用户限制这些功能,保护运行完整性,限制XenServer主机上的资源消耗。为了限制对这些功能的访问,在XenServer命令行上按照下面的步骤进行:

2.4 配置Citrix XenServer

XenServer的优点是它非常类似Linux,对于一些虚拟管理员,这也是缺点,因为它们可能没有命令行正确管理和配置这些系统。但仍有许多事情使用XenCenter是可以完成的,使用者仍需要利用命令行完成许多特定的任务。这里的另一点是很重要的——XenServer不是标准的Linux内核或操作系统。它是充分修改的,以至于应该仔细地考虑运行标准操作系统命令可能产生什么负面影响。

2.4.1 给XenServer打补丁

XenServer的所有补丁都被称为hotf?ixes,一个与Microsoft补丁相关的术语。为了演示XenServer与主要Linux分发版本(尤其是Red Hat和CentOS)之间的一个主要区别,系统的控制台操作系统有一个众所周知的更新工具yum的拷贝。但是,Citrix不建议启用或使用它,因为它将导致标准CentOS包被下载和安装,这可能与系统的定制包操作冲突。
所有修补程序都由Citrix发布,并加密签名,当上载到一个管理程序主机的时候,这些签名要被检查。修补程序也包含下面的元数据组件:
一个独一无二的修补程序的识别号码。
一个简单的评估检查,它确定修补程序对要安装的单个主机的可应用性。
当可应用时,安装后配置和激活的指导。
1.?通过XenCenter打补丁
更新XenServer的第一个方法是通过XenCenter。更新过程很简单,有一个向导引导整个过程。通过XenCenter更新,使用者有两个选择:软件更新和滚动池更新。
为了开始标准软件更新,首先需要获取修补程序文件,并中心平台或本地系统存储它们,然后按照下面的步骤进行:
1)在XenCenter中单击“工具”,然后安装软件更新,打开向导。
2)单击“下一步”,然后单击“添加”按钮,添加修补程序文件。单击“下一步”,然后选择你想要更新的服务器,再次单击“下一步”。
3)然后进行更新评估检查,XenCenter将通知你任何可能阻止修补程序正确安装的问
题,例如版本不匹配。一个例子如图2.40所示。

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

4)在所有问题解决之后,单击“下一步”继续。
5)向导的下一阶段是更新模式。选择更新XenServer的选项——自动或手动。
自动模式允许XenCenter决定如何迁移虚拟机到其他主机,一旦主机被更新,可以再次将它们迁移回来。
手动模式允许你选择哪个更新被发送到哪个服务器,以及何时发送,还有如何和合适迁移在主机上运行的虚拟机到其他主机。
6)单击“下一步”,然后完成更新过程。
滚动池更新是一个允许在一个池中更新XenServer主机到一个新的XenServer版本的工具。池中运行的服务将在更新进程中仍可用。步骤与基本更新过程非常类似。选择工具启动过程,然后是滚动池更新,然后选择池而不是单个主机。
2.?通过命令行打补丁
也可以使用命令行更新单个XenServer或完成滚动池更新。
首先需要获取修补程序文件,在中心平台或本地系统存储它们。然后关闭或挂起主机系统上的任何运行的虚拟机。在一个池中,可以将虚拟机迁移到其他池主机,然后按照下面的步骤进行:
1)复制更新文件到主机,这可以通过使用如下scp命令完成:

因此一个例子也可能是这样:

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

4)运行xe补丁列表命令验证主机是否接受补丁。
还有其他可以打补丁的选择,但这是开始打补丁的基础。一个简单的脚本可用于自动化从命令行给XenServer打补丁,按照下面的步骤:
1)首先,使用Vi编辑器创建一个名为xenpatch.sh的新文件,输入下面的代码:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

2)保存脚本,退出文件。现在在命令行输入下面的命令修改脚本的权限(这样做的原因是任何用户都可能运行这个脚本):
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

2.4.2 用XenServer进行安全通信

与VMware ESXi很像,XenServer非常依赖SSL证书与管理控制台和组件进行交互,尤其是XenCenter。XenServer的SSL证书与XenAPI网络服务捆绑,它被多数需要访问系统的应用程序调用。
在XenServer主机上验证SSL指纹是一个好主意,确认正在连接的主机是计划连接的主机,有助于防止中间人(MitM)攻击。
首先,访问XenServer交互控制台,通过SSH登录或在XenCenter中选择一个XenServer主机,在右侧面板中单击控制台页面完成。一旦进入命令窗,输入xsconsole。菜单中的第一个选项,即状态显示,将显示当选择时的SSL证书指纹(见图2.41)。当使用者在XenCenter中第一次连接主机的时候,这个指纹要与呈现的匹配。
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

为了替换主机上默认的SSL证书,完成下面的步骤:
1)在命令行,首先将原始证书文件改为另一个名称。如果出错,可以再次重命名文件,恢复系统到原始配置,如下面的例子所示:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

3)一个可选的配置步骤是在让OpenSSL证书包含Dif?e-Hellman参数。这对于某些与服务器的关键交换方法是有用的,但对于多数XenServer交互这不是必需的。要这么做的话,运行下面的命令:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

为了确保XenCenter认识任何SSL证书中的反常变化,可以开启改变SSL修改检测。为了实现它,登录到XenCenter,单击Tools菜单选项,选择Option。看到的第一个菜单项是Security。可以检查两个配置项:第一个是当任何新SSL证书被检测到时改变,第二个是当检测到已知XenServer主机上的SSL证书修改时改变。这些设置如图2.42所示。

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

2.4.3 改变XenServer默认设置

有许多可以实现的XenServer变更,它们都遵守Linux强化最佳实践。本书不是创建另一个Linux强化指南,而是将列出一些更加基本的配置步骤。这些步骤已经在XenServer最近的版本上测试过了。并且可以与其他强化步骤一起无限制地在Red Hat企业版和CentOS操作系统上测试,但是需要先检测确认XenServer能与它们一起正常工作。专注于Linux强化指南的好例子可以在互联网安全中心找到:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

1.?限制运行的服务
许多服务运行在默认XenServer的安装版本上。为了确定哪个服务在运行,可以执行下面的命令:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

在默认安装上,应该看到下面的服务:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

这些服务通常是默认需要或有用的,建议保留它们。如果看到其他服务,并确定不需要,可以使用下面的命令容易的关闭它们:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

2.?改变启动行为
XenServer像传统Linux系统一样,允许用户重启或登录到单一用户模式。单一用户模式是一种特殊的命令行模式,它允许对操作系统根权限访问,进行配置和紧急变更。这当然是一种责任!为了获得根密码进入单一用户模式,编辑/etc/inittab文件,输入下面一行:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

XenServer上另一个引导装载程序是extlinux装载程序,它也是有密码保护的。按照下面的步骤完成这个改变:
1)首先,为装载程序选择一个密码,运行sha1sum命令获取一个40个字符的哈希码:

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

3)保持并退出文件。
3.?禁用调试模式
调试模式允许用户和进程潜在的访问XenServer文件系统的敏感区域,产生和读取潜在的敏感日志数据。这里建议以两种方式禁用调试模式。首先,禁用Xenstored进程的调试模式,它允许虚拟机存储(因此也允许虚拟机)访问调试模式。为了禁用Xenstored调试模式,检查文件/etc/xensource/xenstored.conf,确认没有读取的项目allowdebug=true。默认应该没有任何这些项,但周期性地检查是一个好主意。
另一个调试模式访问类型是,当XenServer使用活动目录和LDAP库时,XAPI进程使用的全局目录调试模式。如禁用全局目录调试的话,编辑/etc/xapi, conf文件,找到下面的行:

将true改为false,然后保持并退出文件。
4.?限制对CRON和AT的访问
某些用户可能需要使用cron或at程序功能创建计划工作和任务。应该对特定管理员用户限制这些功能,保护运行完整性,限制XenServer主机上的资源消耗。为了限制对这些功能的访问,在XenServer命令行上按照下面的步骤进行:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

5.?限制XENSERVER网络配置
XenServer内核可以很巧妙地处理各种网络流量和条件。在/etc/sysctl.conf文件里有很多设置可以提供与/或设置。这些设置的多数都意在禁止潜在的恶意数据流。例如,互联网控制消息协议(Internet Control Message Protocol,ICMP)流、直接广播和资源路由包。另一些是过滤和拒绝服务(Denial of Service DoS)减轻工具。
代码清单2.1显示了你要找的设置。在这个文件中0(零)是禁止,1(一)是启用。如果设置不存在,就创建它们!在添加和修改这些配置之后,运行命令sysctl -p启用它们(这个列表在本书的网页www.sybex.com/go/virtualizationsecurity上也有)。
代码清单2.1 /etc/sysctl.conf文件的设置
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

2.4.4 启用XenServer运行安全

在XenServer上启用NTP和SNMP是相当简单的,尤其对熟悉Linux的管理员来说。它们都可以通过修改关键配置文件来配置并启动标准服务。
为了添加时钟服务,使用Vi编辑器修改文件/etc/ntp.conf,在文件中添加下面的行(默认是有它们的):
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

这4个NTP服务器是Citrix推荐的,但是应该添加熟悉的时间服务器,与基础设施一起使用。为了确认这些变更生效,通过运行下面的命令重启时间服务:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

这将重启NTP后台程序,配置本地NTP服务从配置文件指定的NTP服务器获取时间。
为了检查XenServer主机NTP的状态,可以运行ntpq -p命令。这个命令将返回XenServer主机上NTP同步相关的许多域。
为了启用和修改SNMP服务,首先需要修改本地防火墙来允许到主机SNMP数据流。可以按照下面的步骤实现:
1)使用Vi编辑器修改文件/etc/sysconf?ig/iptables。在最后的规则前面的某些地方添加下面的行(最后一行应该是read -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited):
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

3)现在,修改SNMP配置文件/etc/snmp/snmpd.conf,这里可以配置许多设置。默认仅显示Xen管理信息库(MIB)的系统试图子树,这个不用修改,除非有特定的原因允许更多的访问。但是,应该改变默认的社区字符串从公有变为更加安全的事物。在基础设施监控系统中,将下面几行修改公用为SNMP社区字符串设置来进行设置。
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

4)在完成任何其他你需要的改变以后,保持文件设置并关闭它。现在,输入service snmpd start命令来重启SNMP服务。
5)为了启用SNMP为一个服务自动启动,运行下面的命令;
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

现在应该有在XenServer主机上能运行的NTP和SNMP服务了。

2.4.5 保护和监控关键XenServer配置文件

在XenServer平台上,许多配置文件应该被监控。对于ESXi和Hyper-V来说,监控这些文件变更和整体完整性的关键在于定期在特定时间点对这个文件进行哈希运算,记录输出的值。这些值可以作为以后相同哈希运算的结果比较的基线。如果值变了,那么文件就以某种方式改变;如果哈希相同,文件就没有改变。
记住更新和更新系统将可能改变许多文件,因此确保在进行这些操作之后,创建新的基线。
有许多不同的方法来监控Linux平台上重要文件和目录。简单来说,下面这些目录应该在XenServer的实现中被监控:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

发布版有许多内建的哈希工具,这些包括md5sum, sha-1sum, sha256sum, sha512sum。我建议使用sha512sum,因为它是这些哈希算法中最安全的一个。下面是一个简单的脚本,它能用于XenServer命令行定期完成这个任务:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

添加下面的代码行到脚本文件(名为hashing.sh),用chmod +x修改脚本为可执行,然后创建包含所有之前列出的目录的文本文件(以及任何你想监控的事物)。像下面这样运行脚本:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

运行后在目录/tmp中找到文件的哈希值,然后可以使用diff函数来将它与这个新文件比较。可以日常进行这种简单的文件完整性监控。

2.4.6 保护本地用户和组

在XenServer上添加、删除和修改本地用户和组的进程与标准Linux进程基本相同。也有许多可应用的基于角色访问控制定义的简单角色。
1.?改变密码文件的格式
遗憾的是,从一开始在XenServer的本地安全配置中就有一个重大缺陷——密码哈希值存储在/etc/passwd文件中,所有用户都有读取它的权限!今天在许多Linux系统中已经废弃了,为了支持一个更安全的系统,同时使用/etc/passwd用户文件和受限制的/etc/shadow文件存储密码哈希值。可以使用pwconv命令改变这个行为,它将转换系统去使用/etc/shadow格式。也可以通过编辑/etc/pam.d/system-auth文件将影子文件与可插拔验证模块相连,参考下面的行:

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

保存文件并退出。
XenServer官方不支持影子密码的使用,如果将系统转换为使用/etc/shadow文件,那么可能破坏了系统在池内的兼容性!在测试实验室里面仔细测试,看看配置在生产设置中启用影子密码是否仍正常工作。
2.?设置用户和组
adduser和useradd命令(它们两个的功能是一样的)可用于创建一个新的,低优先级的用户。在下面的例子中,实体RegularUser被指定的用户ID是523(任何大于500的未使用数都是可接受的,也可以让useradd替你产生一个值),用户组ID是200,主目录是/home/reguser,命令行/bin/bash, reguser的用户名:

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

一个额外的可以采取的步骤是确保所有用户账户均有密码。查看/etc/passwd或/etc/shadow(如果你使用影子密码)文件,确认用户名后的第一个域有一个哈希值或“!!”标识,这表示账户不能登录。
3.?配置密码过期和历史
密码过期默认设置可在/etc/login.defs文件中配置,在这个文件中,有四个可以编辑的设置,建议显示在表2.3中。
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

另一个公共密码安全控制是密码历史。这个控制跟踪一定数目的用户密码,阻止用户一而再再而三的使用相同的密码。许多人觉得这个控制是有帮助的,如果某人常使用的密码在某处是缺乏抵抗力的,那么攻击者会经常在其他系统尝试相同的密码。配置密码历史,需要修改/etc/pam.d/system-auth文件。在文件中添加下面的行,记住之前的六个密码,这是笔者建议的最小值:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

现在,保存文件,退出。用户将*在后面六个密码周期中使用新密码。
4.?配置SUDOERS文件
Sudo的出现对于在Xenserver平台上管理本地用户是一件好事。这是到目前为止最简单的限制和控制单个用户和/或组可以进行活动的方式。使用命令visudo编辑/etc/sudoers文件,能创建指定给用户的命令别名组——换句话说,就是某些用户和组可以不需要根权限运行的命令组。对于XenServer平台,可以通过添加下面的行,创建Xen admin命令的新命令别名组:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

然后可以控制哪个用户可以访问和运行这些命令。例如,如果你有一个称为xenadmins的特殊组,你可以添加下面一行到sudoers文件:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

这将授权组访问XenServer管理员的可执行文件。
5.?使用PAM文件
额外的用户控制由可插拔验证模块(PAM)文件管理,尽管XenServer上的该模块似乎不像在ESXi上或现代Linux变体上那样有完全功能。但是仍可以使用PAM限制用户组访问XenAPI组。首先,创建你想要的用户列表。例如,可以创建名为/etc/localadmins的文件。每行添加一个用户名。然后可以编辑PAM配置使用PAM限制这种访问。对于XenServer,所有必需的策略都在单个文件/etc/pam.d/system-auth中配置。使用Vi编辑这个文件,进行下面的修改(高亮的行):
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

现在,需要使用xe命令为主机启用外部PAM验证:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

6.?启用活动目录验证
另一种使用PAM限制访问的方法是启用XenServer活动目录验证。这通常是企业环境中验证的首选模式。
首先,确认XenServer主机上的下面的防火墙端口是打开的,允许与域控制器通信(通过运行iptables -L命令完成):
UDP/TCP 53 (DNS) UDP/TCP 88 (Kerberos 5) UDP 123 (NTP)
UDP 137 (NetBIOS Name Service)
TCP 139 (NetBIOS Session (SMB) ) UDP/TCP 389 (LDAP)
TCP 445 (SMB over TCP)
UDP/TCP 464 (Machine password changes) TCP 3268 (Global Catalog Query)
现在需要启用外部验证就像PAM描述的那样,但要指向AD域:

另一种方式是通过XenServer添加主机到活动目录,按照下面的步骤:
1)登录到XenServer,选择你喜欢的主机或池添加到域。
2)在右侧单击“用户”页。
3)单击“加入域”按钮。输入域名、域管理用户和用户密码。然后单击“OK”。
4)现在你应该看到面板下有访问权的用户和组的列表,如图2.43所示。

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

对于PAM或AD验证,可以在XenServer主机上使用这个命令禁用外部验证:
xe pool-disable-external-auth。
现在可以利用XenServer内建的基于角色的访问控制(RBAC)系统。为了查看XenServer主机上定义的角色,运行命令xe role-list,将看到与图2.44类似的输出结果。

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

这些角色有下面列表所介绍的能力:
池管理员:指定/修改角色,使用SSH和XenServer登录到服务器控制台,服务器备份/恢复,登出活动用户连接,创建和解除报警,取消任何用户的任务,池管理,虚拟机高级操作,虚拟机创建/销毁操作,虚拟机改变CD媒体,浏览虚拟机控制台,XenCenter试图管理操作,取消拥有的任务,读取审计日志,配置和管理WLB,应用WLB优化建议,修改WLB报告订阅,接受WLB替换建议,显示WLB配置,产生WLB报告,连接到池,读取所有池元数据。
池操作员:登出活动用户连接,创建和解除报警,需求任何用户的任务,池管理,虚拟机高级操作,虚拟机创建/销毁操作,虚拟机改变CD媒体,查看虚拟机控制台,XenServer流量管理操作,取消拥有的任务,读取审计日志,配置和管理WLB,应用WLB优化建议,修改WLB报告订阅,接受WLB替换建议,显示WLB配置,产生WLB报告,连接到池,读取所有池元数据。
虚拟机电源管理员:虚拟机高级操作,虚拟机创建/销毁操作,虚拟机改变CD媒体,查看虚拟机控制台,XenServer流量管理操作,取消拥有的任务,读取审计日志,配置和管理WLB,应用WLB优化建议,修改WLB报告订阅,接受WLB替换建议,显示WLB配置,产生WLB报告,连接到池,读取所有池元数据。
虚拟机管理员:虚拟机创建/销毁操作,虚拟机改变CD媒体,查看虚拟机控制台,XenServer流量管理操作,取消拥有的任务,读取审计日志,配置和管理WLB,应用WLB优化建议,修改WLB报告订阅,接受WLB替换建议,显示WLB配置,产生WLB报告,连接到池,读取所有池元数据。
虚拟机操作员:虚拟机改变CD媒体,查看虚拟机控制台,XenServer流量管理操作,取消拥有的任务,读取审计日志,配置和管理WLB,应用WLB优化建议,修改WLB报告订阅,接受WLB替换建议,显示WLB配置,产生WLB报告,连接到池,读取所有池元数据。
只读:取消拥有的任务,读取审计日志,配置和管理WLB,应用WLB优化建议,修改WLB报告订阅,接受WLB替换建议,显示WLB配置,产生WLB报告,连接到池,读取所有池元数据。
为了利用XenServer RBAC的优势,你需要添加用户(本地或基于AD的)到系统作为主题,主题是RBAC能理解的目标类型,因此需要在利用RBAC系统的优势之前匹配这些。添加用户为主题的命令如下:

例如,图2.45显示一个加入Virtsec.com域的主机,其中添加一个域用户名为shack。这被后面的xe subject-list验证(在图中,一些输出被截断了)。
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

7.?设置基于角色的访问控制
现在用户可以被添加到一个或多个系统的角色中。为了用PAM完成这个任务,按照下面的步骤进行:
1)停止XenAPI服务(xapi):

2)复制文件/var/xapi/state.db,然后用Vi编辑文件。搜索添加作为主题的用户名。应该看到与下面类似的信息(假设用户名是XenAdmin1):
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

3)新主题默认被添加到池管理员角色,但是,出于不同的原因可能会应用不同的角色。那么可以在运行xe role-list后得到你获得的角色的通用唯一标识符(UUID)。在之前提供的例子中(如图2.44),Vm Admin角色的UUID是aaa00ab5-7340-bfbc-0d1b-7cf342639a6e。修改文件state.db中的行为读:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

4)保存,退出state.db文件,然后重启XenAPI服务:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

简而言之,这就是为PAM添加RBAC的过程。
为AD添加RBAC更简单点!使用下面命令之一,添加AD用户或组到特定角色(这些完成相同的事情):

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

在添加了AD用户后,你应该能够使用域认证信息登录到系统中。图2.46显示了通过SSH用域管理账户shack@virtsec.com登录到XenServer主机的例子。正如你所看到的,由于指定了RBAC Pool Admin角色,用户在系统上被授予了全部权限。

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

使用RBAC有许多许多好处,主要是有细粒度的权限设置和详细的所有用户活动的审计日志生成。本书的第7章将大体介绍审计日志和登录。

2.4.7 锁定对XenServer平台的访问

XenServer有许多可用的方法控制对系统和服务的远程访问。首先,对于许多版本而言一个标准Linux组件,是TCP包装器。TCP包装器由两个文件组成,/etc/hosts.allow和/etc/hosts.deny,它们可以明确的被配置为允许和拒绝访问某些在/etc/xinetd.d中有的INET服务。这两个文件有相似的语法,当在文件中放置条目用于访问控制的时候遵循特定的顺序:
1)当服务器/客户组匹配/etc/hosts.allow文件中的一条的时候,访问被授权。
2)当后台程序/客户组匹配/etc/hosts.deny文件中的一个条目的时候,访问被拒绝。
3)否则,访问被授权(如果根本不存在条目)。
许多组织仅选择将所有条目(允许和拒绝的)都放在/etc/hosts.allow文件中,下面演示了SSH后台程序的一个允许和一个拒绝的条目:

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

最后,你可以通过配置内建的IPTables防火墙控制多数出入XenSerer的流量。XenServer 6.x主机的默认防火墙规则包括如下项目:
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

看看这个列表,能注意到一些不同寻常列出的端口,例如互联网打印协议(IPP,端口631)。为什么有它?好问题。好消息是这些端口的多数默认没有启用,没有流量。防火墙仅仅是这么设置它们。下面是企业版XenServer中使用的多数常用端口:
XenCenter端口
TCP 22(SSH)
TCP 443(XenAPI管理)
TCP 5900(用于Linux客户的VNC)
TCP 3389(用于Windows guests客户的RDP)
资源池端口
TCP 22(SSH)
TCP 443(XenAPI管理)
内部基础设施端口
TCP/UDP 123(NTP)
TCP/UDP 53(DNS)
TCP 389(活动目录或LDAP)
TCP/UDP 139(NetBIOS会话服务)
TCP/UDP 445(Microsoft-DS)
存储端口
TCP 3260 (iSCSI)
TCP 2049 (NFS)
TCP 21605 (存储链接网关通信之上的简单对象访问协议[SOAP])
有许多方式配置本地IPTables防火墙,一个简单的方法是在命令行提示符中输入命令lokkit,然后将看到如图2.47所示的界面。
《虚拟化安全解决方案》一2.4 配置Citrix XenServer

也可以在这个界面启用SELinux(安全增强Linux)。有三种选择:
enforcing(增强的):启用SELinux。
permissive(许可的):仅发出警告而不实际控制平台上的行为。
disabled(禁止的):关闭SELinux。
SELinux配置可能非常复杂,超出了本书的讨论范围。仅需要知道的是,在多数环境中它带来的问题比具有的价值多!
为了在本地防火墙上快速完成讨厌的配置,选择自定义,应该看到图2.48类似的界面。
这里,可以容易地启用或禁止到来的防火墙规则。单击“OK”,然后再次单击“OK”结束。为了查看有哪些规则,运行下面的命令:

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

也可以简单地添加新防火墙规则。例如,为了添加新规则允许TCP端口31337在INPUT链中,可以使用下面的语法:

《虚拟化安全解决方案》一2.4 配置Citrix XenServer

现在,除了root用户以外都被明确使用cron或at功能。
5.?限制XENSERVER网络配置
XenServer内核可以很巧妙地处理各种网络流量和条件。在/etc/sysctl.conf文件里有很多设置可以提供与/或设置。这些设置的多数都意在禁止潜在的恶意数据流。例如,互联网控制消息协议(Internet Control Message Protocol,ICMP)流、直接广播和资源路由包。另一些是过滤和拒绝服务(Denial of Service DoS)减轻工具。
代码清单2.1显示了你要找的设置。在这个文件中0(零)是禁止,1(一)是启用。如果设置不存在,就创建它们!在添加和修改这些配置之后,运行命令sysctl -p启用它们(这个列表在本书的网页www.sybex.com/go/virtualizationsecurity上也有)。
代码清单2.1 /etc/sysctl.conf文件的设置

上一篇:Exchange Server 2010简体中文版安装测试


下一篇:压力测试及缓存服务器