Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1119345
  • 博文数量: 168
  • 博客积分: 4445
  • 博客等级: 上校
  • 技术积分: 1307
  • 用 户 组: 普通用户
  • 注册时间: 2005-11-02 14:04
文章分类

全部博文(168)

文章存档

2018年(2)

2017年(5)

2016年(7)

2015年(1)

2014年(8)

2013年(1)

2012年(4)

2011年(54)

2010年(8)

2009年(19)

2008年(18)

2007年(36)

2006年(1)

2005年(4)

分类:

2007-04-07 17:35:53

Solaris 10 实现安全Kerberos 身份验证

日期:2006-12-04 作者:Manish Katiyar 来自:IBM DW中国


设置 Kerberized 环境以便与 Solaris(TM) 10 协同工作,了解如何在 AIX(R) Version 5.3 中配置密钥分发中心 (KDC)。您还将浏览在 Solaris 10 中配置 Kerberos 客户端的一系列步骤,以使用 AIX Version 5.3 作为 KDC 对 Telnet、远程 Shell (rsh) 和安全 Shell (SSH) 的用户进行身份验证。在不同的平台之间使用单个 AIX IBM Network Authentication Service (NAS) KDC 进行身份验证非常有用,尤其是在混合环境中。

引言

随着安全需求的日益增长,现在的企业需要易于维护的安全机制,然而这些安全机制必须为其提供一个安全的环境。安全机制需要提供强大的身份验证特性以及保密性和其他的特性,例如单点登录 (SSO)。Kerberos 正是这样的一种身份验证协议,它通过在称为密钥分发中心 (KDC) 的中央存储库中存储相关信息的数据库,从而提供集中式的身份验证。

现在,所有的供应商都具有其自己的 Kerberos 实现。在混合环境中,这些 Kerberos 实现之间必须能够进行互操作。Solaris™ 在其 Sun Enterprise Authentication Mechanism™ (SEAM) 软件中提供了 Kerberos Version 5 协议的实现,而 IBM 的 Kerberos 实现是 IBM Network Authentication Service (NAS)。正如 Sun Solaris 10 的文档(请参见参考资料部分)中说明的,Solaris 10 中包含了 SEAM 产品的所有组成部分,所以不再需要使用 SEAM。

本文将向您介绍在 Solaris 10 中配置 Kerberos 客户端所需的步骤,以便利用 AIX® Version 5.3 作为 KDC,对使用常用通信服务的用户进行身份验证,如 Telnet、远程 Shell (rsh) 和安全 Shell (SSH)。在混合环境中,可以使用单个 AIX IBM NAS KDC 进行不同平台的身份验证,管理员将可以从中受益。

使用 AIX Version 5.3 在 Solaris 10 中实现 Kerberized 身份验证

本部分介绍了将 AIX Version 5.3 配置作为 KDC 以及在 Solaris 10 中配置 Kerberos 客户端所需的步骤。下面是在示例中使用到的一些定义:

Kerberos Realm Name / Domain Name                  AIX_KDC 
IBM NAS1.4 KDC                                     hostname: aixdce39.in.ibm.com,  OS: 
                                                               AIX Version 5.3 
SSH/telnet/rlogin Server                           hostname: solsarpc2.in.ibm.com, OS: 
                                                           Solaris 10
Solaris 10 Kerberos Client                         hostname: solsarpc2.in.ibm.com, OS: 
                                                             Solaris 10
SSH/telnet/rlogin client                           hostname: aixdce1.in.ibm.com,   OS: 
                                                            AIX Version 5.3
Windows test machine(with rsh/SSH/telnet client)   hostname: winsarpc2.in.ibm.com, OS: 
                                                          Windows XP
      

下面的图 1 显示了示例的设置。


图 1. 示例设置

在 AIX V5.3 中配置 IBM NAS KDC

要执行清单 1 中的命令,请安装 IBM NAS krb5.server.rte 文件集。AIX Version 5.3 Expansion Pack CD 中提供了 IBM NAS 文件集。


清单 1. 安装 IBM NAS 文件集
[root@aixdce39 / ]# hostname
aixdce39.in.ibm.com

[root@aixdce39 / ]# installp -aqXYgd  .  krb5.server
[root@aixdce39 / ]# echo 'export PATH=/usr/krb5/sbin:/usr/krb5/bin:$PATH' > ~/.profile
      

