使用 SESAME 保护联网应用程序
安全性对于内联网和互联网应用程序而言正变得越来越重要。我们几乎每天都听到互联网上发生新的安全事件,网站被入侵或敏感数据被攻击者捕获。有很多解决方案可以共同保护您的网络安全。
首先是防火墙,其目的是控制网络之间的访问。通常,它们用于站点的互联网连接处,以控制谁可以进出站点内部网络和互联网之间。在某些内联网中,防火墙也用于控制网络内部的访问。
然而,防火墙并非解决方案的终点。防火墙无法保护防火墙后面的应用程序免受内部攻击,也无法保护需要通过防火墙通信的应用程序。我们需要一种保护应用程序的方法;应用程序的客户端和服务器部分需要验证彼此的身份(身份验证),并且跨网络传输的数据必须受到保护,防止未经授权的查看(保密性保护)或修改(完整性保护)。
我们最近将 SESAME 移植到了 Linux,对于任何需要在 Linux 上保护其应用程序的人来说,它都是一个很棒的工具。SESAME 也可在各种其他 Unix 平台上使用,因此您的 Linux 系统也能够与这些平台协同工作。
SESAME 安全架构是 Kerberos 的扩展,Kerberos 可以说是迄今为止最著名和最成功的网络安全架构(http://web.mit.edu/kerberos/www/index.html)。Kerberos 是在 MIT 开发的,从 1985 年左右开始,作为 Athena 项目的一部分。Kerberos 被设计为网络身份验证服务。它还在数据传输过程中提供保密性和完整性服务。
Kerberos 使用受信任的第三方模型工作。也就是说,在网络上的某个地方存在一个 Kerberos 身份验证服务器,它可以验证客户端和服务器的身份,并向另一方提供身份验证的证明。身份验证实际上是通过客户端(代表用户)和服务器向 Kerberos 身份验证服务器提供证明来完成的,证明他们知道 DES 加密密钥(用户和服务器与 Kerberos 身份验证服务器共享他们的 DES 加密密钥)。
如果以行业接受度为指导,Kerberos 是非常成功的。它现在被广泛用于保护网络安全,尽管在许多情况下您可能没有意识到您实际上正在使用它。例如,Kerberos 内置于许多操作系统中,为 Linux 和 Solaris 上的 rtools 和 NFS 提供安全性,并且它被用作 Windows NT 上密码库的基础。它也是许多防火墙实现的一部分。
Kerberos 是为封闭的内联网环境设计的,在这种环境中,用户和应用程序由一个管理机构管理。尽管 Kerberos 对于这种隔离的网络来说是一个很好的安全架构,但它在扩展到大型互联网络环境(例如,互联网)时存在问题。Kerberos 有两个主要问题限制了其可扩展性:使用 DES 加密密钥进行身份验证以及缺少用户权限(授权)服务。
由于使用 DES 加密密钥进行身份验证而导致的可扩展性不足被称为密钥管理问题。为了在这种安排中实现客户端或服务器与 Kerberos 身份验证服务器之间的身份验证,系统管理员需要生成一个 DES 加密密钥并安全地与所涉及的两方共享。在只有一个系统管理员小组的小型网络中,这是一个可行的解决方案,但在大型互联网络中,安全地共享密钥是很困难的。
Kerberos 也缺少授权服务。当代表用户的客户端应用程序连接到服务器时,服务器需要知道用户的权限。Kerberos 依赖于用户的权限已经存储在服务器计算机上的事实。例如,用户在服务器上有一个帐户,或者服务器应用程序知道用户的权限。这种安排是不可扩展的,因为在大型互联网络中,肯定不可能为每台服务器计算机配置每个可能的用户的权限。我们需要另一种方法供服务器收集用户的权限。
SESAME 是多供应商环境应用程序的安全欧洲系统 (http://www.esat.kuleuven.ac.be/cosic/sesame.html)。有些人称之为 Kerberos 的欧洲同等物,但实际上它是一个经过大大改进的安全架构。SESAME 提供 Kerberos 的完整身份验证服务,包括传输过程中的保密性和完整性,并在此基础上添加了授权服务和公钥密码学。这两个附加功能使 SESAME 比 Kerberos 更容易扩展到大型网络环境。它还添加了一个出色的审计系统,并提供了一种特权委派方案。
SESAME 的设计也完全独立于平台。它使用基于角色的访问控制模型,使 SESAME 能够轻松地与许多操作系统互操作。
SESAME 的开发始于 1990 年左右,由 ICL、Bull 和 Siemens Nixdorf 共同开发,目前的版本是 SESAME Version 4(这是我们为 Linux 提供的版本)。
SESAME 具有类似于 Kerberos 的身份验证服务器,但在此基础上添加了一个特权属性服务器。这里的想法是,用户不仅可以被身份验证,还可以被赋予特权,这些特权可以在需要时呈现给服务器。这允许用户访问不知道用户的服务器,但能够验证提供的特权。SESAME 还允许基于公钥技术进行身份验证(以及标准的 Kerberos DES 加密密钥方法)。
SESAME 也正在获得行业的认可。ICL Access Manager (http://www.icl.co.uk/access/) 和 ISM Access Master (http://www.ism.bull.net/) 是基于 SESAME 的商业产品。这些产品正被用于保护大型互联网范围的网络。
SESAME 提供了通用安全服务应用程序员接口 (GSSAPI),这是一个安全例程库。该库的目的是提供一种标准方法来保护客户端/服务器联网应用程序,并且 GSSAPI 现在是一个互联网标准 (RFC1508)。我们使用 GSSAPI 的经验是,它足够小,易于理解(只有大约 20 个例程),尽管需要一些时间才能理解每个例程的所有可能性。GSSAPI 在保护应用程序方面正变得越来越流行,而 SESAME 版本的 GSSAPI 提供了完整的实现。
图 1 显示了一些 GSSAPI 代码片段。在代码片段中,客户端已通过身份验证连接到服务器,并且数据在传输过程中受到保护。该片段突出了这样一个事实:只需在您的客户端和服务器应用程序中添加十几行左右的代码即可保护它们的安全(变量声明除外)。在代码片段中,仅客户端通过了身份验证,但只需添加几行额外的代码,服务器也可以通过身份验证连接到客户端。
为了保护您的客户端/服务器应用程序,您需要在代码中的适当位置插入 GSSAPI 库调用,然后重新构建应用程序。在很短的时间内,就有可能将不安全的应用程序转换为安全的应用程序,这取决于您的应用程序结构化程度如何。
SESAME 已经在各种平台上可用:Bull DPX 20 上的 AIX 3.2、SNI MX300i 上的 SINIX (Unix SVR4)、ICL DRS6000 上的 Unix SVR4 和 IBM RS6000 上的 AIX 3.2。我们花费了大约 12 个月的时间将 SESAME 移植到 Linux。主要问题是
SESAME 源代码对构建它的 Unix 环境做出了许多假设。这些假设包括 Unix 程序脚本中的绝对路径,假设根目录是 /(在我们的例子中是 /root)等等。
文档非常详尽,但仍然没有使构建和配置系统变得容易。信息的顺序并不总是合乎逻辑,并且在某些部分过于简短。
代码存在一些内存错误。这些错误包括数组越界和内存泄漏。
在保护了许多应用程序之后,我们对 Linux 版本的 SESAME 的稳定性感到满意。它已经在澳大利亚、欧洲和北美使用。我们编写了全面的构建、安装和配置指南,并提供了一些报告来帮助您在网络上运行 SESAME (http://www.fit.qut.edu.au/~ashley/sesame.html)。
要使 SESAME 工作,您首先需要从欧洲网站(在 SESAME 部分的开头列出)下载源代码,然后下载我们的 Linux 补丁来修改源代码并为您构建 SESAME(我们已将其自动化为一行执行)。之后,您按照我们的安装和配置指南进行操作,其中描述了如何启动 SESAME 安全服务器、如何为用户设置帐户以及如何创建将用于您的安全的加密密钥。SESAME 的新管理员可能需要大约两天的时间才能使 SESAME 工作并了解他们在做什么。
我们还在努力为 Linux 构建 SESAMIZED 应用程序库。在与其他 SESAME 开发人员的合作中,我们专注于生产 SESAMIZED TELNET、FTP、rtools 和 NFS。这项开发正在进行中,目的是为 Linux 网络提供全面的应用程序套件。
我们的移植工作主要集中在 Red Hat Linux 上。除了我们将其用于相关工作之外,没有特别的原因使用这个版本的 Linux。第一个移植版本在 Red Hat Version 3.0.3 上完成,尽管最近我们使其在 Red Hat Version 4.1 上工作。我们还在 Slackware Linux 上尝试了 SESAME,它无需任何修改即可工作。
SESAME 是一种先进的、可扩展的网络安全架构。SESAME 的 GSSAPI 允许您快速保护您的客户端/服务器应用程序。它提供 Kerberos 的所有服务,并具有随着网络增长而可扩展的额外优势。SESAME 现在可用于 Linux,并提供全面的文档,并且正在开发用于 Linux 的全面的 SESAMIZED 应用程序套件。

