DSI:安全的运营商级 Linux
电信行业对集群的兴趣源于这样一个事实:集群使用经济高效的硬件和软件来解决运营商级特性,例如保证服务可用性、可靠性和可扩展的性能。这些运营商级要求现在包括高级别的安全性。然而,很少有努力构建一个连贯的分布式框架,以便在集群系统中提供高级别的安全性。
在爱立信研究院,我们的工作目标是在大规模 Linux 运营商级集群上运行的软实时分布式应用程序。这些集群必须不间断地运行,并且必须允许操作员在运行期间升级硬件和软件,而不会干扰在其上运行的应用程序。在这样的集群中,集群内部节点之间以及与外部计算机的通信受到限制。
在本文中,我们介绍了开发新的安全架构 DSI(分布式安全基础设施)背后的基本原理。DSI 支持不同的安全机制,以满足在运营商级 Linux 集群上运行的电信应用程序的需求。DSI 为这些电信应用程序提供分布式机制,用于访问控制、身份验证、审计和通信完整性。
存在许多用于集群服务器的安全解决方案,但没有专门用于集群的解决方案。
最常用的安全方法是将几个现有的解决方案打包在一起。然而,这些不同软件包的集成和管理非常复杂,并且常常导致不同安全机制之间缺乏互操作性。当集成许多软件包时,还会出现其他困难,例如系统维护和升级的简易性,以及难以跟上大量的安全补丁。
运营商级集群对性能和响应时间有非常严格的限制,这使得安全解决方案的设计变得困难。事实上,许多安全解决方案由于其高资源消耗而无法使用。
当前实施的安全机制基于用户权限,并且不支持对属于同一系统但在不同处理器上的两个进程之间的交互进行身份验证和授权检查。然而,对于电信应用程序,只有少数用户会在没有任何中断的情况下长时间运行相同的应用程序。
应用上述概念将为在不同节点上创建的所有进程授予相同的安全权限。这将导致对分布式系统中许多操作不进行安全检查。
作为运营商级 Linux 集群的一部分,DSI 必须符合运营商级对可靠性、可扩展性和高可用性的要求。此外,DSI 还支持以下要求:1) 连贯的框架:安全性必须在异构硬件、应用程序、中间件、操作系统和网络技术的不同层之间保持连贯。所有机制必须协同工作,以防止系统中出现任何可利用的安全漏洞。2) 进程级方法:DSI 基于细粒度的基本实体,即进程。3) 最小的性能影响:安全功能的引入不得带来高性能损失。可以预期在初始建立安全上下文期间性能会略有下降;然而,对后续访问的影响必须可以忽略不计。4) 先发制人的安全性:安全上下文的变化将立即反映在正在运行的安全服务上。每当主体的安全上下文发生变化时,系统将根据这个新的安全上下文重新评估其当前对资源的使用。5) 动态安全策略:必须能够支持分布式安全策略中的运行时更改。运营商级服务器节点必须提供持续且长期的可用性;因此,不可能中断服务来执行新的安全策略。6) 透明密钥管理:生成加密密钥是为了保护连接的安全。这导致必须安全地存储和管理大量密钥。
DSI 有两种类型的组件:管理组件和服务组件。DSI 管理组件定义了一个薄层,包括安全服务器、安全管理器和安全通信通道(图 1)。服务组件定义了一个灵活的层,可以根据需要通过添加、替换或删除服务来修改或更新。
安全服务器是 DSI 中管理的核心点,是安全操作和管理以及入侵检测系统的入口点。它还通过向所有安全管理器广播分布式策略中的更改来定义整个集群的动态安全环境。