执行清单 2 中的命令,以便在 AIX 计算机中对 IBM NAS 服务器的遗留配置进行配置。对于其他类型的 IBM NAS 服务器配置,请参阅 AIX Version 5.3 Expansion Pack CD 中附带的 IBM NAS1.4 Administration Guide


清单 2. 配置遗留配置
[root@aixdce39 / ]# hostname
aixdce39.in.ibm.com

[root@aixdce39 / ]# /usr/krb5/sbin/config.krb5 -S -d in.ibm.com -r 
AIX_KDC

Initializing configuration...
Creating /etc/krb5/krb5_cfg_type...
Creating /etc/krb5/krb5.conf...
Creating /var/krb5/krb5kdc/kdc.conf...
Creating database files...
Initializing database '/var/krb5/krb5kdc/principal' for realm 'AIX_KDC'
master key name 'K/M@AIX_KDC'
You are prompted for the database Master Password.
It is important that you DO NOT FORGET this password.
Enter database Master Password:
Re-enter database Master Password to verify:
WARNING: no policy specified for admin/admin@AIX_KDC;
  defaulting to no policy. Note that policy may be overridden by
  ACL restrictions.
Enter password for principal "admin/admin@AIX_KDC":
Re-enter password for principal "admin/admin@AIX_KDC":
Principal "admin/admin@AIX_KDC" created.
Creating keytable...
Creating /var/krb5/krb5kdc/kadm5.acl...
Starting krb5kdc...
krb5kdc was started successfully.
Starting kadmind...
kadmind was started successfully.
The command completed successfully.
	      

配置 Solaris 10 Kerberos 客户端

在 Solaris 10 中,该操作系统缺省情况下提供了 Kerberos 客户端,这是与以前版本的不同之处,以前的版本中附带了一个称为 SEAM 的单独的组件。要在 Solaris 10 中配置 Kerberos 客户端,至少需要创建一个合适的 /etc/krb5/krb5.conf 文件。清单 3 显示了 krb5.conf 文件的内容,我们将在 Solaris 10 计算机的 Kerberos 客户端使用这个文件。

我们建议管理员根据其需要创建 /etc/krb5/krb5.conf 文件。有关 Solaris 10 的 krb5.conf 的详细信息,请参见参考资料部分。


清单 3. Solaris 计算机中 krb5.conf 文件的内容
/> hostname
solsarpc2
/> cat /etc/krb5/krb5.conf
[libdefaults]
        default_realm = AIX_KDC
        default_keytab_name = FILE:/etc/krb5/krb5.keytab
        default_tkt_enctypes = des3-cbc-sha1
        default_tgs_enctypes = des3-cbc-sha1

[realms]
        AIX_KDC = {
                kdc = aixdce39.in.ibm.com:88
                admin_server = aixdce39.in.ibm.com:749
                default_domain = in.ibm.com
        }


[domain_realm]
        .in.ibm.com = AIX_KDC
        aixdce39.in.ibm.com = AIX_KDC

[logging]
        kdc = FILE:/var/krb5/log/krb5kdc.log
        admin_server = FILE:/var/krb5/log/kadmin.log
        default = FILE:/var/krb5/log/krb5lib.log
      

要为 Solaris 10 计算机配置 Kerberized 身份验证,您需要将用于这台 Solaris 计算机的 Kerberos 服务主体的类型设置为 host/(在本示例中为 host/solsarpc2.in.ibm.com),并将其放入 Solaris 计算机上的 keytab 文件中。请注意,keytab 文件的缺省位置是 /etc/krb5/krb5.keytab。

在 keytab 文件中创建服务主体条目的方法有很多种。清单 4 显示了其中一种方法,创建 Kerberos 服务主体,并使用承载 KDC 的 AIX 计算机中的 IBM NAS 提供的 kadmin 工具将其条目添加到 keytab 文件中。然后使用 FTP 将 keytab 文件从 AIX 计算机传输到合适的 Solaris 计算机。Kerberos 实用工具,如 ktutil,在需要的情况下也可以用来完成相同的任务。


