用户身份鉴别
操作系统通常使用口令的机制完成用户身份鉴别,openEuler提供了PAM、passwd、shadow、libuser等用户口令管理组件。用户口令在设置完成后,需要进行加密存储,通常使用哈希算法进行加密。openEuler提供的用户口令管理组件新增了对商密SM3的支持。
PAM配置用户口令加密
概述
PAM是系统的可插拔认证模块,为上层应用提供认证机制。openEuler发布的PAM新增了对SM3算法用户口令加密的支持。
前置条件
- PAM软件包大于或等于1.5.2-2版本:
$ rpm -qa pam
pam-1.5.2-2.oe2209.x86_64
- libxcrypt软件包大于或等于4.4.26-2版本:
$ rpm -qa libxcrypt
pam-4.4.26-2.oe2209.x86_64
如何使用
- 修改/etc/pam.d/password-auth和/etc/pam.d/system-auth文件,找到文件中“password sufficient pam_unix.so”开头的行,修改该行中算法字段为sm3:
$ 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
......
- 修改配置之后通过passwd命令修改密码或新增用户创建的密码,会使用sm3算法加密,加密结果以sm3开头存储在/etc/shadow中:
$ 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::
注意事项
- PAM配置默认使用sha512算法,修改配置使用商密SM3算法后,对已存在的用户密码无影响,需要修改密码才能更新密码算法;
- 若PAM和libxcrypt要降级到非商密版本,并且已存在账户密码使用SM3算法加密,则需先修改配 置为非商密算法,再修改账号密码,再降级到非商密版本,否则这些账户将无法正常登录。
shadow配置用户口令加密
概述
shadow是Linux系统中常用的用户管理组件,提供了chpasswd、chgpasswd与newusers等命令。openEuler提供的shadow组件新增了对商密算法SM3的支持,以便在用户管理时使用SM3加密算法。因为shadow默认使用PAM安全认证机制,因此该组件支持商密算法只影响chpasswd与chgpasswd命令。
前置条件
shadow大于或等于4.9-4版本:
$ rpm -qa shadow
shadow-4.9-4.oe2209.x86_64
如何使用
- chpasswd默认使用pam配置,通过-c指定SM3算法,会以SM3算法加密,加密结果以sm3开头存储在/etc/shadow中:
$ echo testuser:testPassword |chpasswd -c SM3
$ cat /etc/shadow | grep testuser
testuser:$sm3$moojQQeBfdGOrL14$NqjckLHlk3ICs1cx.0rKZwRHafjVlqksdSJqfx9eYh6:19220:0:99999:7:::
- chgpasswd默认使用pam配置,通过-c指定SM3算法,会以SM3算法加密,加密结果以sm3开头存储在/etc/gshadow中:
$ echo testGroup:testPassword |chgpasswd -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版本:
$ rpm -qa libuser
libuser-0.63-3.oe2209.x86_64
如何使用
- 编辑/etc/libuser.conf,修改[defaults]域crypt_style=sm3:
$ cat /etc/libuser.conf
......
[defaults]
crypt_style = sm3
......
- 通过lusermod、lpasswd、luseradd等命令设置用户口令时,口令加密算法默认为sm3。加密结果以sm3开头存储在/etc/shadow中:
# luseradd testuser -P Test@123
# cat /etc/shadow | grep testuser
testuser:$sm3$1IJtoN6zlBDCiPKC$5oxscBTgiquPAEmZWGNDVqTPrboHJw3fFSohjF6sONB:18862:0:90:7:35::