JavaScript is required to for searching.
跳过导航链接
退出打印视图
系统管理指南:安全性服务     Oracle Solaris 10 8/11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分安全性概述

1.  安全性服务(概述)

第 2 部分系统、文件和设备安全性

2.  管理计算机安全性(概述)

3.  控制对系统的访问(任务)

4.  控制对设备的访问(任务)

5.  使用基本审计报告工具(任务)

6.  控制对文件的访问(任务)

7.  使用自动安全性增强工具(任务)

第 3 部分角色、权限配置文件和特权

8.  使用角色和特权(概述)

9.  使用基于角色的访问控制(任务)

10.  基于角色的访问控制(参考)

11.  特权(任务)

12.  特权(参考)

第 4 部分加密服务

13.  Oracle Solaris 加密框架(概述)

14.  Oracle Solaris 加密框架(任务)

15.  Oracle Solaris 密钥管理框架

第 5 部分验证服务和安全通信

16.  使用验证服务(任务)

17.  使用 PAM

18.  使用 SASL

19.  使用 Oracle Solaris 安全 Shell(任务)

20.  Oracle Solaris 安全 Shell(参考)

第 6 部分Kerberos 服务

21.  Kerberos 服务介绍

22.  规划 Kerberos 服务

23.  配置 Kerberos 服务(任务)

配置 Kerberos 服务(任务列表)

配置额外 Kerberos 服务(任务列表)

配置 KDC 服务器

如何手动配置主 KDC 服务器

如何配置 KDC 以使用 LDAP 数据服务器

如何手动配置从 KDC 服务器

如何刷新主服务器上的票证授予服务密钥

配置跨领域验证

如何建立分层跨领域验证

如何建立直接跨领域验证

配置 Kerberos 网络应用服务器

如何配置 Kerberos 网络应用服务器

配置 Kerberos NFS 服务器

如何配置 Kerberos NFS 服务器

如何创建凭证表

如何向凭证表中添加单个项

如何提供各领域之间的凭证映射

如何使用多种 Kerberos 安全模式设置安全的 NFS 环境

配置 Kerberos 客户机

配置 Kerberos 客户机(任务列表)

如何创建 Kerberos 客户机安装配置文件

如何自动配置 Kerberos 客户机

如何交互配置 Kerberos 客户机

如何手动配置 Kerberos 客户机

如何禁用票证授予票证 (Ticket Granting Ticket, TGT) 的验证

如何以 root 用户身份访问受 Kerberos 保护的 NFS 文件系统

如何在 Kerberos 领域中配置用户自动迁移

同步 KDC 与 Kerberos 客户机的时钟

交换主 KDC 服务器与从 KDC 服务器

如何配置可交换的从 KDC 服务器

如何交换主 KDC 服务器与从 KDC 服务器

管理 Kerberos 数据库

备份和传播 Kerberos 数据库

kpropd.acl 文件

kprop_script 命令

如何备份 Kerberos 数据库

如何恢复 Kerberos 数据库

如何在服务升级后转换 Kerberos 数据库

如何重新配置主 KDC 服务器以使用增量传播

如何重新配置从 KDC 服务器以使用增量传播

如何配置从 KDC 服务器以使用完全传播

如何验证 KDC 服务器是否已同步

如何手动将 Kerberos 数据库传播到从 KDC 服务器

设置并行传播

设置并行传播的配置步骤

管理存储文件

如何删除存储文件

在 LDAP 目录服务器上管理 KDC

如何在非 Kerberos 对象类类型中混合 Kerberos 主体属性

如何在 LDAP 目录服务器上销毁领域

增强 Kerberos 服务器的安全性

如何仅启用基于 Kerberos 的应用程序

如何限制对 KDC 服务器的访问

如何使用字典文件提高口令的安全性

24.  Kerberos 错误消息和故障排除

25.  管理 Kerberos 主体和策略(任务)

26.  使用 Kerberos 应用程序(任务)

27.  Kerberos 服务(参考)

第 7 部分Oracle Solaris 审计

28.  Oracle Solaris 审计(概述)

29.  规划 Oracle Solaris 审计

30.  管理 Oracle Solaris 审计(任务)

31.  Oracle Solaris 审计(参考)

词汇表

索引

配置 Kerberos 客户机

