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

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

引言

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/krb5clearcase/" target="_blank" >cc_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。

原文转自:http://www.ltesting.net