2014年9月25日木曜日

OpenLDAPのパスワードハッシュ形式

OpenLDAPにパスワードを格納する際に平文パスワードのままではセキュリティ上の懸念があるため、ハッシュ化した形式でパスワードを格納することが推奨されます。

OpenLDAPのデフォルトのパスワードハッシュ形式は SSHA (ソルト付きSHA1)ですが、SHA1の暗号強度が今日のコンピューターにとって十分とは言えない時代がやってきました。
このような状況に合わせて、MicrosoftやGoogleなどではSHA1の利用の中止が決まっています。

http://www.digicert.ne.jp/howto/basis/transitioning-to-sha-2.html
http://www.itmedia.co.jp/enterprise/articles/1409/08/news043.html


このような状況のため、OpenLDAPのパスワード格納に関してもSHA1の利用を中止し、SHA2へ移行する流れとなってきています。

OpenLDAPでSHA2形式でパスワードを格納する方法は2つあります。

1. pw-sha2オーバーレイによりSHA2形式のパスワード利用します。
  • OpenLDAP 2.4.32以降で実質的なSHA2サポートが始まり、利用が可能となりました。
  • 利用のためには、pw-sha2オーバーレイを有効にする必要があります。
  • {SHA256}、{SSHA256}、{SHA384}、{SSHA384}、{SHA512}、{SSHA512}に対応しています。
  • ハッシュ化パスワードのラウンドは行われません。
2. OSのcrypt(3)機能を利用し、{CRYPT}形式でSHA2ハッシュを利用します。
  • OpenLDAPでは、パスワードの形式として{CRYPT}を指定すると、OSのcrypt(3)機能を利用したハッシュ化が行われます。

    ハッシュできる形式は、OSのcrypt(3)が提供する形式に限られますが、RHEL6などの最近のOSであればSHA2に対応済みです。
  • 利用のためには、password-hashパラメーターと、password-crypt-salt-formatパラメーターの指定が必要です。
    password-hash "{CRYPT}"
    password-crypt-salt-format "$5$%.8s"

    $5$はSHA256形式のハッシュ化を意味し、"%.8s"の部分が8文字のランダムなソルトを付与することを意味します。SHA512を利用したい場合は、$5$の代わりに$6$を指定します。
  • {CRYPT}形式で指定したパスワードは、glibcのcrypt(3)によってSHA256/SHA512のハッシュ化が行われますが、この際、5000回のラウンド処理が行われます。ラウンド回数は salt-formatにroundsパラメーターで指定することが可能で、1000回以上を指定可能です。(1000回以下を指定すると、1000に設定されます)

    8000回のラウンドを指定する場合は、password-crypt-salt-formatに"rounds=8000$"をソルト文字列の前に付与します。
    password-crypt-salt-format "$5$rounds=8000$%.8s"
  • LDIFでパスワードを登録する際にSHA256などで{CRYPT}形式のハッシュ化パスワード文字列を得たいときは、slappasswdコマンドで生成します。
    $ slappasswd -c "$5$rounds=8000$%.8s" -s



0 件のコメント:

コメントを投稿