作者:Orgad Kimchi、Ron Larson 和 Richard Friedman
2014 年 8 月发布
第 1 部分 — 构建基于云的数据中心涉及的内容
第 2 部分 — 保护基于云的数据中心
|
鉴于有关数据库和私人信息被盗的各种媒体报道,构建公有云或私有云时需要考虑的一个主要问题无疑是防止对数据和应用进行未授权访问。在本文中,我们讨论可提供安全云环境的 Oracle Solaris 11 安全特性。例如,我们介绍 Oracle Solaris 远程实验室实现如何利用这些特性为用户提供高水平的安全性。
构建云时,需要考虑与云中数据和应用安全性有关的以下方面:
除了操作系统中的安全特性外,深度审计还可通过一连串操作识别违规、问题和突破操作系统安全保护的尝试。这些威胁和风险叠加在一起,更迫切地需要一种专为保护云环境而设计的企业级安全解决方案。
使用 Oracle Solaris 11,可确保任何云的安全。本文介绍具体实现方式。
安全特性是整个 Oracle Solaris 11 操作系统的固有特性。本文介绍其中一些特性及其应对的威胁。(有关详细说明,请参见 Oracle Solaris 安全文档。)
对于所有云环境,存储中的数据总是存在无意之失或实际数据失窃的风险。通常,企业的本地 IT 组负责数据和系统安全。但在云环境中,云提供商必须保证完全安全。
Oracle Solaris 11 ZFS 文件系统提供了几种保护存储中敏感数据的机制,如数据和文件系统元数据加密。加密和集中的密钥管理系统将保护扩展至任何使用 ZFS 文件系统的服务,包括 NFS 和 Oracle Solaris 区域虚拟化环境的映像。
显然,为提高资源利用率而重用物理资源的公有云实现必须确保新的云租户无法检索到属于上一个云租户的任何数据。
ZFS 文件系统加密通过一种简单、安全的方式删除敏感数据副本。而 ZFS 中的写时复制特性胜于常规的用于删除数据文件的覆盖策略,只需更改文件系统的加密密钥即可使加密文件系统不可读。
云基础架构必须保护最终用户与公有云或私有云之间、或者混合云环境中的私有云与公有云之间的移动数据。
保护移动数据的一个方法是使用安全套接字层 (SSL) 协议对互联网的入口和出口进行加密。Oracle Secure Global Desktop 使用 SSL 为客户端连接和云主要门户之间的所有网络通信提供加密。
加密本身是高度计算密集型的。若无硬件辅助加密功能,架构性能将明显下降,进而影响整个系统,且有可能拖累系统上运行的其他业务应用。Oracle 目前提供的 SPARC 处理器包括一个集成的硬件加密加速器,避免性能下降的同时还降低成本。
Oracle Secure Global Desktop 提供的网关功能可以隔离 Oracle Secure Global Desktop 服务器与网络。Oracle Secure Global Desktop 网关部署在 Oracle Secure Global Desktop 服务器阵列前面的中立区域 (DMZ)。该配置可使阵列位于组织的内部网络中。与网关的所有连接均需通过 DMZ 中的身份验证,然后才能连接到服务器。
Oracle Secure Global Desktop 网关还管理安全超文本传输协议 (HTTPS) 连接的负载平衡。
网络虚拟化通过在逻辑上隔离用户的网络通信提高安全性。Oracle Solaris 11 网络虚拟化允许利用软件组件而不是硬件快速构建任何物理网络拓扑。这包括虚拟网络接口卡 (VNIC)、虚拟交换机以及更复杂的网络组件,如负载平衡器、路由器、防火墙和虚拟局域网 (VLAN) 网络隔离技术。
利用网络虚拟化则无需投资其他网络设备,大大降低了基础设施成本。
由于所有网络构建块均基于软件而非硬件,部署速度很快,从而允许云系统管理员为其数据中心实现软件定义的网络拓扑。
在每个云环境中,关键是要将每个租户的网络通信与共享同一基础架构的所有其他租户的通信隔离。Oracle Solaris 11 提供 VLAN 和防火墙等网络隔离技术来支持所需的隔离。
VLAN 能够隔离云租户之间的网络通信。这样就可以在协议栈的数据链路层(第 2 层)细分局域网 (LAN)。VLAN 还通过将网络划分成较小的组,简化了网络管理。
Oracle Solaris 11 提供的内置防火墙可以在云租户网络之间以及应用之间隔离网络通信。
数据包筛选可针对网络攻击提供基本的保护。Oracle Solaris 11 的 IP 筛选器特性可以按 IP 地址、端口、协议、网络接口和流向筛选网络活动,也可以按单个源 IP 地址、目标 IP 地址、IP 地址范围或地址池筛选。
处理数据包时,IP 筛选器执行一系列步骤。图 1 显示了数据包处理步骤以及筛选与 TCP/IP 协议栈如何集成。
图 1. 数据包处理步骤及 IP 筛选。
网络虚拟化技术还通过 Oracle Solaris 区域技术提供数据链路保护,该技术允许在区域内执行特权 root 访问,同时禁止发送具有不同源 IP 地址或 MAC 地址的传出欺诈数据包以及非 IPv4、IPv6 或 ARP 的数据包。
云管理员可以设置以下防欺诈模式:
ip-nospoof
:要求所有传出 IP、ARP 或 NDP 数据包的地址字段与 DHCP 配置的 IP 地址或 allowed-ips
链路属性中所列地址之一匹配。mac-nospoof
:防止 root
用户更改区域的 MAC 地址。传出数据包的源 MAC 地址必须与数据链路已配置的 MAC 地址匹配。dhcp-nospoof
:防止 DHCP 的客户端 ID/DUID 欺诈。restricted
:仅允许 IPv4、IPv6 和 ARP 协议。使用此保护类型可防止链路生成潜在有害的第 2 层控制帧。以下示例演示如何通过实施链路保护防止区域的 root
用户更改区域 IP 地址。
root@global_zone:~# dladm create-vnic vnic0 -l net0
root@global_zone:~# dladm set-linkprop -p \ protection=mac-nospoof,restricted,ip-nospoof vnic0
vnic0
链路上的 allowed-ips
属性指定 IP 地址 10.0.0.1:root@global_zone:~# dladm set-linkprop -p allowed-ips=10.0.0.1 vnic0
root@global_zone:~# dladm show-linkprop -p \ protection,allowed-ips vnic0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE vnic0 protection rw mac-nospoof, -- mac-nospoof, restricted, restricted, ip-nospoof ip-nospoof, dhcp-nospoof vnic0 allowed-ips rw 10.0.0.1 -- --
root
身份登录 user-zone
,尝试更改区域的 IP 地址。您将看到,系统将阻止我们这样做:root@global_zone:~# zlogin user-zone
root@user-zone:~# ipadm delete-ip vnic0
root@user-zone:~# ipadm create-ip vnic0
root@user-zone:~# ipadm create-addr -a local=10.0.0.10/24 vnic0/v4 ipadm: cannot create address: Permission denied
我们可以看到,root
用户不能更改区域的 IP 地址。
root@user-zone:~# ipadm create-addr -a local=10.0.0.1/24 vnic0/v4
root@user-zone:~# ipadm show-addr vnic0 ADDROBJ TYPE STATE ADDR Vnic0/v4 inherited ok 10.0.0.1/24
我们可以看到,可以更改 IP 地址。
将公有云或混合云基础架构置于公司防火墙之外,会导致云基础架构暴露于来自互联网或其他云租户的攻击下。Oracle Solaris 11 使用“默认安全”法缓解此类攻击。
“默认安全”是一种在启动时限制系统服务的操作系统状态。例如,没有默认的 GUI。
许多后台程序和管理命令所分配的权限仅够它们成功执行。许多后台程序运行时使用的是不具备 root
(UID=0) 权限的特殊管理帐户,因此无法劫持它们执行其他任务。这些特殊的管理帐户不能登录。
无论采用何种配置,非全局区域的 root
用户都无法获得全局区域的所有权限。有些命令本来就是设计成用户不能在其区域内执行的。这加强了 Oracle Solaris 区域的安全状况。
可以在区域内使用 ppriv
(1) 命令查询权限列表:
root@user-zone:~# ppriv -l zone contract_event contract_identity contract_observer ...
Rootkit 通过自定义内核模块插入恶意代码,是严重威胁。Oracle Solaris 区域技术拒绝授予区域 sys_config
权限,可防止加载或卸载内核模块。这限制了攻击面,并可防止这种形式的攻击。
在以下示例中,我们可以看到,即使 root
用户也不能在区域中加载自定义内核模块:
root@user-zone:~# ppriv -De modload -p /tmp/systrace modload[21174]: missing privilege "ALL" (euid = 0, syscall = 152) needed at modctl+0x52 Insufficient privileges to load a module
Oracle Solaris 区域技术还保护系统在运行时系统二进制文件和配置不会被恶意或意外篡改。此功能称作“不可变区域”,有关进一步介绍,请参见“配置和管理不可变区域”。
强制写访问控制 (MWAC) 内核策略通过 zonecfg file-mac-profile
属性实施文件系统写权限。全局区域不受 MWAC 策略影响,因此全局区域可以写入非全局区域的文件系统进行安装、映像更新和维护。
可以将 file-mac-profile
设置为以下某个值,从而提供灵活的操作系统强化策略。使用这些策略的好处是可以根据操作系统暴露于安全风险下的程度灵活地更改强化策略。
例如,对于内部网络,可以使用 flexible-configuration
策略;对于 DMZ 等安全性较低的环境,可以使用更安全的 fixed-configuration
或 strict
策略。
none
(默认值)。提供标准读写非全局区域,没有超出现有 Oracle Solaris 区域边界的额外保护。将 file-mac-profile
值设置为 none
等同于未设置其值。strict
。强制为只读文件系统;无例外。fixed-configuration
。允许更新 /var/*
目录,包含系统配置组件的目录除外。syslog
和审计配置。flexible-configuration
。允许修改 /etc/*
目录中的文件、更改 root
主目录以及更新 /var/*
目录。 syslog
和审计配置。快速弹性的自助式服务是云供应的精髓。这就要求云基础架构必须非常动态、灵活。仍须验证用户身份,且活动必须根据授予特定权限进行授权。
操作系统必须对供应、使用或发布云服务进行授权并负责验证用户身份。Oracle Solaris 为授予特定授权、权限和权利提供了多种访问配置文件。
访问配置文件将传统超级用户 (root
) 的责任分配给被称为基于角色的访问控制 (RBAC) 方案中的多个角色。RBAC 允许使用一组具有不同权限的角色替代全能的超级用户(授予该用户所有权限)。例如,可以创建一个角色来处理用户帐户创建,而另一个角色可以处理系统文件修改。创建了处理一个功能或一组功能的角色后,即可从 root 超级用户的权限中删除这些功能。通过微调将权限分散给不同角色,然后这些角色可以分配给不同帐户或彼此隔离,从而避免漏洞集中于某一点。
root
用户可以读写任何文件、运行所有程序以及向任何进程发送 kill 信号。具体而言,如果入侵者成为超级用户,即可轻松修改站点的防火墙、更改审计跟踪、读取机密记录和关闭整个网络。以 root 权限运行的程序(所谓的 setuid
程序)具有类似的全能权限。劫持一个 setuid
程序会给系统带来极大危害。
作为超级用户的替代品,RBAC 使用最小权限 的安全原则。最小权限意味着用户只具备执行任务所必需的最低限度的权限。RBAC 将超级用户功能集中到权限配置文件 中。然后,将这些权限配置文件分配给被称为角色 的特殊用户帐户。普通用户只具备运行其应用、检查其作业状态、打印文件、新建文件及其他典型活动所需的权限。除此之外的功能显式包括在不同权限配置文件中。对于需要采取的操作所需的权限超出这些基本权限范围的用户,将为其分配一个角色,授予该操作所需的相应权限。
权限配置文件可以提供各种功能。例如,System Administrator 权限配置文件所建立的角色可以执行与安全无关的任务,如打印机管理和 cron 作业。权限配置文件也可以定义得很窄。例如,Cron Management 权限配置文件管理 at 和 cron 作业。创建角色时,可以为角色分配宽范围的功能,也可分配窄范围的功能,或者二者皆有。
下面列出所有授权:
root@global_zone:~# getent auth_attr | more solaris.:::All Solaris Authorizations::help=AllSolAuthsHeader.html solaris.account.:::Account Management::help=AccountHeader.html ... solaris.zone.login:::Zone Login::help=ZoneLogin.html solaris.zone.manage:::Zone Deployment::help=ZoneManage.html
下面列出所有权限配置文件:
root@global_zone:~# getent prof_attr | more All:::Execute any command as the user or role:help=RtAll.html Audit Configuration:::Configure Solaris udit:auths=solaris.smf.value.audit; help=RtAuditCfg.html ... Zone Management:::Zones Virtual Application Environment Administration: help=RtZoneMngmnt.html Zone Security:::Zones Virtual Application Environment Security:auths=solaris.zone.*, solaris.auth.delegate;help=RtZoneSecurity.html ...
虽然拒绝服务 (DoS) 攻击可以采取多种形式,但 Oracle Solaris 11 拥有专门防御这些攻击的特性。通常,意外和故意 DoS 攻击都采取耗尽合法用户资源(如内存、处理器周期或网络带宽)的任务的形式。下面讨论一些 DoS 攻击形式及应对它们的特性。
Oracle Solaris 资源管理特性可以限制对特定资源的访问,防止应用不加区别地消耗资源。
恶意进程或写得不好的进程可能尝试拒绝其他进程正确分配内存。一种方式是重复分配内存,直至耗尽所有虚拟内存(RAM 和交换空间)。之后,任何进程若想分配内存,都会失败。实际上,在这些情况下,很少有应用能继续正常工作。区域允许分配的最大虚拟内存量可以在创建区域时使用 zonecfg
命令设置。
最常见的 DoS 攻击都是由目标计算机上运行的霸道的代码造成的,该代码尽可能多地占用 CPU 周期。也在系统上运行的合法负载得不到使用系统 CPU 的机会,可能会变得无法正常工作,从而会失败。可以通过为区域设置 CPU 份额限制来防止这种情况。
在以下示例中,zonecfg
将为一个新区域创建环境,设置该区域的公平共享调度程序 (FSS) CPU 份额数限制。该示例还显示了如何选择给定资源进行修改。
root@global_zone:~# zonecfg -z user-zone user-zone: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:user-zone> create zonecfg:user-zone> set zonepath=/zones/user-zone zonecfg:user-zone> set autoboot=true zonecfg:user-zone> set cpu-shares=5 zonecfg:user-zone> add capped-memory zonecfg:user-zone:capped-memory> set physical=5g zonecfg:user-zone:capped-memory> set swap=6g zonecfg:user-zone:capped-memory> end zonecfg:user-zone> exit
一个众所周知的过度消耗系统资源的 DoS 攻击是 fork 炸弹。此方法并不一定会消耗大量内存或 CPU 资源,而是旨在让 Oracle Solaris 内核进程表中的进程槽达到饱和。在 Oracle Solaris 中,一个运行中的进程开始只执行一个线程,又称为轻型进程 (LWP)。许多程序生成新线程,成为多线程进程。默认情况下,64 位内核的 Oracle Solaris 系统可以同时运行 85000 多个 LWP。尚未运行任何应用的启动区域有大约 100 至 150 个 LWP。为防止区域使用过多 LWP,可以使用 zonecfg max-lwps
属性设置限制,限制此区域同时可用的最大 LWP 数。
以下命令设置每区域限 300 个 LWP:
root@global_zone:~# zonecfg -z user-zone 'set max-lwps=300'
重启区域令此限制生效:
root@global_zone:~# zoneadm -z user-zone reboot
可以在全局区域中使用 prstat -LZ
命令监视一个区域使用的 LWP 数。
注:Oracle Solaris 可以限制其他类型的资源,如共享内存;更多示例,请参见 zonecfg
(1M)。
可以使用 prctl
命令检索正在运行的区域的资源控制。例如,以下命令显示如何检索 user-zone
资源控制:
root@global_zone:~# prctl -i zone user-zone
有关系统资源监视的更多示例,请参见“多租户云环境中的性能分析”。
Oracle Solaris 11 提供了两种网络资源管理技术:带宽控制 和流。
可以在全局区域中的 VNIC 上配置带宽控制,限制特定区域通过该区域的 VNIC 发送和接收的网络流量。
云管理员可使用 VNIC 的 maxbw
属性和 dladm
命令限制 VNIC 的吞吐量。
例如,将(上一示例中创建的)VNIC vnic0
最大吞吐量设置为 500 Mb/秒,可以有效地限制它只能使用物理数据链路(网络端口 net0
)连接带宽的一部分。
root@global_zone:~# dladm set-linkprop -p maxbw=500M vnic0
使用 dlstat
命令检测网络流量峰值,可以监视运行时数据链路统计信息。
Oracle Solaris 11 利用流提供具有细粒度网络带宽控制的高级服务质量 (QoS)。
流采用自定义方式对数据包进行分类,以进一步控制如何使用资源处理这些数据包。网络数据包可根据属性进行分类。共享某一属性的数据包构成一个流,使用特定的流名称作为标签。然后可为该流分配特定资源。
作为流创建基础的属性源于数据包头中的信息。数据包流量可根据以下任一属性组织成流:
可对同一数据链路同时应用带宽控制和流。
在以下示例中,vnic1
网络接口上的 HTTPS(TCP 端口 443)流量限制为 100 Mb/秒。这对于缓解针对 Web 服务器的 DoS 攻击很有帮助。将区域的 HTTPS 最大网络带宽设置为 100 Mb/秒,可限制 DoS 攻击对基础架构其余部分的影响。
在以下示例中,网络接口上的 SSL 流量限制为 100 Mb/秒:
root@global_zone:~# dladm create-vnic vnic1 -l net0
root@global_zone:~# flowadm add-flow -l vnic1 -a \ transport=TCP,local_port=443 https-flow
在上述命令中,-l
指定链路名称,-a
指定流属性:transport
(TCP) 和 port
(443)。https-flow
是流的名称。
root@global_zone:~# flowadm set-flowprop -p maxbw=100M https-flow
maxbw
是以此流标识的数据包可以使用的最大链路带宽量。
图 2 显示了上例中实施的限制:
图 2. 实施流和资源控制示例
可以在非全局区域或全局区域中使用 flowstat
命令监视 VNIC 的流统计信息。
有关网络监视的更多示例,请参见“使用 Oracle Solaris 11 工具进行高级网络监视”。
设置这些限制之后,最大限度减小了针对此 Web 服务器的任何 DoS 攻击对基础架构其余部分的影响。
保留系统活动的审计跟踪至关重要。审计通过揭示可疑或异常的系统使用模式,有助于检测潜在的安全漏洞。审计还可以顺藤摸瓜,由可疑操作追踪到特定用户。如果用户知道其活动正被审计,他们不太可能尝试恶意活动。
保护计算机系统(尤其是网络上的系统)需要在系统进程或用户进程启动之前通过各种机制控制活动。安全性要求采用各种工具监视进行中的活动,并在活动结束后提供报告。
可以使用 Oracle Solaris 11 审计特性提供所有系统活动和管理操作的详细记录。
系统针对特定事件生成审计记录,如下所示:
审计服务监视整个系统,包括区域中的活动。安装了非全局区域的系统可以运行单一审计服务对所有区域执行相同的审计。也可以每个区域(包括全局区域)运行一个审计服务。
按区域审计的好处是可以对每个区域定制审计跟踪,并且可以逐个区域禁用审计。但这会产生一些管理开销。每个区域管理员都必须管理审计。而且,每个区域必须运行自己的审计后台程序,使用自己的标志和审计策略。
您可以指示审计服务将审计队列中的某些或全部审计记录复制到远程 syslog
服务器。使用 syslog
远程存储审计记录,可以保护日志数据不被攻击者修改或删除。syslog
记录提供了更大的便利性和灵活性。例如,除了拥有一个集中的审计信息库,您还可以从多种来源收集 syslog
数据,关联不同类型的数据。
下面的示例选择要发送到 syslog
服务的审计类。
root@global_zone:~# auditconfig -setplugin audit_syslog active \ p_flags=lo,+as,-ss
该命令配置 syslog
服务,并在 syslog.conf
文件中添加一个 audit.notice
条目。此条目包括远程 syslog
服务器的名称或 IP 地址:
可以运行以下命令查看远程系统的条目:
remote1.root@global_zone:~# cat /etc/syslog.conf ... audit.notice @remote1
remote1
系统上的 syslog.conf
文件中的 audit.notice
条目指向日志文件:
root@remote1 # cat /etc/syslog.conf ... audit.notice /var/adm/auditlog
在远程系统上,创建日志文件:
root@remote1:~# touch /var/adm/auditlog
刷新 syslog
服务的配置信息:
root@global_zone:~# svcadm refresh system/system-log
刷新审计服务。审计服务在刷新时读取更改:
root@global_zone:~# audit -s
注:您可以将审计文件发送至远程审计信息库,而不是发送至 syslog
。有关更多信息,请参见 audit_remote
(5) 手册页面。
作为如何可以使用原生 Oracle Solaris 11 特性为用户数据和应用提供高安全性的真实示例,我们来看看 Oracle Solaris 远程实验室。我们在这个有关云构建的系列文章的第 1 部分中已经介绍过 Oracle Solaris 远程实验室,它是一个虚拟实验室,让用户能够通过安全的 Web 浏览器远程访问运行 Oracle Solaris 11 的虚拟机。Oracle Solaris 远程实验室采用 Oracle Solaris 11 实现,充分展示了 Oracle Solaris 11 虚拟化和安全特性。
实验室中以 Oracle Solaris 区域的形式实现了随时可用的“虚拟机”,可以是基于 SPARC 或基于 x86 的区域的任意组合。这些虚拟机在创建时预装了 Oracle 数据库、Oracle 融合中间件和/或 Oracle Solaris Studio。
用户首次访问实验室时,将为其分配一个唯一的 VLAN、一个私有 NFS 服务器以及一个私有 Oracle Secure Global Desktop 服务器(参见图 3)。用户的 NFS 服务器和 Oracle Secure Global Desktop 服务器链接到用户的唯一 VLAN。用户创建的虚拟机作为 Oracle Solaris 11 区域实现,并链接到该用户的 VLAN。因此,VLAN 便于与用户关联的所有网络通信,并于将该用户的网络通信与其他用户的网络通信隔离。
图 3. 使用 Oracle Secure Global Desktop 服务器、NFS 服务器以及基于 SPARC 和 x86 的 Oracle Solaris 区域实现的 Oracle Solaris 远程实验室。
分配给每个用户的私有 NFS 服务器实际上是作为拥有大规模存储的服务器上的各个 Oracle Solaris 11 区域实现的。通过让每个用户的 NFS 服务器成为一个区域,可以将分配给每个用户的存储与分配给其他用户的存储隔离。
同样,处理用户客户端系统与用户虚拟环境之间通信的私有 Oracle Secure Global Desktop 服务器也是作为拥有大量内存的服务器上的各个 Oracle Solaris 11 区域实现的。同样,使用区域可以将该用户通信与其他用户的通信隔离。此私有服务器让用户能够通过命令行终端会话或全屏 Oracle Solaris 桌面访问其虚拟机,并在用户本地系统与实验室中分配的安全存储之间提供远程文件传输功能。
实验室的实际实现比图 4 中用户视图所示要复杂一些。它在一个安全的数据中心包括了三个前端系统,通过互联网与用户直接通信,并与另一个提供虚拟机服务器、Oracle Secure Global Desktop 服务器、NFS 服务器、ZFS 集中密钥管理和审计服务器的数据中心中的后端系统通信。防火墙保护这两个数据中心,数据中心之间的通信是加密的。
图 4. 有关 Oracle Solaris 远程实验室实现用户视图的更多详细信息。
Oracle Solaris 远程实验室大量使用了 ZFS 文件系统中的各种特性(包括集中密钥管理系统),以保护实验室中的所有用户数据、应用和虚拟机。
物理磁盘存储只能通过 ZFS 文件系统访问,绝对不能作为原始设备直接访问。实验室中的每个区域都拥有自己的文件系统,不能访问其他文件系统。
区域的根文件系统经过加密,区域中为用户创建的本地 ZFS 文件系统也经过加密。所有文件系统的加密密钥存储在集中密钥管理系统中,对区域用户不可见,即使是拥有区域 root 凭证的用户,如图 5 所示。
图 5. 所有文件系统的加密密钥都存储在集中密钥管理系统中。
以下示例演示如何使用集中密钥管理系统建立加密的 ZFS 数据集,然后创建一个区域,其根文件系统驻留在这个加密的 ZFS 数据集上。注意,在这种情况下,加密密钥存储在区域文件系统外的集中密钥管理系统中,不受区域用户管理,也不对其可见(即使是 root
)。
ZFS 可从任何支持对统一资源标识符 (URI) 执行简单 GET 请求的 Web 服务获取打包密钥或密码。
在以下命令中,-o encryption=on
启用加密,-o keysource=raw,https://keys.example.com/mykey
指定集中密钥管理系统的 URI,rpool/zones/user-zones
是 ZFS 数据集的名称。
root@global_zone:~# zfs create -o encryption=on -o \ keysource=raw,https://keys.example.com/mykey rpool/zones/user-zones
root@global_zone:~# zonecfg -z user-zone 'create ; set \ zonepath=/zones/user-zone'
root@global_zone:~# zoneadm -z user-zone install
zfs get
命令检索 ZFS 密钥位置,如以下示例所示:root@user-zone:~# zfs get encryption,keysource rpool/ROOT/solaris NAME PROPERTY VALUE SOURCE rpool/ROOT/solaris encryption on inherited from $globalzone rpool/ROOT/solaris keysource passphrase,https https://keys.example.com/mykey inherited from $globalzone
请注意,密钥是从全局区域继承的。
有关使用加密 ZFS 数据集的 Oracle Solaris 区域的更多示例,请参见“加密 ZFS 上的不可变区域”。
租户在实验室中的项目完成后,必须删除虚拟机和私有 NFS 服务器中的所有数据,确保不能以任何方式恢复这些数据,即便是尝试绕过文件系统层直接从硬盘块检索数据也无法恢复这些数据。
实验室使用带安全密钥的 ZFS 加密,可以在项目结束后轻松地令数据不可读。将区域设置为待删除时,其本地文件系统的 ZFS 加密密钥会更改为一组随机的字节,不予保存。请注意,即使云管理员也不知道新密钥,因为密钥基于随机字节;这样,云提供商的运营团队也无法访问此数据。然后,使用新密钥删除区域及其 ZFS 文件系统。此方法提供了一种快速、安全的删除方式,确保即使在丢弃区域之后,也无法访问区域中存储的任何数据。
以下示例确保删除了 ZFS 数据集 rpool/zones/user-zone
。
root@global_zone:~# zfs key -c -o raw,file:///dev/random \ rpool/zones/user-zone
root@global_zone:~# zfs key -u rpool/zones/user-zone
root@global_zone:~# zfs destroy rpool/zones/user-zone
请注意,实验室中的所有区域(无论是用作用户区域、NFS 文件系统还是 Oracle Secure Global Desktop 服务器)均使用 ZFS 加密,当不再需要它们时,使用此方法安全地删除。
在实验室中,用户与其虚拟机之间的通信利用了 Oracle Secure Global Desktop 的网关特性,在 Oracle Secure Global Desktop 阵列前面的 DMZ 中部署一个 Oracle Secure Global Desktop 网关。
网关与该阵列之间的连接采用了 SSL 加密,是安全的。在实验室中,为每个云租户分配一个唯一的 VLAN,以容纳其虚拟机(区域)、私有 Oracle Secure Global Desktop 服务器(上述阵列的成员)及私有 NFS 文件系统之间的通信。用户无权访问 VLAN 的详细信息,降低了可能的入侵者攻击的风险。用户通信通过 Oracle Secure Global Desktop 网关中的智能代理转发到该用户的 VLAN 段,如图 6 所示。
图 6. 通过 Oracle Secure Global Desktop 网关确保通信安全
Oracle Solaris 远程实验室利用 Oracle Solaris 11 的 VLAN 功能,为每个云租户分配一个唯一的 VLAN 标记,共享同一物理基础架构的同时隔离每个租户的网络通信与其他租户的通信。如前所述,每个租户都分配了一个唯一的 VLAN,用户无权访问其 VLAN 的任何详细信息。
例如,图 3 显示了三个用户,每个用户属于不同的云租户,每个云租户拥有一个私有 Oracle Secure Global Desktop 服务器和一个私有 NFS 服务器以及若干 VM,其网络通信通过 VLAN 彼此隔离。
该实验室还采用 Oracle Solaris 11 防火墙隔离租户 VLAN 之间和不同应用组件(如实验室前端和后端)之间的网络通信。
作为强化操作系统概念的扩展,应用可以部署在 Oracle Solaris 区域中。Oracle Solaris 区域在应用网络服务与底层全局区域的操作系统之间又增加了一个隔离层。如果攻击服务成功,只会影响该区域,底层操作系统不受影响。这种隔离可防止攻击者使用如“虚拟机逃逸”等方法将其控制扩大到作为云租户所分配的资源之外。
在实验室中,Oracle Secure Global Desktop 服务器的每个区域都是作为不可变非全局只读区域实现的,阻止了对该区域中系统二进制文件或系统配置的修改。如果入侵者能够闯入某用户的 VLAN,尝试打开与其他机器的连接,并可能访问其他用户的 VLAN,但也无法修改 Oracle Secure Global Desktop 服务器区域。
使用 zonecfg
命令在全局区域中执行的区域配置指定了 file-mac-profile
属性。
例如,以下命令显示如何更改区域的强制写访问控制 (MWAC) 内核策略,然后重启区域,实施此策略。
root@global_zone:~# zonecfg -z osgd-zone \ 'set file-mac-profile=fixed-configuration' root@global_zone:~# zoneadm -z osgd-zone reboot
如果我们以 root
身份登录 Oracle Secure Global Desktop 区域,并尝试安装新的软件包或添加新用户,尝试将被阻止,如下例所示:
root@global_zone:~# zlogin osgd-zone root@osgd-zone:~# pkg install wireshark pkg install: Could not complete the operation on /var/pkg/lock: read-only filesystem. root@osgd-zone:~# useradd alice UX: useradd: ERROR: Cannot update system - login cannot be created.
注:您可以在创建区域时启用 file-mac-profile
属性。
Oracle Solaris 区域技术的一个重要特性就是能够将一个区域中的进程与其他区域(甚至全局区域)中运行的进程隔离。这种隔离可防止一个区域中运行的进程监视或影响其他区域中运行的进程。即使是区域中具有超级用户功能运行的进程也不能查看或影响其他区域中的活动。
考虑全局区域中运行的以下 MySQL 进程:
root@global_zone:~# ps -ef | grep mysqld mysql 14423 14246 014423 14246 0 Feb 06 ? 13:00 /usr/mysql/5.1/bin/mysqld …
我们可以看到,如果尝试从非全局区域观察此进程,会发现该进程不可见:
root@user-zone:~# ps -fp 14423 UID PID PPID C STIME TTY TIME CMD
同样,在非全局区域中运行的进程对其他非全局区域也不可见。
前面“身份验证和授权”部分介绍了几个与 Oracle Solaris 11 中身份验证和授权有关的示例。默认情况下,该实验室利用所有这些 Oracle Solaris 11 特性。
前面“拒绝服务攻击”部分介绍了几个 DoS 攻击以及应对这些攻击的 Oracle Solaris 11 特性的示例。创建云租户的虚拟机时设置了一些限制,以限定对内存、处理器和进程表的使用。
该实验室广泛利用审计功能,为在实验室中跟踪任何故障找到错误根源和跟踪可能的安全违规找到源头提供了一种方法。
Oracle Solaris 远程实验室是基于 Oracle Solaris 11 特性的安全云平台的一个示例。该实验室实现满足了云中各层的安全需求:网络、存储和操作系统虚拟化求。由于所有构建块都是 Oracle Solaris 11 操作系统中内置的,此实验室是整体安全方法的典范。
为确保云租户之间不会构成数据丢失、数据滥用或隐私泄露的威胁,必须采取相应的安全措施。云服务提供商必须为其产品(如基础设施即服务 (IaaS) 和软件即服务 (SaaS))的所有层提供多租户保护。
Orgad Kimchi 是 Oracle(之前任职于 Sun Microsystems)ISV 工程小组的首席软件工程师。6 年来,他一直专注于虚拟化、大数据和云计算技术。
Ron Larson 从事计算行业工作长达 45 年,在计算机和软件系统设计、原型开发和实施方面拥有丰富经验。目前他是 Oracle Solaris 远程实验室项目的项目经理。
Richard Friedman 是一位自由技术撰稿人,在高性能计算、软件应用开发和编程语言方面拥有 30 多年的从业经验。
修订版 1.0,2014 年 8 月 6 日 |