利用 AIX V5.3 中使用 OpenSSH 保护通信安全

使用 AIX V5.3 中的 SSH 和 IBM Network Authentication Services 保护数据安全

学习如何在使用 Microsoft® Active Directory Server 作为密钥分发中心 (KDC) 的 AIX® Version 5.3 计算机上配置 Kerberized Open Secure Shell (OpenSSH)。OpenSSH 对通信(包括密码)进行加密以防止窃听、接管通信连接或窥视数据。如果您工作于具有多供应商解决方案混合环境中的 AIX Version 5.3 系统,那么您会发现本文是非常有价值的。

Sandeep Ramesh Patil , 高级软件工程师, EMC

SandeepRamesh Patil 的照片Sandeep Ramesh Patil 是 IBM India Software Labs 的高级软件工程师。在过去五年里,他一直为 IBM 工作,主要研究包括 DCE、SARPC 分布式技术,以及安全产品,例如 IBM Network Authentication Services (IBM Kerberos)。目前,他正在为 IBM Network Authentication Service 开发新的特性并实现安全相关的 RFC 及其产品支持。Sandeep 拥有印度 Pune 大学的计算机科学和工程学学士学位。您可以通过 rsandeep@in.ibm.com 与他联系。



Manish Katiyar, 软件工程师, EMC

Manish Katiyar 的照片Manish Katiyar 是 IBM India Software Labs 的软件工程师。在过去两年里,他一直为 IBM 工作,主要研究 SARPC,并具有数据仓库工具 (Ab-Initio) 的丰富使用经验。Manish 拥有印度 Indian Institute of Technology Kharagpur 大学的化学工程学士学位。您可以通过 manish.katiyar@in.ibm.com 与他联系。



2006 年 8 月 17 日

引言

Open Secure Shell (OpenSSH) 是广泛使用的 SSH 工具中的一种免费的、开放源码的实现,SSH 工具广泛地用于在网络之间进行安全的通信。通过对两台计算机之间的所有通信信息进行加密,它可以排除有人进行探查、接管或窥视您的私有数据的可能性。OpenSSH 还提供了许多身份验证机制以实现额外的安全性。

Kerberos 是一种常用的身份验证机制,它为网络用户的身份验证提供了一种安全手段,并且 OpenSSH 提供了对 Kerberos 的支持。通过对客户端和服务器之间的身份验证消息进行加密,它可以防止在网络上使用明文来传输密码。Kerberos 还以管理令牌或凭据的形式提供了一种授权系统。用于 IBM AIX® Version 5.3 的 OpenSSH 软件 (openssh-3.8.p1) 是 AIX Version 5.3 Expansion Pack CD 附带的软件。通过 IBM 版本的 Kerberos,称为 IBM Network Authentication Service (IBM NAS) Version 1.4,OpenSSH Version 3.8 以及更高的版本提供了对 Kerberos 5 身份验证和授权的支持。还可以从 AIX Version 5.3 Expansion Pack CD 中安装用于 AIX 的 IBM NAS Version 1.4。

Microsoft® Active Directory Service 是 Windows® 平台的重要组成部分,它为各种网络管理和身份验证任务提供了相应的方法。Kerberos 是 Windows Active Directory 实现中不可缺少的一部分,并且它作为 Kerberos 领域的密钥分发中心 (KDC),广泛地应用于企业中。可以在 Windows Server 2003 和 Windows Server 2000 中配置 Microsoft Active Directory Service。

本文将带您了解在使用 Microsoft Active Directory Server 作为 KDC 的 AIX Version 5.3 计算机上配置 Kerberized Open Secure Shell (OpenSSH) 所需的步骤。对于那些工作于由 AIX Version 5.3 系统和 Microsoft Active Directory Server 组成的多供应商解决方案的混合环境中的管理员,本文将是非常有帮助的。

先决条件

要按照本文中的场景进行操作,您需要启动和运行支持 Microsoft Active Directory Domain 的 Kerberos 服务,并且需要为其正确地配置 AIX IBM NAS Version 1.4 客户端。

AIX Version 5.3 上的 OpenSSH 和 Kerberos (IBM NAS)

