AIX中的网络应用程序(例如,telnet,FTP和rlogin,rsh,rcp等r命令)固有地支持Kerberos认证。 管理员所需要做的就是安装和配置Kerberos并配置AIX系统(进而是其应用程序)以使用该Kerberos设置进行身份验证。 Kerberos身份验证意味着,一旦您拥有有效的Kerberos票证(通过手动的/usr/krb5/bin/kinit
或集成登录名获得),网络应用程序便可以将此票证用作您的身份验证令牌,并且一旦成功进行身份验证,系统将为您提供无需输入密码即可访问。
基本配置
为了启用Kerberos认证,在Kerberos前端以及AIX系统上需要一些通用的基本配置。 让我们浏览一下它们。
Kerberos配置
- 使一台服务器计算机成为Kerberos主KDC(密钥分发中心)。 该计算机将负责所有与Kerberos相关的任务,例如生成票证,验证用户身份等等。 在这里,管理员需要将IBM Network Attached Storage(NAS)(最好是1.4.0.7版或最新版本)安装和配置为主KDC。
- 网络中的所有其他计算机(您将在其中使用telnet,FTP或r命令登录),安装IBM NAS并将其配置为主KDC的客户端。
- 这些是运行telnet / FTP守护程序的计算机,您将从客户端连接到该计算机。 也将IBM NAS安装和配置为这些计算机上主KDC的客户端。
有关IBM NAS服务器以及客户机安装和配置的完整说明,请参阅AIX版本5.3扩展包CD随附的《 IBM NAS版本1.4管理指南》 。
对于本文中的示例,我引用了一个示例Kerberos环境。 图1显示了环境和信息的逻辑流。
图1:一个示例显示了使用Kerberos的telnet
本文通篇使用以下定义:
Kerberos管理员名称:
管理员/管理员
Kerberos领域名称:
ISL.IN.IBM.COM
IBM NAS 1.4.0.7主KDC:
主机名:land.in.ibm.com端口:88
操作系统:AIX 5.3
IBM NAS 1.4.0.7管理服务器:
主机名:land.in.ibm.com端口:749
操作系统:AIX 5.3
IBM NAS 1.4.0.7客户端:
主机名:fakir.in.ibm.com
操作系统:AIX 6.1
运行telnet服务的机器:
主机名:fsaix005.in.ibm.com端口:23
操作系统:AIX 5.3
运行FTP服务的机器:
主机名:fsaix005.in.ibm.com端口:21
操作系统:AIX 5.3
检查并同步所有机器之间的时间差; 不应超过5分钟。 要检查Kerberos配置的正确性,请使用'/usr/krb5/bin/kinit admin/admin'
,然后使用'/usr/krb5/bin/klist'
,查看是否能够获取Kerberos票证,然后使用'/usr/krb5/sbin/kadmin -p admin/admin'
以检查所有内容(时差等)是否正确。
AIX认证配置
为了确保所有网络应用程序先于标准的基于密码的身份验证尝试Kerberos身份验证,管理员需要在所有AIX机器上更改身份验证方法的首选项。
'/usr/bin/lsauthent'
命令显示当前的身份验证模式首选项。
bash-2.05b# /usr/bin/lsauthent
Standard Aix
要更改身份验证模式首选项,请使用'/usr/bin/chauthent'
命令。
bash-2.05b# /usr/bin/chauthent -k5 -std
现在, '/usr/bin/lsauthent'
将显示如下内容:
bash-2.05b# /usr/bin/lsauthent
Kerberos 5
Standard Aix
确保保留标准的基于密码的身份验证方法(上述-std)作为后备身份验证方法,否则,如果未启用正确的Kerberos登录,则将无法登录系统。
为Telnet服务配置Kerberos
在Kerberos环境中,每个Kerberos服务均由服务主体表示。 该服务主体不过是普通的Kerberos主体,后者拥有解密Kerberos服务器发送的响应的密钥。 同样对于telnet服务,您将需要创建telnet服务主体并在telnet服务器上执行一些配置步骤。
使用以下分步过程为telnet服务配置Kerberos。
如果已经使用'mkkrb5clnt'
命令配置了Kerberos客户端,则无需执行步骤1和'mkkrb5clnt'
命令创建了主机服务主体并将其存储在/var/krb5/security/keytab/<hostname>.keytab
文件。 将此文件链接到默认的keytab文件/etc/krb5/krb5.keytab
。
- 在运行telnet服务的机器上(fsaix005.in.ibm.com),使用名称“ host / <FQDN_telnetd_hostname>”创建telnet服务主体。 对于我们来说,它将是“ host / fsaix005.in.ibm.com”。
使用完全限定域名(FQDN)对于此设置非常重要。
bash-2.05b# hostname fsaix005.in.ibm.com bash-2.05b# kadmin -p admin/admin Authenticating as principal admin/admin with password. Password for admin/admin@ISL.IN.IBM.COM: kadmin: addprinc -randkey host/fsaix005.in.ibm.com WARNING: no policy specified for host/fsaix005.in.ibm.com@ISL.IN.IBM.COM; defaulting to no policy. Note that policy may be overridden by ACL restrictions. Principal "host/fsaix005.in.ibm.com@ISL.IN.IBM.COM" created.
- 将telnet服务主体添加到keytab文件(/etc/krb5/krb5.keytab)。
kadmin: ktadd host/fsaix005.in.ibm.com Entry for principal host/fsaix005.in.ibm.com with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal host/fsaix005.in.ibm.com with kvno 3, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal host/fsaix005.in.ibm.com with kvno 3, encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal host/fsaix005.in.ibm.com with kvno 3, encryption type DES cbc mode with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal host/fsaix005.in.ibm.com with kvno 3, encryption type AES-128 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab. kadmin: q bash-2.05b#
如果由于某种原因而无法执行“ kadmin”,则在KDC上创建服务主体,然后将其添加到keytab文件(/etc/krb5/krb5.keytab)中,并将此keytab文件传输到运行telnetd的计算机上( fsaix005.in.ibm.com,供我们使用)。
- 在远程登录服务机器(fsaix005.in.ibm.com)上,运行
'/usr/krb5/bin/klist -k'
并检查条目。bash-2.05b# hostname fsaix005.in.ibm.com bash-2.05b# /usr/krb5/bin/klist -k Keytab name: FILE:/etc/krb5/krb5.keytab KVNO Principal ---- --------- 3 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM bash-2.05b#
- 在telnet服务机器(fsaix005.in.ibm.com)上,创建一个新用户'vipin',您将使用该用户telnet到fsaix005。 修改该用户的密码。
bash-2.05b# hostname fsaix005.in.ibm.com bash-2.05b# mkuser -R files vipin bash-2.05b# passwd vipin Changing password for "vipin" vipin's New password: Enter the new password again: bash-2.05b#
- 创建具有相同名称“ vipin”的Kerberos主体。 可以从Kerberos领域中的任何计算机(主KDC或客户端)完成此操作。
bash-2.05b# hostname fsaix005.in.ibm.com bash-2.05b# kadmin -p admin/admin Authenticating as principal admin/admin with password. Password for admin/admin@ISL.IN.IBM.COM: kadmin: ank -pw vipin vipin WARNING: no policy specified for vipin@ISL.IN.IBM.COM; defaulting to no policy. Note that policy may be overridden by ACL restrictions. Principal "vipin@ISL.IN.IBM.COM" created. kadmin: q bash-2.05b#
- 转到配置了Kerberos客户端的任何其他客户端计算机(fakir.in.ibm.com)。 运行
'/usr/krb5/bin/kinit vipin'
以获取初始的Kerberos票证,如下所示:bash-2.05b# hostname fakir.in.ibm.com bash-2.05b# /usr/krb5/bin/kinit vipin Password for vipin@ISL.IN.IBM.COM: bash-2.05b# /usr/krb5/bin/klist Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0 Default principal: vipin@ISL.IN.IBM.COM Valid starting Expires Service principal 02/16/08 04:31:41 02/17/08 04:31:39 krbtgt/ISL.IN.IBM.COM@ISL.IN.IBM.COM bash-2.05b#
- 尝试通过telnet到telnetd机器(fsaix005.in.ibm.com)。 如果一切顺利,将不会要求您输入密码,而您将以“ vipin”用户身份登录。
方法如下:bash-2.05b# hostname fakir.in.ibm.com bash-2.05b# telnet -l vipin fsaix005.in.ibm.com Trying... Connected to fsaix005.in.ibm.com. Escape character is '^]'. [ Kerberos V5 accepts you as ``vipin@ISL.IN.IBM.COM'' ] telnet (fsaix005.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. * * * * * ******************************************************************************* Last unsuccessful login: Wed Feb 13 11:50:40 CST 2008 on /dev/pts/2 from land.in.ibm.com Last login: Fri Feb 15 12:49:06 CST 2008 on /dev/pts/3 from aixdce8.in.ibm.com $ hostname fsaix005.in.ibm.com $ id uid=237(vipin) gid=1(staff) $ exit Connection closed bash-2.05b# hostname fakir.in.ibm.com bash-2.05b#
那就是完成以kerberized方式进行的telnet所需的全部! 发出telnet命令时,请注意附加选项(在上面的突出显示的文本中)。
如果要检查您是否确实获得了telnet服务主体的票证,请运行
â????/usr/krb5/bin/klistâ????
在客户端上,并查看输出。 您应该会看到以下内容:bash-2.05b# hostname fakir.in.ibm.com bash-2.05b# /usr/krb5/bin/klist Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0 Default principal: vipin@ISL.IN.IBM.COM Valid starting Expires Service principal 02/16/08 04:31:41 02/17/08 04:31:39 krbtgt/ISL.IN.IBM.COM@ISL.IN.IBM.COM 02/16/08 04:32:56 02/17/08 04:31:39 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM bash-2.05b#
为FTP服务配置Kerberos
与telnet服务类似,您也可以将FTP服务配置为接受和使用Kerberos身份验证。 使用以下分步过程可以实现此目的:
- 创建一个FTP服务主体。 这次,FTP服务主体的名称将为“ ftp / <FQDN_ftpd_hostname>”。 因此,对于我们来说,它将类似于ftp / fsaix005.in.ibm.com。 创建主体:
bash-2.05b# hostname fsaix005.in.ibm.com bash-2.05b# kadmin -p admin/admin Authenticating as principal admin/admin with password. Password for admin/admin@ISL.IN.IBM.COM: kadmin: ank -randkey ftp/fsaix005.in.ibm.com WARNING: no policy specified for ftp/fsaix005.in.ibm.com@ISL.IN.IBM.COM; defaulting to no policy. Note that policy may be overridden by ACL restrictions. Principal "ftp/fsaix005.in.ibm.com@ISL.IN.IBM.COM" created.
- 现在,将此主体条目添加到密钥表文件(/etc/krb5/krb5.keytab)。
kadmin: ktadd ftp/fsaix005.in.ibm.com Entry for principal ftp/fsaix005.in.ibm.com with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal ftp/fsaix005.in.ibm.com with kvno 3, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal ftp/fsaix005.in.ibm.com with kvno 3, encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal ftp/fsaix005.in.ibm.com with kvno 3, encryption type DES cbc mode with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab. Entry for principal ftp/fsaix005.in.ibm.com with kvno 3, encryption type AES-128 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab. kadmin: q bash-2.05b#
- 在FTP服务机器(fsaix005.in.ibm.com)上,运行
'/usr/krb5/bin/klist -k'
并检查keytab文件中的条目。 这次应该看起来像这样:bash-2.05b# hostname fsaix005.in.ibm.com bash-2.05b# /usr/krb5/bin/klist -k Keytab name: FILE:/etc/krb5/krb5.keytab KVNO Principal ---- --------- 3 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 ftp/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 ftp/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 ftp/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 ftp/fsaix005.in.ibm.com@ISL.IN.IBM.COM 3 ftp/fsaix005.in.ibm.com@ISL.IN.IBM.COM bash-2.05b#
- 下一步是获取初始Kerberos票证。 由于我们已经有一个名为“ vipin”的Kerberos用户,因此我们将使用此主体通过
'/usr/krb5/bin/kinit'
命令获取初始Kerberos票证。bash-2.05b# hostname fakir.in.ibm.com bash-2.05b# /usr/krb5/bin/kinit vipin Password for vipin@ISL.IN.IBM.COM: bash-2.05b# /usr/krb5/bin/klist Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0 Default principal: vipin@ISL.IN.IBM.COM Valid starting Expires Service principal 02/16/08 04:47:46 02/17/08 04:47:45 krbtgt/ISL.IN.IBM.COM@ISL.IN.IBM.COM bash-2.05b#
- 有了有效的票证后,我们现在就可以开始使用Kerberos的FTP。
bash-2.05b# hostname fakir.in.ibm.com bash-2.05b# ftp fsaix005.in.ibm.com Connected to fsaix005.in.ibm.com. 220 fsaix005.in.ibm.com FTP server (Version 4.2 Sat Jun 16 07:20:05 CDT 2007) ready. 334 Using authentication type GSSAPI; ADAT must followGSSAPI accepted as authentication typeGSSAPI authentication succeeded Name (fsaix005.in.ibm.com:root): vipin 232 GSSAPI user vipin@ISL.IN.IBM.COM is authorized as vipin ftp> ftp> bye 221 Goodbye. bash-2.05b#
要交叉检查以Kerberos方式进行的FTP成功,您可以关闭FTP会话并执行“
â????/usr/krb5/bin/klistâ????
查看我们FTP服务主体的其他票证。bash-2.05b# hostname fakir.in.ibm.com bash-2.05b# /usr/krb5/bin/klist Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0 Default principal: vipin@ISL.IN.IBM.COM Valid starting Expires Service principal 02/16/08 04:47:46 02/17/08 04:47:45 krbtgt/ISL.IN.IBM.COM@ISL.IN.IBM.COM 02/16/08 04:49:20 02/17/08 04:49:19 ftp/fsaix005.in.ibm.com@ISL.IN.IBM.COM bash-2.05b#
为r命令配置Kerberos
AIX r命令(例如rlogin,rsh和rcp)也支持Kerberos认证。 我们将研究这些命令如何利用Kerberos票证来使我们无缝地完成工作。
所有r命令的Kerberos服务主体将再次变为'host / <FQDN_service_hostname>',与telnet服务主体相同。 因此,如果您已配置了kerberized telnet身份验证,则无需执行任何其他配置步骤。 只需获取初始Kerberos票证并触发r命令即可。 例如:
在“ rlogin”中显示Kerberos身份验证的示例
bash-2.05b# hostname
fakir.in.ibm.com
bash-2.05b# /usr/krb5/bin/kinit vipin
Password for vipin@ISL.IN.IBM.COM:
bash-2.05b# /usr/krb5/bin/klist
Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0
Default principal: vipin@ISL.IN.IBM.COM
Valid starting Expires Service principal
04/21/08 08:54:26 04/22/08 08:54:25 krbtgt/ISL.IN.IBM.COM@ISL.IN.IBM.COM
bash-2.05b# rlogin fsaix005.in.ibm.com -l vipin
*******************************************************************************
* *
* *
* 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. *
* *
* *
*******************************************************************************
Last unsuccessful login: Mon Apr 21 07:55:42 CDT 2008 on /dev/pts/1 from 9.182.185.101
Last login: Mon Apr 21 08:01:29 CDT 2008 on /dev/pts/1 from fakir.in.ibm.com
$ hostname
fsaix005.in.ibm.com
$ exit
Connection closed.
bash-2.05b# /usr/krb5/bin/klist
Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0
Default principal: vipin@ISL.IN.IBM.COM
Valid starting Expires Service principal
04/21/08 08:54:26 04/22/08 08:54:25 krbtgt/ISL.IN.IBM.COM@ISL.IN.IBM.COM
04/21/08 08:54:49 04/22/08 08:54:25 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM
bash-2.05b#
显示“ rsh”中的Kerberos身份验证的示例
我们还可以在rsh中进行Kerberos身份验证。 与rlogin相同。
bash-2.05b# hostname
fakir.in.ibm.com
bash-2.05b# /usr/krb5/bin/kinit vipin
Password for vipin@ISL.IN.IBM.COM:
bash-2.05b# /usr/krb5/bin/klist
Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0
Default principal: vipin@ISL.IN.IBM.COM
Valid starting Expires Service principal
04/21/08 08:58:08 04/22/08 08:58:39 krbtgt/ISL.IN.IBM.COM@ISL.IN.IBM.COM
bash-2.05b# rsh fsaix005.in.ibm.com -l vipin
*******************************************************************************
* *
* *
* 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. *
* *
* *
*******************************************************************************
Last unsuccessful login: Mon Apr 21 07:55:42 CDT 2008 on /dev/pts/1 from 9.182.185.101
Last login: Mon Apr 21 08:54:58 CDT 2008 on /dev/pts/1 from fakir.in.ibm.com
$ hostname
fsaix005.in.ibm.com
$ exit
Connection closed.
bash-2.05b# /usr/krb5/bin/klist
Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0
Default principal: vipin@ISL.IN.IBM.COM
Valid starting Expires Service principal
04/21/08 08:58:08 04/22/08 08:58:39 krbtgt/ISL.IN.IBM.COM@ISL.IN.IBM.COM
04/21/08 08:58:33 04/22/08 08:58:39 host/fsaix005.in.ibm.com@ISL.IN.IBM.COM
显示“ rcp”中的Kerberos身份验证的示例
本示例使用Kerberos身份验证将文件从一台机器(fakir.in.ibm.com)复制到另一台远程机器(fsaix005.in.ibm.com)。
- 这是我们要传输的fakir.in.ibm.com上的文件:
bash-2.05b# hostname fakir.in.ibm.com bash-2.05b# ls -l /home/vipin/progs/try.c -rw-r--r-- 1 root system 200 Feb 14 03:55 home/vipin/progs/try.c bash-2.05b#
- 将此文件复制到/ home / vipin目录中的fsaix005.in.ibm.com。 fsaix005.in.ibm.com上/ home / vipin的当前内容是:
bash-2.05b# hostname fsaix005.in.ibm.com bash-2.05b# ls -l /home/vipin/t* ls: 0653-341 The file /home/vipin/t* does not exist. bash-2.05b#
- 运行Kerberos认证,并在fakir.in.ibm.com上获取初始Kerberos票证。
bash-2.05b# hostname fakir.in.ibm.com bash-2.05b# /usr/krb5/bin/kinit vipin Password for vipin@ISL.IN.IBM.COM: bash-2.05b# /usr/krb5/bin/klist Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0 Default principal: vipin@ISL.IN.IBM.COM Valid starting Expires Service principal 04/21/08 09:20:13 04/22/08 09:20:45 krbtgt/ISL.IN.IBM.COM@ISL.IN.IBM.COM bash-2.05b#
- 有了有效的票证后,我们就可以运行rcp了。 命令:
bash-2.05b# rcp /home/vipin/progs/try.c vipin@fsaix005.in.ibm.com:/home/vipin bash-2.05b#
请注意我们如何传递fsaix005.in.ibm.com的用户名。 我们还将在fsaix005.in.ibm.com上传递目标目录。 重要的是要记住,目标目录必须是用户可写的。
- 在fsaix005.in.ibm.com上,我们可以像这样交叉检查文件复制操作:
bash-2.05b# hostname fsaix005.in.ibm.com bash-2.05b# ls -l /home/vipin/t* -rw-r--r-- 1 vipin staff 200 Apr 21 09:21 /home/vipin/try.c bash-2.05b#
注意新复制文件的用户ACL。
常见的kerberized telnet错误和错误
错误 | 解 |
---|---|
Kerberos V5拒绝身份验证,因为未授权admin/admin@ISL.IN.IBM.COM登录到指定帐户。 | 最初的Kerberos票证是使用“ admin / admin”创建的,而不是使用您的普通用户名(在此示例中为“ vipin”)创建的。 运行'/usr/krb5/bin/kdestroy' 销毁早期的Kerberos票证,并使用'/usr/krb5/bin/kinit <username>' 获得正确的票证'/usr/krb5/bin/kdestroy' 试。 |
Kerberos V5拒绝身份验证,因为telnetd:krb5_rd_req失败:解密完整性检查失败。 | 服务主体的密钥版本号不匹配。 删除服务主体(使用'delprinc' 命令'),并将其从密钥表文件中删除(使用'ktrem' 命令)。 再次重新创建一个新的服务主体,并将其添加到keytab文件中,然后重试。 |
Kerberos V5拒绝身份验证,因为telnetd:krb5_rd_req失败:常规RC I / O错误。 | 在telnet服务器上,如果目录不存在,则创建一个名为“ / var / tmp”的目录。 这应该可以解决问题。 |
结论
本文演示了如何在AIX网络应用程序(如telnet,FTP和r-commands)中使用Kerberos认证机制,这些应用程序支持Kerberos。
翻译自: https://www.ibm.com/developerworks/aix/library/au-kerberosaix6/index.html