- PR -

aliasを用いたLDAPによるLinuxログイン認証の制御

1
投稿者投稿内容
Booby
会議室デビュー日: 2007/08/21
投稿数: 2
投稿日時: 2007-09-10 16:18
お世話になります。
OpenLDAP を用いた一元認証管理環境の構築を目指しているのですが、
alias を用いてマシン毎へのログインを制御しようとした段階で嵌ってしまいました。

以下のようなデータツリーを構築しています。

==============================
dc=example,dc=com
├ ou=accounts
│  ├ uid=suzuki(account, posixAccount)   (projectA所属)
│  ├ uid=satou(account, posixAccount)   (projectA所属)
|  ├ uid=yamada(account, posixAccount)   (projectB所属)
|  └ uid=tanaka(account, posixAccount)   (projectB所属)
├ ou= groups
│  ├ cn=projectA(posixGroup)
|  └ cn=projectB(posixGroup)
└ ou=aliases
    ├ ou=alpha
    |  ├ uid=suzuki(alias, extensibleObject)
    |  └ uid=satou(alias, extensibleObject)
    ├ ou=blavo
    |  ├ uid=yamada(alias, extensibleObject)
    |  └ uid=tanaka(alias, extensibleObject)
    └ ou=charlie
        ├ uid=suzuki(alias, extensibleObject)
        ├ uid=satou(alias, extensibleObject)
        ├ uid=yamada(alias, extensibleObject)
        └ uid=tanaka(alias, extensibleObject)

●alpha.example.com、blavo.example.com、charlie.example.com という
三台のマシンと、LDAPサーバが動作してる ldap.example.com という
マシンの合計4台が存在すると仮定しています。

●alias 配下のエントリの aliasedObject は、account 配下に存在する
uidが同じdnをそれぞれ参照しています。
例:
   dn: uid=suzuki,ou=alpha,ou=aliases,dc=example,dc=com
   objectClass: alias
   objectClass: extensibleObject
   uid: suzuki
   aliasedObjectName: uid=suzuki,ou=accounts,dc=example,dc=com
==============================

ou=aliases 以下に作成する alias データの有無でログインを制御できないかと
考えています。例えばalphaのマシンで設定する場合、authconfigの画面で

 サーバー:ldap://ldap.example.com/
 ベースDN:ou=alpha,ou=aliases,dc=example,dc=com

という具合に指定してみたのですが、ユーザ情報の参照を行うことができません
でした。 Apache の Basic 認証に同じような手法を用いた時は問題なく認証
できたので、同じように alias で飛ばすことが出来るかと思ったのですが、
ログイン認証で飛ばす場合には他に何か設定すべき点があるのでしょうか。
Booby
会議室デビュー日: 2007/08/21
投稿数: 2
投稿日時: 2007-09-12 17:21
自己解決いたしました。

引用:
2.1.3. Lightweight Directory Access Protocol

今回のアプリケーションでは、ユーザアカウントとユーザグループに関する情報をクライアントに供給するために LDAP が使用されます。ユーザとグループを表わすのに用いられる標準的な objectclass は top, posixAccount, shadowAccount, posixGroup です。

データベース上のユーザ関連のエントリは少なくとも [3] top, posixAccount, shadowAccount のobjectclass に属していなくてはなりません。グループエントリは top と posixGroup の objectclass に属していなくてはなりません。

今回利用する pam_ldap と nss_ldap の実装がこの objectclass を参照するからです。このobjectclass は RFC 2307 に記述されているものです。

Note: 実際には、LDAP 版 NSS はここで例示しなかった objectclass も認識します。

引用元:http://www.linux.or.jp/JF/JFdocs/LDAP-Implementation-HOWTO/pamnss.html



という訳でそもそも objectClass が alias なエントリで
ログインさせようとしていたこと自体かなりのマヌケだったようです。

hide-k.net#blog: LDAPでホストごとにアクセスを制限する
http://blog.hide-k.net/archives/2005/12/ldap.php

を参考にさせて頂まして、

  • host アトリビュートを用いる
  • /etc/ldap.conf で host アトリビュートをチェックするよう指定する

ことで同様の結果を得ることができました。これでパスワードの一元管理ができます。

お騒がせして申し訳ありませんでした。

[ メッセージ編集済み 編集者: Booby 編集日時 2007-09-12 17:24 ]
1

スキルアップ/キャリアアップ(JOB@IT)