在 AIX 6.1.0, TL 4 上配置 OpenSSH 公共密钥身份验证和 EFS

在使用 OpenSSH 公共密钥身份验证的情况下启用 EFS 密钥存储库访问的详细步骤

OpenSSH 是一个包含 SSH1 和 SSH2 协议的实现的免费工具。它是一个可靠安全的工具,广泛用来替代 r 命令。通过 ssh 传输的通信是加密的,由于它加密所有通信流(包括密码),所以很安全。对于密码身份验证,OpenSSH 支持自动地打开密钥存储库和在内核中装载密钥。但是公共密钥身份验证不涉及密码。本文讨论如何在使用 OpenSSH 公共密钥身份验证的情况下配置 EFS 密钥存储库访问,解释在使用 ssh 公共密钥身份验证登录远程系统时自动打开 EFS 密钥存储库的过程。

Jyoti Tenginakai, 软件工程师, IBM

http://www.ibm.com/developerworks/i/p-jtenginakai.jpgJyoti Tenginakai 是 IBM 印度软件实验室的高级软件工程师。她已经在 IBM 工作了两年半。她当前在 Security Development 团队工作。在担任当前职位之前,她曾经从事 OpenSSH 和 lsof 等开放源码组件,负责发布活动、新特性以及处理客户针对这些组件提出的请求和查询。

Jyoti 曾经在 AIX OpenSSH 上实现了 chroot 特性。她拥有印度 Visvesvaraya Technological University 的工程学士学位。



Uma Chandolu, 软件工程师, IBM

http://www.ibm.com/developerworks/i/p-uchandolu.jpgUma M. Chandolu 是一名 AIX 上的开发支持专家,拥有 6 年多在 AIX 环境中工作的大量实践经验,擅长 AIX 系统管理和其他子系统。他拥有与客户合作和处理客户关键型情景的经验。他曾是 “IBM developerWorks 投稿作者”。


developerWorks 投稿作者

2010 年 7 月 08 日

什么是 EFS?

总的来说,AIX 上的 Encrypted Files System (EFS) 支持让系统上的用户可以加密他们的数据,还可以在密钥的保护下访问数据。用户能够设置密钥和为 EFS 分配默认密钥。这些密钥存储在用密码技术保护的密钥存储库中,在成功登录时,用户的密钥被装载到内核中并与内核进程关联起来。

私有密钥与用户和组相关联。这些密钥存储在密钥存储库中,由密码保护。用户密钥存储库包含用户的私有密钥,还有用于打开用户的组密钥存储库的密码;组密钥存储库包含组的私有密钥。

当一个进程打开密钥存储库时(在用户登录时或使用特定的 EFS 用户命令),这个密钥存储库(和相关密钥存储库)中包含的密钥被装载到内核中并与进程凭证关联起来。在此之后,当进程需要打开由 EFS 保护的文件时,检查这些凭证。如果找到与文件保护匹配的密钥,进程就能够解密文件密钥,进而解密文件内容。

可以在登录时通过 EFS LAM(旧)或 PAM(新)模块创建或打开密钥存储库。这些模块以及命令(例如 chmod)调用 libefs.a 库提供的一些 EFS API。用户和管理员可以通过用户命令 efsmgr 和 efskeymgr 控制 EFS。

如何在 OpenSSH 中设置公共密钥身份验证