清单 4. 创建 krb5.keytab 文件
root@aixdce39: / >
$ hostname
aixdce39.in.ibm.com
root@aixdce39: / >
$ /usr/krb5/bin/kinit admin/admin
Password for admin/admin@AIX_KDC:
root@aixdce39: / >
$ /usr/krb5/bin/klist
Ticket cache:  FILE:/var/krb5/security/creds/krb5cc_0
Default principal:  admin/admin@AIX_KDC

Valid starting     Expires            Service principal
09/20/06 07:24:41  09/21/06 07:24:32  krbtgt/AIX_KDC@AIX_KDC
root@aixdce39: / >
$ /usr/krb5/sbin/kadmin
Authenticating as principal admin/admin@AIX_KDC with password.
Password for admin/admin@AIX_KDC:
kadmin:  add_principal -e des3-cbc-sha1:normal -randkey host/solsarpc2.in.ibm.com
WARNING: no policy specified for host/solsarpc2.in.ibm.com@AIX_KDC;
  defaulting to no policy. Note that policy may be overridden by
  ACL restrictions.
Principal "host/solsarpc2.in.ibm.com@AIX_KDC" created.
kadmin:  ktadd -e des3-cbc-sha1:normal host/solsarpc2.in.ibm.com
Entry for principal host/solsarpc2.in.ibm.com with kvno 3, encryption type Triple DES 
   cbc mode 
with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin:
kadmin:  q
root@aixdce39: / >
$ /usr/krb5/bin/klist -k /etc/krb5/krb5.keytab
Keytab name:  FILE:/etc/krb5/krb5.keytab
KVNO Principal
---- ---------
   3 host/solsarpc2.in.ibm.com@AIX_KDC
root@aixdce39: / >
$ cd /etc/krb5
root@aixdce39: /etc/krb5 >
$ ftp solsarpc2.in.ibm.com
Connected to solsarpc2.in.ibm.com.
220 solsarpc2 FTP server ready.
Name (solsarpc2.in.ibm.com:root): root
331 Password required for root.
Password:
230 User root logged in.
ftp> cd /etc/krb5
250 CWD command successful.
ftp> binary
200 Type set to I.
ftp> mput krb5.keytab
mput krb5.keytab? y
200 PORT command successful.
150 Opening BINARY mode data connection for krb5.keytab.
226 Transfer complete.
306 bytes sent in 0.1978 seconds (1.511 Kbytes/s)
local: krb5.keytab remote: krb5.keytab
ftp> bye
221-You have transferred 306 bytes in 1 files.
221-Total traffic for this session was 842 bytes in 1 transfers.
221-Thank you for using the FTP service on solsarpc2.
221 Goodbye.
root@aixdce39: /etc/krb5 >
      

我们选择创建 Triple DES 加密类型的 host/solsarpc2.in.ibm.com 服务主体,因为 AIX 和 Solaris Kerberos 都支持这种类型。如果希望选择其他的加密类型,您必须确保 IBM NAS 和 SUN Kerberos 能够支持这些加密类型。

创建 Kerberos 主体和相应的 Solaris 用户

下一步,让我们创建用于登录到 Solaris 10 计算机的 Kerberos 主体。您可以使用 kadmin 工具创建这个 Kerberos 主体,IBM NAS for AIX 中附带了 kadmin 工具。有关 kadmin 工具的详细信息,请参阅 AIX Expansion CD 中的 IBM NAS Administration Guide。

在我们的设置中,我们创建了一个称为 sandeep 的 Kerberos 主体,如清单 5 所示,以及相应的 Solaris 10 用户,如清单 6 所示。为了通过上面的设置,使得 Solaris 10 计算机的 root 用户能够使用 telnet/ssh/rlogin 进行登录,您需要创建一个 root/ 类型的 Kerberos 主体。在本示例中,您需要创建一个称为 root/solsarpc2.in.ibm.com 的 Kerberos 主体,如下所示。


清单 5. 在承载 KDC 的 AIX 计算机上使用 kadmin 工具创建 Kerberos 主体
$ hostname
aixdce39.in.ibm.com
root@aixdce39: / >
$ /usr/krb5/bin/kinit admin/admin
Password for admin/admin@AIX_KDC:
root@aixdce39: / >
$ /usr/krb5/sbin/kadmin
Authenticating as principal admin/admin@AIX_KDC with password.
Password for admin/admin@AIX_KDC:
kadmin:  add_principal sandeep
WARNING: no policy specified for sandeep@AIX_KDC;
  defaulting to no policy. Note that policy may be overridden by
  ACL restrictions.
