许多客户都将 Lotus Domino 用于其内联网或互联网 Web 站点。在这些环境中 —— 特别是在互联网上,保证 Domino 服务器的安全对于确保数据的完整性和 Web 站点的可用性来说至关重要。我们先前的 developerWorks Lotus 文章,“保证 Domino Web Server 的安全” 讨论了 Domino 安全模型以及如何通过 Web 身份验证、服务器安全性和数据安全性来保证 Web 服务器的安全。在本文中,通过使用一个最新客户的案例研究,您学习实现这些特性的具体配置和设置。本文假设您是一位有经验的 Domino 系统管理员。
本文分为以下几部分:
- 系统管理和使用 —— 如何分离访问和管理
- 案例研究架构 —— 单一 Domino 服务器环境架构
- Domino 服务器配置 —— 保证服务器安全的具体配置和设置
- 应用程序配置 —— DSAPI 过滤器如何用于提供较强的身份验证和授权控制
- 系统监控 —— 如何监控安全性和访问事件
在这个案例研究中,我们把用户分为两组。第一组包括 Web 应用程序用户,第二组包括服务器管理员。Web 应用程序组包含使用 Web 应用程序的内部和外部用户。第二组包含管理服务器操作系统和 Lotus Domino 服务器的内部管理员。没有从互联网执行的服务器管理,为了进一步确保这一点,删除了 webadmin.ntf 和 webadmin.nsf 数据库。这样,服务器管理仅仅由 Lotus Domino Administrator 客户机和 Secure Shell 工具(SSH)来执行,SSH 是一种只有内部管理员才可以使用的访问 Linux 服务器的加密方法。
这个案例研究中选择 Linux 有两个主要原因。Linux 不像其他操作系统那样易遭受病毒攻击,而且它提供了一种远程管理的安全方法。Linux 还提供了禁用操作系统中所有不必要的或者未使用的服务的能力,通过减少在服务器上运行的服务的数量来限制潜在的安全风险。
我们再把管理组分成两个子组,一个子组是操作系统的管理员,另一个子组管理 Lotus Domino 服务器。操作系统管理组负责所有操作系统功能,例如升级、备份、操作系统用户、组管理和 Lotus Domino 的安装。Lotus Domino 管理员负责用户和组的管理、服务器配置和服务器维护。
客户需要一个简单的外部 Web 站点,作为虚拟库的一部分,用来发布研究信息。虽然内容是私有的,但是数据量和所需特性非常适合于 Lotus Domino 环境,而且设计一个单台服务器解决方案就可以满足需求。
这个案例研究包括一台位于网络非军事区(DMZ)的单一的 Lotus Domino Web 服务器,并运行 SUSE Linux 和 Lotus Domino 7。本文演示的技术对任何操作系统都起作用;但是我们选择 Linux 而不选择 Microsoft Windows,因为 Linux 比较不容易成为病毒和黑客攻击的目标。我们使用 SSH 是因为它支持安全加密地访问远程 Linux 服务器,以及支持访问单一应用程序数据库。图 1 说明了这个案例研究的架构。
图 1. 案例研究架构
从互联网仅可以访问端口 80 和 443,从而保护服务器免受安全威胁。还可以看到从内网(通常定义为可信网络)只能访问端口 22、80、443 和 1352。这也限制了服务器暴露于任何内部恶意行为。表 1 描述了这些端口。
表 1. 网络端口定义
| 端口号 | 端口描述 |
|---|---|
| 22 | 安全 Shell(SSH) 是一个在远程机器上登录网络上任何一台计算机并执行命令的程序。它在不安全的通道中提供强壮的身份验证和安全通信。它通常用于 UNIX 或者 Linux 操作系统。 |
| 80 | 超文本传输协议(HTTP) 是 World Wide Web 使用的基本协议。HTTP 定义如何格式化和传送消息,以及 Web 服务器和浏览器应该采取何种行动响应各种命令。 |
| 443 | 安全套接字层(SSL) 使用一个加密系统,它使用两个密钥加密数据:一个是每个人都知道的公钥,另一个是只有信息接收者才知道的私(密)钥。SSL 对 HTTP 通信进行加密。 |
| 1352 | Notes 远程过程调用(NRPC) 是 Notes 客户机与 Domino 服务器之间或者两台 Domino 服务器之间的通信基础。推荐启用端口加密。 |
注意: 目标服务器位于两个防火墙之间。这个配置提供根据从可信网络还是从不可信互联网访问分配不同的权限和访问级别的能力。
这部分讨论用于这个案例研究的 Domino 服务器配置,包括与安全性最相关的 Domino Server 文档和 Configuration 文档设置。我们从 Domino Server 文档开始。对于 Lotus Domino 7 有两个新选项,它们并非必须应用于 Web 服务器,但是有助于外部域的管理。这两个选项是 “Compare public keys” 和 “Log public key mismatches”。
通常,一个组织的管理员通过外部域交叉证明他们的 ID。这两个选项允许实施公钥匹配。如果一个 ID 存在安全危险,那么应该通过创建一个新的 ID 生成一个新的公钥,在系统中锁定老的 ID。这些最高安全性级别的新设置如图 2 所示。
图 2. 公钥校验
服务器的所有 HTTP 通信强制使用 SSL 协议。如果配置 Domino Server 文档将所有的 HTTP 请求重定向到 SSL,那么强制所有的 HTTP 连接都使用 SSL。所有与服务器的匿名 SSL 连接也都被锁定。直到用户已经通过身份验证,服务器才向用户显示信息。Server 文档设置如图 3 所示。
图 3. Server Web 设置
按照 developerWorks Lotus 文章 “Trust Yourself: Become your own Certification Authority” 中的过程,生成 SSL 证书。
可以通过 Notes.ini NABWebLookupView 参数实施更强的互联网身份验证设置。该参数锁定除了用户名以外的所有其他名称变量,用户名列在视图的第一列用于完成查询。在这个案例研究中,我们只允许使用用户的通用名进行身份验证(例如,Matthew Milza)。如果一个用户尝试他的名称的任何其他变量,比如互联网电子邮件地址,将不允许他访问系统。
现在,我们在 Server Configuration 文档中配置 Notes.ini 设置参数,并在只使用通用名称排序的 Domino Directory 中创建一个称为 “($webaccess)” 的视图。视图的示例如图 4 所示,Configuration 文档的 Notes.ini 设置如图 5 所示。
图 4. Web 身份验证视图
图 5. NABWebLookupView 配置设置
使用 Lotus Domino,可以为 Lotus Notes 口令创建并管理口令策略;但是 Lotus Domino 仍然没有为 Web 身份验证提供开箱即用的口令策略功能。Lotus Domino 7 提供了在指定时间段后强制更改互联网口令的功能,可以依靠安全策略配置,加强口令质量和长度。Lotus Domino 7 也允许锁定用户帐户并在下一次身份验证时强制更改口令。
要实施更强的互联网口令策略,可以开发定制的身份验证 Domino Security API(DSAPI)过滤器,或者可以依据 LDAP 目录进行身份验证。大多数 LDAP 目录能实施足够的口令策略。
我们的解决方法需要一套比较完整的 ID 管理特性,如下所示:
- 单独的帐户到期和口令到期规则
- 口令质量、长度和特殊字符校验
- 以前使用过的口令摘要
- 口令更改和口令重置功能的用户自服务
- 登录尝试失败的锁定
- 可配置的 Web 用户界面窗体、文字和图形
为了提供这些特性,我们求助于采用了自定义身份验证 DSAPI 过滤器的 IBM Software Services for Lotus(ISSL)资产。该资产称为 Internet Password Manager(IPM),可以满足这个案例研究所需要的所有安全功能。
注意: IPM 是一套自定义的 Domino 数据库和 DSAPI 过滤器,提供了 Web 口令管理之外的更多控制。关于该资产的更多信息,请联系作者。
IPM 向 Domino Directory 中添加几个设计元素,提供手动启用、禁用、扩展和重置用户帐户的帐户管理功能。附加的 Domino 应用程序数据库(NSF 文件)由提供登录、口令更改和邮件通知的用户界面特性的模板创建。定义具体的组来控制参与口令管理环境的口令管理员和服务器。
图 6 显示了 Domino Directory 中控制口令管理系统特性的具体的 Configuration 文档。
图 6. Internet Password Management Configuration 文档
扩展 Person 文档计划的子窗体显示了为每个用户添加的设置(参见图 7)。
图 7. 在 Person 文档中的附加子窗体
核心处理通过为操作系统开发的 DSAPI 过滤器提供,并放置在 Domino 服务器的 Program 目录中。要使 Domino HTTP 服务器使用 IPM,必须配置 Authorization Extension 过滤器。对于每个参与的服务器,将安装了 Authorization Extension 的 DSAPI 过滤器库名(例如,libipwext.so)添加到 DSAPI 过滤器文件名字段中(参见图 8)。这可以在 Server 文档 的 Internet Protocols 选项卡中找到 —— HTTP 子选项卡 DSAPI 区域。一旦配置完成,这些附加数据库和设置使用户界面和口令控制实施增强的安全特性。
图 8. DSAPI 过滤器文件名
默认登录页如图 9 所示。
图 9. 默认登录页
作为一个场景示例,如果用户反复尝试访问站点,但是没有使用正确的口令登录,访问就被拒绝。根据配置参数,登录尝试失败导致在系统中锁定用户,并在服务器控制台中显示(参见图 10)。
图 10. 服务器登录失败并锁定
也可以通过 Access Control List(ACL)设置和在属性对话框的 Basics 选项卡中位于 Web Access 部分的 “Don’t allow URL open” 数据库属性限制访问系统数据库。这保护数据库不会通过 Web 打开,这是 Lotus Domino 6 的新特性。当启用 Domino Directory (names.nsf) 上的属性时,用户仍然可以进行身份验证,这在注册用户需要向服务器的其他用户保持匿名的时候是非常有用的。
Domino Domain Monitor(DDM)是 Lotus Domino 7 的新特性。DDM 使用一套预配置探测收集正被监控的服务器的状态/进程信息。这些探测收集与应用程序、数据库、目录、消息、复制、安全性、操作系统、服务器和 Web 相关的数据。专门的过滤器使您能够选择由探测记录的数据的类型和级别。在收集数据之后,把数据整理、组织和加工成易读的总结报告。DDM 有三个开箱即用的安全性探测,校验 Server 文档、Server Configuration 文档和 Person 文档以验证设置满足最佳实践。它也可以报告对服务器的未授权的访问尝试,因此它对于审核 Lotus Domino 服务器的安全性是一个有用的工具。
DDM 的结果自动收集到 Event Resolution Center(ERC)中。每个加工过并放在 ERC 数据库中的事件都有一个链接回生成事件的指定监控的文档。每当探测发现错误或者超过特定阈值的时候,都使用状态文档更新 ERC 。通过观察 ERC 中的 DDM 事件记录,可以识别(在某些情况下,甚至是预测)系统的 Domino 事件。当第一次启动服务器时自动地创建 ERC。ERC 数据库基于新的模版 ddm.ntf;默认文件名是 ddm.nsf。图 11 显示了在 Events4.nsf 数据库中启用 Best Practices Probe 的例子。
图 11. Security Probe 文档
Security Probe 文档的 Specifics 选项卡提供了通过这种探测生效的服务器设置列表,包括:
- 将 Notes Public Key 与目录中存储的相比较
- 校验口令
- 允许匿名 Notes 连接
- 必要的更改间隔
- 校验 Notes ID 上的口令
- 校验 Person 文档中 ID 文件的存在
- 互联网身份验证
- 校验 SSL 设置的安全性
- 校验 Web 设置的安全性
- 校验 Domino Directory 设置的安全性
- 校验 Mail 设置的安全性
- 校验 DIIOP 设置的安全性
- 校验 Remote Debug Manager 的安全性
- 使用更安全的互联网口令
- 在 Configuration 文档中的安全性设置
- 互联网口令
- 验证所有 Server 文档 Security 选项卡部分:
- 管理
- 程序
- Web
- 安全性设置
- 服务器访问
- Pass-thru 使用
下列表格说明了在 ERC 中每个探测显示的信息类型。ERC 数据库(文件名为 ddm.nsf)包含活动的 DDM 探测生成的数据。当探测运行时,它记录在 ERC 的报告中找到的所有相关数据。这个报告包含具体探测的结果、生成结果的可能的原因、对于每个事件的建议解决方法以及用于生成这个事件的探测的链接。随后,探测运行并记录在 ERC 的报告中找到的所有相关数据。这个报告包含具体探测的结果、生成结果的可能的原因、对于每个事件的建议解决方法以及用于生成这个事件的探测的链接。
注意: 这个例子没有显示探测的全部结果。
安全性最佳实践探测:Server 文档
结果:已经分析了 Server 文档,30% 的配置与推荐的最佳实践不匹配。
管理部分
| 字段名称 | 字段值 | 建议 |
|---|---|---|
| 从浏览器管理服务器 | 空 | 验证这个字段是否指定一个名称或者一个组名,而且它不包含星号值。 |
Programmability Restrictions 部分
| 字段名称 | 字段值 | 建议 |
|---|---|---|
| 这部分的所有字段都根据最佳实践配置 |
安全性最佳实践探测:Server Configuration 文档
已经分析了 Server Configuration 文档,5% 的配置与推荐的最佳实践不匹配。
配置部分
| 字段名称 | 字段值 | 建议 |
|---|---|---|
| DNS Blacklist 过滤器 | 禁用 | 当启用时,Domino 将验证进行连接的主机是否列在指定站点上的 Blacklist 中。 |
| 验证 DNS 中的连接主机名 | 禁用 | 当启用时,Domino 将通过执行反向 DNS 查找验证连接主机名。 |
| 验证 DNS 中的发送者域 | 禁用 | 当启用时,Domino 将在发送处理继续前验证发送者域的存在。 |
| 验证在 Domino Directory 中本地域接收者的存在 | 禁用 | 当启用时,Domino 将在发送处理继续前验证接收者是有效用户。 |
| 加密所有的传送邮件 | 禁用 | 当启用时,Domino 将加密本地邮件文件的消息。 |
安全性最佳实践探测:Person 文档
已经在四个 Person 文档中发现潜在安全风险。已经向 Details 选项卡报告了这四个文档。31% 的配置与推荐的最佳实践不匹配。
分析了 Domino Directory 的八个 Person 文档。潜在安全风险的数量报告如下。
| 用户名:admin/myorg | ||
|---|---|---|
| 字段名称 | 字段值 | 建议 |
| 校验口令 | 不校验口令 | 推荐设置该字段为 —— 校验口令。 |
| 必须的更改间隔 | 0 | 推荐设置口令更改间隔。 |
| 宽限期 | 0 | 输入以天为单位的时间长度,用户必须到期更改口令。 |
| 校验 User ID | User ID 仍然附属于 Person 文档。 | 向数据目录中的 id 文件夹存储并分离该 User ID。 |
在正式审查中识别出的最大的安全问题之一称为 Configuration Shift。随着时间的推移,服务器配置会由于各种问题、修理和故障检修而更改。最终,这可能会成为显著的安全问题。更改控制应该用于帮助管理 Configuration Shift,但是它不是总能捕获列在 Server 文档中的不必要的改变。可以使用 DDM 通过创建 Security Configuration 探测发现这个变化。DDM Security Configuration 探测将 Domino Server 文档和目标 Server 文档进行比较,然后报告任何差异和(或者)分歧。这种安全探测的类型也有可以配置的 Specifics 选项卡,使您能够将一台服务器配置与被探测的服务器进行比较,并帮助您识别 Configuration Shift。探测包括如下选项(例子参见图 12):
- 应该把哪台服务器当作指导服务器?
- 哪台服务器的设置应该与指导服务器的设置进行比较?有几个选项:
- Directory Profile Note
- Server Configuration 文档中的安全性设置
- Server 文档(所有部分)或者单独的部分(比如管理、程序、Web 等等)。
图 12. Security Configuration Probe
Activity Logging 记录由个人、数据库和访问协议产生的用户活动。它经常用于与 Activity Trends 连接,Activity Trends 收集并存储活动统计,作为当前的观测资料和历史趋势。活动统计与服务器、数据库、用户以及用户与数据库的连接相关,使管理员能够跟踪在系统中活动的用户。应该每月回顾数据,并应该在系统中锁定任何在过去 90 天里不活动的用户 —— 一个帮助保护未用的帐户不被访问的策略。
图 13 显示了在执行跟踪所有服务器代理、HTTP 会话、SMTP 会话、SMTP 邮件、Notes 数据库会话、Notes 会话和 Notes 邮件时记录的统计结果。
Figure 13. Activity Logging 配置
Activity Trends 提供了信息,比如用户访问服务器的最近时间,可以用于跟踪不活动的帐户(参见图 14)。在这个案例研究中,监控 60 天没有活动的帐户。系统锁定帐户 30 天,一旦发现一共 90 天没有活动,帐户就被删除。
图 14. 用户活动记录
Activity Trends 也可以在 Connections\By User 视图中跟踪用户正在访问的数据库。这可以用于验证用户是否访问恰当的数据库,以及用于补充下面讨论的 Domino Web Server Log,在高级别提供附加的用户活动记录。(HTTP 请求的详细信息存储在 Domino Web Server Log 数据库中。)
可以把服务器的活动和 Web 服务器向 Domino Web Server Log(DOMLOG.NSF)数据库的请求记录到日志中(参见图 15)。如果想要以不同方式创建视图和视图数据,这个选项更可取。向数据库中写入日志比向文本文件中写入日志要慢一点,尤其是在忙碌的站点上,而且数据库会变得很大以至于维护成为一个问题。但是,如果使用 Domino Web Server Log,当使用内置特性分析结果时,就可以像其他 Notes 数据库一样对待这些信息。
图 15. Domino Web Server Log 的例子
DOMLOG.NSF 数据库将所有 Domino Web 服务器活动记入日志,并记录以下关于每个 HTTP 请求的信息:
- 发生请求的日期和时间
- 用户的 IP 地址(或者 DNS 地址,如果在 Server 文档中启用了 DNS 查找)
- 用户名称(如果用户提供了名称和口令来访问服务器)
- 服务器向浏览器返回的表明请求成功还是失败的状态码
- 从服务器向浏览器发送的信息的长度,以字节为单位
- 用户访问的数据类型,例如 text/html 或者 image/gif
- 从浏览器向服务器发送的 HTTP 请求
- 用于访问服务器的浏览器类型
- Internal 和 Common Gateway Interface(CGI)程序错误
- 用户用来访问该站点的页面的 URL
- 服务器的 IP 地址或者 DNS 名称
- 处理请求的时间总量,以毫秒为单位
- 浏览器发送的 Cookie
- 转换的 URL(实际服务器资源的完整路径,如果可用的话)
这个案例研究中的 Domino Web Server Log 配置成记录已经访问 Web 服务器的 IP 地址。如果有 IP 地址经常探测这个站点,那么他们可以被防火墙阻止。正如在图 15 的例子中所见,用户通过身份验证就记录进入的 IP 地址,在这之后把所有会话记录在该用户名下。这可以帮助防止拒绝服务攻击。
注意: 有一些第三方 DSAPI 过滤器自动地执行这个功能。
DSAPI 过滤器用于提供互联网口令管理,也提供一些能够监控的统计数据。当用户由于超过登录尝试失败的阀值而被系统锁定时,设置警告如下:
IPWEXT.Login.Failed.Lock = Login attempts with invalid password resulting in account lockout
端口探测是一个扫描服务器上所有能访问互联网的可用端口的过程。一台服务器应该只能通过有限数量的端口访问。服务器开放端口的详细信息如上所述。黑客进行的端口探测通常是尝试在服务器上执行恶意代码或者通过寻找易攻击的端口来控制服务器。
应该定期进行操作系统升级和安装补丁。在这个案例研究中我们使用 Linux 服务器,因为在不影响 Domino 服务器的情况下可以安装大多数的补丁。内核补丁需要重新启动系统,TCP/IP 协议的补丁可能会影响 Domino 服务器。所有不必要的包或者软件应该从服务器中删除。因为 Linux 服务器的升级几乎不影响 Domino 服务器,所以每周进行定期升级。
United States Computer Emergency Readiness Team (USCERT)公布操作系统、防火墙或者软件的任何新漏洞。这个团队还每周发送紧急警告报告,应该检查这些报告以使潜在攻击最小化。
对于 Lotus Notes 和 Domino 安全漏洞,请参考 developerWorks Lotus Security 页面。
您应该持续监控整个计算机基础设施。也应该检查 Domino Web Server Log、Activity Trends、DDM 探测结果和每月的 USCERT 报告,并检查阻止黑客尝试的日志。如果注意到相同的 IP 地址范围尝试访问服务器,或者相同的不良 URL 被发送到服务器,这些请求应该由防火墙或者 Domino 服务器阻止。持续监控有助于阻止未授权访问 Web 服务器。
本文研究了在单一服务器环境下使 IBM Lotus Domino Web 服务器更安全的推荐的具体设置。在仍然向您的用户提供高性能、可靠性和易用性的同时,这些技巧可以帮助确保以 Domino 为主机的 Web 站点尽可能安全。
学习
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文 。
-
请参阅 developerWorks Lotus 文章 “保证 Lotus Domino Web 服务器的安全”。
-
请参阅 developerWorks Lotus 文章 “Trust Yourself: Become your own Certification Authority”。
-
developerWorks Lotus Security 页面
-
请参阅 IBM Redbook “Security Considerations in Notes and Domino 7: Making Great Security Easier to Implement”。
-
请参阅 2000 年 4 月由 Julia Allen、Klaus-Peter Kossakowski、Gary Ford、Suresh Konda 和 Derek Simmell 撰写的 Carnegie Mellon Software Engineering Institute 文章 “Securing Network Servers”。
获得产品和技术
-
从 developerWorks 下载 Lotus Domino 的试用版本。
-
从 developerWorks 下载 Lotus Notes 的试用版本。
讨论
- 参与论坛讨论。
-
通过参加 developerWorks
blogs 加入 developerWorks 社区。