您可以使用Kerberos来验证网络上用户和主体的身份。 此过程中使用两种类型的票证:票证授予票证和服务票证。 票证授予票证会验证您请求服务票证。 服务器提供服务票证请求以访问实际服务。 密钥分发中心(KDC)用作发行这些票证的受信任的第三方。
票证已加密,因此只有具有有效私钥的主体或具有整个Kerberos数据库的主体名称,其私钥及其到期的KDC才能对其进行解密。
Kerberos版本5 KDC可以使用三种加密类型:
数据加密标准(DES) 三重DES 高级加密标准(AES)
AES是目前用于安全通信的最先进和推荐的加密类型,因此本文重点介绍如何设置KDC以使用AES。
先决条件
要遵循本文中的示例,您需要配置了IBM Network Authentication Services(NAS)1.4版(或更高版本)文件集的AIX®5.3H®(或更高版本)机器。
设置KDC服务器
首先,验证IBM NAS文件集的安装(请参见清单1 )。
清单1.验证IBM NAS文件集
# lslpp -l |grep krb5
krb5.client.rte 1.4.0.4 COMMITTED Network Authentication
Service
krb5.client.samples 1.4.0.4 COMMITTED Network Authentication
Service
krb5.lic 1.4.0.4 COMMITTED Network Authentication
Service
krb5.msg.en_US.client.rte 1.4.0.4 COMMITTED Network Auth Service
Client
krb5.server.rte 1.4.0.4 COMMITTED Network Authentication
Service
krb5.toolkit.adt 1.4.0.4 COMMITTED Network Authentication
Service
krb5.client.rte 1.4.0.4 COMMITTED Network Authentication
Service
krb5.server.rte 1.4.0.4 COMMITTED Network Authentication
Service
下一步是进行Kerberos服务器设置。 这里要考虑的重要参数是:领域名称( -r ),域名( -d )和标准的Kerberos管理服务器(请参见清单2 )。
清单2. Kerberos服务器设置
# mkkrb5srv -r REALM1.IBM.COM -d in.ibm.com -s adfsaix5.in.ibm.com
Fileset Level State Description
----------------------------------------------------------------------------
Path: /usr/lib/objrepos
krb5.server.rte 1.4.0.4 COMMITTED Network Authentication Service
Server
Path: /etc/objrepos
krb5.server.rte 1.4.0.4 COMMITTED Network Authentication Service
Server
The -s option is not supported.
The administration server will be the local host.
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 'REALM1.IBM.COM'
master key name 'K/M@REALM1.IBM.COM'
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@REALM1.IBM.COM;
defaulting to no policy. Note that policy may be overridden by
ACL restrictions.
Enter password for principal "admin/admin@REALM1.IBM.COM":
Re-enter password for principal "admin/admin@REALM1.IBM.COM":
Principal "admin/admin@REALM1.IBM.COM" 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.
Restarting kadmind and krb5kdc
运行此命令时,系统要求输入主数据库密码和名为admin的管理主体的密码。 在安全的地方记录名称和选择的密码,因为这些原则对于您的NAS环境至关重要。
mkkrb5srv命令配置Kerberos服务器,创建kadm5.acl,krb5.conf和kdc.conf文件,并创建Kerberos数据库。 它还将管理员添加到数据库,并使用Kerberos守护程序更新/ etc / inittab文件。 设置变量后,此命令将进行初始配置。
在系统重新引导后,还将在/ etc / inittab文件中自动添加以下两行以启动KDC服务器(请参见清单3 )。
清单3.启动KDC服务器
# lsitab krb5kdc
krb5kdc:2:once:/usr/krb5/sbin/krb5kdc
# lsitab kadm
kadm:2:once:/usr/krb5/sbin/kadmind
有关更多详细信息,请参考mkkrb5srv手册页。
要对KDC服务器进行基本验证,请参见下面的清单4 。
清单4.验证KDC服务器
# ps -ef |grep krb |grep -v grep
root 299160 1 0 18:20:51 - 0:00 /usr/krb5/sbin/krb5kdc
root 315554 1 0 18:20:51 - 0:00 /usr/krb5/sbin/kadmind
#
# kinit admin/admin
Password for admin/admin@REALM1.IBM.COM:
# klist -e
Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0
Default principal: admin/admin@REALM1.IBM.COM
Valid starting Expires Service principal
02/22/07 04:35:14 02/23/07 04:35:14 krbtgt/REAM1.IBM.COM@REAM1.IBM.COM
Etype (skey, tkt): Triple DES cbc mode with HMAC/sha1, \
Triple DES cbc mode with HMAC/sha1
将使用默认值创建krb5.conf文件。 在这些默认值中,您应该关注为default_tkt_enctypes和default_tgs_enctypes参数设置的值。 default_tkt_enctypes列出了可用于服务票证加密和哈希处理的加密类型(例如校验和)的组合。 在此列表中的值中,第一个值为des3-cbc-sha1的默认值。 同样, default_tgs_enctypes列出了用于授予票证的票证。 同样,此处使用的默认加密类型为des3-cbc-sha1。
要使Kerberos服务器使用AES代替默认值(des3-cbc-sha1),请执行以下步骤:
编辑/etc/krb5/krb5.conf文件,使AES加密类型(aes256-cts)成为default_tkt_enctypes和default_tgs_enctypes列表中的第一个条目(请参见清单5和6 )。
清单5.编辑之前
# cat /etc/krb5/krb5.conf
[libdefaults]
default_realm = \
REALM1.IBM.COM
default_keytab_name = \
FILE:/etc/krb5/krb5.keytab
default_tkt_enctypes = \
des3-cbc-sha1 arcfour-hmac aes256-cts des-cbc-md5 des-cbc-crc
default_tgs_enctypes = \
des3-cbc-sha1 arcfour-hmac aes256-cts des-cbc-md5 des-cbc-crc
[realms]
REALM1.IBM.COM = {
kdc = adfsaix5.in.ibm.com:88
admin_server = adfsaix5.in.ibm.com:749
default_domain = in.ibm.com
}
[domain_realm]
.in.ibm.com = REALM1.IBM.COM
adfsaix5.in.ibm.com = REALM1.IBM.COM
[logging]
kdc = FILE:/var/krb5/log/krb5kdc.log
admin_server = FILE:/var/krb5/log/kadmin.log
default = FILE:/var/krb5/log/krb5lib.log
清单6.编辑后
# cat /etc/krb5/krb5.conf
[libdefaults]
default_realm = REALM1.IBM.COM
default_keytab_name = FILE:/etc/krb5/krb5.keytab
default_tkt_enctypes = \
aes256-cts des3-cbc-sha1 arcfour-hmac des-cbc-md5 des-cbc-crc
default_tgs_enctypes = \
aes256-cts des3-cbc-sha1 arcfour-hmac des-cbc-md5 des-cbc-crc
[realms]
REALM1.IBM.COM = {
kdc = adfsaix5.in.ibm.com:88
admin_server = adfsaix5.in.ibm.com:749
default_domain = in.ibm.com
}
[domain_realm]
.in.ibm.com = REALM1.IBM.COM
adfsaix5.in.ibm.com = REALM1.IBM.COM
[logging]
kdc = FILE:/var/krb5/log/krb5kdc.log
admin_server = FILE:/var/krb5/log/kadmin.log
default = FILE:/var/krb5/log/krb5lib.log 使用KDC服务器上的kadmin.local接口,使用默认的加密类型删除已经创建的admin和ticket主体。(请参见清单7 )。
清单7.删除KDC服务器上的默认加密类型
# kadmin.local
kadmin.local: listprincs
K/M@REALM1.IBM.COM
admin/admin@REALM1.IBM.COM
kadmin/admin@REALM1.IBM.COM
kadmin/changepw@REALM1.IBM.COM
kadmin/history@REALM1.IBM.COM
krbtgt/REALM1.IBM.COM@REALM1.IBM.COM
kadmin.local: delprinc krbtgt/REALM1.IBM.COM
Are you sure you want to delete the principal
"krbtgt/REALM1.IBM.COM@REALM1.IBM.COM"? (yes/no): y
Principal "krbtgt/REALM1.IBM.COM@REALM1.IBM.COM" deleted.
Make sure that you have removed this principal from all ACLs before reusing.
kadmin.local: delprinc admin/admin
Are you sure you want to delete the principal \
"admin/admin@REALM1.IBM.COM"? (yes/no): y
Principal "admin/admin@REALM1.IBM.COM" deleted.
Make sure that you have removed this principal from all ACLs before reusing. 使用aes256-cts的加密类型为每个admin和tgt主体创建新的主体,如清单8所示 。
清单8.创建新的主体
# kadmin.local
kadmin.local: listprincs
K/M@REALM1.IBM.COM
kadmin/admin@REALM1.IBM.COM
kadmin/changepw@REALM1.IBM.COM
kadmin/history@REALM1.IBM.COM
kadmin.local: ank -e aes256-cts:normal admin/admin
WARNING: no policy specified for admin/admin@REALM1.IBM.COM;
defaulting to no policy. Note that policy may be overridden by
ACL restrictions.
Enter password for principal "admin/admin@REALM1.IBM.COM":
Re-enter password for principal "admin/admin@REALM1.IBM.COM":
Principal "admin/admin@REALM1.IBM.COM" created.
kadmin.local: ank -e aes256-cts:normal krbtgt/REALM1.IBM.COM
WARNING: no policy specified for krbtgt/REALM1.IBM.COM@REALM1.IBM.COM;
defaulting to no policy. Note that policy may be overridden by
ACL restrictions.
Enter password for principal "krbtgt/REALM1.IBM.COM@REALM1.IBM.COM":
Re-enter password for principal "krbtgt/REALM1.IBM.COM@REALM1.IBM.COM":
Principal "krbtgt/REALM1.IBM.COM@REALM1.IBM.COM" created.
kadmin.local: listprincs
K/M@REALM1.IBM.COM
admin/admin@REALM1.IBM.COM
kadmin/admin@REALM1.IBM.COM
kadmin/changepw@REALM1.IBM.COM
kadmin/history@REALM1.IBM.COM
krbtgt/REALM1.IBM.COM@REALM1.IBM.COM 检查是否已使用aes256-cts作为加密类型创建了admin和tgt主体,如下面的清单9所示。
清单9.验证新的主体
# kadmin.local
kadmin.local: listprincs
K/M@REALM1.IBM.COM
admin/admin@REALM1.IBM.COM
kadmin/admin@REALM1.IBM.COM
kadmin/changepw@REALM1.IBM.COM
kadmin/history@REALM1.IBM.COM
krbtgt/REALM1.IBM.COM@REALM1.IBM.COM
kadmin.local: getprinc admin/admin
Principal: admin/admin@REALM1.IBM.COM
Expiration date: [never]
Last password change: Thu Feb 22 04:38:36 PAKST 2007
Password expiration date: [none]
Maximum ticket life: 1 day 00:00:00
Maximum renewable life: 7 days 00:00:00
Last modified: Thu Feb 22 04:38:36 PAKST 2007 (admin/admin@REALM1.IBM.COM)
Last successful authentication: [never]
Last failed authentication: [never]
Failed password attempts: 0
Number of keys: 1
Key: vno 1, AES-256 CTS mode with 96-bit SHA-1 HMAC,
no salt
Attributes:
REQUIRES_PRE_AUTH
Policy: [none]
kadmin.local: getprinc krbtgt/REALM1.IBM.COM
Principal: krbtgt/REALM1.IBM.COM@REALM1.IBM.COM
Expiration date: [never]
Last password change: Thu Feb 22 04:39:04 PAKST 2007
Password expiration date: [none]
Maximum ticket life: 1 day 00:00:00
Maximum renewable life: 7 days 00:00:00
Last modified: Thu Feb 22 04:39:04 PAKST 2007 (admin/admin@REALM1.IBM.COM)
Last successful authentication: [never]
Last failed authentication: [never]
Failed password attempts: 0
Number of keys: 1
Key: vno 1, AES-256 CTS mode with 96-bit SHA-1 HMAC,
no salt
Attributes:
REQUIRES_PRE_AUTH
Policy: [none] 使用kdestroy命令销毁旧凭证,如清单10所示。
清单10.销毁旧凭证
# kdestroy
# klist
Unable to get cache name (ticket cache: /var/krb5/security/creds/krb5cc_0).
Status 0x96c73ac3 - No credentials cache found. 获得新的凭证以验证加密类型的更改,如清单11所示。
清单11.获得新的凭证
# kinit admin/admin
Password for admin/admin@REALM1.IBM.COM:
# klist -e
Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0
Default principal: admin/admin@REALM1.IBM.COM
Valid starting Expires Service principal
02/22/07 04:41:14 02/23/07 04:41:14 krbtgt/REAM1.IBM.COM@REAM1.IBM.COM
Etype (skey, tkt): AES-256 CTS mode with 96-bit SHA-1 HMAC,
AES-256 CTS mode with 96-bit SHA-1 HMAC 同样,根据需要使用aes256-cts加密类型添加新的服务和用户主体。 (您可能需要使用ktadd命令在keytab文件中添加服务和用户ktadd 。)下面的清单12中显示了添加用户和服务主体的示例。
清单12.添加用户和服务主体
# kadmin.local
kadmin.local: listprincs
K/M@REAM1.IBM.COM
kadmin/admin@REAM1.IBM.COM
kadmin/changepw@REAM1.IBM.COM
kadmin/history@REAM1.IBM.COM
krbtgt/REAM1.IBM.COM@REAM1.IBM.COM
admin/admin@REAM1.IBM.COM
kadmin.local: ank -e aes256-cts:normal -randkey groupy
WARNING: no policy specified for groupy@REAM1.IBM.COM;
defaulting to no policy. Note that policy may be overridden by
ACL restrictions.
Principal "groupy@REAM1.IBM.COM" created.
kadmin.local: ktadd -e aes256-cts:normal groupy
Entry for principal groupy with kvno 3, encryption type AES-256 CTS mode with
96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
验证是否在keytab文件中成功添加了主体,如下面的清单13所示。
清单13.验证用户和服务主体
# kinit -kt /etc/krb5/krb5.keytab groupy
# klist -e
Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0
Default principal: groupy@REAM1.IBM.COM
Valid starting Expires Service principal
02/22/07 04:42:35 02/23/07 04:42:35 krbtgt/REAM1.IBM.COM@REAM1.IBM.COM
Etype (skey, tkt): AES-256 CTS mode with 96-bit SHA-1 HMAC,
AES-256 CTS mode with 96-bit SHA-1 HMAC
设置KDC客户端
要设置KDC客户端,请使用以下步骤:
从AIX 5.3扩展CD安装NAS文件集。 安装NAS客户端文件集后,使用mkkrb5clnt命令配置Kerberos客户端。 请小心提供正确的KDC服务器和kdamin服务器名称,如下面的清单14所示。
清单14.配置Kerberos客户端
# mkkrb5clnt -d in.ibm.com -r REALM1.IBM.COM -c adfsaix5.in.ibm.com \
-s adfsaix5.in.ibm.com
Initializing configuration...
Creating /etc/krb5/krb5_cfg_type...
Creating /etc/krb5/krb5.conf...
The command completed successfully.
有关详细说明,请参见mkkrb5clnt手册页。
验证客户端可以与KDC服务器通信,如下面的清单15所示。
清单15.验证客户端通信
# kinit admin/admin
Password for admin/admin@REALM1.IBM.COM:
#
# klist -e
Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0
Default principal: admin/admin@REALM1.IBM.COM
Valid starting Expires Service principal
02/22/07 04:43:14 02/23/07 04:43:14 krbtgt/REAM1.IBM.COM@REAM1.IBM.COM
Etype (skey, tkt): AES-256 CTS mode with 96-bit SHA-1 HMAC,
AES-256 CTS mode with 96-bit SHA-1 HMAC 根据要求,添加具有aes256-cts加密类型的新服务和用户主体。 (您可能需要使用ktadd命令在keytab文件中添加服务和用户ktadd 。)
要在KDC服务器上添加所有必需的服务和用户主体,请在服务器上创建keytab文件,并将其通过FTP传输到所有客户端。
摘要
本文向您展示了如何配置充当KDC的IBM NAS 1.4以使用AES作为加密类型。 本文还介绍了可用于IBM NAS 1.4作为KDC服务器的信息,例如,具有安全通信的NFS等。
翻译自: https://www.ibm.com/developerworks/aix/library/au-kerberosaes/index.html