WEB开发网
开发学院操作系统Linux/Unix 通过 Kerberos 跨领域设置为 AIX NFSv4 配置 Ente... 阅读

通过 Kerberos 跨领域设置为 AIX NFSv4 配置 Enterprise Identity Mapping (EIM)

 2009-07-12 08:34:49 来源:WEB开发网   
核心提示:简介Network File System (NFS) 是使用最广泛的分布式文件系统之一,它让用户能够在客户机上方便地访问远程文件,通过 Kerberos 跨领域设置为 AIX NFSv4 配置 Enterprise Identity Mapping (EIM),就像这些文件在本地机器上一样,这种分布式环境通常由多个

简介

Network File System (NFS) 是使用最广泛的分布式文件系统之一。它让用户能够在客户机上方便地访问远程文件,就像这些文件在本地机器上一样。这种分布式环境通常由多个 NFS 域组成。NFS 客户机所属的域常常可能与 NFS 服务器域不同。在这种情况下,需要为本地 NFS 服务器和客户机提供一种把外部域中的用户和组转换为本地域中的对应用户和组的方法。这种方法称为身份映射,由 nfsrgyd NFS 守护进程处理。

当前的 AIX NFSv4 实现使用 Kerberos 增强安全性。在实际环境中,可能用不同的 Kerberos 领域(管理域)配置 NFS 域。因此在这种情况下,需要在 Kerberos 领域之间配置跨领域设置。关于 NFSv4 中的跨领域设置的更多信息,请参见 Securing NFS in AIX An Introduction to NFS V4 in AIX 5L Version 5.3 Redbook(见 参考资料)。

本文讨论通过 Kerberos 跨领域设置为 AIX NFS version 4 配置 Enterprise Identity Mapping (EIM) 的步骤。IBM NAS (Network Authentication Service) 是 IBM 在 AIX 上提供的 Kerberos 版本。本文讨论如何设置使用 Kerberos 身份验证的 NFSv4 服务器,在 Kerberos 领域之间配置跨领域设置,然后为 NFSv4 配置 EIM,从而实现外部身份映射。

Enterprise Identity Mapping (EIM) 概述

AIX 使用 EIM 提供外部身份映射。EIM 是一种基于 LDAP 的技术,用来管理组织中的多个用户注册表。对于 NFSv4 中的身份映射,使用 EIM 存储外部 NFS 域的用户名和组名,以及它们到本地用户名和组名的映射。

请考虑一个场景:NFS 客户机在 NFS 域 us.ibm.com 中,NFS 服务器在 in.ibm.com 域中。

NFS 客户机上的 group2 组中有一个 UNIX® 用户 user2。当这个用户访问 NFS 挂装的目录中的文件时,传递的 user2 的所有者信息是 user2@us.ibm.com 和 group2@us.ibm.com。

现在,NFS 服务器发现这个请求来自外部域,因此向 EIM 服务器查询外部身份映射信息。为了正确地解析这个请求,EIM 管理员必须在 EIM 服务器上存储下面的外部身份映射信息。

用户
user2us.ibm.com
user1in.ibm.com

这里的 user1 和 user2 是同一用户 (nfs_user) 在不同 NFS 域中的两个身份。

group2 us.ibm.com
group1in.ibm.com

这里的 group1 和 group2 是同一个组 (nfs_group) 在不同 NFS 域中的两个身份。

NFS 服务器知道 us.ibm.com 域中的 user2 就是 in.ibm.com 域中的 user1,us.ibm.com 域中的 group2 就是 in.ibm.com 域中的 group1。因此,NFS 服务器会以 user1:group1 的身份访问文件;但是,在 NFS 客户机上,看到的文件所有者信息是 user2:group2。

当 NFSv4 使用 AUTH_KERB (Kerberos) 安全风格时,从客户机传递给服务器的所有者信息是 principal@kerberos_realm,然后 NFS 服务器把它转换为本机凭证 (uid: gid)。在这种情况下,为了成功地实现身份映射,EIM 管理员还必须在 EIM 服务器上存储 Kerberos 领域到 NFS 域的映射信息。

下面的示例说明这种设置以及实现本文目标的方法。

图 1. 示例设置

通过 Kerberos 跨领域设置为 AIX NFSv4 配置 Enterprise Identity Mapping (EIM)

