分类:
2007-04-07 17:35:48
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 显示了示例的设置。
在 AIX V5.3 中配置 IBM NAS KDC
要执行清单 1 中的命令,请安装 IBM NAS krb5.server.rte 文件集。AIX Version 5.3 Expansion Pack CD 中提供了 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。
[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 的详细信息,请参见参考资料部分。
/> 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/
在 keytab 文件中创建服务主体条目的方法有很多种。清单 4 显示了其中一种方法,创建 Kerberos 服务主体,并使用承载 KDC 的 AIX 计算机中的 IBM NAS 提供的 kadmin 工具将其条目添加到 keytab 文件中。然后使用 FTP 将 keytab 文件从 AIX 计算机传输到合适的 Solaris 计算机。Kerberos 实用工具,如 ktutil,在需要的情况下也可以用来完成相同的任务。
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 主体,如下所示。
$ 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: / > $ |
/> 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 文件中修改相应的条目。
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 $ |
使用 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] # |
使用 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 |
总结
本文向管理员介绍了如何在 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