summaryプラグインは存在しません。
参考リンク集
- OpenLDAP 2.1 管理者ガイド
- LDAP Linux HOWTO
- LDAP Implementation HOWTO
- LDAPv3 HOWTO on Debian
- BLUECOARA/LDAP
- LDAPサーバーを利用した認証
- でびるまんのための えるだっぷ はうつー
- UNIX USER 2002/1: LDAP特集 (draft)
- UltraPossum
環境
- 使用するドメイン
- kazz.homeunix.org
- slapd,libldap2,ldaputilsのバージョン
- 2.1.30
インストール
# apt-get install slapd ldap-utils nscd
slapd の debconf で下記のことを聞かれるので、適当に答えます。
Do you want to omit the configuration of slapd? -> No Enter your DNS domain name -> kazz.homeunix.org Enter the name of your organization -> kazz.homeunix.org Admin password -> ここでは"hoge"とします(適当に変えてね) Which database backend would you like to use? -> BDB Do you want your database to be removed when slapd is purged? -> No(の方がいいでしょう) Allow LDAPv2 protocol -> No
設定
/etc/ldap/slapd.confファイルを修正します。
(追加) include /etc/ldap/schema/misc.schema include /etc/ldap/schema/openldap.schema
loglevel 0
↓
loglevel 256
access to *
by dn="cn=admin,dc=kazz,dc=homeunix,dc=org" write
by * read
↓
access to *
by dn="cn=admin,dc=kazz,dc=homeunix,dc=org" write
by self write
by users read
by * read
rootでslapdを起動するのは危険なので、ldapというユーザを作成します。
# adduser --system --home /var/lib/ldap --no-create-home ldap # chown ldap:nogroup /etc/ldap/slapd.conf # chown -R ldap:nogroup /var/lib/ldap
合わせて、/etc/default/slapdを修正します。
@@ -3,11 +3,11 @@ # System account to run the slapd server under. If empty the server # will run as root. -SLAPD_USER= +SLAPD_USER=ldap # System group to run the slapd server under. If empty the server will # run in the primary group of its user. -SLAPD_GROUP= +SLAPD_GROUP=nogroup
LDAPクライアントの設定を行うため、/etc/ldap/ldap.confに以下を追記します。
HOST 127.0.0.1 BASE dc=kazz,dc=homeunix,dc=org
HOSTはslapdが動いているホスト名かIPアドレスを、BASEはドメイン名を指定します。
動作確認
それでは起動してみましょう。(すでに動いている場合は一旦止めてください)ps ax | grep slapdでプロセスがあがっていればOKです。
# /etc/init.d/slapd start Starting OpenLDAP: slapd - failed.
あら、失敗しました。 tail /var/log/syslog してみると下記のようにユーザ ldap からslapd.confが読めなかったようです。
could not open config file "/etc/ldap/slapd.conf": Permission denied (13)
というわけで、これに読み取り属性を追加します。また、/var/lib/ldap/配下も ldap ユーザに書き込み権限を与えておきます[1]。
# chmod +r /etc/ldap/slapd.conf # chown -R ldap /var/lib/ldap
それでは気を取り直して Let's go。
# /etc/init.d/slapd start
ちゃんと起動されているか確認してみます。
# ps ax | grep slapd
試しにLDAPクライアントからアクセスしてみます。
# ldapsearch -x
# extended LDIF (省略) # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2
という風に結果が返ってくればOKです。もし、
ldap_bind: Can't contact LDAP server (81)
といわれる人は、tcpwrapperでアクセス制御されている可能性が高いです。/etc/hosts.allowにLAN内のマシンと自分自身がアクセス出来るように、以下のエントリでも追加しておきましょう。
slapd: 192.168.1. 127.0.0.1
GUIクライアント
コマンドラインから ldapsearch で検索するのは結構面倒です。そういう場合はGUIクライアントを使いましょう。個人的に「実用レベル」だと判断できたのは以下でした。
Javaでつくられたものです。2001年でバージョンアップが止まっているところを見ると、開発が止まっているみたい...ですが、普通に更新したりする分には問題なしでした。
こちらはGTK+で作成されているので、サクサク動きます。使い勝手はLDAP Browserと同等ぐらい?
認証のLDAP化
migrationtoolsというものを使って、肝である/etc/passwdおよび/etc/groupをLDAPに移行します。
migrationtoolsのインストール
# apt-get install migrationtools
/usr/share/migrationtools配下にPerlスクリプト一式がインストールされます。
ldifの用意
まず/usr/share/migrationtoolsに移動します。以下このディレクトリで作業を行うものとします。
# cd /usr/share/migrationtools
ldifファイルを用意する前に、ベースDNを設定しておきます。migration_common.phというファイルを以下のように編集します。$DEFAULT_BASEは slapd をインストールする時に聞かれたドメイン名を指定します。
$DEFAULT_MAIL_DOMAIN = "padl.com";
↓
$DEFAULT_MAIL_DOMAIN = "kazz.homeunix.org";
# Default base
$DEFAULT_BASE = "dc=padl,dc=com";
↓
$DEFAULT_BASE = "dc=kazz,dc=homeunix,dc=org";
/etc/passwdを移行します。
# perl migrate_passwd.pl /etc/passwd > passwd.ldif
# ldapadd -x -w hoge -D "cn=admin,dc=kazz,dc=homeunix,dc=org" -f passwd.ldif
adding new entry "uid=root,ou=People,dc=kazz,dc=homeunix,dc=org"
ldapadd: update failed: uid=root,ou=People,dc=kazz,dc=homeunix,dc=org
ldap_add: No such object (32)
matched DN: dc=kazz,dc=homeunix,dc=org
あら、エラーになりましたね。これは、passwd.ldif内の ou=People のツリーが存在しないのに、その下位のデータとしてアカウントを登録しようとしているためです。ou(Organizatinal Unit)のPeopleとGroupの登録を先に行う必要があります。下記のようなbase.ldifファイルを作成して、 ldapadd しましょう。
dn: ou=People,dc=kazz,dc=homeunix,dc=org
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=kazz,dc=homeunix,dc=org
objectClass: organizationalUnit
ou: Group
# ldapadd -x -w hoge -D "cn=admin,dc=kazz,dc=homeunix,dc=org" -f base.ldif
成功したら、passwd.ldifとgroup.ldifも同じように ldapadd します。
# ldapadd -x -w hoge -D "cn=admin,dc=kazz,dc=homeunix,dc=org" -f passwd.ldif
/etc/groupも移行します。
# perl migrate_group.pl /etc/group > group.ldif # ldapadd -x -w hoge -D "cn=admin,dc=kazz,dc=homeunix,dc=org" -f group.ldif
以上で移行は完了です。あとはファイルベースで行っている認証をLDAPで行うように設定するだけです。# でもこれが一番面倒。
NSS module for LDAP
ここではサーバ自身の認証をLDAP化するという前提で設定します。クライアントマシンの認証をLDAP化したい場合は、LDAPサーバのホスト名をサーバのものに置き換えて読んでください。
LDAPでの認証を有効にするために、LDAP用のモジュールをインストールします。
# apt-get install libnss-ldap
debconfから以下のことを聞かれるので、適当に答えておきます。
LDAP server host address -> 127.0.0.1 (LDAPサーバのIPアドレスまたはホスト名) distinguished name of the search base -> dc=kazz,dc=homeunix,dc=org LDAP version to use -> 3 database requires login -> Yes make configuration readable/writeable by owner only -> Yes
nsswitch.confの修正
/etc/nsswitch.confを修正して、LDAPで認証するようにします。
passwd: compat
group: compat
shadow: compat
↓
passwd: compat ldap
group: compat ldap
shadow: compat ldap
私は Debian インストール時に互換性のあるやつを選んだので"compat"ですが、普通は"files"のはずです。
PAM module for LDAP
インストール
これも色々聞かれますが、大体 libnss-ldap と同じように答えておけばよいです。
# apt-get install libpam-ldap
LDAP Server host -> 127.0.0.1 The distinguished name of the search base -> dc=kazz,dc=homeunix,dc=org LDAP version to use -> 3 Make local root Database admin -> Yes Database requires logging in -> No Root login account -> cn=admin,dc=kazz,dc=homeunix,dc=org Root login password -> LDAPのadmin用のパスワード Local crypt to use when changing passwords -> crypt
設定
/etc/pam.d配下のファイルを修正します。
- commont-account
+account [default=bad \ + success=ok \ + user_unknown=ignore \ + service_err=ignore \ + system_err=ignore \ + authinfo_unavail=ignore] \ + /lib/security/pam_ldap.so
- common-auth
+auth sufficient /lib/security/pam_ldap.so use_first_pass
- common-password
+password sufficient /lib/security/pam_ldap.so use_authok
- common-session
+session optional /lib/security/pam_ldap.so +session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
動作確認
キャッシュをクリアするために、nscd を再起動しておきます。
# /etc/init.d/nscd restart
あとは普通にログインできるかどうか試しましょう。
# login ユーザ名
ログインできれば、問題なしです。駄目な場合は、/var/log/auth.logや/var/log/syslogにエラー情報があるので、原因を調べて見てください。
UltraPossumでもっと楽しよう
UltraPossumとは、openldapでのディレクトリサービスを容易に構築するためのラッパーのです(ラッパーのレベルを越えてますが)。UltraPossum + migrationtoolsを使うと、より簡単にアカウントの認証をLDAPに移行できます。なお、libnss-ldap と libpam-ldap のインストールと設定はすでに出来ているものとします。バージョンは 1.0-rc2 を対象とします。
インストール
apt-line に以下を追加し、update して install です。
deb http://ultrapossum.org/debian ./ deb-src http://ultrapossum.org/debian ./
なお、今回はultrapossum付属のslapdを使うので、slapdがインストールされている場合はこれを削除しておきます。
# apt-get remove --purge slapd
# apt-get update # apt-get install ultrapossum ultrapossum-slapd ultrapossum-slapd-modules
色々聞かれます。
Which backend do you want to use to store configurations ->(わかりやすいから)file Which organization do you want to join? ->kazz.homeunix.org(slapdで設定したのと同じもの) Top level DN (Distungnished Name) -> dc=kazz,dc=homeunix,dc=org Datbase directory -> /var/lib/ultrapossum//db(デフォルト) LDAP Server type -> standalone Root RDN ->cn=admin Password of the root DN -> hoge(適当に変えてね) Check UltraPossum server availability on each configuraion? ->(一応)Yes
以上でultrapossumのインストールは完了ですが、この他にもldapdiffパッケージが必要なのでapt-getしておきます。
# apt-get install ldapdiff
設定
次に、念のためもう1度debconfでultrapossumを設定しておきます。なお、slapdを止めておかないとまたエラーになるので
# /etc/init.d/slapd stop
しておきます[2]。
# dpkg-reconfigure -plow ultrapossum-server Which organization do you want to join? ->kazz.homeunix.org Top level DN (Distungnished Name) ->dc=kazz,dc=homeunix,dc=org Datbase directory ->/var/lib/ultrapossum/db LDAP Server type ->standalone Root RDN ->cn=admin Password of the root DN ->hoge(適当に変えてね) All informations prepared. Are you sure to continue? ->(当然)Yes
Configuring OpenLDAP for master... done Configuring initial LDIF... done Starting UltraPossum Server: slapd.
と表示されれば、設定完了です。うまくいかない場合は/var/log/syslogを見て対処してください。
実行
それではマシンアカウントをLDAPに移行します。ultramigration, ldifdiffというスクリプトが必要なので、それぞれ下記から取得して/usr/local/binなどのパスの通っている所に置きます。そしてこれを動かします。
# chmod 755 /usr/local/bin/{ultramigration,ldifdiff}
# ultramigration
これで/etc/{group,passwd}の情報がLDAPディレクトリに移行されるはずです。先ほどと同じように login してみましょう。
アンインストール
# apt-get --purge remove ultrapossum-common # rm -rf /var/lib/ultrapossum