Enter password for principal "sandeep@AIX_KDC":
Re-enter password for principal "sandeep@AIX_KDC":
Principal "sandeep@AIX_KDC" created.
kadmin:  add_principal root/solsarpc2.in.ibm.com
WARNING: no policy specified for root/solsarpc2.in.ibm.com@AIX_KDC;
  defaulting to no policy. Note that policy may be overridden by
  ACL restrictions.
Enter password for principal "root/solsarpc2.in.ibm.com@AIX_KDC":
Re-enter password for principal "root/solsarpc2.in.ibm.com@AIX_KDC":
Principal "root/solsarpc2.in.ibm.com@AIX_KDC" created.
kadmin:  q
root@aixdce39: / >
$
      


清单 6. 在 Solaris 计算机上创建 Solaris 10 用户
/> hostname
solsarpc2
/> who am i
root       pts/4        Sep 21 15:26    (RSANDEEP1.in.ibm.com)
/> useradd -m -d /export/home/sandeep sandeep
64 blocks
/> passwd sandeep
New Password:
Re-enter new Password:
passwd: password successfully changed for sandeep
      

在 Solaris 10 上对 ssh/telnet/rlogin 进行 Kerberized 身份验证所需的插入式验证模块 (Pluggable Authentication Module) 的配置

编辑 /etc/pam.conf 文件,以便使得 Telnet、SSH 和 rlogin 使用 Kerberos 作为其身份验证模块。如下面的清单 7 所示,在 /etc/pam.conf 文件中添加相应的条目,以便为 SSH、Telnet 和 rlogin 命令启用 Kerberos 身份验证。我们建议管理员应该充分理解 Solaris 插入式验证模块 (PAM) 和 /etc/pam.conf 文件的使用(可以参考 Solaris 10 中关于 pam.conf 和 sshd 的 man 页面),然后将其映射为身份验证需求,并在 /etc/pam.conf 文件中修改相应的条目。


清单 7. 在 Solaris 计算机上设置 pam.conf 文件
sshd-kbdint   auth sufficient pam_krb5.so.1
telnet        auth sufficient pam_krb5.so.1
rlogin        auth sufficient pam_krb5.so.1
	       

在完成了设置工作之后,您就可以将 Kerberized 服务用于不同的通信服务。要对设置进行测试,可以在提供了 telnet/rlogin/ssh 的任何计算机上使用这些工具登录到 Solaris 10 计算机。成功连接之后,将会提示您输入 Kerberos 登录名和命名。您需要输入 Kerberos 主体及其关联的 Kerberos 密码。

清单 8、9 和 10 显示了使用 Kerberos 主体 sandeep 从 AIX 计算机使用 SSH、Telnet 和 rlogin 命令登录到 Solaris 计算机的测试结果。您还可以使用 Windows 本机的 Telnet 应用程序和 PuTTY for Windows(一种免费的 telnet/ssh/rlogin 客户端)从 Windows® XP 计算机登录到 Solaris 10 计算机,以便对 Kerberized 身份验证进行测试。

使用 AIX Version 5.3 作为 KDC 在 Solaris 10 上实现 Kerberized SSH

清单 8 显示了 aixdce1.in.ibm.com 上所执行的命令序列,该命令序列使用 Kerberos 作为身份验证机制(将 aixdce39.in.ibm.com (AIX Version 5.3) 服务器作为 KDC),建立了到 solsarpc2.in.ibm.com 的 SSH 连接。


清单 8. 使用 Kerberos 身份验证的成功的 SSH 的示例输出

				
$hostname
aixdce1.in.ibm.com
$whoami
manish
$ssh sandeep@solsarpc2.in.ibm.com
Enter Kerberos password for sandeep:
Last login: Wed Sep 20 12:58:40 2006 from aixdce1.in.ibm.com
Welcome to the Sun Java Enterprise System 2005Q1 (Solsarpc2.in.ibm.com) !
$ hostname
solsarpc2
$ uname -a
SunOS solsarpc2 5.10 Generic_118833-17 sun4u sparc SUNW,Sun-Fire-V240
$ who am i
sandeep    pts/3        Sep 20 13:00    (aixdce1.in.ibm.com)
$ pwd
/export/home/sandeep
$ exit
Connection to solsarpc2.in.ibm.com closed.
$hostname
aixdce1.in.ibm.com
$
      

