系统管理指南:安全性服务

更改口令加密的缺省算法

缺省情况下,使用 crypt_unix 算法加密用户口令。通过更改缺省口令加密算法,可以使用更强大的加密算法,如 MD5Blowfish

Procedure如何指定口令加密算法

在此过程中,BSD-Linux 版本的 MD5 算法是用户更改其口令时使用的缺省加密算法。此算法适合由运行 Solaris、BSD 和 Linux 版本的 UNIX 的计算机构成的混合网络。有关口令加密算法和算法标识符的列表,请参见表 2–1

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 指定所选加密算法的标识符。

    键入标识符作为 /etc/security/policy.conf 文件中的 CRYPT_DEFAULT 变量的值。

    可能需要在文件中添加注释以对选择进行说明。


    # cat  /etc/security/policy.conf
    
    …
    
    CRYPT_ALGORITHMS_ALLOW=1,2a,md5
    
    #
    
    # Use the version of MD5 that works with Linux and BSD systems.
    
    # Passwords previously encrypted with __unix__ will be encrypted with MD5
    
    # when users change their passwords.
    
    #
    
    #
    
    CRYPT_DEFAULT=__unix__
    
    CRYPT_DEFAULT=1
    

    在此示例中,算法配置可确保不会使用功能最弱的算法 crypt_unix 加密口令。使用 crypt_unix 模块加密口令的用户将在更改其口令时获得使用 crypt_bsdmd5 加密的口令。

    有关配置算法选择的更多信息,请参见 policy.conf(4) 手册页。


示例 3–6 使用 Blowfish 算法加密口令

在此示例中,Blowfish 算法的标识符 2a 被指定为 policy.conf 文件中的 CRYPT_DEFAULT 变量的值:


CRYPT_ALGORITHMS_ALLOW=1,2a,md5

#CRYPT_ALGORITHMS_DEPRECATE=__unix__

CRYPT_DEFAULT=2a

此配置与使用 Blowfish 算法的 BSD 系统兼容。


Procedure如何为 NIS 域指定新的口令算法

当 NIS 域中的用户更改其口令时,NIS 客户机会查看 /etc/security/policy.conf 文件中的本地算法配置。NIS 客户机将加密口令。

  1. 在 NIS 客户机的 /etc/security/policy.conf 文件中指定口令加密算法。

  2. 将修改过的 /etc/security/policy.conf 文件复制到 NIS 域中的每台客户机。

  3. 为尽可能减少混淆,将修改过的 /etc/security/policy.conf 文件复制到 NIS 根服务器和从服务器。

Procedure如何为 NIS+ 域指定新的口令算法

当 NIS+ 域中的用户更改其口令时,NIS+ 名称服务会查看 NIS+ 主服务器的 /etc/security/policy.conf 文件中的算法配置。运行 rpc.nispasswd 守护进程的 NIS+ 主服务器将创建加密口令。

  1. 在 NIS+ 主服务器的 /etc/security/policy.conf 文件中指定口令加密算法。

  2. 为尽可能减少混淆,将 NIS+ 主服务器的 /etc/security/policy.conf 文件复制到 NIS+ 域中的每台主机。

Procedure如何为 LDAP 域指定新的口令算法

正确配置 LDAP 客户机后,LDAP 客户机便可以使用新的口令算法。LDAP 客户机的行为与 NIS 客户机的行为相同。

  1. 在 LDAP 客户机的 /etc/security/policy.conf 文件中指定口令加密算法。

  2. 将修改过的 policy.conf 文件复制到 LDAP 域中的每台客户机。

  3. 确保客户机的 /etc/pam.conf 文件不使用 pam_ldap 模块。

    确保注释符号 (#) 位于包含 pam_ldap.so.1 的项的前面。另外,请勿将新的 server_policy 选项与 pam_authtok_store.so.1 模块一起使用。

    客户机的 pam.conf 文件中的 PAM 项允许根据本地算法配置来加密口令。PAM 项还允许验证口令。

    当 LDAP 域中的用户更改其口令时,LDAP 客户机会查看 /etc/security/policy.conf 文件中的本地算法配置。LDAP 客户机将加密口令。然后,客户机将加密过的口令连同 {crypt} 标记一起发送到服务器。该标记告知服务器该口令已加密。该口令将按原样存储在服务器上。验证时,客户机先从服务器检索存储的口令。然后,将存储的口令与其从用户键入的口令生成的加密版本进行比较。


    注 –

    要利用 LDAP 服务器的口令策略控制,请将 server_policy 选项与 pam.conf 文件中的 pam_authtok_store 项一起使用。这样,将使用 Sun JavaTM System Directory Server 的加密机制在服务器上加密口令。有关过程,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》中的第 11  章 “为使用 LDAP 客户机设置 Sun Java System Directory Server(任务)”


Procedure如何安装第三方的口令加密模块

第三方口令加密算法通常在软件包中作为模块提供。运行 pkgadd 命令时,供应商的脚本应修改 /etc/security/crypt.conf 文件。然后,您可修改 /etc/security/policy.conf 文件以包含新模块及其标识符。

  1. 使用 pkgadd 命令添加软件。

    有关如何添加软件的详细说明,请参见《系统管理指南:基本管理》中的“添加或删除软件包 (pkgadd)”

  2. 确认是否已添加新模块及模块标识符。

    读取 /etc/security/crypt.conf 文件中的加密算法列表。

    例如,以下行说明已安装了用于实现 crypt_rot13 算法的模块:


    # crypt.conf
    
    #
    
    md5 /usr/lib/security/$ISA/crypt_md5.so
    
    rot13 /usr/lib/security/$ISA/crypt_rot13.so
    
    
    
    # For *BSD - Linux compatibility
    
    # 1 is MD5,  2a is Blowfish
    
    1 /usr/lib/security/$ISA/crypt_bsdmd5.so
    
    2a /usr/lib/security/$ISA/crypt_bsdbf.so
  3. 将新安装算法的标识符添加到 /etc/security/policy.conf 文件。

    以下行显示了需要修改以添加 rot13 标识符的 policy.conf 文件的摘录:


    # Copyright 1999-2002 Sun Microsystems, Inc.  All rights reserved.
    
    # ...
    
    #ident  "@(#)policy.conf        1.6     02/06/07 SMI"
    
    # ...
    
    # crypt(3c) Algorithms Configuration
    
    CRYPT_ALGORITHMS_ALLOW=1,2a,md5,rot13
    
    #CRYPT_ALGORITHMS_DEPRECATE=__unix__
    
    CRYPT_DEFAULT=md5

    在此示例中,如果当前口令是使用 crypt_rot13 算法加密的,则使用 rot13 算法。新用户口令使用 crypt_sunmd5 算法进行加密。此算法配置适用于仅 Solaris 网络。