本部分内容介绍在 AIX 服务器和客户端计算机上安装和配置 Kerberos 和 OpenSSH 所需的初始步骤。AIX Version 5.3 Expansion Pack CD 中附带了 OpenSSH 和 Kerberos。在安装 OpenSSH installp 格式的安装包之前,您必须安装包含加密库的开放安全套接字层 (OpenSSL) 软件。可以从 AIX Toolbox for Linux® Applications CD 中获得 OpenSSL 的 RPM 包,或者您也可以从 AIX Toolbox for Linux Applications 进行下载(请参见参考资料部分)。

在将 OpenSSL 下载到 AIX Version 5.3 计算机的本地目录(本示例中为 /tmp)之后,可以通过运行下面的命令来安装它:

# geninstall -d/tmp R:openssl-0.9.6m

您可以使用下面两种方法中的任何一种来安装 OpenSSH:

smitty->Software Installation and Maintenance->Install and 
    Update Software->Install Software

或者

# geninstall -I"Y" -d/dev/cd0 I:openssh.base

安装 IBM NAS Version 1.4 客户端,并将其配置为 Kerberos 领域(Active Directory 域),该 Kerberos 领域由 Microsoft Active Directory Server 承载并用作 KDC。有关 IBM NAS 客户端安装及其对 Microsoft Active Directory Server 配置的更详细的信息,请阅读 AIX 白皮书“Configuring AIX 5L for Kerberos Based Authentication Using Windows Kerberos Service”(请参见参考资料部分)。

在成功安装和配置了 IBM NAS 客户端之后,您需要将 OpenSSH 配置为使用 Kerberos 进行身份验证。

编辑 /etc/services 文件,使其包含下列条目:

kerberos      88/udp    kdc    # Kerberos V5 KDC
kerberos      88/tcp    kdc    # Kerberos V5 KDC
kerberos-adm  749/tcp          # Kerberos 5 admin/changepw
kerberos-adm  749/udp          # Kerberos 5 admin/changepw

在 /etc/ssh/sshd_config 中取消对下列条目的注释以使得 SSH 守护进程使用 Kerberos 作为其身份验证机制:

KerberosAuthentication yes
KerberosTicketCleanup yes
# GSSAPI options
GSSAPIAuthentication yes

使用下面的命令启动 SSH 服务器:

#startsrc -g ssh

使用下面的命令来确认已正确地启动了 SSH 服务器:

#ps -ef|grep ssh

AIX Version 5.3 上使用 Windows Kerberos 服务的 Kerberized OpenSSH

本部分内容描述了一个场景,它将带您了解在 AIX Version 5.3 计算机(使用 Microsoft Active Directory Server 作为 KDC)上对 Kerberized SSH 进行配置所需的步骤。

本部分内容假设您已经启动和运行支持 Microsoft Active Directory Domain 的 Kerberos 服务,并且您已为它成功地配置了 AIX IBM NAS Version 1.4 客户端。有关为 Microsoft Active Directory Server 配置 IBM NAS Version 1.4 客户端的更详细的信息,请参阅 IBM NAS Version 1.4 Administration Guide(AIX Version 5.3 Expansion Pack CD 中附带)以及参考资料部分中的 IBM 白皮书。

有关安装和配置 Microsoft Active Directory Server 的更详细的信息,请参阅合适的 Microsoft 文档以了解如何配置 Microsoft Active Directory Server。

下面的示例中将使用下列定义:

Kerberos Realm Name / Domain Name            
   MSKERBEROS.IN.IBM.COM 
KDC (Windows Active Directory Server)        
   hostname: windce20.in.ibm.com, OS: Windows 2003 Server 
SSH Server (sshd)                            
   hostname: aixdce16.in.ibm.com, OS: AIX Version 5.3 
SSH Client                                   
   hostname: aixdce20.in.ibm.com, OS: AIX Version 5.3         
IBM NAS 1.4 Client                           
   hostname: aixdce16.in.ibm.com, OS: AIX Version 5.3  &
   hostname: aixdce20.in.ibm.com, OS: AIX Version 5.3

图 1 显示了该示例的设置。

图 1. 示例设置
示例设置