Kerberos 客户机包括网络上需要使用 Kerberos 服务的所有主机(不是 KDC 服务器)。本节介绍有关安装 Kerberos 客户机的过程,以及关于使用 root 验证来挂载 NFS 文件系统的特定信息。

配置 Kerberos 客户机(任务列表)

以下任务列表涵盖有关设置 Kerberos 客户机的所有过程。每行都包含一个任务、关于执行该项任务的原因说明,以及指向该任务的链接。

任务
说明
参考
建立 Kerberos 客户机安装配置文件。
生成可用于自动安装 Kerberos 客户机的客户机安装配置文件。
配置 Kerberos 客户机。
手动安装 Kerberos 客户机。如果每个客户机安装都要求唯一的安装参数,请使用此过程。
自动安装 Kerberos 客户机。如果每个客户机的安装参数都相同,请使用此过程。
交互式安装 Kerberos 客户机。如果仅需更改少数几个安装参数,请使用此过程。
允许客户机以 root 用户身份访问 NFS 文件系统。
在客户机上创建 root 主体,以便客户机可以挂载使用 root 访问权限共享的 NFS 文件系统。此外,还允许为客户机设置对 NFS 文件系统的非交互 root 访问权限,以便可以运行 cron 作业。
禁用颁发客户机票证授予票证 (Ticket Granting Ticket, TGT) 的 KDC 的验证。
允许在本地密钥表文件中没有存储主机主体的客户机跳过旨在验证颁发 TGT 的 KDC 是否为颁发主机主体的服务器的安全检查。

如何创建 Kerberos 客户机安装配置文件

此过程创建可在安装 Kerberos 客户机时使用的 kclient 配置文件。使用 kclient 配置文件可以降低键入错误的可能性。此外,与交互式过程相比,使用该配置文件可以减少用户干预。

  1. 成为超级用户。
  2. 创建 kclient 安装配置文件。

    kclient 配置文件样例与以下内容类似:

    client# cat /net/denver.example.com/export/install/profile
    REALM EXAMPLE.COM
    KDC kdc1.example.com
    ADMIN clntconfig
    FILEPATH /net/denver.example.com/export/install/krb5.conf
    NFS 1
    DNSLOOKUP none

如何自动配置 Kerberos 客户机

开始之前

此过程使用安装配置文件。请参见如何创建 Kerberos 客户机安装配置文件

  1. 成为超级用户。
  2. 运行 kclient 安装脚本。

    要完成此过程,需要提供 clntconfig 主体的口令。

    client# /usr/sbin/kclient -p /net/denver.example.com/export/install/profile
    
    Starting client setup
    ---------------------------------------------------
    
    kdc1.example.com
    
    Setting up /etc/krb5/krb5.conf.
    
    Obtaining TGT for clntconfig/admin ...
    Password for clntconfig/admin@EXAMPLE.COM: <Type the password>
    
    nfs/client.example.com entry ADDED to KDC database.
    nfs/client.example.com entry ADDED to keytab.
    
    host/client.example.com entry ADDED to KDC database.
    host/client.example.com entry ADDED to keytab.
    
    Copied /net/denver.example.com/export/install/krb5.conf.
    
    ---------------------------------------------------
    Setup COMPLETE.
    
    client#

示例 23-7 使用命令行覆盖项自动配置 Kerberos 客户机

以下示例将覆盖在安装配置文件中设置的 DNSARGKDC 参数。

# /usr/sbin/kclient -p /net/denver.example.com/export/install/profile\
-d dns_fallback -k kdc2.example.com

Starting client setup
---------------------------------------------------

kdc1.example.com

Setting up /etc/krb5/krb5.conf.

Obtaining TGT for clntconfig/admin ...
Password for clntconfig/admin@EXAMPLE.COM: <Type the password>

nfs/client.example.com entry ADDED to KDC database.
nfs/client.example.com entry ADDED to keytab.

host/client.example.com entry ADDED to KDC database.
host/client.example.com entry ADDED to keytab.

Copied /net/denver.example.com/export/install/krb5.conf.

---------------------------------------------------
Setup COMPLETE.

client#

如何交互配置 Kerberos 客户机

