%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
私はOpenLDAP 2.6を使用しています。オブジェクトのパスワードを設定すると、
ldappasswd -x -D <dn of root user> -W -S <dn of object whose pwd shall be set>
すると、パスワードのハッシュの一部が属性に格納されますuserPassword
。
どのようなハッシュ関数をldappasswd
使用していますか? ハッシュ関数をどのように設定しますか? 見たところ、デフォルトで SHA1 になっているようですが、これはもはや安全ではありません。
答え1
ldappasswd はどのようなハッシュ関数を使用しますか?
技術的には何もありません。LDAP拡張操作「パスワードの変更」を呼び出すだけで、LDAPサーバ適切と思われるハッシュ関数を使用します (そして、適切と思われる場所にハッシュを保存します。必ずしも userPassword に保存する必要はありません)。
したがって、「パスワード変更」exop で使用されるハッシュはサーバー側で設定されます。OpenLDAP の場合、これはハッシュolcPasswordHash
と同様に、デフォルトで「SSHA」(ソルトおよび反復 SHA-1) に設定されるパラメータです$1$
。より強力なものが必要な場合は、{CRYPT}
システムの crypt() 関数が提供するハッシュ アルゴリズム (つまり、/etc/shadow と同じ – OS が libxcrypt を使用している場合は bcrypt または yescrypt、そうでない場合は同じ種類のソルト付き SHA) を使用するか、または {ARGON2}
追加の slapd-argon2 モジュールがインストールされている場合 (OpenLDAP の一部ですが、「contrib」ツリーにあります)。
slapd.conf | cn=設定 |
---|---|
デフォルト (反復/ソルト付き SHA-1):password-hash {SSHA} |
デフォルト:olcPasswordHash: {SSHA} |
libxcrypt が使用されている場合、yescrypt を使用したシステム crypt():password-hash {CRYPT} password-crypt-salt-format $y$%.16s (テストは行われていませんが、動作すると思います) |
yescrypt を使用したシステム crypt():olcPasswordHash: {CRYPT} olcPasswordCryptSaltFormat: $y$.16s |
slapd モジュールが利用可能な場合は Argon2:moduleload argon2 password-hash {ARGON2} |
slapd モジュールが利用可能な場合は Argon2:olcModuleLoad: argon2 olcPasswordHash: {ARGON2} |