|
ldap-serverの構築
$ rpm -qa | grep ldap
openldap-servers-2.3.30-3.fc6
openldap-2.3.30-3.fc6
openldap-clients-2.3.30-3.fc6
nss_ldap-257-4.fc6
openldap-servers-sql-2.3.30-3.fc6
openldap-devel-2.3.30-3.fc6
$ rpm -qa | grep sasl
cyrus-sasl-md5-2.1.22-4
cyrus-sasl-gssapi-2.1.22-4
cyrus-sasl-plain-2.1.22-4
cyrus-sasl-lib-2.1.22-4
cyrus-sasl-2.1.22-4
cyrus-sasl-devel-2.1.22-4
以上がInstallされていたが、SSH関係も必要なのでその部分の詳しいことは省略した。ただ、認証に関してはやはり色々なソフトが絡み合ってくるので、 どの部分の設定が間違っているのか判断もなかなか難しく今まででのサーバの設定で一番難しく思えた。
slapd.conf
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/misc.schema
# Allow LDAPv2 client connections. This is NOT the default.
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
# The next three lines allow use of TLS for encrypting connections using a
# dummy test certificate which you can generate by changing to
# /etc/pki/tls/certs, running "make slapd.pem", and fixing permissions on
# slapd.pem so that the ldap user or group can read it. Your client software
# may balk at self-signed certificates, however.
#TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
#TLSCertificateFile /etc/pki/tls/certs/slapd.pem
#TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem
Adminはldapaddにて後に加える
access to attrs=userPassword
by anonymous auth
by dn="cn=Admin,dc=ryuuo,dc=com" read
by * none
access to *
by self read
by dn="cn=Admin,dc=ryuuo,dc=com" read
by * none
#######################################################################
# ldbm and/or bdb database definitions
#######################################################################
$ su -
Password:
# slappasswd
New password:
Re-enter new password:
{SSHA}UlvrDm454zXRLIjMt4NXwLp50k/aYcyS
#
database bdb
suffix dc=ryuuo,dc=com
rootdn "cn=Manager,dc=ryuuo,dc=com"
rootpw {SSHA}UlvrDm454zXRLIjMt4NXwLp50k/aYcyS
directory /var/lib/ldap
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
|
ldif形式のfileを作成
$ emacs init.ldif
dn: dc=ryuuo,dc=com
objectClass: dcObject
objectClass: organization
o: myzrfget
dc: ryuuo
dn: cn=Manager,dc=ryuuo,dc=com
objectClass: organizationalRole
cn:Manager
dn: ou=People,dc=ryuuo,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=ryuuo,dc=com
objectClass: organizationalUnit
ou: Group
|
$ ldapadd -x -D "cn=Manager,dc=ryuuo,dc=com" -w (PasswdOfManager) -f init.ldif
$ emacs group.ldif
dn: cn=Account,ou=Group,dc=ryuuo,dc=com
objectClass: posixGroup
objectClass: top
cn: Account
gidNumber: 1110
dn: cn=Personal,ou=Group,dc=ryuuo,dc=com
objectClass: posixGroup
objectClass: top
cn: Personal
gidNumber: 1120
|
$ ldapadd -x -D "cn=Manager,dc=ryuuo,dc=com" -w (PasswdOfManager) -f group.ldif
$ emacs user.ldif
dn: uid=tanaka,ou=People,dc=ryuuo,dc=com
uid: tanaka
cn: tanaka
objectClass: posixAccount
objectClass: posixGroup
objectClass: top
userPassword: {crypt}6vazg6EfgckUQ
uidNumber: 1000
gidNumber: 2000
homeDirectory: /home/tanaka
|
$ ldapadd -x -D "cn=Manager,dc=ryuuo,dc=com" -w (PasswdOfManager) -f user.ldif
$ openssl passwd
New password:******
Re-enter new password:******
3BKrnS5rRLgMU
$
$ emacs Admin.ldif
dn: cn=Admin,dc=ryuuo,dc=com
objectClass: person
cn: Admin
sn: Admin
userPassword: {crypt}SkAoga4rf5RUQ
|
$ ldapadd -x -D "cn=Manager,dc=ryuuo,dc=com" -w (PasswdOfManager) -f Admin.ldif
登録されたかの確認
$ ldapsearch -x -LLL -b "dc=ryuuo,dc=com" -D "cn=Admin,dc=ryuuo,dc=com" \
-w (Admin Password) "(uid=tanaka)" userPassword
dn: uid=tanaka,ou=People,dc=ryuuo,dc=com
userPassword:: dGVzdA==
$
|
以上のように表示されればldap-serverの設定は完璧だ。
ldap-client
/etc/ldap.confの設定
-------- 略 -------
# whether your LDAP client library supports configurable
# network or connect timeouts (see bind_timelimit).
#host 127.0.0.1
host fedora.ryuuo.com
# The distinguished name of the search base.
base dc=ryuuo,dc=com
binddn cn=Admin,dc=ryuuo,dc=com
bindpw tanadesu
# The distinguished name to bind to the server with
# if the effective user ID is root. Password is
# stored in /etc/ldap.secret (mode 600)
# この部分も大切だ。Managerのパスワードをセットしておく
rootbinddn cn==Manager,dc=ryuuo,dc=com
間違っても、
binddn "cn=Admin,dc=ryuuo,dc=com"
とはするな! 無駄な時間を費すから。ただ、slapd.confは問題は生じなかった。
port 389
timelimit 120
bind_timelimit 120
idle_timelimit 3600
pam_lookup_policy yes
pam_password md5
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd, \
tomcat,radiusd,news,mailman,nscd,amavis,clamav,mysql
|
authconfig, authconfig-gtk, authconfig-tuiで一連の認証方法を変更するが、これらを実行した時に/etc/ldap.confも変更されるので特に、注意だ。
uri fedora.ryuuo.comfedora.ryuuo.comldap://fedora.ryuuo.com/
と、変更された場合にboot時のloginに時間が掛かる。10分近く掛かりちょうど良いコーヒブレイクTimeのようだ。tlsなどの設定を試みるときには特に注意をしたほうが良い。あまりにもコーヒブレイクTimeが多発するようでは問題にもなる。正確には、
uri ldap://fedora.ryuuo.com/
の形のようだ。詳しくは以下で参照してくれ!
$ man 5 ldap.conf | col -bfx > man_ldap.conf
$ man slapd.conf | col -bfx > man_slapd.conf
emacs /etc/nsswitch
----- 一部 -----
#shadow: db files nisplus nis
#group: db files nisplus nis
passwd: files ldap
shadow: files ldap
group: files ldap
#hosts: db files nisplus nis dns
hosts: files dns
# Example - obey only what nisplus tells us...
#services: nisplus [NOTFOUND=return] files
----- 一部 -----
|
system-authの設定
/etc/pam.d/system-auth
# authconfig-gtk
ユーザー情報.....LDAPを有効にするにチェック
認証.............LDAPを有効にするにチェック
オプション.......アクセス以外はすべてにチェック
いろいろと失敗を重ねながら行ったが、一番のクセ者が一連のコマンドauthconfig群だ。このコマンドを実行すると/etc/ldap.conf, /etc/pam.d/system-auth、また、 /etc/openldap/ldap.confもslapd.confの変更とともに.....と変更される。これで何度もcoffee breakを取らされた。鬼門である。
設定変更でbootからloginまで時間の掛かることに出くわすことが、一度はあると思うのでその時は起動に時間のかかるdaemonを覚えておき、設定を変え再起動する前に、そのdaemonのみrestartし様子をみるのが一番だった。
# emacs /etc/pam.d/system-auth ...への追加と変更
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
#account sufficient pam_succeed_if.so uid < 500 quiet
account sufficient pam_succeed_if.so gid eq 2000 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so
password requisite pam_cracklib.so retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_ldap.so
|
optionは man 8 optionで確認すれ!
例...)
man 8 pam_succeed_if
sshでの利用
# /etc/ssh/sshd_config の変更
-------------------
PasswordAuthentication yes
-------------------
ChallengeResponseAuthentication no
#UsePAM no
UsePAM yes
|
# /etc/init.d/sshd restart
# /etc/init.d/ldap restart
# chkconfig --list ldap
ldap 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# chkconfig --level 345 ldap on
# chkconfig --list ldap
ldap 0:off 1:off 2:off 3:on 4:on 5:on 6:off
#
$ ssh -l tanaka fedora.ryuuo.com
tanaka@fedora.ryuuo.com's password:
Last login: Sun Oct 14 20:30:02 2007 from fedora.ryuuo.com
-sh-3.1$ exit
/etc/pam.d/system-authを以下のように変更
account sufficient pam_succeed_if.so gid eq 1000 quiet
$ ssh -l tanaka fedora.ryuuo.com
tanaka@fedora.ryuuo.com's password:
Connection closed by 192.168.1.77
$
|
上手くいかない時は、/var/log/secureを確認!
漏れは無いとは思うが、はっきりとした自身は無い。LOGIN出来ない方はご連絡でも。
いろいろな設定ファイルを変更しなければならず大変だったが、このままでpacket通信をながめると、PassWordが丸見えだった。tlsなりsslなりが必要なようだ。
また、tlsなどに挑戦する方は、以下のリンクで簡易CA(認証局)の設定方法を詳しく説明されている。そちらを参考にされては如何だろうか。
http://info.t.kyoto-u.ac.jp/wiki/?Service/LDAP0.5/110000
雑談
色々なサーバの設定を行ってきたが、認証が一番複雑に感じられた。いろいろな設定ファイルが関わってきていて、どこに問題があるのか明確にできないところがあった。今、振り返ると随分とbootしてからloginまでに時間が掛かりCoffeBreakを強いられたことを思い出す。10-20分程度である。一例として、認証にldapを使用しながらブート時にldapが起動しないように設定したこと、違うことに気を取られていた時であった。なかには、30分以上掛かり諦めRescueModeで設定ファイルを変更したことも二度ほどあった。挑戦するにあたって心得のようなものを記しておく。
1) 常日頃からバックアップは取っておけ
2) GUIばかりに頼っていると、イザという時には自身の頭が超ウルトラpanicになるぞ。永い間、Linuxとお付き合いしている方は一度は経験したことがあるとは思うが、boot時に
kernel panic
の表示が出たときには、kernelさんはPanicかもしれないがコンピューターを操作している人間の頭はそれどころではない、超ウルトラpanicの状態になる。
authconfig コマンドの最小限の設定方法など覚えておいたほうが良さそうだ。
|
|