配置 IBM NAS version 1.4.0.7 for AIX 使用非默认加密类型
2008-11-10 08:26:12 来源:WEB开发网简介
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_96 | AES-128 CTS 模式,96 位 SHA-1 HMAC | "aes128-cts-hmac-sha1-96" / "aes128-cts" |
ENCTYPE_AES256_CTS_HMAC_SHA1_96 | AES-256 CTS 模式,96 位 SHA-1 HMAC | "aes256-cts-hmac-sha1-96" / "aes256-cts” |
ENCTYPE_DES_CBC_CRC | DES cbc 模式,CRC-32 | "des-cbc-crc" |
ENCTYPE_DES_CBC_MD4 | DES cbc 模式,RSA-MD4 | "des-cbc-md4" |
ENCTYPE_DES_CBC_MD5 | DES cbc 模式,RSA-MD5 | "des-cbc-md5" |
ENCTYPE_DES3_CBC_SHA1 | Triple DES cbc 模式,HMAC/sha1 | "des3-cbc-sha1" |
ENCTYPE_ARCFOUR_HMAC | ArcFour,HMAC/md5 | "arcfour-hmac" |
ENCTYPE_ARCFOUR_HMAC_EXP | Exportable 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 客户端。
这里有一些基本假设:
这个配置中使用的所有机器都是 IBM AIX 机器,使用 AIX 53L 或 AIX 61 或更高版本。
有一台 IBM NAS 服务器(KDC)。在同一台机器上,将运行另一个服务器(kadmind)。为了简明,图中省略了它。
“fsaix.in.ibm.com” 是 NAS 服务器机器。
域中的所有其他机器都是客户端。甚至 NFS 服务器(客户端 E)也是一个 Kerberos 客户端。
如图所示,每个 Kerberos 客户端被限制为只使用指定的加密类型。
省略 NFSv4 需要的配置步骤。
图 1. 使用 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 服务器上的配置修改
编辑 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
}
重新启动 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.
重新创建服务主体 “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 启用非默认加密类型。
- ››配置远程客户机使用命名管道协议访问SQL服务器
- ››配置SQL Server2005以允许远程访问
- ››配置ISA Server以创建站点到站点VPN 连接之一
- ››配置ISA Server以创建站点到站点VPN 连接之二
- ››配置ISA Server以创建站点到站点VPN 连接之三 启用...
- ››配置VPN服务器中的L2TP/IPSEC:ISA2006系列之二十...
- ››配置单网卡的ISA缓存服务器:ISA2006系列之二十七...
- ››配置Win2008作为远程访问SSL-VPN服务器之一
- ››配置Win2008作为远程访问SSL-VPN服务器之二
- ››配置Win2008作为远程访问SSL-VPN服务器之三
- ››配置Windows Server 2003群集服务
- ››配置DHCP服务器过程详解
赞助商链接