Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24853096
  • 博文数量: 271
  • 博客积分: 10025
  • 博客等级: 上将
  • 技术积分: 3358
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-12 15:28
文章分类

全部博文(271)

文章存档

2010年(71)

2009年(164)

2008年(36)

我的朋友

分类:

2009-05-23 23:45:20

2009 年 5 月 13 日

学习如何通过 Kerberos 跨领域设置为 AIX® Network File System (NFS) version 4 设置和配置 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,从而实现外部身份映射。

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 服务器上存储下面的外部身份映射信息。

用户
user2 us.ibm.com
user1 in.ibm.com

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

group2 us.ibm.com
group1 in.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. 示例设置


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.
              





回页首


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

  1. 在 AIX V6.1 计算机上安装 krb5.server (IBM NAS 1.4)、clic.rte 和 modcrypt.base 文件集。可以在 AIX Version 6.1 Expansion CD 上找到这些文件集。
  2. 配置 IBM NAS KDC 服务器,如下所示。

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




    # 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 命令的完整用法请参见它的主页。

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


    						
    # 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(见 参考资料)。

  4. 在这台计算机上,创建一个 UNIX 用户 (user1) 和他的主组 (group1)。另外,为 user1 创建一个 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.
    
    

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


    						
    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 主体。




    						
    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.
    
    

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


    						
    # 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.
    

  2. 在两个 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
    
    

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


    						
    # stop.krb5
    # start.krb5
    
    

  1. 安装 krb5.client 文件集,然后配置 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
    

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


    						
    # mkgroup group2
    # useradd -g group2 user2
    

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


    						
    # 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 域不一样。

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

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




    # 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
     
    

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

    在 EIM 服务器中添加清单 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。




    						
    #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
    

  3. 在 NFSv4 服务器上安装 ldap.client 和 bos.eim.rte 文件集,然后配置 EIM 客户机。另外,检查 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 服务器获取所需的映射信息。

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


    						
    # chnfs -v
    # chnfs -V
    

  5. 在启用 krb5 身份验证之后,尝试从 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
    
    

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




    						
    #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 服务器/客户机可以看到正确的文件所有者信息。



学习

讨论
阅读(1827) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~