要在 AIX 计算机上配置 Kerberized SSH 使得 AIX 的 IBM NAS 客户端配置为 Microsoft Active Directory Server,您需要实施下列步骤。

  1. 在 Windows Active Directory Server 上,使用 Active Directory 管理工具创建一个与运行 SSH 服务器的 AIX 计算机相对应的新的用户帐户。在本示例中为 aixdce16.in.ibm.com。
    1. 打开对话框,从 Users folder 创建一个新的用户,并完成下面的条目:
      • First Name = aixdce16.in.ibm.com
      • Full Name = aixdce16.in.ibm.com
      • User logon Name = aixdce16.in.ibm.com
      • User logon Name(Windows 2000 以前的版本)= aixdce16.in.ibm.com
    2. 填写 Password,并在密码面板中选择合适的复选框。
    3. 选择 Finish 以完成用户的创建。
  2. 在 Windows Server 2003 计算机 (windce20.in.ibm.com) 命令行中使用 Ktpass 命令创建 krb5.keytab 文件,并为 AIX 主机 (aixdce16.in.ibm.com) 设置相应的帐户,如下所示:
    Ktpass -princ host/aixdce16.in.ibm.com@MSKERBEROS.IN.IBM.COM -mapuser 
       aixdce16.in.ibm.com -pass !sandeep17! -out c:\krb5.keytab
  3. 将在步骤 2 中创建的 krb5.keytab 文件复制到 AIX 主机系统(在本示例中,将它复制到或通过 ftp 传输到 aixdce16.in.ibm.com)的 /tmp 目录。将 /tmp/krb5.keytab 文件合并到 AIX 系统的 /etc/krb5/krb5.keytab 文件中。请确保这个 keytab 文件 (/etc/krb5/krb5.keytab) 中包含所需的具有正确的密钥版本号的 Kerberos 服务器主体条目。如果包含该信息,那么可以在 AIX 计算机 (aixdce16.in.ibm.com) 上启动 SSH 服务器,如下所示。

    清单 1. 在 AIX 中对 keytab 文件进行设置

    # hostname
    aixdce16
    # ktutil
    ktutil: rkt /tmp/krb5.keytab
    ktutil: wkt /etc/krb5/krb5.keytab
    ktutil: q 
    # kvno host/aixdce16.in.ibm.com 
    kvno = 1 
    # klist -k 
    Keytab name:  FILE:/etc/krb5/krb5.keytab 
    KVNO Principal 
    ---- --------- 
       1 host/aixdce16.in.ibm.com@MSKERBEROS.IN.IBM.COM 
    # startsrc -g ssh 
    0513-059 The sshd Subsystem has been started. Subsystem PID is 22698.

    确保kvno 命令获得的密钥版本号可以与 klist -k 命令所显示的 host/<hostname> 主体条目匹配。 如果它们无法匹配,那么您可能需要为 keytab 文件中的host/<hostname> 主体添加一项匹配密钥版本号的条目。

  4. 在 Windows Active Directory Server 中,使用 Active Directory 管理工具创建一个新的用户帐号,该用户帐号的名称与 AIX 计算机上现有的某个用户帐号的名称相匹配。在本示例中,我们创建了一个名为 "sandeep" 的用户帐号,这个帐号也存在于两台 AIX 计算机中。有关如何在 Windows Active Directory Server 中创建用户帐号的信息,请参见上面的步骤 1

对设置进行测试

现在已经准备好对设置进行测试,并使用 Kerberized SSH。

  1. 使用用户名 sandeep 登录到 aixdce20.in.ibm.com(SSH 客户端)。
  2. 使用 kinit 命令获得 sandeep 的有效 Kerberos 凭据。
  3. 使用 ssh 登录到运行 SSH 服务器的 aixdce16.in.ibm.com 上。

下面的清单 2 显示了 aixdce20.in.ibm.com 上执行的命令序列,它将建立到 aixdce16.in.ibm.com 的以 Kerberos 为身份验证机制的安全 Shell,并且使用 Microsoft Active Directory Server 作为 KDC。

清单 2. 显示使用 Kerberos 身份验证的成功 ssh 的示例输出
# hostname
aixdce20
# whoami
sandeep
# kinit sandeep
Password for sandeep@MSKERBEROS.IN.IBM.COM:
# klist
Ticket cache:  FILE:/var/krb5/security/creds/krb5cc_0
Default principal:  sandeep@MSKERBEROS.IN.IBM.COM

