kerberos的 kdc

    技术2024-06-08  82

    您可以使用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

    Processed: 0.013, SQL: 9