此过程使用 kclient 安装实用程序而非安装配置文件。

  1. 成为超级用户。
  2. 运行 kclient 安装脚本。

    需要提供以下信息:

    • Kerberos 领域名称

    • 主 KDC 服务器主机名

    • 管理主体名称

    • 管理主体口令

示例 23-8 运行 kclient 安装实用程序

以下输出显示了 kclient 命令的运行结果。

client# /usr/sbin/kclient

Starting client setup
---------------------------------------------------

Do you want to use DNS for kerberos lookups ? [y/n]: n
        No action performed.
Enter the Kerberos realm: EXAMPLE.COM
Specify the KDC hostname for the above realm: kdc1.example.com

Setting up /etc/krb5/krb5.conf.

Enter the krb5 administrative principal to be used: clntconfig/admin
Obtaining TGT for clntconfig/admin ...
Password for clntconfig/admin@EXAMPLE.COM: <Type the password>
Do you plan on doing Kerberized nfs ? [y/n]: n

host/client.example.com entry ADDED to KDC database.
host/client.example.com entry ADDED to keytab.

Do you want to copy over the master krb5.conf file ? [y/n]: y
Enter the pathname of the file to be copied: \
/net/denver.example.com/export/install/krb5.conf

Copied /net/denver.example.com/export/install/krb5.conf.

---------------------------------------------------
Setup COMPLETE !
#

如何手动配置 Kerberos 客户机

