配置 IBM NAS version 1.4.0.7 for AIX 使用非默认加密类型

本文详细讲解如何在 Kerberos 设置(IBM® Network Authentication Service)中启用并使用 “aes128-cts” 等非默认加密类型。还解释执行每个步骤的原因。这些内容有助于 Kerberos 管理员在 Kerberos 设置中使用任何非默认加密类型。

Sachin Punadikar, 首席软件工程师, WSO2 Inc

http://www.ibm.com/developerworks/i/p-sapunadikar.jpgSachin Punadikar 是 IBM India Software Labs 的首席软件工程师。在过去七年里,他一直为 IBM 工作。他在文件系统(DFS)、事务处理监视器(TXSeries Encina)和 Network Authentication Service(NAS)等安全产品方面具有丰富的经验。他目前正从事 IBM Network Authentication Service 的新特性开发,并为其提供产品支持。Sachin 拥有位于印度 Kolhapur 的 Shivaji 大学的计算机科学和工程学学士学位。



2008 年 10 月 30 日

简介

IBM Network Authentication Service(NAS)基于 Kerberos Version 5 的标准协议 Internet Engineering Task Force(IETF)Request for Comment(RFC)1510。Kerberos 是一种网络身份验证协议。它的设计目的是,通过使用密钥加密技术,为客户端-服务器应用程序提供强大的身份验证和加密通信。IBM AIX 上支持 IBM NAS 服务器(KDC)。

Network File System(NFS)version 4 是 NFS 协议的最新版本,它定义新一代网络文件系统。NFS V4 由 RFC 3530 详细说明。NFS V4 的一个重要特性是满足更高的安全标准。在这个协议中,使用 Kerberos、LIPKEY 和 SPKM-3 提供的 GSS-API 框架保护客户端和服务器之间的交互。

IBM NFS V4 使用 IBM NAS 提供的 Kerberos 实现满足它的安全需求。IBM NAS 用于身份验证,也可以用于 NFS 客户端和服务器之间的消息加密。

IBM NAS 支持不同的加密类型。不同加密类型之间的差异在于算法的强度和使用的密钥长度。算法和密钥长度的组合产生强加密、中等加密和弱加密。在 IBM NFS V4 之前,IBM AIX® V5.3L 和 6.1 能够使用 AES 加密(128 位和 256 位密钥长度)。

IBM NAS 和 IBM NFS V4 支持的加密类型

IBM NAS 支持 Arcfour、DES、Triple-DES 和 AES 等加密算法。通过组合使用不同的密钥长度和散列算法,IBM NAS 提供表 1 所示的加密类型。

表 1. IBM NAS 支持的加密类型
加密类型说明配置文件中使用的名称
ENCTYPE_AES128_CTS_HMAC_SHA1_96AES-128 CTS 模式,96 位 SHA-1 HMAC"aes128-cts-hmac-sha1-96" / "aes128-cts"
ENCTYPE_AES256_CTS_HMAC_SHA1_96AES-256 CTS 模式,96 位 SHA-1 HMAC"aes256-cts-hmac-sha1-96" / "aes256-cts”
ENCTYPE_DES_CBC_CRCDES cbc 模式,CRC-32"des-cbc-crc"
ENCTYPE_DES_CBC_MD4DES cbc 模式,RSA-MD4"des-cbc-md4"
ENCTYPE_DES_CBC_MD5DES cbc 模式,RSA-MD5"des-cbc-md5"
ENCTYPE_DES3_CBC_SHA1Triple DES cbc 模式,HMAC/sha1"des3-cbc-sha1"
ENCTYPE_ARCFOUR_HMACArcFour,HMAC/md5"arcfour-hmac"
ENCTYPE_ARCFOUR_HMAC_EXPExportable ArcFour,HMAC/md5"arcfour-hmac-exp"

IBM NFS V4 支持 表 1 中的一小部分加密类型。支持的加密算法是 DES、Triple-DES 和 AES。通过组合使用不同的密钥长度和散列算法,IBM NFS V4 支持以下加密类型:des–cbc–crc、des–cbc–md4、des–cbc–md5、des3–cbc–sha1、aes128-cts、aes256-cts。

使用哪种加密类型?

加密算法和密钥长度的组合决定加密类型的强度。上面列出的加密类型的强度各不相同,其中 “ENCTYPE_AES256_CTS_HMAC_SHA1_96” 是最强的。相关联的散列算法用来提供完整性服务。通常情况下,越强的加密类型消耗的时间越多,但是私密性也越高。在访问与财务相关的数据或需要高特权的数据时,建议采用最强的加密类型;在访问不太重要的数据和需要快速使用的数据时,建议使用强度比较低的加密类型。

