arch启用SHA密码散列算法

原文:https://wiki.archlinux.org/index.php/SHA_password_hashes

水平不行,将就着看,欢迎指正!

翻译:

SHA密码散列算法


目录

1.为什么应该使用SHA-2?

2.需要修改的文件

2.1修改/etc/pam.d/passwd

2.2修改/etc/default/passwd

2.3修改/etc/login.defs

3.收尾阶段

1.为什么应当使用SHA-2?


在linux发行版中,登陆密码通常用MD5算法散列,并保存在/etc/shadow文件中。而碰撞漏洞严重损坏了MD5散列函数的安全性。这并不意味着MD5密码散列不安全,但推荐使用一个更加安全、健壮且没有已知弱点的算法(例如SHA),以减少漏洞。

下列教程使用sha512散列函数,NSA推荐在Red Hat Enterprise Linux 5 中使用该函数。另外,SHA-2包含3个附加散列函数,分别为244,256和384位。

警告:超小型终端fgetty不支持sha512密码散列。在fgetty中启用sha512会将你锁住。Arch Linux的默认tty管理器agetty和小型tty管理器mingetty都支持sha512。

2.需要修改的文件


注意:要修改本节提到的文件,你必须具有root权限。

2.1.修改/etc/pam.d/passwd


/etc/pam.d/passwd默认应该如下所示:

#%PAM-1.0

#password    required    pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3

#password    required    pam_unix.so md5 shadow use_authtok

password      required    pam_unix.so md5 shadow nullok

用文本编辑器打开/etc/pam.d/passwd,将未注释行中的md5替换成sha512。在未注释行末尾加上rounds选项。

round=N选项有助于提升key strengthening(不知道怎么翻译了,囧...)。rounds的值比哈希(散列)函数的选择对安全性的影响要大。例如,rounds=65536意味着:要从/etc/shadow中的哈希值中获取一个密码,攻击者必须计算65536个散列值。因此攻击者将被延迟65536倍。这同样意味着每次登陆时你的电脑必须计算65536个哈希值,但即使在慢速电脑上这不需要1秒钟。如果你不使用rounds选项,glibc将把sha512的rounds值设置为默认值5000。此外,rounds默认值可以在sha512-crypt.c中找到。

注意:对/etc/pam.d/passwd中密码选项更详细的解释,请查看pam man page。

进行上述更改之后,你的/etc/pam.d/passwd应如下所示:

#%PAM-1.0
#password     required     pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
#password     required     pam_unix.so md5 shadow use_authtok
password       required     pam_unix.so sha512 shadow nullok rounds=65536

2.2.修改/etc/default/passwd


默认的/etc/default/passwd文件应该如下所示:

# This file contains some information for
# the passwd (1) command and other tools
# creating or modifying passwords.

# Define default crypt hash
# CRYPT={des,md5,blowfish}
CRYPT=des

# Use another crypt hash for group passwowrds.
# This is used by gpasswd, fallback is the CRYPT entry.
# GROUP_CRYPT=des


# We can override the default for a special service
# by appending the service name (FILES, YP, NISPLUS, LDAP)

# for local files, use a more secure hash. We
# don't need to be portable here:
CRYPT_FILES=blowfish
# sometimes we need to specify special options for
# a hash (variable is prepended by the name of the
# crypt hash).
BLOWFISH_CRYPT_FILES=5

# For NIS, we should always use DES:
CRYPT_YP=des

上例种的第七行,将

CRYPT=des

修改为

CRYPT=sha512
注意:不清楚使用/etc/shadow机制之后是否仍然需要作如此修改。

2.3.修改/etc/login.defs


根据man手册中的passwd页,当使用/etc/shadow机制来保存密码时,需要修改/etc/login.defs文件。添加如下行至该文件:

ENCRYPT_METHOD SHA512

3.收尾阶段


即使你改变了加密策略,密码不也不会被自动重新散列。未解决此问题,你必须重新设置所有用户的密码,以便重新散列。

以root权限执行以下命令:

# passwd <username>

<username>是要修改密码的用户名。然后重新输入新的密码,该密码将用SHA-2函数重新散列!

以root权限查看/etc/shadow文件,以验证密码确实已被散列。用sha256散列的密码应该是以$5开头的,而用sha512散列的密码会以$6开头。

原文地址:https://www.cnblogs.com/zechen11/p/2116496.html