清单 1. 示例设置中计算机的详细信息

AIX NAS 1.4 (KDC) and AIX NFS V4 server and EIM Client: 
Hostname         : vayu08.in.ibm.com 
NFS domain name  : in.ibm.com 
Realm name        : REALM_1 
Operating system     : AIX 6.1.0.0 
IBM NAS admin principal : admin/admin 
NFS V4 Server principal : nfs/vayu08.in.ibm.com 
IBM NAS user principal : user1 
Unix users  : user1:group1 
 
 
AIX NAS 1.4 (KDC) and EIM server: 
Hostname         : vayu07.in.ibm.com 
NFS domain name  : us.ibm.com 
Realm Name        : REALM_2 
Operating system     : AIX 6.1.0.0 
IBM NAS admin principal : admin/admin 
IBM NAS user principal : user2 
IBM Tivoli Directory Server Version 5.2 
 
AIX NAS 1.4 client and AIX NFS V4 client: 
Hostname      : nfsaix08.in.ibm.com 
NFS domain name  : us.ibm.com 
Realm name     : REALM_2 
Operating system  : AIX 6.1.0.0 
Unix users  : user2:group2 
Configured to REALM_1 and REALM_2 realms. 
        

配置步骤

为了便于解释,我们把配置过程划分为四个步骤:

设置 IBM NAS 服务器和 AIX NFSv4 服务器

在 IBM NAS 服务器之间设置跨领域身份验证

设置 IBM NAS 客户机和 AIX NFSv4 客户机

设置 EIM 服务器和 EIM 客户机并添加身份映射信息

设置 IBM NAS 服务器和 AIX NFSv4 服务器

在 AIX V6.1 计算机上安装 krb5.server (IBM NAS 1.4)、clic.rte 和 modcrypt.base 文件集。可以在 AIX Version 6.1 Expansion CD 上找到这些文件集。

配置 IBM NAS KDC 服务器,如下所示。

关于配置 IBM NAS 的更多信息,请参见 AIX Version 6.1 Expansion Pack CD 上的 IBM NAS Version 1.4 Administration Guide。

清单 2. 配置 IBM NAS 服务器

# hostname 
vayu08.in.ibm.com 
 
# export PATH=/usr/krb5/bin/:/usr/krb5/sbin/:$PATH 
 
# config.krb5 -S -r REALM_1 -d in.ibm.com 
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 'REALM_1' 
master key name 'K/M@REALM_1' 
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@REALM_1; 
 defaulting to no policy. Note that policy may be overridden by 
 ACL restrictions. 
Enter password for principal "admin/admin@REALM_1": 
Re-enter password for principal "admin/admin@REALM_1": 
Principal "admin/admin@REALM_1" 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. 
#           

还可以使用 mkkrb5srv 命令配置 NAS 服务器。mkkrb5srv 命令的完整用法请参见它的主页。

为 NFSv4 服务器配置 Kerberos 安全风格。

清单 3. 为 NFSv4 服务器配置 krb5 身份验证

    
# hostname 
vayu08.in.ibm.com 
 
# chnfsdom in.ibm.com 
 
# chnfsdom 
Current local domain: in.ibm.com 
 
# kadmin.local 
kadmin.local: ank nfs/vayu08.in.ibm.com 
WARNING: no policy specified for nfs/vayu08.in.ibm.com@REALM_1; 
 defaulting to no policy. Note that policy may be overridden by 
 ACL restrictions. 
Enter password for principal "nfs/vayu08.in.ibm.com@REALM_1": 
Re-enter password for principal "nfs/vayu08.in.ibm.com@REALM_1": 
Principal "nfs/vayu08.in.ibm.com@REALM_1" created. 
 
kadmin.local: ktadd nfs/vayu08.in.ibm.com 
Entry for principal nfs/vayu08.in.ibm.com with kvno 2, encryption type Triple DES 
cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab. 
Entry for principal nfs/vayu08.in.ibm.com with kvno 2, encryption type ArcFour 
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab. 
Entry for principal nfs/vayu08.in.ibm.com with kvno 2, encryption type AES-256 CTS 
mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab. 
Entry for principal nfs/vayu08.in.ibm.com with kvno 2, encryption type DES cbc mode 
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab. 
kadmin.local: 
 