图 1. DSI 的分布式架构
安全管理器在集群的每个节点上强制执行安全策略。它们负责在本地强制执行安全环境中的更改。安全管理器仅与安全服务器交换安全信息。
安全通信通道在安全代理之间提供加密和身份验证的通信。安全服务器与集群外部世界的所有通信都通过安全通信通道进行。两个节点(为了避免单点故障)托管安全服务器和不同的安全服务提供商,例如证书颁发机构。
安全机制基于广为人知、经过验证和测试的算法。用户不得能够绕过这些机制;因此,强制执行安全性的最佳位置是在内核级别。所有必要的安全决策都在内核级别实施,与主安全管理器组件相同,主安全管理器组件在内核中具有存根。这些存根通过加载模块实现。
每个节点的 DSI 架构都基于一组松耦合的服务。每个服务在创建时都会向本地安全管理器发送存在公告,本地安全管理器会注册这些服务并向内部模块提供其访问机制。两种类型的服务,安全服务(访问控制、身份验证、集成、审计)和安全服务提供商(例如,安全密钥管理),在用户级别运行,并为安全管理器提供服务。
到目前为止,已经为无盘 Linux 服务器实施了安全启动机制。通过使用带有数字签名的安全启动,在集群节点的启动时将可以使用分布式可信计算基础 (DTCB)。安全启动时的内核足够小,可以彻底测试漏洞。此外,对二进制文件使用数字签名和本地证书颁发机构将防止对 DTCB 的恶意修改。
我们还实施了一个基于 Linux 安全模块 (LSM) 的安全模块,该模块将安全策略作为 DSI 访问控制服务的一部分强制执行。该模块与 SCC 集成,以实施分布式访问控制机制。DSI 当前在整个集群的进程级别支持先发制人和动态安全策略。
为了简化分布式安全策略的管理和维护,我们正在完成一项研究,以设计重用已包含在软件包管理系统(例如 RPM)中的信息的方法,以便生成部分安全策略或将此类信息推送到软件包(如果这是指定此类信息的最佳位置)。这项工作还旨在利用该策略在软件安装、配置、激活和执行期间提供明显不同的权限。用于表达策略的确切语言以及编译和加载机制的规范仍有待完成。
我们已经部分实施了一个基于 OmniORB 的安全通信通道,OmniORB 是 CORBA 的开源实现。SCC 逻辑在可移植性层之上实现,使得实现独立于所使用的任何通信中间件。选择 CORBA 作为 SCC 的通信中间件是出于许多因素的考虑,例如对分布式实时和嵌入式系统的支持以及互操作性。
我们对 DSI 的目标是使该框架开源,并让来自不同组织和开源倡议的人员参与到各种组件的设计和开发中。
图 2 展示了 DSI 的各种组件。所有带有问号的组件都开放设计和开发贡献。目前在爱立信研究院,我们正致力于实施核心 DSI,其中包括:安全通信通道、安全服务器、安全管理器、访问控制服务(包括 LSM)、安全策略生成、安全会话管理器和事件的分布式跟踪(作为审计服务的一部分)。

图 2. DSI 组件
来自爱立信研究院的 DSI 团队将出席渥太华 Linux 研讨会,就 DSI 进行三场专题演讲。我们还将出席在芝加哥举行的 2002 年 IEEE 集群会议。此外,爱立信研究院将于 6 月 24 日至 25 日在蒙特利尔主办年度开放集群组会议,这将使我们有机会向该组成员发表演讲,并让他们参与到 DSI 项目中。
该项目的网站已于 2002 年 6 月上线。它提供 DSI 技术报告、演示文稿、源代码以及其他贡献者的网站链接。由于篇幅限制,我们无法在本文中详细介绍 DSI。但是,请随时联系任何 DSI 团队成员(如下所列),以接收有关 DSI 架构、策略和源代码的详细论文,或讨论合作机会。
Ibrahim F. Haddad (Ibrahim.Haddad@Ericsson.com), Charles Levert (Charles.Levert@Ericsson.ca), Makan Pourzandi (Makan.Pourzandi@Ericsson.ca) 和 Miroslaw Zakrzewski (Miroslaw.Zakrzewski@Ericsson.ca)。
Marc Chatel (Marc.Chatel@lmc.Ericsson.se), Michel R. Dagenais (Michel.Dagenais@polymtl.ca), David Gordon (David.Gordon@Ericsson.ca), Bruno J. M. Hivert (Bruno.Hivert@Ericsson.com) 和 Dominic Pellerin (Dominic.Pellerin@Ericsson.ca)。