此过程中使用以下配置参数:

  1. 成为超级用户。
  2. 编辑 Kerberos 配置文件 (krb5.conf)。

    要从 Kerberos 缺省版本更改该文件,需要更改领域名称和服务器名称。还需要指定 gkadmin 帮助文件的路径。

    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = EXAMPLE.COM
    
    [realms]
            EXAMPLE.COM = {
            kdc = kdc1.example.com
            kdc = kdc2.example.com
            admin_server = kdc1.example.com
            }
    
    [domain_realm]
            .example.com = EXAMPLE.COM
    #
    # if the domain name and realm name are equivalent, 
    # this entry is not needed
    #
    [logging]
            default = FILE:/var/krb5/kdc.log
            kdc = FILE:/var/krb5/kdc.log
    
    [appdefaults]
        gkadmin = {
            help_url = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956

    注 - 如果要限制加密类型,可以设置 default_tkt_enctypesdefault_tgs_enctypes 行。请参阅使用 Kerberos 加密类型,了解关于限制加密类型的问题说明。


  3. 可选更改用于定位 KDC 的过程。

    从 Solaris 10 5/08 发行版开始,缺省情况下,按照以下顺序确定 kerberos 领域到 KDC 的映射:

    • krb5.confrealms 部分的定义。

    • 通过在 DNS 中查找 SRV 记录。

    dns_lookup_kdc dns_fallback 添加到 krb5.conf 文件的 libdefaults 部分,可以更改此行为。有关更多信息,请参见 krb5.conf(4) 手册页。请注意,始终会首先尝试引用。

  4. 可选更改用于确定主机领域的过程。

    从 Solaris 10 5/08发行版开始,缺省情况下,按照以下顺序确定主机到领域的映射:

    • 如果 KDC 支持引用,则 KDC 会通知客户机该主机属于哪个领域。

    • krb5.conf 文件中的 domain_realm 定义。

    • 主机的 DNS 域名。

    • 缺省领域。

    dns_lookup_kdc dns_fallback 添加到 krb5.conf 文件的 libdefaults 部分,可以更改此行为。有关更多信息,请参见 krb5.conf(4) 手册页。请注意,始终会首先尝试引用。

  5. 可选使用 NTP 或其他时钟同步机制将客户机时钟与主 KDC 服务器时钟同步。

    安装和使用网络时间协议 (Network Time Protocol, NTP) 并非必须的。但是,要成功进行验证,每个时钟必须与 KDC 服务器上的时间同步,最大时差不超过 krb5.conf 文件中 clockskew 关系定义的值。有关 NTP 的信息,请参见同步 KDC 与 Kerberos 客户机的时钟

  6. 启动 kadmin

    可以使用图形化 Kerberos 管理工具添加主体,如如何创建新的 Kerberos 主体所述。为此,必须使用在配置主 KDC 服务器时创建的一个 admin 主体名称登录。不过,以下示例说明如何使用命令行添加所需的主体。

    denver # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. 可选如果不存在用户主体,请创建一个。

      仅当尚未对与该主机关联的用户指定主体时,才需要创建用户主体。

      kadmin: addprinc mre
      Enter password for principal mre@EXAMPLE.COM: <Type the password>
      Re-enter password for principal mre@EXAMPLE.COM: <Type it again>
      kadmin: 
    2. 可选创建 root 主体,并将其添加到服务器的密钥表文件。

      如果客户机需要具有对使用 NFS 服务挂载的远程文件系统的 root 访问权限,则必须执行此步骤。如果需要非交互式 root 访问权限(如以 root 身份运行 cron 作业),也必须执行该步骤。

      如果客户机不需要对使用 NFS 服务挂载的远程文件系统的 root 访问权限,则可以跳过该步骤。root 主体应有两个组成部分,第二个部分是 Kerberos 客户机系统的主机名,以避免创建领域范围的 root 主体。请注意,当主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。

      kadmin: addprinc -randkey root/client.example.com
      Principal "root/client.example.com" created.
      kadmin: ktadd root/client.example.com
      Entry for principal root/client.example.com with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal root/client.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal root/client.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal root/client.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal root/client.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    3. 创建 root 主体,并将其添加到服务器的密钥表文件。

      远程访问服务使用 host 主体来提供验证。如果密钥表文件中尚无凭证,此主体允许 root 获取凭证。

      kadmin: addprinc -randkey host/denver.example.com
      Principal "host/denver.example.com@EXAMPLE.COM" created.
      kadmin: ktadd host/denver.example.com
      Entry for principal host/denver.example.com with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/denver.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/denver.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/denver.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/denver.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin:
    4. 可选将服务器的 NFS 服务主体添加到服务器的密钥表文件中。

      仅当客户机需要使用 Kerberos 验证访问 NFS 文件系统时才需要执行该步骤。

      kadmin: ktadd nfs/denver.example.com
      Entry for principal nfs/denver.example.com with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal nfs/denver.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal nfs/denver.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal nfs/denver.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal nfs/denver.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    5. 退出 kadmin
      kadmin: quit
  7. 可选对 NFS 启用 Kerberos。
    1. /etc/nfssec.conf 文件中启用 Kerberos 安全模式。

      编辑 /etc/nfssec.conf 文件并删除位于 Kerberos 安全模式前面的 "#"。

      # cat /etc/nfssec.conf
       .
       .
      #
      # Uncomment the following lines to use Kerberos V5 with NFS
      #
      krb5            390003  kerberos_v5     default -               # RPCSEC_GSS
      krb5i           390004  kerberos_v5     default integrity       # RPCSEC_GSS
      krb5p           390005  kerberos_v5     default privacy         # RPCSEC_GSS
    2. 启用 DNS。

      如果尚未创建 /etc/resolv.conf 文件,请创建该文件,因为服务主体标准化依靠 DNS 执行此任务。有关更多信息,请参见 resolv.conf(4) 手册页。

    3. 重新启动 gssd 服务。

      创建或修改 /etc/resolv.conf 文件后,必须重新启动 gssd 守护进程,以重新读取任何更改。

      # svcadm restart network/rpc/gss
  8. 如果您希望客户机自动续订 TGT 或警告用户 Kerberos 票证失效,请在 /etc/krb5/warn.conf 文件中创建一个相应项。

    有关更多信息,请参见 warn.conf(4) 手册页。

示例 23-9 使用非 Solaris KDC 设置 Kerberos 客户机

Kerberos 客户机可以设置为与非 Solaris KDC 一起工作。在这种情况下,必须在 /etc/krb5/krb5.conf 文件的 realms 部分中包括一行。该行会更改客户机与 Kerberos 口令更改服务器通信时使用的协议。该行的格式如下:

[realms]
                EXAMPLE.COM = {
                kdc = kdc1.example.com
                kdc = kdc2.example.com
                admin_server = kdc1.example.com
                kpasswd_protocol = SET_CHANGE
        }

示例 23-10 主机和域名到 Kerberos 领域的映射的 DNS TXT 记录

@ IN SOA kdc1.example.com root.kdc1.example.com (
                                1989020501   ;serial
                                10800        ;refresh
                                3600         ;retry
                                3600000      ;expire
                                86400 )      ;minimum

                        IN      NS      kdc1.example.com.
kdc1                    IN      A       192.146.86.20
kdc2                    IN      A       192.146.86.21

_kerberos.example.com.             IN      TXT     "EXAMPLE.COM"
_kerberos.kdc1.example.com.        IN      TXT     "EXAMPLE.COM"
_kerberos.kdc2.example.com.        IN      TXT     "EXAMPLE.COM"

示例 23-11 Kerberos 服务器位置的 DNS SRV 记录

此示例分别为 KDC、admin 服务器和 kpasswd 服务器的位置定义记录。

@ IN SOA kdc1.example.com root.kdc1.example.com (
                                1989020501   ;serial
                                10800        ;refresh
                                3600         ;retry
                                3600000      ;expire
                                86400 )      ;minimum

                                   IN      NS      kdc1.example.com.
kdc1                               IN      A       192.146.86.20
kdc2                               IN      A       192.146.86.21

_kerberos._udp.EXAMPLE.COM         IN      SRV 0 0 88  kdc2.example.com
_kerberos._tcp.EXAMPLE.COM         IN      SRV 0 0 88  kdc2.example.com
_kerberos._udp.EXAMPLE.COM         IN      SRV 1 0 88  kdc1.example.com
_kerberos._tcp.EXAMPLE.COM         IN      SRV 1 0 88  kdc1.example.com
_kerberos-adm._tcp.EXAMPLE.COM     IN      SRV 0 0 749 kdc1.example.com
_kpasswd._udp.EXAMPLE.COM          IN      SRV 0 0 749 kdc1.example.com

如何禁用票证授予票证 (Ticket Granting Ticket, TGT) 的验证

此过程禁用用于检查本地 /etc/krb5/krb5.keytab 文件中存储的主机主体的 KDC 是否即是颁发票证授予票证的 KDC 的安全检查。该检查旨在防止 DNS 欺骗攻击。但是,对于某些客户机配置,主机主体可能不可用,因此需要禁用此项检查以允许客户机正常工作。以下是需要禁用此项检查的配置:

  1. 成为超级用户。
  2. 更改 krb5.conf 文件。

    如果 verify_ap_req_nofail 选项设置为 false,则不会启用 TGT 验证过程。有关该选项的更多信息,请参见 krb5.conf(4) 手册页。

    client # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = EXAMPLE.COM
            verify_ap_req_nofail = false
      ...

    注 - 可以在 krb5.conf 文件的 [libdefaults][realms] 部分中输入 verify_ap_req_nofail 选项。如果此选项位于 [libdefaults] 部分,则该设置用于所有领域。如果该选项位于 [realms] 部分,则该设置仅应用于定义的领域。


如何以 root 用户身份访问受 Kerberos 保护的 NFS 文件系统

通过此过程,客户机可以使用 root ID 特权访问要求 Kerberos 验证的 NFS 文件系统。特别是,使用如下选项共享 NFS 文件系统时:-o sec=krb5,root=client1.sun.com

  1. 成为超级用户。
  2. 启动 kadmin

    可以使用图形化 Kerberos 管理工具添加主体,如如何创建新的 Kerberos 主体所述。为此,必须使用在配置主 KDC 服务器时创建的一个 admin 主体名称登录。不过,以下示例说明如何使用命令行添加所需的主体。

    denver # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. 为 NFS 客户机创建 root 主体。

      此主体用于对要求 Kerberos 验证的 NFS 挂载的文件系统提供 root 等效访问权限。root 主体应有两个组成部分,第二个部分是 Kerberos 客户机系统的主机名,以避免创建领域范围的 root 主体。请注意,当主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。

      kadmin: addprinc -randkey root/client.example.com
      Principal "root/client.example.com" created.
      kadmin:
    2. root 主体添加到服务器的密钥表文件中。

      如果添加了 root 主体,则必须执行此步骤,以便客户机对使用 NFS 服务挂载的文件系统具有 root 访问权限。如果需要非交互式 root 访问权限(如以 root 身份运行 cron 作业),也必须执行该步骤。

      kadmin: ktadd root/client.example.com
      Entry for principal root/client.example.com with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal root/client.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal root/client.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal root/client.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal root/client.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    3. 退出 kadmin
      kadmin: quit

如何在 Kerberos 领域中配置用户自动迁移

没有 Kerberos 主体的用户可以自动迁移到现有 Kerberos 领域。可以使用正在使用的服务的 PAM 框架,通过在 /etc/pam.conf 中将 pam_krb5_migrate 模块堆叠在该服务的验证栈中实现迁移。

在此示例中,将配置 dtloginother PAM 服务名称使其使用自动迁移。将使用以下配置参数:

开始之前

server1 设置为 EXAMPLE.COM 领域的 Kerberos 客户机。有关更多信息,请参见配置 Kerberos 客户机

  1. 检查是否存在 server1 的主机服务主体。

    server1keytab 文件中的主机服务主体用于向主 KDC 服务器验证该服务器。

    server1 # klist -k
    Keytab name: FILE:/etc/krb5/krb5.keytab
        KVNO Principal
        ---- ------------------------------------------------
           3 host/server1.example.com@EXAMPLE.COM
           3 host/server1.example.com@EXAMPLE.COM
           3 host/server1.example.com@EXAMPLE.COM
           3 host/server1.example.com@EXAMPLE.COM
  2. 更改 PAM 配置文件。
    1. dtlogin 服务添加项。
      # cat /etc/pam.conf
       .
       .
      # # dtlogin service (explicit because of pam_krb5_migrate) # dtlogin auth requisite pam_authtok_get.so.1 dtlogin auth required pam_dhkeys.so.1 dtlogin auth required pam_unix_cred.so.1 dtlogin auth sufficient pam_krb5.so.1 dtlogin auth requisite pam_unix_auth.so.1 dtlogin auth optional pam_krb5_migrate.so.1
    2. 可选如果需要,可强制立即更改口令。

      可以将新建 Kerberos 帐户的口令到期时间设置为当前时间(现在),以便强制立即更改 Kerberos 口令。要将到期时间设置为当前时间,请将 expire_pw 选项添加到使用 pam_krb5_migrate 模块的行中。有关更多信息,请参见 pam_krb5_migrate(5) 手册页。

      # cat /etc/pam.conf
       .
       .
      dtlogin auth optional pam_krb5_migrate.so.1 expire_pw
    3. pam_krb5 模块添加到帐户栈。

      此添加操作使 Kerberos 中的口令到期,从而阻止访问。

      # cat /etc/pam.conf
       .
       .
      #
      # Default definition for Account management
      # Used when service name is not explicitly mentioned for account management
      #
      other   account requisite       pam_roles.so.1
      other account required pam_krb5.so.1
      other   account required        pam_unix_account.so.1
    4. pam_krb5 模块添加到口令栈。

      此添加操作使得口令在到期时得到更新。

      # cat /etc/pam.conf
       .
       .
      #
      # Default definition for Password management
      # Used when service name is not explicitly mentioned for password management
      #
      other   password required       pam_dhkeys.so.1
      other   password requisite      pam_authtok_get.so.1
      other   password requisite      pam_authtok_check.so.1
      other   password sufficient     pam_krb5.so.1
      other   password required       pam_authtok_store.so.1
  3. 在主 KDC 服务器上,更新访问控制文件。

    以下项将为所有用户(root 用户除外)授予对 host/server1.example.com 服务主体的迁移和查询特权。务必将不应被迁移的用户在 kadm5.acl 文件中以 U 特权列出。这些项必须位于 permit all 或 ui 项之前。有关更多信息,请参见 kadm5.acl(4) 手册页。

    kdc1 # cat /etc/krb5/kadm5.acl
    host/server1.example.com@EXAMPLE.COM U root
    host/server1.example.com@EXAMPLE.COM ui *
    */admin@EXAMPLE.COM *
  4. 在主 KDC 服务器上,重新启动 Kerberos 管理守护进程。

    通过此步骤,kadmind 守护进程可以使用新的 kadm5.acl 项。

    kdc1 # svcadm restart network/security/kadmin
  5. 在主 KDC 服务器上,向 pam.conf 文件添加项。

    通过以下项,kadmind 守护进程可以使用 k5migrate PAM 服务来验证需要迁移的帐户的 UNIX 用户口令。

    # grep k5migrate /etc/pam.conf
    k5migrate        auth    required        pam_unix_auth.so.1
    k5migrate        account required        pam_unix_account.so.1