管理员/用户根据所需的私密性水平决定使用哪种加密类型,并相应地配置 Kerberos 域。

默认配置的加密类型

一种简单的 Kerberos 配置是一个域定义,其中包含 KDC 服务器、kadmind 服务器(可选)和客户端。配置信息采用配置文件的形式,即 “kdc.conf” 和 “krb5.conf”。并非所有加密类型都包含在默认的 Kerberos 配置中。“krb5.conf” 文件和 “kdc.conf” 文件中的默认加密类型是 “des3-cbc-sha1”、“arcfour-hmac”、“aes256-cts”、“des-cbc-md5” 和 “des-cbc-crc”。


非默认加密类型的设置

图 1 说明非默认加密类型的 Kerberos 域设置。这个设置涉及 Kerberos 服务器、Kerberos 客户端、NFS 服务器和 NFS 客户端。

这里有一些基本假设:

  1. 这个配置中使用的所有机器都是 IBM AIX 机器,使用 AIX 53L 或 AIX 61 或更高版本。
  2. 有一台 IBM NAS 服务器(KDC)。在同一台机器上,将运行另一个服务器(kadmind)。为了简明,图中省略了它。
  3. “fsaix.in.ibm.com” 是 NAS 服务器机器。
  4. 域中的所有其他机器都是客户端。甚至 NFS 服务器(客户端 E)也是一个 Kerberos 客户端。
  5. 如图所示,每个 Kerberos 客户端被限制为只使用指定的加密类型。
  6. 省略 NFSv4 需要的配置步骤。
图 1. 使用 IBM NAS 的 Kerberos 设置
使用 IBM NAS 的 Kerberos 设置

在图 1 中,Kerberos 客户端需要的加密类型是 “aes256-cts”、“aes128-cts”、“des-cbc-crc” 和 “arcfour-hmac”。使用 IBM NAS 提供的 “config.krb5” 命令配置这个设置。更多信息请查阅 AIX Version 5.3/6.1 Expansion Pack 光盘附带的 “IBM NAS Version 1.4 Administration Guide”(参见 参考资料)。

下面的步骤和清单说明服务器和客户端所用的基本配置命令及其输出。

服务器配置

清单 1. 使用 “config.krb5” 命令配置 Kerberos 服务器
bash-2.05b# hostname
fsaix.in.ibm.com
bash-2.05b# config.krb5 -S -d in.ibm.com -r MYREALM
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 'MYREALM'
master key name 'K/M@MYREALM'
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@MYREALM;
defaulting to no policy. Note that policy may be overridden by
ACL restrictions.
Enter password for principal "admin/admin@MYREALM":
Re-enter password for principal "admin/admin@MYREALM":
Principal "admin/admin@MYREALM" 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.

下面是默认的配置文件。

清单 2. Kerberos 服务器上的 kdc.conf 文件
bash-2.05b# cat /var/krb5/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88

[realms]
MYREALM =  {
database_name = /var/krb5/krb5kdc/principal
admin_keytab = /var/krb5/krb5kdc/kadm5.keytab
acl_file = /var/krb5/krb5kdc/kadm5.acl
dict_file = /var/krb5/krb5kdc/kadm5.dict
key_stash_file = /var/krb5/krb5kdc/.k5.MYREALM
kadmind_port = 749
kdc_ports = 88
max_life = 24h 0m 0s
max_renewable_life = 7d 0h 0m 0s
master_key_type = des3-cbc-sha1
supported_enctypes = des3-cbc-sha1:normal arcfour-hmac:normal
aes256-cts:normal des-cbc-md5:normal des-cbc-crc:normal
}
清单 3. Kerberos 服务器上的 krb5.conf 文件
bash-2.05b# cat /etc/krb5/krb5.conf
[libdefaults]
default_realm = MYREALM
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]
MYREALM = {
kdc = fsaix.in.ibm.com:88
admin_server = fsaix.in.ibm.com:749
default_domain = in.ibm.com
}

[domain_realm]
.in.ibm.com = MYREALM
fsaix.in.ibm.com = MYREALM

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

客户端配置

清单 4. 使用 “config.krb5” 命令配置 Kerberos 客户端
bash-2.05# config.krb5 -C -r MYREALM -d in.ibm.com \
-c fsaix.in.ibm.com -s fsaix.in.ibm.com
Initializing configuration...
Creating /etc/krb5/krb5_cfg_type...
Creating /etc/krb5/krb5.conf...
The command completed successfully.

