openldap

提供: 個人的記録
2022年10月23日 (日) 16:44時点におけるGonbe (トーク | 投稿記録)による版 (参考ページ)

移動: 案内検索

LDAPがよくわからないので openldap を入れていろいろ試した記録

環境

  • hyper-v + rocky linux 9

インストール

  • dnfでインストールを試みたが、openldap-servers パッケージが入っていない。
  • どうやら plus リポジトリに入っているようなので以下のコマンドで plus リポジトリからインストールする。
dnf --enablerepo=plus install openldap-servers openldap openldap-clients
  • openldap のサービスは slapd で登録されているので、 systemctl status slapd でサービスの状態を確認する。
  • 管理ツリーにパスワードを登録する。
  • そのままだと何もできないので管理ツリーにログインできるようにパスワードを登録する。
  • 管理ツリーのパスワードは ldif ファイルに記述してopenldapにインポートする。
  • ldifに平文でパスワードを書くと平文のまま登録されてしまうので、ハッシュ化するなら事前に行う必要がある。
  • ハッシュ化したパスワードは以下のコマンドで生成できる。ただし、デフォルトではsha1でハッシュ化する。sha256を使うには別途モジュールが必要らしいが、今回はldapの学習用環境なのでそこまでしない
slappasswd
  • 新規にldifファイルを作成し、下記のように編集する。
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootDN
olcRootDN: cn=config

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPw
olcRootPW: <slappasswdで生成したパスワード文字列>
  • 「olcDatabase={0}config,cn=config」に olcRootDN と olcRootPw の項目を追加するldifファイル。
  • 作成済みの olcDatabase は 「/etc/openldap/slapd.d/cn\=config/」にファイルとして保存されている。
  • インストールした環境でみたところ、以下のものが登録済み
  • olcDatabase={-1}frontend.ldif
  • olcDatabase={0}config.ldif
  • olcDatabase={1}monitor.ldif
  • olcDatabase={2}mdb.ldif
  • 以下のコマンドを実行し、作成したldifファイルを反映する。
ldapadd -Y EXTERNAL -H ldapi:// -f <作成したldifファイル>
  • apache directory studio なりのツールで cn=config に接続してみる。パスワードは slappasswd で設定したハッシュ化前のパスワードを使用する。接続できれば設定はできている。
  • このままだと BindDN が cn=config でしかつなげないので都合が悪い。以下のようなldifファイルを作成して指定したldifで指定したDCで接続できるようにする。
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com #ドメインの指定

dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com #ログインIDの指定。cnで指定する。

dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: <パスワード>

ユーザパスワード検証

  • ldapに登録したユーザパスワードは userPassword 属性に保存される。
  • userPassword 属性に登録するパスワードはハッシュ化して保存することができる。
  • システム設定でデフォルトでハッシュ化するように指定することもできる。
  • ハッシュ化されたパスワードの検証はldapサーバ側でやってもらえる。
  • コマンドで検証する場合は以下のようになる。(openldap-clientの場合)
ldapwhoami  -vvv -h <ldapサーバ> -p <ポート番号> -D <エントリのDN> -x -w <平文のパスワード>
  • SSHA、SHAで登録したパスワードはこれで検証できた。しかし、SSHA256やSHA256で登録したパスワードは検証できなかった。おそらくopenldapの問題でモジュールの追加が必要。
  • パスワードの登録は Apache Directory Studio から実行。パスワード登録時に保存形式がSSHAやSSHA256と選択できたので、選択を切り替えて保存した。
  • ldapsearch で見ると userPassword がそれっぽく変換されていたので変換は問題ないと思っている

参考ページ

  • 環境構築
  • sha256モジュールについて
  • パスワード検証