# nfshostkey -p nfs/vayu08.in.ibm.com -f /etc/krb5/krb5.keytab 
 
# nfshostkey -l 
nfs/vayu08.in.ibm.com 
/etc/krb5/krb5.keytab 
 
# exportfs -i -o vers=4,sec=krb5 /home/guest 
 
# exportfs 
/home/guest -vers=4,sec=krb5 
 
# chnfs -s 
0513-044 The gssd Subsystem was requested to stop. 
 
# chnfs -S 
0513-059 The gssd Subsystem has been started. Subsystem PID is 286862. 
 

关于为 AIX NFSv4 配置 Kerberos 的更多信息,请参见 Securing NFS in AIX. An Introduction to NFS V4 in AIX 5L Version 5.3 Redbook(见 参考资料)。

在这台计算机上,创建一个 UNIX 用户 (user1) 和他的主组 (group1)。另外,为 user1 创建一个 Kerberos 主体。后续步骤中需要使用这个主体。

清单 4. 创建 UNIX 用户/组并添加等效的 Kerberos 用户主体

    
# mkgroup group1 
# useradd -g group1 user1 
 
#kadmin.local: ank user1 
WARNING: no policy specified for user1@REALM_1; 
 defaulting to no policy. Note that policy may be overridden by 
 ACL restrictions. 
Enter password for principal "user1@REALM_1": 
Re-enter password for principal "user1@REALM_1": 
Principal "user1@REALM_1" created. 
 

在第二台计算机上,安装 krb5.server 文件集,然后配置 NAS KDC 服务器。

清单 5. 在第二台计算机上配置 IBM NAS 服务器

    
bash-2.05b# hostname 
vayu07.in.ibm.com 
 
bash-2.05b# config.krb5 -S -r REALM_2 -d us.ibm.com 
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 'REALM_2' 
master key name 'K/M@REALM_2' 
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@REALM_2; 
 defaulting to no policy. Note that policy may be overridden by 
 ACL restrictions. 
Enter password for principal "admin/admin@REALM_2": 
Re-enter password for principal "admin/admin@REALM_2": 
Principal "admin/admin@REALM_2" 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. 
 

现在,为另一个用户 (user2) 创建一个 Kerberos 主体。

清单 6. 为第二个 UNIX 用户创建 Kerberos 主体

    
bash-2.05b# hostname 
vayu07.in.ibm.com 
 
# kadmin.local 
kadmin.local: ank user2 
WARNING: no policy specified for user2@REALM_2; 
 defaulting to no policy. Note that policy may be overridden by 
 ACL restrictions. 
Enter password for principal "user2@REALM_2": 
Re-enter password for principal "user2@REALM_2": 
Principal "user2@REALM_2" created. 
 

在 IBM NAS 服务器之间设置跨领域身份验证

在两个 NAS KDC 服务器上添加 krbtgt 服务主体。如果一个领域中的 KDC 要对另一个领域中的 Kerberos 用户进行身份验证,它就必须与另一个领域中的 KDC 共享密钥。因此,实现跨领域访问需要创建 krbtgt 服务主体。另外,一定要为两个 NAS KDC 服务器上的这些主体选用相同的密码。

清单 7. 在两个 NAS KDC 服务器上添加 krbtgt 服务主体

    
# kadmin.local 
kadmin.local: ank krbtgt/REALM_2@REALM_1 
WARNING: no policy specified for krbtgt/REALM_2@REALM_1; 
 defaulting to no policy. Note that policy may be overridden by 
 ACL restrictions. 
Enter password for principal "krbtgt/REALM_2@REALM_1": 
Re-enter password for principal "krbtgt/REALM_2@REALM_1": 
Principal "krbtgt/REALM_2@REALM_1" created. 
kadmin.local: 
kadmin.local: ank krbtgt/REALM_1@REALM_2 
WARNING: no policy specified for krbtgt/REALM_1@REALM_2; 
 defaulting to no policy. Note that policy may be overridden by 
 ACL restrictions. 
Enter password for principal "krbtgt/REALM_1@REALM_2": 
Re-enter password for principal "krbtgt/REALM_1@REALM_2": 
Principal "krbtgt/REALM_1@REALM_2" created. 

在两个 NAS 服务器上编辑 /etc/krb5/krb5.conf 文件,让它们包含两个领域的条目:

清单 8. 两个 NAS 服务器上编辑后的 /etc/krb5/krb5.conf 文件

    
[libdefaults] 
    default_realm = REALM_1 
    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] 
    REALM_1 = { 
        kdc = vayu08.in.ibm.com:88 
        admin_server = vayu08.in.ibm.com:749 
        default_domain = in.ibm.com 
    } 
 
    REALM_2 = { 
        kdc = vayu07.in.ibm.com:88 
        admin_server = vayu07.in.ibm.com:749 
        default_domain = us.ibm.com 
    } 
 
[domain_realm] 
    .in.ibm.com = REALM_1 
    vayu08.in.ibm.com = REALM_1 
    .us.ibm.com = REALM_2 
    vayu07.in.ibm.com = REALM_2 
 
[logging] 
    kdc = FILE:/var/krb5/log/krb5kdc.log 
    admin_server = FILE:/var/krb5/log/kadmin.log 
    default = FILE:/var/krb5/log/krb5lib.log 
 

停止并重新启动 krb5 守护进程,让这些修改生效。

清单 9. 重新启动 krb5 守护进程

    
# stop.krb5 
# start.krb5 
 

设置 IBM NAS 客户机和 AIX NFSv4 客户机

安装 krb5.client 文件集,然后配置 AIX NAS 客户机。

清单 10. 配置 AIX NAS 客户机

    
# hostname 
nfsaix08.in.ibm.com 
 
#config.krb5 -C -r REALM_2 -d us.ibm.com -c vayu07.in.ibm.com -s vayu07.in.ibm.com 

在这台客户机上,编辑 /etc/krb5/krb5.conf 文件,添加 前一节 所示的跨领域信息,创建一个 UNIX 用户 (user2) 和主组 (group2)。

清单 11. 创建一个组并在其中添加一个 UNIX 用户

    
# mkgroup group2 
# useradd -g group2 user2 

获得 REALM_2 中的 user2 的 TGT (Ticket Granting Ticket),使用它访问由 krb5 保护的 NFS 导出的数据。

清单 12. 获得 Kerberos 凭证

    
# hostname 
nfsaix08.in.ibm.com 
 
# chnfsdom us.ibm.com 
 
# kinit user2 
Password for user2@REALM_2: 
 
# mount -o vers=4,sec=krb5 vayu08:/home/guest /mnt 
 
# cd /mnt/ 
 
# touch data.txt 
 
# ls -l 
total 0 
-rw-r--r--  1 nobody  nobody      0 Nov 19 17:37 data.txt 
 

可以看到,对于在 NFS 挂装的目录中创建的文件,ls -l 输出显示的用户名和组名是 nobody:nobody。注意,NFS 服务器和客户机的 NFS 域不一样。

设置 EIM 服务器/客户机并添加身份映射信息

安装 ldap.server 和 bos.eim.rte 文件集,然后配置 EIM 服务器。

如果这个命令中的 -h [host_name] 是本地主机,那么会在这台主机上自动地配置 LDAP 服务器。关于安装和配置 LDAP 的更多信息,请参见 IBM Tivoli® Directory Server Version 5.2 文档。

清单 13. 设置 EIM 服务器

# hostname 
vayu07.in.ibm.com 
 
bash-2.05b# chnfsim -c -a -t P -h vayu07.in.ibm.com -e nfs -f nfseim -w secret 
ldapdb2's New password: 
Enter the new password again: 
 
 You have chosen the following actions: 
 
 Administrator DN 'cn=admin' and password will be set. 
 
 Setting administrator DN 'cn=admin' and password. 
 Set administrator DN 'cn=admin' and password. 
 
IBM Tivoli Directory Server Configuration complete. 
 
 You have chosen the following actions: 
 
 Database 'ldapdb2' will be configured in instance 'ldapdb2'. 
 
  : 
  : 
 
IBM Tivoli Directory Server Configuration complete. 
 
 You have chosen the following actions: 
 
 Suffix 'cn=aixdata' will be added to the configuration file. 
 
 Adding suffix: 'cn=aixdata'. 
 Added suffix: 'cn=aixdata'. 
 
IBM Tivoli Directory Server Configuration complete. 
Server starting in configuration only mode. 
 
 : 
  : 
 
Server starting. 
 
 : 
  : 
 