清单 5 给出 Kerberos 客户端上的配置文件。

清单 5. Kerberos 客户端上的 krb5.conf 文件
bash-2.05# cat /etc/krb5/krb5.conf
[libdefaults]
default_realm = MYREALM
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]
MYREALM = {
kdc = fsaix.in.ibm.com:88
admin_server = fsaix.in.ibm.com:749
default_domain = in.ibm.com
}

[domain_realm]
.in.ibm.com = MYREALM
fsaix.in.ibm.com = MYREALM

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

在所有机器(图 1 中的 A、B、C、D 和 E)上配置 Kerberos 客户端之后,所有机器上都有相同的 “krb5.conf” 文件。“krb5.conf” 文件中的 “default_tkt_enctypes” 和 “default_tgs_enctypes” 关系决定客户端使用的加密类型。很明显,所有客户端上的配置都与设置不一样。下一节说明所有客户端上需要的修改。


Kerberos 客户端上的配置修改

一般情况下,必须修改 /etc/krb5/krb5.conf 文件来反映所需的加密类型。default_tkt_enctypes 和 default_tgs_enctypes 关系会反映出修改。这些关系分别控制获取 TGT(Ticket Granting Ticket)和 TGS(Ticket Granting Service)所用的加密类型。在 图 1 中,客户端 A、B、C 和 D 使用一种加密类型,而客户端 E 使用两种加密类型。

现在,所有这些客户端都需要修改 krb5.conf 文件。下面的清单给出几个修改后的配置文件。

清单 6. 修改后的客户端 A krb5.conf 文件
bash-2.05# cat /etc/krb5/krb5.conf
…
…
default_tkt_enctypes = arcfour-hmac
default_tgs_enctypes = arcfour-hmac
…
…
清单 7. 修改后的客户端 C krb5.conf 文件
bash-2.05# cat /etc/krb5/krb5.conf
…
…
default_tkt_enctypes = aes128-cts
default_tgs_enctypes = aes128-cts
…
…
清单 8. 修改后的客户端 E krb5.conf 文件
bash-2.05# cat /etc/krb5/krb5.conf
…
…
default_tkt_enctypes = des-cbc-crc aes128-cts
default_tgs_enctypes = des-cbc-crc aes128-cts
…
…

除了客户端 C 和 E 之外,其他所有客户端都可以与 Kerberos 服务器通信,不需要任何修改。

当客户端 C 尝试获取一个 Kerberos 票证(TGT)时,会发生以下错误:

清单 9. 在客户端 C 上获取加密类型为 “aes128-cts” 的 TGT 时发生的错误
-bash-2.05b# kinit admin/admin
Unable to obtain initial credentials.
Status 0x96c73a0e - KDC has no support for encryption type.

显然,这说明需要在服务器端(KDC)做一些修改。下一节解释这些修改。


