Solaris10 を OpenLDAP クライアントにする. Solaris 10 x86 と Debian Linux にて実験.
Solaris を LDAP クライアントとして設定するには ldapclient コマンドを用いる.
# /usr/sbin/ldapclient 使用法: ldapclient [-v | -q] init | manual | mod | list | uninit [<args>] サーバーまたはワークステーションを LDAP 名前空間のクライアントとして 設定します。 <args> は '-a attrName=attrVal' の形式を取ります。 マニュアルのページ:ldapclient(1M) に説明があります。
サーバ名に名前や FQDN を指定するときは, 名前解決がちゃんとできていることを確認すること.
# /usr/sbin/ldapclient manual \ -a defaultSearchBase=dc=ldap,dc=example,dc=co,dc=jp \ 192.168.114.16 システムは正常に構成されました
# ls /var/ldap cachemgr.log ldap_client_cred ldap_client_file restore
ただ,これでは getent で情報はとれるが認証が通らない. というわけで,以下のようにする.
# ldapclient manual -a domainName=ldap.example.co.jp \ -a credentialLevel=proxy \ -a proxyDN=cn=admin,dc=ldap,dc=example,dc=co,dc=jp \ -a defaultSearchBase=dc=ldap,dc=example,dc=co,dc=jp \ -a authenticationMethod=simple \ -a defaultSearchScope=sub 192.168.114.16
このあと,/etc/pam.conf を調整する.
(*)ldaps で認証を行う場合は, きちんと CA やら証明書を作成しておくこと. 特に,LDAP サーバのキーを作成する場合に, CN 属性にはサーバの FQDN を設定し, クライアント側から見える FQDN と一致させておかないと 接続ができないので注意. (OpenSSL 独自認証局の構築 参照)
また,なぜか ldap:///(port 389) と ldaps:///(port 636)の両方を接続可能にしておかないと Soalris はダメみたい.
証明書は,独自 CA の証明書を Mozilla などでインポートして作成する.
/var/ldap/cert8.db /var/ldap/key3.db /var/ldap/secmod.db
また,コマンドラインでは以下のような感じで行う.
# cd /var/tmp 独自 CA の証明書を持ってくる # scp CAServer:/etc/ssl/demoCA/cacert.pem . 証明書データベースの作成 # echo password > wtpass # /usr/sfw/bin/certutil -N -d /var/tmp -f wtpass # ls cacert.pem cert8.db key3.db secmod.db wtpass 証明書データベースに自己 CA の証明書を追加. # /usr/sfw/bin/certutil -A -n "demoCA" -t "TCu,TCu,TCuw" \ -d /var/tmp -a -i /var/tmp/cacert.pem -f wtpass # ls cacert.pem cert8.db key3.db secmod.db wtpass できたデータベースを,/var/ldap に置く. # cp *.db /var/ldap # chmod 444 /var/ldap/*.db # rm wtpass
# ldapclient manual \ -a domainName=ldap.example.co.jp \ -a credentialLevel=proxy \ -a proxyDN=cn=admin,dc=ldap,dc=example,dc=co,dc=jp \ -a defaultSearchBase=dc=ldap,dc=example,dc=co,dc=jp \ -a certificatePath=/var/ldap \ -a authenticationMethod=tls:simple \ -a defaultSearchScope=sub \ 192.168.114.16
このあと,/etc/pam.conf を調整する.
# /usr/sbin/ldapclient uninit システムは正常に復元されました
LDAP に接続できているか確認
# ldapclient list NS_LDAP_FILE_VERSION= 2.0 NS_LDAP_BINDDN= cn=admin,dc=ldap,dc=example,dc=co,dc=jp NS_LDAP_BINDPASSWD= {NS1}89eb23e8e845bce5ee NS_LDAP_SERVERS= 192.168.114.16 NS_LDAP_SEARCH_BASEDN= dc=ldap,dc=example,dc=co,dc=jp NS_LDAP_AUTH= simple NS_LDAP_SEARCH_SCOPE= sub NS_LDAP_CACHETTL= 0 NS_LDAP_CREDENTIAL_LEVEL= proxy NS_LDAP_HOST_CERTPATH= /var/ldap
# ldaplist dn: dc=ldap,dc=example,dc=co,dc=jp dn: cn=admin,dc=ldap,dc=example,dc=co,dc=jp dn: ou=People,dc=ldap,dc=example,dc=co,dc=jp dn: uid=soka,ou=People,dc=ldap,dc=example,dc=co,dc=jp dn: ou=Group,dc=ldap,dc=example,dc=co,dc=jp dn: cn=nonstop,ou=Group,dc=ldap,dc=example,dc=co,dc=jp dn: uid=marron,ou=People,dc=ldap,dc=example,dc=co,dc=jp dn: uid=tehe,ou=People,dc=ldap,dc=example,dc=co,dc=jp
# /usr/lib/ldap/ldap_cachemgr -g cachemgr 構成: サーバーデバッグレベル 0 サーバーログファイル "/var/ldap/cachemgr.log" ldapcachemgr の呼び出し回数 107 cachemgr キャッシュデータの統計情報: 構成リフレッシュ情報: リフレッシュなしに構成されました。 サーバーの情報: 前回のリフレッシュ時刻: 2005/11/15 13:18:07 次のリフレッシュ時刻: 2005/11/15 13:28:07 サーバー: 192.168.114.16、状態: 動作中 キャッシュデータの情報: 最大キャッシュエントリ: 256 キャッシュエントリの数: 0
# getent passwd
# diff -c pam.conf.org pam.conf *** pam.conf.org 2005年 11月 11日 (金) --- pam.conf 2005年 11月 15日 (火) *************** *** 17,27 **** # # login service (explicit because of pam_dial_auth) # ! login auth requisite pam_authtok_get.so.1 login auth required pam_dhkeys.so.1 login auth required pam_unix_cred.so.1 - login auth required pam_unix_auth.so.1 login auth required pam_dial_auth.so.1 # # rlogin service (explicit because of pam_rhost_auth) # --- 17,29 ---- # # login service (explicit because of pam_dial_auth) # ! login auth required pam_authtok_get.so.1 login auth required pam_dhkeys.so.1 login auth required pam_unix_cred.so.1 login auth required pam_dial_auth.so.1 + login auth sufficient pam_unix_auth.so.1 + login auth required pam_ldap.so.1 try_first_pass + # # rlogin service (explicit because of pam_rhost_auth) # *************** *** 66,79 **** # Default definitions for Authentication management # Used when service name is not explicitly mentioned for authentication # ! other auth requisite pam_authtok_get.so.1 other auth required pam_dhkeys.so.1 other auth required pam_unix_cred.so.1 ! other auth required pam_unix_auth.so.1 # # passwd command (explicit because of a different authentication module) # ! passwd auth required pam_passwd_auth.so.1 # # cron service (explicit because of non-usage of pam_roles.so.1) # --- 68,83 ---- # Default definitions for Authentication management # Used when service name is not explicitly mentioned for authentication # ! other auth required pam_authtok_get.so.1 other auth required pam_dhkeys.so.1 other auth required pam_unix_cred.so.1 ! other auth sufficient pam_unix_auth.so.1 ! other auth required pam_ldap.so.1 try_first_pass # # passwd command (explicit because of a different authentication module) # ! passwd auth sufficient pam_passwd_auth.so.1 ! passwd auth required pam_ldap.so.1 try_first_pass # # cron service (explicit because of non-usage of pam_roles.so.1) # *************** *** 96,102 **** other password required pam_dhkeys.so.1 other password requisite pam_authtok_get.so.1 other password requisite pam_authtok_check.so.1 ! other password required pam_authtok_store.so.1 # # Support for Kerberos V5 authentication and example configurations can # be found in the pam_krb5(5) man page under the "EXAMPLES" section. --- 100,107 ---- other password required pam_dhkeys.so.1 other password requisite pam_authtok_get.so.1 other password requisite pam_authtok_check.so.1 ! other password sufficient pam_authtok_store.so.1 ! other password required pam_ldap.so.1 # # Support for Kerberos V5 authentication and example configurations can # be found in the pam_krb5(5) man page under the "EXAMPLES" section.
GQ を使えば,GUI にて LDAP のデータ操作ができる. (Debian にはパッケージがある.要 GTK+)