是否可以在不使用盐的情况下配置OpenLDAP Crypt密码?

时间:2019-04-05 20:31:06

标签: ldap openldap salt sha512 sha2

从文档中,我得到了可以使用但使用盐的配置,

密码哈希{CRYPT} password-crypt-salt-format“ $ 6 $%。16s”

并且我需要在没有盐加密的情况下将密码存储在LDAP目录中。

2 个答案:

答案 0 :(得分:1)

最好使用{SHA}或{MD5}这样的不加盐的密码存储方案,而不是{CRYPT}:

password-hash {SHA}

如果需要使用{CRYPT}:

  • 您仍然可以提供静态盐(!不好,不安全,几乎没有盐!),只需遵循给定的格式即可:

    password-crypt-salt-format "$6$%.16s"
    

    $6$SHA512模式的密钥标识符,我们提供了16个字符的长盐:

    ~$ mkpasswd -m sha-512 --salt 'verybadseasoning' secret1
    $6$verybadseasoning$Q2kceqwB2uYT2tU./QF.qRCIWjMQdObEAZ71Ni5Ko1zJOnxUwpu3oMeyjtgiR3hSVHIT20Ay9V1.pXaNhkHYk/
    
    ~$ mkpasswd -m sha-512 --salt 'verybadseasoning' secret2
    $6$verybadseasoning$SHof1u2BCPJhYoVOk.LkWax7n5g28rzMkNCRAC5NmlT29GSeWLAlv2AoSkOS4rYfMUXsmTcyIxKDUU8aL7TlP0
    

    请注意,mkpasswd不允许使用空盐:

    ~$ mkpasswd -m sha-512 --salt '' secret
    Wrong salt length: 0 bytes when 8 <= n <= 16 expected.
    
  • 或者您可以尝试使crypt 忽略给定/生成的盐字符串,无论它是什么(通过从中获取零字符):

    password-crypt-salt-format "$6$%.0s"
    

    它告诉crypt()使用SHA512算法,%s替换为一串零字符的salt(%.0s)。我无法确定slapd是否强制执行%s转换,但是仅设置"$6$"而不替代盐分可能会达到目的,因为它表示相同(无盐),即:

    ~$ php -r 'print(crypt("secret", "$6$"));'
    $6$$2M9DchxW4txWyTYoZrH9D3VvAAQxBpEezYsLY6Cao.jwzEXpyL9xwip9hiUZX7GqTqe/E/z6iKvZqXUuqniQH.
    

请参见slapd.conf(5)

请注意,缺少盐会使您的系统遭受字典攻击。

答案 1 :(得分:0)

您可以简单地使用现有的 userPassword 值导入用户条目,而无需添加盐。如果本地OpenLDAP安装支持一种哈希方案,则密码验​​证将起作用。

设置新密码时,配置指令 password-hash password-crypt-salt-format