在客户端上创建一个用户,为这个用户生成密钥。可以使用 ssh-keygen 命令生成公共-私有密钥对。

  1. 在客户端上,打开 /etc/ssh/ssh_config 文件并设置 PubkeyAuthentication yes。
          # hostname
    ivy02.in.ibm.com
    
    # grep PubkeyAuthentication /etc/ssh/ssh_config
    PubkeyAuthentication yes

    在服务器端上,打开 /etc/ssh/sshd_config 文件并设置 PubkeyAuthentication yes。

            # hostname
     ivy01.in.ibm.com
    
     # grep PubkeyAuthentication /etc/ssh/sshd_config
     PubkeyAuthentication yes
  2. 把 OpenSSH 服务器和客户机配置为使用 EFS 登录和公共密钥身份验证。

    在客户端上,打开 /etc/ssh/ssh_config 文件并设置 "AllowPKCS12keystoreAutoOpen yes"。

          # hostname
    ivy02.in.ibm.com
    
    # grep AllowPKCS12keystoreAutoOpen /etc/ssh/ssh_config
    AllowPKCS12keystoreAutoOpen yes

    在服务器端上,打开 /etc/ssh/sshd_config 文件并设置 "AllowPKCS12keystoreAutoOpen yes"。

           # hostname
    ivy01.in.ibm.com
    
    # grep AllowPKCS12keystoreAutoOpen /etc/ssh/sshd_config
    AllowPKCS12keystoreAutoOpen yes
  3. 重新启动服务器:
              # hostname
    ivy01.in.ibm.com
    
    # stopsrc -s sshd
    0513-044 The sshd Subsystem was requested to stop.
    
    # startsrc -s sshd
    0513-059 The sshd Subsystem has been started. Subsystem PID is 209040.

    使用以下命令创建用户并生成密钥:

              # hostname
    ivy02.in.ibm.com
    
    # mkuser ram
    
    # su - ram
    
    # $ ssh-keygen -t rsa -b 2048
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/ram/.ssh/id_rsa):
    Created directory '/home/ram/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/ram/.ssh/id_rsa.
    Your public key has been saved in /home/ram/.ssh/id_rsa.pub.
    The key fingerprint is:
    07:5d:0f:20:95:d4:9c:15:8d:77:bd:93:ea:3c:ac:99 ram@ivy02
    The key's randomart image is:
    +--[ RSA 2048]----+
    |        .o+=ooo+.|
    |         o..+o. =|
    |        . .   ..+|
    |         .     + |
    |        S .   . .|
    |         .   .   |
    |            +    |
    |            o=   |
    |           E. .  |
    +-----------------+

    ssh-keygen 命令提示输入密码。这个密码用于在客户端上加密私有密钥文件。尽管 ssh-keygen 命令可以接受空的密码,但是在这种情况下私有密钥文件不加密。

    把公共密钥复制到服务器上的 ~/.ssh/authorized_keys 文件中。

              # hostname 
    ivy01.in.ibm.com
    
    # cat id_rsa.pub > /home/laxman/.ssh/authorized_keys
    
    # cat /home/laxman/.ssh/authorized_keys
    ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAqYK16NpoJ1Nq1/ccb1Ftu2fGkOQd2T4H74dlc6Q
    gskRHG07eOyTqt58yFJO5h7Zr8g1eQLoO9H6CVA7hi7EKwfg7fPpGWUGdpL6Aq8sgwRkhJOYptcz
    eRujSCi7hyvkT2DhLx7svZOx47pKlPfHFTNPRUjKZ1yPscTs2XWqAdDvPQPV0T14agRFqB81d/gXm
    2vfSVUP+PJDoVVub/DMY928FRBd6fYEfFgZybyMOR14kbuQoJFrnoGZACg4maiPi5fKLiXY0Wl+/2
    ZFAj+9f/uRLcqAWhKdjhcag96bIk2z0c6faBSBv9lOX6TfNIxkFN8CLoHnQhX9y8vpcOLC

可以以相似方式把任意数量的客户机用户的公共密钥复制到服务器用户账户的 ~/.ssh/authorized_keys 文件中。

AIX EFS 配置

在服务器端,必须使用 efsenable 命令启用 EFS。这创建一个 admin 密钥存储库。在两种情况下,会为用户创建密钥存储库。

  1. 创建新用户时。
  2. 给用户分配密码时,或用户登录时。

在系统上创建用户密钥存储库的路径是 /var/efs/users/<userlogin>/keystore。

用户密钥存储库的格式是 PKCS#12,其中包含公共和私有对象。私有对象由用户访问密钥保护。用户访问密钥只是用户定义的密码(登录密码或 EFS 专用的另一个密码)的散列。

在服务器端,需要创建公共密钥 cookie 并把它插入密钥存储库中。用户通过调用 efskeymgr 命令插入 cookie。公共密钥 cookie 是用用户公共密钥加密的密码。

下面的步骤说明如何为一个用户创建密钥存储库并插入公共密钥 cookie。

    # hostname