Valid starting     Expires            Service principal
03/27/06 17:40:28  03/28/06 03:40:34  krbtgt/MSKERBEROS.IN.IBM.COM@MSKERBEROS.IN.IBM.COM
        Renew until 03/28/06 17:40:28
# ssh aixdce16.in.ibm.com
*******************************************************************************
*                                                                             *
*                                                                             *
*  Welcome to AIX Version 5.3!                                                *
*                                                                             *
*                                                                             *
*  Please see the README file in /usr/lpp/bos for information pertinent to    *
*  this release of the AIX Operating System.                                  *
*                                                                             *
*                                                                             *
*******************************************************************************
$ hostname
aixdce16
$ whoami
sandeep
$ pwd
/home/sandeep
$ exit
Connection to aixdce16.in.ibm.com closed.
# hostname
aixdce20
# klist
Ticket cache:  FILE:/var/krb5/security/creds/krb5cc_0
Default principal:  sandeep@MSKERBEROS.IN.IBM.COM

您已经从 KDC 获得了主体名 sandeep 的有效凭据,所以让我们来尝试以主体 root 用户进行登录,如清单 3 所示。

清单 3. 显示 root 用户的失败 ssh 的示例输出
#ssh -v root@aixdce16.in.ibm.com
OpenSSH_3.8.1p1, OpenSSL 0.9.6m 17 Mar 2004
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to aixdce16.in.ibm.com [9.182.192.116] port 22.
debug1: Connection established.
..
..
..
debug1: Next authentication method: password
root@aixdce16.in.ibm.com's password:
Connection closed by 9.182.192.116

调试信息 Connection established 表示,尽管 root 用户可以使用主体 sandeep 的凭据进行成功的身份验证,但是授权将失败,即使指定了正确的密码。这是因为 Kerberos 发现主体 sandeep@MSKERBEROS.IN.IBM.COM 不允许以 root 用户来访问。通过在 aixdce16.in.ibm.com:~root/.k5login 中创建一个文件并在其中添加 sandeep 主体,可以授权 root 用户使用 sandeep 主体。

因为 .k5login 文件覆盖了缺省的授权规则,所以 root 用户还需要在其中放置自己的主体,否则它将无法使用主体进行登录。下面的清单 4 显示了 aixdce16.in.ibm.com 上 root 用户的 home 目录中的 .k5login 文件的内容。

清单 4. 显示 root 用户的 home 目录中的 .k5login 文件内容的示例输出
# hostname
aixdce16
# cat .k5login
sandeep@MSKERBEROS.IN.IBM.COM
root@MSKERBEROS.IN.IBM.COM

在创建了该文件之后,root 用户应该可以使用 sandeep 的凭据成功地登录了。

清单 5. 显示 root 用户使用 sandeep 凭据的成功 ssh 的示例输出
$klist
Ticket cache:  FILE:/var/krb5/security/creds/krb5cc_204
Default principal:  sandeep@MSKERBEROS.IN.IBM.COM

Valid starting     Expires            Service principal
04/13/06 19:41:56  04/14/06 05:37:50 krbtgt/MSKERBEROS.IN.IBM.COM@MSKERBEROS.IN.IBM.COM
        Renew until 04/14/06 19:41:56
$ssh root@aixdce16.in.ibm.com
*******************************************************************************
*                                                                             *
*                                                                             *
*  Welcome to AIX Version 5.3!                                                *
*                                                                             *
*                                                                             *
*  Please see the README file in /usr/lpp/bos for information pertinent to    *
*  this release of the AIX Operating System.                                  *
*                                                                             *
*                                                                             *
*******************************************************************************
#

结束语

本文介绍了管理员如何能够充分地利用使用 Microsoft Active Directory Server 作为 KDC 的AIX Version 5.3 系统中的 Kerberized OpenSSH。如果您的环境并没有使用 Microsoft Active Directory Server,并且您希望在 AIX Version 5.3 系统中使用 Kerberized OpenSSH,那么我们推荐您在其中一台 AIX 系统中安装并配置 IBM NAS Version 1.4 Server,并将它作为 KDC。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=155016
ArticleTitle=利用 AIX V5.3 中使用 OpenSSH 保护通信安全
publish-date=08172006