zoukankan      html  css  js  c++  java
  • 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开头。

  • 相关阅读:
    1、jQuery基本认识
    Zabbix agent 启动报错:cannot set resource limit [13] Permission denied
    Zabbix agent启动报错:cannot create semaphore set
    Windows系统版本号对照表
    学习使用 vue mixin
    windows cmd 生成文件目录树
    合村并镇
    Adobe宣布今年12月31日正式终止支持Flash
    好春光
    npm package version
  • 原文地址:https://www.cnblogs.com/zechen11/p/2116496.html
Copyright © 2011-2022 走看看