ivy01.in.ibm.com

# passwd laxman
laxman's New password:
Enter the new password again:

# ls -l /var/efs/users/laxman
total 8
-rw-------    1 root     system            0 Aug 12 15:40 .lock
-rw-------    1 root     system         1914 Aug 12 15:40 keystore

# su - laxman
$ cd .ssh
$ ls
authorized_keys  id_rsa           id_rsa.pub

$ efskeymgr -P authorized_keys
laxman's EFS password:

# ls -l /var/efs/users/laxman
total 8
-rw-------    1 root     system            0 Aug 12 15:40 .lock
-rw-------    1 root     system         2252 Aug 12 15:42 keystore

完成上述所有配置设置之后,运行 ssh 使用公共密钥身份验证登录远程机器。

运行以下命令登录远程机器:

# ssh  <username>@<hostname>
  • 建立连接且公共密钥身份验证成功之后,ssh 服务器检查在 sshd_config 文件中 AllowPKCS12keystoreAutoOpen 是否设置为 'yes'。如果是这样,它向 ssh 客户机发送一个数据包。
  • 当收到这个数据包时,ssh 客户机检查在客户端是否启用了这个选项。也就是说,ssh 客户机检查在 ssh_config 文件中 AllowPKCS12keystoreAutoOpen 是否设置为 'yes'。如果启用了这个特性,客户机向服务器发送确认,表明它也支持这个特性。
  • 从 ssh 客户机收到 ACK 之后,sshd 打开 /var/efs/user/<username>/keystore 中的用户 efs 密钥存储库,读取公共密钥 cookie SSHPub(AK) 并把它发送给 ssh 客户机。
  • 当从服务器收到 SSHPub 时,ssh 客户机用它的私有密钥执行解密并把 accesskey(AK) 发送回服务器。sshd 用 AK 打开用户密钥存储库的私有部分,通过调用 EFS 内核扩展把这个打开的密钥存储库放到内核中并与用户的登录进程相关联。

检验身份验证和 EFS 登录

现在准备使用 EFS 登录由 OpenSSH 服务器上的用户 laxman 对 OpenSSH 客户机用户 ram 进行公钥认证。确认来自客户机的 ssh 登录是否会成功:

# hostname
ivy02.in.ibm.com

# su - ram

$ ssh -vvv laxman@ivy01.in.ibm.com

*********************************************************************
*                                                                             *
*                                                                             *
*  Welcome to AIX Version 6.1!                                                *
*                                                                             *
*                                                                             *
*  Please see the README file in /usr/lpp/bos for information pertinent to    *
*  this release of the AIX Operating System.                                  *
*                                                                             
*                                                                             *
*                                                                             *
*******************************************************************
$ efskeymgr -V
List of keys loaded in the current process:
 Key #0:
                 Kind ..................... User key
                 Id   (uid / gid) ......... 216
                 Type ..................... Private key
                 Algorithm ................ RSA_1024
                 Validity ................. Key is valid
                 Fingerprint .............. a1a07c79:e0d57e83:8f148a2c:ac778fab:f813cf11

$hostname
ivy01.in.ibm.com

这种设置的应用

这种设置可以应用于采用 OpenSSH 公共密钥身份验证的 DB2 UDB DPF。使用 EFS 加密 DB2 表。

排除故障

检查是否执行了上面列出的所有配置。在插入公共密钥 cookie 之前和之后检查密钥存储库文件的大小,从而确认 efskeymgr 命令是否插入了 cookie。为 sshd 启用调试,检查是否有任何错误。另外,成功完成账户登录和 efs 登录后检验密码身份验证。

参考资料

学习

  • 了解关于 OpenSSH 的更多信息。
  • 可以下载 IBM version of OpenSSH for AIX
  • EFS on AIX:了解关于 AIX 6.1 上的 EFS 文件系统的更多信息。
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。

获得产品和技术

  • IBM 产品评估版:试用来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。

讨论

条评论

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=499568
ArticleTitle=在 AIX 6.1.0, TL 4 上配置 OpenSSH 公共密钥身份验证和 EFS
publish-date=07082010