随着 Internet 日益流行,存储巨量数据并确保数据在网络中的安全,这种需求也变得越来越强烈。这么多的数据存储在各种不同的、可用的数据库中,而这些数据库提供了适当级别的安全性和一致性,以确保数据安全,使无关的用户不能访问数据。但是,当数据在网络上流动时,就变得容易受到其他无关人员的访问。
很多公司使用 DB2 来存储那些数据。虽然 DB2 提供了足够级别的安全性来确保数据在网络上的安全,但是仍然需要管理员配置 DB2 特有的身份验证模块。(关于配置 DB2 数据库的更多信息见 参考资料)。除了配置操作外,正如 DB2 9 for Linux, UNIX, and Windows 文档中 “Authentication methods for your server” 的 “DATA_ENCRYPT” 小节(见 参考资料)描述的那样,DB2 9 中的安全模块还支持对网络上传输的特定数据集进行加密。
Secure Shell (SSH),顾名思义,是一种为网络上传输的数据提供高度安全性和可靠性的工具。 SSH 支持多种加密类型,它的大多数实现支持诸如 AES 之类的更强的加密类型。在 SSH 中,可以通过选择用户需要的适当的加密方法,来配置所需的安全级别。而且,该工具可以在大多数分布式平台上使用,包括 IBM AIX®、Microsoft® Windows®、Linux® 等。在本文中,遵循使用 SSH 确保 DB2 客户机与 DB2 服务器之间的安全通信的详细步骤,无需配置 DB2 身份验证模块。
SSH 除了可以作为与远程计算机之间的一种通信模式之外,还提供大多数用户不常用的其它特性。其中一个特性就是借助 SSH 隧道化技术的端口转发(port forwarding)。SSH 允许将一个本地开放端口映射到远程计算机上的任何端口。映射之后,本地端口指定的所有通信量通过一个安全的 SSH 隧道转发到远程计算机上的映射端口上。隧道技术可以用于几乎任何类型服务的安全通信。
本文描述如何利用 SSH 提供的安全性创建用于 DB2 9 客户机与 DB2 9 服务器之间通信的安全隧道,从而为网络上的数据增加安全性。作为演示,本文使用与 Red Hat Enterprise Linux 和 PuTTY for Windows 一起发布的通用 OpenSSH 服务器包,这是 SSH 的一个免费实现。
演示中使用以下定义:
清单 1. 文章演示中使用的定义
DB2 Version 9 Server
hostname : astrix.in.ibm.com , OS : Red Hat Enterprise Linux 4
SSH Server (OpenSSH 3.9)
hostname : astrix.in.ibm.com , OS : Red Hat Enterprise Linux 4
DB2 Version 9 client
hostname : windee.in.ibm.com , OS : Microsoft Windows XP (SP2) Professional
SSH Client (PuTTY release 0.58)
hostname : windee.in.ibm.com , OS : Microsoft Windows XP (SP2) Professional
|
本节描述配置 DB2 9 客户机以使用 SSH 端口转发机制所需的步骤。
- 在 Windows 客户端机器上,打开 DB2 9 Client Configuration Assistant。(也可以从命令行使用
db2ca。) - 选择 Selected > Add database using wizard... > Manually configure a connection to a database > TCP/IP。
- 填入
localhost作为主机名,并填入所选择的端口号(本例中为 “12345”),如 图 1 所示.
图 1. DB2 9 客户机配置
- 指定 DB2 9 服务器的操作系统(本例中为 Linux)和 DB2
实例名称,如 图 2 所示。
图 2. 配置服务器节点
- 添加数据库名称。
注意:本地机器上指定的端口号必须是空闲的,不能有任何服务在该端口上运行。可以从
netstat 的输出中验证这一点。
关于 DB2 9 服务器和客户机的其它配置选项,请参阅 参考资料。
本节描述配置 SSH 客户机(本例中为 PuTTY)的步骤,使之可以将本地主机的通信量转发到远程机器的目标端口。
- 创建一个新会话,选择 SSH 作为通信模式。
- 在类别树中,选择 SSH > tunnels。
- 如 图 3 所示,填充条目,并添加所需的端口。
图 3. 配置 PuTTY
- 返回到会话,并保存配置。
- 打开 SSH 会话,并以用于 Linux 机器的 SSH 用户 id 和密码登录到计算机(在本例中为 astrix.in.ibm.com)。成功登录后,
netstat命令的输出将显示一个打开的、侦听指定端口的本地端口(见 图 5)。
至于偏好其它客户机(例如 OpenSSH)的用户,或者其它基于 IX 的客户机的用户,可以使用以下命令行达到与 PuTTY 配置相同的效果:
ssh -L 12345:localhost:50000 astrix.in.ibm.com |
现在可以测试设置,并在隧道化了的 SSH 上使用 DB2 9 客户机和服务器。图 4 显示了 DB2 9 客户机与服务器通信期间的数据流。
图 4. 测试设置
- 使用之前配置的 PuTTY 会话登录到 astrix 中。
- 打开 DB2 9 Control Center。(应该可以看到之前添加的数据库名称。)
- 打开数据库,在某个可用的表上运行一些 SQL 语句。
图 5 中的第一行是 netstat -an 的输出,该行显示,当打开之前保存的
PuTTY 会话以连接到机器 astrix 时,PuTTY 打开一个本地套接字,该套接字侦听端口 12345。其它行显示 DB2 客户机在与 DB2 服务器交互时所打开的套接字的数量和状态。基于上述设置,DB2 客户机尝试在 localhost:12345 端口连接到 DB2 服务器,而该端口被安全转发到
DB2 服务器。(例如,通过 PuTTY 的 SSH 隧道,转发到之前配置的 astrix:50000。)
图 5. netstat 输出
由于所有数据都经过 SSH 隧道,因此受到 SSH 使用的当前加密机制的保护。
在本文中,您学习了如何利用 OpenSSH 的隧道化功能设置 DB2 9 客户机与服务器之间的安全隧道。将 OpenSSH 用于 DB2 服务器与客户机之间的通信,便于从 SSH 支持的众多身份验证机制中为每种需求选择最适合的加密类型。
学习
-
您可以参考本文在 developerWorks 全球站点上的 英文原文。
-
IBM DB2 Database for
Linux, UNIX, and Windows Information Center:找到使用 DB2
家族产品和特性以及相关 WebSphere® Information Integration 产品和特性所需的信息。
- Authentication methods:找到关于各种类型的身份验证的信息。
-
Encryption
considerations:查看 Information Management Software for z/OS Solutions
Information Center,获得关于用于 DB2 的加密成本的信息。
- "Database
Configuration Guide: Configuring DB2 databases(Novell, Inc.,2004):配置 DB2 数据库,以便与 Novell exteNd Application Server 一起使用,作为一个 SilverMaster 或部署数据库。
- “DB2
connectivity cheat sheet”(developerWorks,2003 年 1 月):使用 DB2 命令将客户机连接到分布式系统或 OS/390 上的 DB2 服务器。
- “Tunneling
with ssh”(developerWorks,2006 年 10 月):设置一个简单的连接到基于 AIX 或 Linux 的 SSH 服务器的 SSH 客户机,允许您设置、配置并使用一种灵活的方法,隧道化 SSH 服务上的数据和服务。
- “DB2
UDB security, Part 6: Configure Kerberos for authentication on DB2 UDB for Linux, UNIX,
and Windows”(developerWorks,2006 年 3 月):为 DB2 Universal Database for Linux, UNIX, and Windows (DB2 UDB) 设置一个 Kerberos 环境,并配置 DB2 以使用 Kerberos 认证。
- “Server clinic: Connect
securely with ssh”(developerWorks,2003 年 7 月):利用 ssh 的威力。使用 ssh 从远程站点对服务器进行操作,并学习使该过程顺利进行的技巧。
- 随时关注 developerWorks 技术和活动和网络广播。
-
developerWorks Information Management 专区:学习更多关于 Information Management 的知识。这里有技术文档、how-to 文章、培训、下载、产品信息等。
-
技术书店:浏览该书店,找到关于这些专题和其它技术专题的书籍。
获得产品和技术
讨论
- 通过参与 developerWorks blog 加入 developerWorks 社区。
Sandeep Ramesh Patil 是 IBM India Software Lab 的软件咨询工程师。他已在 IBM 工作了七年,着重研究分布式技术,包括 DCE、SARPC 以及安全产品,比如 IBM Network Authentication Services (IBM Kerberos)。目前,他正在开发新的特性,并在为 IBM Network Authentication Services 实现与安全有关的 RFC 及其产品支持。Sandeep 拥有 University of Pune,India 的计算机科学与工程学士学位。
Manish Katiyar 是 IBM India Software Labs 的软件工程师。在过去两年里,他一直为 IBM 工作,主要研究 SARPC,并具有数据仓库工具 (Ab-Initio) 的丰富使用经验。Manish 拥有印度 Indian Institute of Technology Kharagpur 大学的化学工程学士学位。您可以通过 manish.katiyar@in.ibm.com 与他联系。