Non-SSL port initialized to 389. 
adding new entry cn=nfseim 
adding new entry cn=nfs_map_reader,cn=nfseim 
 

添加 EIM 信息,NFSv4 服务器将使用这些信息映射外部身份。

在 EIM 服务器中添加清单 14 所示的领域-域映射。

清单 14. 添加领域-域映射

    
# chnfsim -a -r REALM_1 -d in.ibm.com 
# chnfsim -a -r REALM_2 -d us.ibm.com 

在 EIM 服务器中添加用户和组身份映射信息。还需要在 EIM 服务器中添加 /usr/sbin/nfsrgyd 守护进程的所有者,即 root:system。

清单 15. 添加用户和组身份映射

    
#chnfsim -a -u -i "nfs_user" -n user1 -d in.ibm.com 
#chnfsim -a -u -i "nfs_user" -n user2 -d us.ibm.com 
 
#chnfsim -a -g -i "nfs_group" -n group1 -d in.ibm.com 
#chnfsim -a -g -i "nfs_group" -n group2 -d us.ibm.com 
 
#chnfsim -a -u -i root -n root -d in.ibm.com 
#chnfsim -a -u -i root -n root -d us.ibm.com 
#chnfsim -a -g -i system -n system -d in.ibm.com 
#chnfsim -a -g -i system -n system -d us.ibm.com 

在 NFSv4 服务器上安装 ldap.client 和 bos.eim.rte 文件集,然后配置 EIM 客户机。另外,检查 NFSv4 服务器是否能够从 EIM 服务器读取正确的信息。

清单 16. 在 AIX NFSv4 服务器上配置 EIM 客户机

    
#hostname 
vayu08.in.ibm.com 
 
# chnfsim -c 
EIM server type: P 
EIM server: vayu07.in.ibm.com 
EIM domain: nfs 
EIM directory suffix: nfseim 
#chnfsim -c -a -t P -h vayu07.in.ibm.com -e nfs -f nfseim -w secret 
 
# chnfsim -l -u -i nfs_user 
Identity mappings for nfs_user: 
Name  Domain 
user1  in.ibm.com 
user2  us.ibm.com 
 
# chnfsim -l -g -i nfs_group 
Identity mappings for nfs_group: 
Name  Domain 
group1 in.ibm.com 
group2 us.ibm.com 
 
# chnfsim -l 
Realm to Domain mappings: 
    realm_1 in.ibm.com 
    realm_2 us.ibm.com 
 

在 AIX V53L 和 AIX V610 及更高版本上,可以为 NFS 服务器配置多个 EIM LDAP 副本服务器。因此,如果 EIM 服务器之一停机了,NFSv4 服务器可以从另一台可用的 EIM 服务器获取所需的映射信息。

在 NFSv4 服务器上重新启动 nfsrgyd 守护进程。

清单 17. 重新启动 nfsrgyd 守护进程

    
# chnfs -v 
# chnfs -V 

在启用 krb5 身份验证之后,尝试从 NFS 客户机挂装和创建文件。

清单 18. 在 NFS 挂装的目录中创建文件

    
#hostname 
vayu08.in.ibm.com 
#kdestroy 
#nfsauthreset 
 
# kinit user2 
Password for user2@REALM_2: 
 
# mount -o vers=4,sec=krb5 vayu08:/home/guest /mnt 
# cd /mnt 
# touch abc.txt 
 
# ls -l 
total 0 
-rw-r--r--  1 user2  group2      0 Nov 19 18:03 abc.txt 
 

在服务器上检查这个文件的用户和组信息。

清单 19. 检查创建的文件的所有者信息

    
#hostname 
vayu08.in.ibm.com 
 
# cd /home/guest/ 
 
# ls -l 
total 0 
-rw-r--r--  1 user1  group1      0 Nov 19 18:03 abc.txt 
 

可以看到,在 EIM 服务器上配置和添加外部身份信息之后,NFSv4 服务器和客户机就能够显示正确的文件所有者信息。

结束语

在本文中,讨论了如何通过跨领域 Kerberos (IBM NAS) 设置为 AIX Network File System (NFS) version 4 设置和配置 Enterprise Identity Mapping (EIM),让 NFS 服务器/客户机可以看到正确的文件所有者信息。

Tags:通过 Kerberos 领域

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接