如果在执行上述设置后,在使用 Kerberos 进行 SSH 连接时存在任何问题,可以在 /etc/hosts 中添加该计算机的完全限定的域名,然后进行重试。

使用 AIX Version 5.3 作为 KDC 在 Solaris 10 上实现 Kerberized Telnet

清单 9 显示了 aixdce1.in.ibm.com 上所执行的命令序列,该命令序列使用 Kerberos 作为身份验证机制(将 aixdce39.in.ibm.com (AIX Version 5.3) 服务器作为 KDC),建立了到 solsarpc2.in.ibm.com 的 Telnet 访问。


清单 9. 使用 Kerberos 身份验证的成功的 Telnet 的示例输出

				
[root@aixdce1 / ] #hostname
aixdce1.in.ibm.com
[root@aixdce1 / ] #whoami
root
[root@aixdce1] #telnet solsarpc2.in.ibm.com
Trying...
Connected to 9.182.192.168.
Escape character is '^]'.
login: sandeep
Enter Kerberos password for sandeep:
Last login: Tue Sep 19 15:20:06 from RSANDEEP1.in.ibm.com
Welcome to the Sun Java Enterprise System 2005Q1 (Solsarpc2.in.ibm.com) !
$ uname -a
SunOS solsarpc2 5.10 Generic_118833-17 sun4u sparc SUNW,Sun-Fire-V240
$ who am i
sandeep    pts/3        Sep 19 15:24    (aixdce1.in.ibm.com)
$ pwd
/export/home/sandeep
$ exit
Connection closed.
[root@aixdce1] #hostname
aixdce1.in.ibm.com
[root@aixdce1] #
      

在缺省情况下,已启用了 Telnet 服务器并运行于 Solaris 10。如果没有,请参考 Solaris 10 中关于 telnetd 的 man 页面。

使用 AIX Version 5.3 作为 KDC 在 Solaris 10 上实现 Kerberized rlogin

清单 10 显示了 aixdce1.in.ibm.com 上所执行的命令序列,该命令序列使用 Kerberos 作为身份验证机制(将 aixdce39.in.ibm.com (AIX Version 5.3) 服务器作为 KDC),建立了到 solsarpc2.in.ibm.com 的远程登录访问。


清单 10. 使用 Kerberos 身份验证的成功的 rlogin 的示例输出

				
[root@aixdce1 / ] #hostname
aixdce1.in.ibm.com
[root@aixdce1 / ] #whoami
root
[root@aixdce1 / ] #rlogin solsarpc2.in.ibm.com -l sandeep
Enter Kerberos password for sandeep:
Last login: Tue Sep 19 15:24:14 from aixdce39.in.ibm.com
Welcome to the Sun Java Enterprise System 2005Q1 (Solsarpc2.in.ibm.com) !
$ hostname
solsarpc2
$ uname -a
SunOS solsarpc2 5.10 Generic_118833-17 sun4u sparc SUNW,Sun-Fire-V240
$ who am i
sandeep    pts/3        Sep 19 15:31    (aixdce1.in.ibm.com)
$ pwd
/export/home/sandeep
$ exit
Connection closed.
[root@aixdce1 / ]hostname
aixdce1.in.ibm.com
      

在缺省情况下,已启用了 Telnet 服务器并运行于 Solaris 10。如果没有,请参考 Solaris 10 中关于 rlogind 的 man 页面。

总结

本文向管理员介绍了如何在 AIX Version 5.3 上配置 KDC,以及使用它来设置 Kerberized 环境,以便与 Solaris 10 协同工作。本文还说明了如何使用它为不同类型的通信进行身份验证。该内容可以帮助管理员使用单个 AIX KDC 实现不同操作系统的身份验证。要了解如何为 Windows 配置 AIX KDC,请参见参考资料部分。

原文链接:http://www-128.ibm.com/developerworks/cn/aix/library/au-kerberoskdc/index.html

阅读(978) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~