Kerberos 服务器上的配置修改

  1. 编辑 kdc.conf 文件

    在创建主体(principal)时,KDC 使用 kdc.conf 文件中指定的加密类型。因此,如果一个主体需要支持非默认加密类型 “aes128-cts”,就需要在 kdc.conf 文件中设置这个加密类型。

    编辑 kdc.conf 文件,反映所有客户端和相关主体所需的加密类型。修改这个文件中的 “supported_enctypes” 部分。

    清单 10. 修改 Kerberos 服务器上的 kdc.conf 文件
    bash-2.05b# hostname
    fsaix.in.ibm.com
    bash-2.05b# cat /var/krb5/krb5kdc/kdc.conf
    …
    …
    supported_enctypes = arcfour-hmac:normal aes256-cts:normal 
                         des-cbc-crc:normal aes128-cts:normal
    }
  2. 重新启动 Kerberos 服务器(KDC 和 Kadmind)

    在修改 kdc.conf 文件之后,必须重新启动 Kerberos 服务器。服务器在启动时读取 kdc.conf 文件,因此必须重新启动服务器,kdc.conf 文件中的修改才会生效。

    清单 11. 重新启动 IBM NAS 服务器
    -bash-2.05b# stop.krb5; start.krb5
    Stopping /usr/krb5/sbin/krb5kdc...
    /usr/krb5/sbin/krb5kdc was stopped successfully.
    Stopping /usr/krb5/sbin/kadmind...
    The command completed successfully.
    Starting krb5kdc...
    krb5kdc was started successfully.
    Starting kadmind...
    kadmind was started successfully.
    The command completed successfully.
  3. 重新创建服务主体 “krbtgt/<realm_name>”

    如果对应的服务实体支持客户端所请求的加密类型(由 krb5.conf 文件控制),那么 KDC 就会发出这种加密类型的票证(TGT 和 TGS)。

    如前一节所示,来自客户端 C 的 TGT 请求被拒绝了,因为 KDC 不支持这种加密类型。即使在修改 kdc.conf 文件之后,这个错误仍然会出现。这是因为票证授予服务 “krbtgt/MYREALM” 在默认情况下没有用于 aes128-cts 加密类型的密钥。看一下以下信息:

    清单 12. 主体 “krbtgt/MYREALM” 的信息
    bash-2.05b# kadmin.local
    kadmin.local:  getprinc krbtgt/MYREALM
    Principal: krbtgt/MYREALM@MYREALM
    Expiration date: [never]
    Last password change:  [never]
    Password expiration date: [none]
    Maximum ticket life: 1 day 00:00:00
    Maximum renewable life: 7 days 00:00:00
    Last modified: Tue Apr 22 10:51:04 CDT 2008 (db_creation@MYREALM)
    Last successful authentication: [never]
    Last failed authentication: [never]
    Failed password attempts: 0
    Number of keys: 5
    Key: vno 1, Triple DES cbc mode with HMAC/sha1,
    no salt
    Key: vno 1, ArcFour with HMAC/md5,
    no salt
    Key: vno 1, AES-256 CTS mode with 96-bit SHA-1 HMAC,
    no salt
    Key: vno 1, DES cbc mode with RSA-MD5,
    no salt
    Key: vno 1, DES cbc mode with CRC-32,
    no salt
    
    Attributes:
    REQUIRES_PRE_AUTH
    Policy: [none]

    解决这个问题的方法是把加密类型 “aes128-cts” 的密钥与主体 “krbtgt/MYREALM” 关联起来。这需要删除主体 “krbtgt/MYREALM” 并重新创建它。

    因为 kdc.conf 文件中有 “aes128-cts:normal” 加密类型的条目,所以在重新创建主体 “krbtgt/MYREALM” 时,也会创建这种加密类型的密钥。

    清单 13. 重新创建主体 “krbtgt/MYREALM”
    kadmin.local:  delprinc krbtgt/MYREALM
    Are you sure you want to delete the principal "krbtgt/MYREALM@MYREALM"? (yes/no):  y
    Principal "krbtgt/MYREALM@MYREALM" deleted.
    Make sure that you have removed this principal from all ACLs before reusing.
    
    kadmin.local:  addprinc -randkey +requires_preauth krbtgt/MYREALM
    WARNING: no policy specified for krbtgt/MYREALM@MYREALM;
    defaulting to no policy. Note that policy may be overridden by
    ACL restrictions.
    Principal "krbtgt/MYREALM@MYREALM" created.
    
    kadmin.local:  getprinc krbtgt/MYREALM
    Principal: krbtgt/MYREALM@MYREALM
    Expiration date: [never]
    Last password change:  Tue Apr 22 10:52:46 CDT 2008
    Password expiration date: [none]
    Maximum ticket life: 1 day 00:00:00
    Maximum renewable life: 7 days 00:00:00
    Last modified: Tue Apr 22 10:52:46 CDT 2008 (root/admin@MYREALM)
    Last successful authentication: [never]
    Last failed authentication: [never]
    Failed password attempts: 0
    Number of keys: 4
    Key: vno 2, ArcFour with HMAC/md5,
    no salt
    Key: vno 2, AES-256 CTS mode with 96-bit SHA-1 HMAC,
    no salt
    Key: vno 2, DES cbc mode with RSA-MD5,
    no salt
    Key: vno 2, AES-128 CTS mode with 96-bit SHA-1 HMAC,
    no salt
    
    Attributes:
    REQUIRES_PRE_AUTH
    Policy: [none]

    现在,Kerberos 设置(IBM NAS 设置)已经可以使用了(见 图 1)。从现在开始,管理员可以执行 NFS 服务器和 NFS 客户端设置所需的步骤。

    注意,建议只在服务器停机维护期间执行这些步骤。


结束语

本文详细描述了 IBM NAS 和 IBM NFS V4 支持的不同加密类型,强调了这些加密类型的重要性,给出了使用建议。还提供了详细的示例,从而指导 IBM NAS 管理员为 IBM Network Authentication Service 启用非默认加密类型。

参考资料

学习

获得产品和技术

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=348664
ArticleTitle=配置 IBM NAS version 1.4.0.7 for AIX 使用非默认加密类型
publish-date=10302008