用户身份鉴别

操作系统通常使用口令的机制完成用户身份鉴别,openEuler提供了PAM、passwd、shadow、libuser等用户口令管理组件。用户口令在设置完成后,需要进行加密存储,通常使用哈希算法进行加密。openEuler提供的用户口令管理组件新增了对商密SM3的支持。

PAM配置用户口令加密

概述

PAM是系统的可插拔认证模块,为上层应用提供认证机制。openEuler发布的PAM新增了对SM3算法用户口令加密的支持。

前置条件

  1. PAM软件包大于或等于1.5.2-2版本:

    sh
    $ rpm -qa pam
    pam-1.5.2-2.oe2209.x86_64
  2. libxcrypt软件包大于或等于4.4.26-2版本:

    sh
    $ rpm -qa libxcrypt
    pam-4.4.26-2.oe2209.x86_64

如何使用

  1. 修改/etc/pam.d/password-auth和/etc/pam.d/system-auth文件,找到文件中“password sufficient pam_unix.so”开头的行,修改该行中算法字段为sm3:

    sh
    $ cat /etc/pam.d/password-auth
    ......
    password    sufficient    pam_unix.so sm3 shadow nullok try_first_pass use_authtok
    ......
    
    $ cat /etc/pam.d/system-auth
    ......
    password    sufficient    pam_unix.so sm3 shadow nullok try_first_pass use_authtok
    ......
  2. 修改配置之后通过passwd命令修改密码或新增用户创建的密码,会使用sm3算法加密,加密结果以sm3开头存储在/etc/shadow中:

    sh
    $ passwd testuser 
    Changing password for user testuser.
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    $ cat /etc/shadow | grep testuser
    testuser:$sm3$wnY86eyUlB5946gU$99LlMr0ddeZNDqnB2KRxn9f30SFCCvMv1WN1cFdsKJ2:19219:0:90:7:35::

注意事项

  1. PAM配置默认使用sha512算法,修改配置使用商密SM3算法后,对已存在的用户密码无影响,需要修改密码才能更新密码算法;
  2. 若PAM和libxcrypt要降级到非商密版本,并且已存在帐户密码使用SM3算法加密,则需先修改配 置为非商密算法,再修改帐号密码,再降级到非商密版本,否则这些帐户将无法正常登录。

shadow配置用户口令加密

概述

shadow是Linux系统中常用的用户管理组件,提供了chpasswd、chgpasswd与newusers等命令。openEuler提供的shadow组件新增了对商密算法SM3的支持,以便在用户管理时使用SM3加密算法。因为shadow默认使用PAM安全认证机制,因此该组件支持商密算法只影响chpasswd与chgpasswd命令。

前置条件

shadow大于或等于4.9-4版本:

sh
$ rpm -qa shadow
shadow-4.9-4.oe2209.x86_64

如何使用

  1. chpasswd默认使用pam配置,通过-c指定SM3算法,会以SM3算法加密,加密结果以sm3开头存储在/etc/shadow中:

    sh
    $ echo testuser:testPassword |chpasswd -c SM3
    $ cat /etc/shadow | grep testuser
    testuser:$sm3$moojQQeBfdGOrL14$NqjckLHlk3ICs1cx.0rKZwRHafjVlqksdSJqfx9eYh6:19220:0:99999:7:::
  2. chgpasswd默认使用pam配置,通过-c指定SM3算法,会以SM3算法加密,加密结果以sm3开头存储在/etc/shadow中:

    sh
    $ echo testGroup:testPassword |chpasswd -c SM3
    $ cat /etc/gshadow | grep testGroup
    testGroup:$sm3$S3h3X6U6KsXg2Gkc$LFCAnKbi6JItarQz4Y/Aq9/hEbEMQXq9nQ4rY1j9BY9::

注意事项

shadow默认使用PAM安全认证机制,相关命令使用-c参数指定加密算法时,不使用PAM机制。

libuser配置用户口令加密

概述

libuser库实现了一个标准化的接口,用于操作和管理用户和组帐户。该库经过封装,对外提供了命令行接口和python接口,用于管理用户和组。其中涉及用户密码的管理,支持使用des、md5、blowfish、sha256、sha512等算法对用户口令进行加密,openEuler发布的libuser新增了对SM3算法加密支持。

前置条件

libuser大于或等于0.63-3版本:

sh
$ rpm -qa libuser
libuser-0.63-3.oe2209.x86_64

如何使用

  1. 编辑/etc/libuser.conf,修改[defaults]域crypt_style=sm3:

    sh
    $ cat /etc/libuser.conf
    ......
    [defaults]
    crypt_style = sm3
    ......
  2. 通过lusermod、lpasswd、luseradd等命令设置用户口令时,口令加密算法默认为sm3。加密结果以sm3开头存储在/etc/shadow中:

    sh
    # luseradd  testuser -P Test@123
    # cat /etc/shadow | grep testuser
    testuser:$sm3$1IJtoN6zlBDCiPKC$5oxscBTgiquPAEmZWGNDVqTPrboHJw3fFSohjF6sONB:18862:0:90:7:35::